summaryrefslogtreecommitdiff
path: root/modules/graphic_objects
diff options
context:
space:
mode:
authorShashank2017-05-29 12:40:26 +0530
committerShashank2017-05-29 12:40:26 +0530
commit0345245e860375a32c9a437c4a9d9cae807134e9 (patch)
treead51ecbfa7bcd3cc5f09834f1bb8c08feaa526a4 /modules/graphic_objects
downloadscilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.gz
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.tar.bz2
scilab_for_xcos_on_cloud-0345245e860375a32c9a437c4a9d9cae807134e9.zip
CMSCOPE changed
Diffstat (limited to 'modules/graphic_objects')
l---------modules/graphic_objects/.libs/libscigraphic_objects-disable.la1
-rwxr-xr-xmodules/graphic_objects/.libs/libscigraphic_objects-disable.lai41
l---------modules/graphic_objects/.libs/libscigraphic_objects-disable.so1
l---------modules/graphic_objects/.libs/libscigraphic_objects-disable.so.51
-rwxr-xr-xmodules/graphic_objects/.libs/libscigraphic_objects-disable.so.5.5.2bin0 -> 11648 bytes
l---------modules/graphic_objects/.libs/libscigraphic_objects.la1
-rwxr-xr-xmodules/graphic_objects/.libs/libscigraphic_objects.lai41
l---------modules/graphic_objects/.libs/libscigraphic_objects.so1
l---------modules/graphic_objects/.libs/libscigraphic_objects.so.51
-rwxr-xr-xmodules/graphic_objects/.libs/libscigraphic_objects.so.5.5.2bin0 -> 3890968 bytes
-rwxr-xr-xmodules/graphic_objects/Makefile1960
-rwxr-xr-xmodules/graphic_objects/Makefile.am152
-rwxr-xr-xmodules/graphic_objects/Makefile.in1960
-rwxr-xr-xmodules/graphic_objects/build.xml23
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallGraphicController.classbin0 -> 4325 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallXmlLoader.classbin0 -> 697 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoader.classbin0 -> 2634 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoaderJNI.classbin0 -> 1666 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/JavaObjectLoader.classbin0 -> 2304 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/MainDataLoader.classbin0 -> 4742 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectData.classbin0 -> 759 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectDataJNI.classbin0 -> 1007 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectRemovedException.classbin0 -> 634 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineData.classbin0 -> 1214 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineDataJNI.classbin0 -> 1193 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeView.classbin0 -> 875 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.classbin0 -> 1143 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceData.classbin0 -> 571 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceDataJNI.classbin0 -> 930 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcDrawingMethod.classbin0 -> 1307 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcProperty.classbin0 -> 1252 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc.classbin0 -> 4649 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/ArcDecomposer.classbin0 -> 2765 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$1.classbin0 -> 7700 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$AxesProperty.classbin0 -> 4526 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$GridPosition.classbin0 -> 1301 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes.classbin0 -> 36759 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxesContainer.classbin0 -> 503 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisLocation.classbin0 -> 1580 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisPropertyProperty.classbin0 -> 1545 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty.classbin0 -> 7750 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxProperty.classbin0 -> 1539 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxType.classbin0 -> 1358 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box.classbin0 -> 4062 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$CameraProperty.classbin0 -> 1250 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$ViewType.classbin0 -> 1279 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera.classbin0 -> 3012 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksArrays.classbin0 -> 5508 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksPropertyProperty.classbin0 -> 1441 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty.classbin0 -> 5667 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$AxisProperty.classbin0 -> 1670 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$TicksDirection.classbin0 -> 1159 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis.classbin0 -> 8200 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/builder/Builder.classbin0 -> 18341 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/compound/Compound.classbin0 -> 671 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ConsoleProperty.classbin0 -> 1256 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ScilabMode.classbin0 -> 1074 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console.classbin0 -> 3448 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject$ClippableContouredObjectPropertyType.classbin0 -> 1395 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.classbin0 -> 4354 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject$ContouredObjectPropertyType.classbin0 -> 1574 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.classbin0 -> 8581 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$1.classbin0 -> 1239 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LinePropertyType.classbin0 -> 1259 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LineType.classbin0 -> 2265 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line.classbin0 -> 2465 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkPropertyType.classbin0 -> 1360 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkSizeUnitType.classbin0 -> 1415 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark.classbin0 -> 2553 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$1.classbin0 -> 1255 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$DatatipObjectProperty.classbin0 -> 1577 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$TipOrientation.classbin0 -> 1718 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip.classbin0 -> 9272 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/event/EventHandler.classbin0 -> 1431 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec$FecProperty.classbin0 -> 1092 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec.classbin0 -> 2838 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/ColorMap.classbin0 -> 1764 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$1.classbin0 -> 5114 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$BarType.classbin0 -> 1777 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$Canvas.classbin0 -> 1173 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$CanvasProperty.classbin0 -> 1152 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$EventHandlerProperty.classbin0 -> 1155 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensions.classbin0 -> 1017 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensionsProperty.classbin0 -> 1165 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureName.classbin0 -> 1545 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureNameProperty.classbin0 -> 1117 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureProperty.classbin0 -> 2157 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$PixelDrawingMode.classbin0 -> 2186 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingMode.classbin0 -> 1807 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingModeProperty.classbin0 -> 1219 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RotationType.classbin0 -> 1836 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure.classbin0 -> 20196 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$1.classbin0 -> 944 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$2.classbin0 -> 988 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$3.classbin0 -> 944 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$4.classbin0 -> 1012 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController.classbin0 -> 7796 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel$1.classbin0 -> 2962 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.classbin0 -> 7620 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/CallBack.classbin0 -> 1533 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClipStateType.classbin0 -> 1525 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClippablePropertyType.classbin0 -> 1327 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.classbin0 -> 2435 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject$GraphicClippableObjectProperty.classbin0 -> 1325 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.classbin0 -> 3759 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$1.classbin0 -> 1714 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$GraphicObjectPropertyType.classbin0 -> 2135 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$Type.classbin0 -> 3414 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$UpdateStatus.classbin0 -> 1229 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.classbin0 -> 9772 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.classbin0 -> 17790 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/Visitor.classbin0 -> 1571 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.classbin0 -> 2233 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GedTreeView.classbin0 -> 2381 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GraphicView.classbin0 -> 261 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GuiLogView.classbin0 -> 2562 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/LogView.classbin0 -> 2510 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/ScilabView.classbin0 -> 1042 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView$GraphicObjectNode.classbin0 -> 4515 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView.classbin0 -> 2984 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$DataMapping.classbin0 -> 1357 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$GrayplotProperty.classbin0 -> 1100 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot.classbin0 -> 2643 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot$ImageplotProperty.classbin0 -> 1160 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot.classbin0 -> 1929 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Matplot.classbin0 -> 750 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label$LabelProperty.classbin0 -> 1239 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label.classbin0 -> 4575 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendLocation.classbin0 -> 1958 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendProperty.classbin0 -> 1361 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend.classbin0 -> 6778 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet$ColorTripletProperty.classbin0 -> 1261 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet.classbin0 -> 2059 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$1.classbin0 -> 1493 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightProperty.classbin0 -> 1147 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightType.classbin0 -> 1313 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light.classbin0 -> 4999 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material$MaterialProperty.classbin0 -> 1148 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material.classbin0 -> 1555 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$1.classbin0 -> 1485 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$PolylineProperty.classbin0 -> 1814 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline.classbin0 -> 7383 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle$RectangleProperty.classbin0 -> 1214 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle.classbin0 -> 2680 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.classbin0 -> 2514 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$DataMapping.classbin0 -> 1317 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$Fac3dProperty.classbin0 -> 1044 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d.classbin0 -> 2585 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Plot3d.classbin0 -> 740 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$1.classbin0 -> 2110 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$SurfaceProperty.classbin0 -> 1230 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface.classbin0 -> 5633 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject$ClippableTextObjectProperty.classbin0 -> 1262 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.classbin0 -> 3802 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font$FontProperty.classbin0 -> 1251 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font.classbin0 -> 2737 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText$FormattedTextProperty.classbin0 -> 1217 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText.classbin0 -> 1937 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$Alignment.classbin0 -> 1368 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextBoxMode.classbin0 -> 1386 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextProperty.classbin0 -> 1416 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text.classbin0 -> 5700 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject$TextObjectProperty.classbin0 -> 1192 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject.classbin0 -> 6355 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar$UibarProperty.classbin0 -> 1129 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar.classbin0 -> 2109 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.classbin0 -> 528 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.classbin0 -> 514 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.classbin0 -> 535 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$1.classbin0 -> 6550 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$AnchorType.classbin0 -> 2872 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$BorderLayoutType.classbin0 -> 2409 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$FillType.classbin0 -> 2135 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$TitlePositionType.classbin0 -> 2111 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolProperty.classbin0 -> 3845 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolStyle.classbin0 -> 1800 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.classbin0 -> 21361 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.classbin0 -> 1540 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.classbin0 -> 1301 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.classbin0 -> 1302 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.classbin0 -> 2361 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$1.classbin0 -> 1880 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$BorderType.classbin0 -> 1687 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$FrameBorderProperty.classbin0 -> 2250 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$JustificationType.classbin0 -> 2000 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$TitlePositionType.classbin0 -> 2116 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.classbin0 -> 10144 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.classbin0 -> 2084 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$1.classbin0 -> 860 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$LayerProperty.classbin0 -> 1155 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.classbin0 -> 2683 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.classbin0 -> 1492 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.classbin0 -> 1462 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.classbin0 -> 1698 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.classbin0 -> 1549 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.classbin0 -> 1534 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$1.classbin0 -> 822 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$TabProperty.classbin0 -> 1109 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.classbin0 -> 2902 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/table/Table.classbin0 -> 1297 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.classbin0 -> 1567 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.classbin0 -> 1299 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu$UimenuProperty.classbin0 -> 1411 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu.classbin0 -> 4288 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType$1.classbin0 -> 773 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType.classbin0 -> 1989 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder$MenuBarConfigurationHandler.classbin0 -> 6763 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.classbin0 -> 3160 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.classbin0 -> 205 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/Utils.classbin0 -> 603 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow$ArrowProperty.classbin0 -> 1465 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow.classbin0 -> 3223 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ$ChampProperty.classbin0 -> 1271 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ.classbin0 -> 6132 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.classbin0 -> 5136 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs$SegsProperty.classbin0 -> 1039 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs.classbin0 -> 4474 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.classbin0 -> 2529 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField$VectFieldProperty.classbin0 -> 1164 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField.classbin0 -> 7797 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.classbin0 -> 3152 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParser.classbin0 -> 8395 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.classbin0 -> 200 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder$1.classbin0 -> 1621 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.classbin0 -> 15039 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/Pair.classbin0 -> 1206 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$1.classbin0 -> 1459 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$ModelType.classbin0 -> 1779 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.classbin0 -> 20094 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.classbin0 -> 9286 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver$1.classbin0 -> 1162 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.classbin0 -> 18392 bytes
-rwxr-xr-xmodules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlTools.classbin0 -> 3422 bytes
-rwxr-xr-xmodules/graphic_objects/changelog.txt4
-rwxr-xr-xmodules/graphic_objects/etc/graphic_objects.quit0
-rwxr-xr-xmodules/graphic_objects/etc/graphic_objects.start0
-rwxr-xr-xmodules/graphic_objects/graphic_objects.iss34
-rwxr-xr-xmodules/graphic_objects/includes/AxesModel.h24
-rwxr-xr-xmodules/graphic_objects/includes/ColorComputer.hxx244
-rwxr-xr-xmodules/graphic_objects/includes/CurrentFigure.h32
-rwxr-xr-xmodules/graphic_objects/includes/CurrentObject.h39
-rwxr-xr-xmodules/graphic_objects/includes/CurrentSubwin.h22
-rwxr-xr-xmodules/graphic_objects/includes/Data3D.hxx71
-rwxr-xr-xmodules/graphic_objects/includes/DataController.hxx43
-rwxr-xr-xmodules/graphic_objects/includes/DataLoader.hxx213
-rwxr-xr-xmodules/graphic_objects/includes/DataModel.hxx82
-rwxr-xr-xmodules/graphic_objects/includes/DataProperties.hxx73
-rwxr-xr-xmodules/graphic_objects/includes/DecompositionUtils.hxx182
-rwxr-xr-xmodules/graphic_objects/includes/Fac3DColorComputer.hxx181
-rwxr-xr-xmodules/graphic_objects/includes/Fac3DDecomposer.hxx184
-rwxr-xr-xmodules/graphic_objects/includes/FigureList.h65
-rwxr-xr-xmodules/graphic_objects/includes/FigureModel.h25
-rwxr-xr-xmodules/graphic_objects/includes/HandleManagement.h48
-rwxr-xr-xmodules/graphic_objects/includes/MatPlotDecomposer.hxx32
-rwxr-xr-xmodules/graphic_objects/includes/Matplot.h100
-rwxr-xr-xmodules/graphic_objects/includes/MeshData.hxx198
-rwxr-xr-xmodules/graphic_objects/includes/MeshFecData.hxx109
-rwxr-xr-xmodules/graphic_objects/includes/MeshFecDataDecomposer.hxx185
-rwxr-xr-xmodules/graphic_objects/includes/NgonData.hxx99
-rwxr-xr-xmodules/graphic_objects/includes/NgonGeneralData.hxx166
-rwxr-xr-xmodules/graphic_objects/includes/NgonGridData.hxx193
-rwxr-xr-xmodules/graphic_objects/includes/NgonGridDataDecomposer.hxx340
-rwxr-xr-xmodules/graphic_objects/includes/NgonGridGrayplotDataDecomposer.hxx114
-rwxr-xr-xmodules/graphic_objects/includes/NgonGridMatplotData.hxx246
-rwxr-xr-xmodules/graphic_objects/includes/NgonGridMatplotDataDecomposer.hxx168
-rwxr-xr-xmodules/graphic_objects/includes/NgonPolylineData.hxx231
-rwxr-xr-xmodules/graphic_objects/includes/NormalGenerator.hxx45
-rwxr-xr-xmodules/graphic_objects/includes/Plot3DDecomposer.hxx146
-rwxr-xr-xmodules/graphic_objects/includes/PolylineDecomposer.hxx440
-rwxr-xr-xmodules/graphic_objects/includes/ScilabView.hxx132
-rwxr-xr-xmodules/graphic_objects/includes/Texture.hxx61
-rwxr-xr-xmodules/graphic_objects/includes/Triangulator.hxx343
-rwxr-xr-xmodules/graphic_objects/includes/createGraphicObject.h77
-rwxr-xr-xmodules/graphic_objects/includes/deleteGraphicObject.h30
-rwxr-xr-xmodules/graphic_objects/includes/dynlib_graphic_objects.h28
-rwxr-xr-xmodules/graphic_objects/includes/getConsoleIdentifier.h23
-rwxr-xr-xmodules/graphic_objects/includes/getGraphicObjectProperty.h42
-rwxr-xr-xmodules/graphic_objects/includes/graphicObjectProperties.h418
-rwxr-xr-xmodules/graphic_objects/includes/returnType.h28
-rwxr-xr-xmodules/graphic_objects/includes/setGraphicObjectProperty.h29
-rwxr-xr-xmodules/graphic_objects/jar/org.scilab.modules.graphic_objects.jarbin0 -> 322706 bytes
-rwxr-xr-xmodules/graphic_objects/libscigraphic_objects-disable.la41
-rwxr-xr-xmodules/graphic_objects/libscigraphic_objects.la41
-rwxr-xr-xmodules/graphic_objects/license.txt9
-rwxr-xr-xmodules/graphic_objects/locales/cs_CZ.po29
-rwxr-xr-xmodules/graphic_objects/locales/de_DE.po29
-rwxr-xr-xmodules/graphic_objects/locales/fr_FR.po30
-rwxr-xr-xmodules/graphic_objects/locales/graphic_objects.pot35
-rwxr-xr-xmodules/graphic_objects/locales/it_IT.po32
-rwxr-xr-xmodules/graphic_objects/locales/ja_JP.po29
-rwxr-xr-xmodules/graphic_objects/locales/pl_PL.po29
-rwxr-xr-xmodules/graphic_objects/locales/pt_BR.po29
-rwxr-xr-xmodules/graphic_objects/locales/ru_RU.po30
-rwxr-xr-xmodules/graphic_objects/locales/uk_UA.po31
-rwxr-xr-xmodules/graphic_objects/locales/zh_CN.po29
-rwxr-xr-xmodules/graphic_objects/macros/buildmacros.bat11
-rwxr-xr-xmodules/graphic_objects/macros/buildmacros.sce16
-rwxr-xr-xmodules/graphic_objects/macros/cleanmacros.bat13
-rwxr-xr-xmodules/graphic_objects/readme.txt1
-rwxr-xr-xmodules/graphic_objects/sci_gateway/graphic_objects_gateway.xml25
-rwxr-xr-xmodules/graphic_objects/src/c/DllmainGraphic_objects.c33
-rwxr-xr-xmodules/graphic_objects/src/c/core_Import.def10
-rwxr-xr-xmodules/graphic_objects/src/c/graphic_objects.vcxproj361
-rwxr-xr-xmodules/graphic_objects/src/c/graphic_objects.vcxproj.filters304
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/.dirstamp0
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-AxesModel.Plo265
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ColorComputer.Plo138
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentFigure.Plo266
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentObject.Plo316
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentSubwin.Plo258
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Data3D.Plo243
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DataLoader.Plo339
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DecompositionUtils.Plo56
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DColorComputer.Plo260
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DDecomposer.Plo287
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureList.Plo265
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureModel.Plo265
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-HandleManagement.Plo258
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MatPlotDecomposer.Plo348
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshData.Plo253
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecData.Plo258
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecDataDecomposer.Plo339
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonData.Plo254
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGeneralData.Plo310
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridData.Plo291
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridDataDecomposer.Plo280
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo288
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotData.Plo326
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo350
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonPolylineData.Plo313
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NormalGenerator.Plo54
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Plot3DDecomposer.Plo290
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-PolylineDecomposer.Plo436
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ScilabView.Plo459
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Texture.Plo46
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Triangulator.Plo391
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createGraphicObject.Plo417
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createObjectData.Plo140
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-dataModel.Plo283
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-deleteGraphicObject.Plo396
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getConsoleIdentifier.Plo351
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getGraphicObjectProperty.Plo429
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-pickSurface.Plo161
-rwxr-xr-xmodules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-setGraphicObjectProperty.Plo429
-rwxr-xr-xmodules/graphic_objects/src/cpp/.dirstamp0
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-AxesModel.obin0 -> 231544 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ColorComputer.obin0 -> 18424 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentFigure.obin0 -> 231584 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentObject.obin0 -> 233528 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentSubwin.obin0 -> 230952 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Data3D.obin0 -> 49080 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DataLoader.obin0 -> 64144 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DecompositionUtils.obin0 -> 17416 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DColorComputer.obin0 -> 30256 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DDecomposer.obin0 -> 57136 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureList.obin0 -> 236992 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureModel.obin0 -> 231560 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-HandleManagement.obin0 -> 231088 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MatPlotDecomposer.obin0 -> 112776 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshData.obin0 -> 47200 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecData.obin0 -> 33432 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecDataDecomposer.obin0 -> 84312 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonData.obin0 -> 23744 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGeneralData.obin0 -> 62800 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridData.obin0 -> 41448 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridDataDecomposer.obin0 -> 101592 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.obin0 -> 34432 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotData.obin0 -> 79384 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.obin0 -> 153528 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonPolylineData.obin0 -> 80424 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NormalGenerator.obin0 -> 25400 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Plot3DDecomposer.obin0 -> 52080 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-PolylineDecomposer.obin0 -> 268976 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ScilabView.obin0 -> 1036992 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Texture.obin0 -> 139384 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Triangulator.obin0 -> 477384 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createGraphicObject.obin0 -> 129400 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createObjectData.obin0 -> 11200 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-dataModel.obin0 -> 107184 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-deleteGraphicObject.obin0 -> 65736 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getConsoleIdentifier.obin0 -> 23056 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getGraphicObjectProperty.obin0 -> 292888 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-pickSurface.obin0 -> 34304 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-setGraphicObjectProperty.obin0 -> 301544 bytes
-rwxr-xr-xmodules/graphic_objects/src/cpp/AxesModel.cpp37
-rwxr-xr-xmodules/graphic_objects/src/cpp/ColorComputer.cpp208
-rwxr-xr-xmodules/graphic_objects/src/cpp/CurrentFigure.cpp40
-rwxr-xr-xmodules/graphic_objects/src/cpp/CurrentObject.cpp63
-rwxr-xr-xmodules/graphic_objects/src/cpp/CurrentSubwin.cpp28
-rwxr-xr-xmodules/graphic_objects/src/cpp/Data3D.cpp52
-rwxr-xr-xmodules/graphic_objects/src/cpp/DataLoader.cpp454
-rwxr-xr-xmodules/graphic_objects/src/cpp/DecompositionUtils.cpp289
-rwxr-xr-xmodules/graphic_objects/src/cpp/Fac3DColorComputer.cpp323
-rwxr-xr-xmodules/graphic_objects/src/cpp/Fac3DDecomposer.cpp599
-rwxr-xr-xmodules/graphic_objects/src/cpp/FigureList.cpp75
-rwxr-xr-xmodules/graphic_objects/src/cpp/FigureModel.cpp38
-rwxr-xr-xmodules/graphic_objects/src/cpp/HandleManagement.cpp28
-rwxr-xr-xmodules/graphic_objects/src/cpp/MatPlotDecomposer.cpp257
-rwxr-xr-xmodules/graphic_objects/src/cpp/MeshData.cpp364
-rwxr-xr-xmodules/graphic_objects/src/cpp/MeshFecData.cpp212
-rwxr-xr-xmodules/graphic_objects/src/cpp/MeshFecDataDecomposer.cpp598
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonData.cpp106
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonGeneralData.cpp304
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonGridData.cpp387
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonGridDataDecomposer.cpp701
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonGridGrayplotDataDecomposer.cpp223
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonGridMatplotData.cpp688
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonGridMatplotDataDecomposer.cpp837
-rwxr-xr-xmodules/graphic_objects/src/cpp/NgonPolylineData.cpp568
-rwxr-xr-xmodules/graphic_objects/src/cpp/NormalGenerator.cpp190
-rwxr-xr-xmodules/graphic_objects/src/cpp/Plot3DDecomposer.cpp487
-rwxr-xr-xmodules/graphic_objects/src/cpp/PolylineDecomposer.cpp1735
-rwxr-xr-xmodules/graphic_objects/src/cpp/ScilabView.cpp716
-rwxr-xr-xmodules/graphic_objects/src/cpp/Texture.cpp1520
-rwxr-xr-xmodules/graphic_objects/src/cpp/Triangulator.cpp818
-rwxr-xr-xmodules/graphic_objects/src/cpp/createGraphicObject.cpp303
-rwxr-xr-xmodules/graphic_objects/src/cpp/createObjectData.cpp99
-rwxr-xr-xmodules/graphic_objects/src/cpp/dataModel.cpp125
-rwxr-xr-xmodules/graphic_objects/src/cpp/deleteGraphicObject.cpp33
-rwxr-xr-xmodules/graphic_objects/src/cpp/getConsoleIdentifier.cpp26
-rwxr-xr-xmodules/graphic_objects/src/cpp/getGraphicObjectProperty.cpp292
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-AxesModel.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-ColorComputer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentFigure.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentObject.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentSubwin.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-Data3D.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-DataLoader.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-DecompositionUtils.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureList.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureModel.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-HandleManagement.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGeneralData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonPolylineData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-NormalGenerator.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-ScilabView.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-Texture.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-Triangulator.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-createGraphicObject.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-createObjectData.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-dataModel.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-pickSurface.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo12
-rwxr-xr-xmodules/graphic_objects/src/cpp/pickSurface.cpp347
-rwxr-xr-xmodules/graphic_objects/src/cpp/setGraphicObjectProperty.cpp163
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallGraphicController.java195
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallXmlLoader.java23
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoader.java131
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoaderJNI.java44
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/JavaObjectLoader.java191
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/MainDataLoader.java344
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectData.java48
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectDataJNI.java31
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectRemovedException.java26
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineData.java76
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineDataJNI.java38
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeView.java44
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.java30
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceData.java32
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceDataJNI.java27
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/Arc.java292
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/ArcDecomposer.java282
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Axes.java2797
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxesContainer.java30
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxisProperty.java566
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Box.java370
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Camera.java229
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/TicksProperty.java742
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axis/Axis.java553
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/builder/Builder.java1156
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/compound/Compound.java42
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/console/Console.java227
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.java178
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.java535
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Line.java204
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Mark.java198
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/datatip/Datatip.java440
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/event/EventHandler.java64
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/fec/Fec.java178
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/ColorMap.java127
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/Figure.java1432
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicController/GraphicController.java417
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.java356
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/CallBack.java117
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.java161
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.java167
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java793
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java419
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/Visitor.java80
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.java74
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GedTreeView.java91
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GraphicView.java39
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GuiLogView.java80
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/LogView.java70
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/ScilabView.java57
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/TreeView.java218
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Grayplot.java144
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Imageplot.java106
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Matplot.java43
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/label/Label.java281
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/legend/Legend.java409
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/ColorTriplet.java121
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Light.java278
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Material.java74
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/polyline/Polyline.java478
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/Rectangle.java167
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.java220
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Fac3d.java143
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Plot3d.java45
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Surface.java323
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.java170
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Font.java179
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/FormattedText.java92
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Text.java408
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/TextObject.java340
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/Uibar.java143
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.java48
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.java48
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.java49
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java1777
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.java55
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.java50
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.java32
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.java80
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.java675
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.java73
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.java92
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.java55
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.java53
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.java61
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.java55
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.java55
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.java95
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/table/Table.java50
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.java52
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.java50
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uimenu/Uimenu.java313
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/LayoutType.java68
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.java433
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.java34
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/Utils.java93
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Arrow.java185
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Champ.java480
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.java448
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Segs.java317
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.java175
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectField.java610
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.java293
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParser.java1131
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.java27
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.java871
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/Pair.java62
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java949
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.java396
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.java665
-rwxr-xr-xmodules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlTools.java162
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/.dirstamp0
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-Builder.Plo341
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallGraphicController.Plo341
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallXmlLoader.Plo341
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-DataLoader_wrap.Plo128
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ObjectData_wrap.Plo183
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-PolylineData_wrap.Plo189
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ScilabNativeView_wrap.Plo126
-rwxr-xr-xmodules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-SurfaceData_wrap.Plo146
-rwxr-xr-xmodules/graphic_objects/src/jni/.dirstamp0
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-Builder.obin0 -> 788248 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallGraphicController.obin0 -> 671432 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallXmlLoader.obin0 -> 272160 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-DataLoader_wrap.obin0 -> 74288 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ObjectData_wrap.obin0 -> 51104 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-PolylineData_wrap.obin0 -> 78488 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ScilabNativeView_wrap.obin0 -> 38088 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-SurfaceData_wrap.obin0 -> 45160 bytes
-rwxr-xr-xmodules/graphic_objects/src/jni/Builder.cpp1199
-rwxr-xr-xmodules/graphic_objects/src/jni/Builder.hxx251
-rwxr-xr-xmodules/graphic_objects/src/jni/CallGraphicController.cpp813
-rwxr-xr-xmodules/graphic_objects/src/jni/CallGraphicController.hxx242
-rwxr-xr-xmodules/graphic_objects/src/jni/CallXmlLoader.cpp258
-rwxr-xr-xmodules/graphic_objects/src/jni/CallXmlLoader.hxx184
-rwxr-xr-xmodules/graphic_objects/src/jni/DataLoader.i93
-rwxr-xr-xmodules/graphic_objects/src/jni/DataLoader_wrap.c1186
-rwxr-xr-xmodules/graphic_objects/src/jni/ObjectData.i286
-rwxr-xr-xmodules/graphic_objects/src/jni/ObjectData_wrap.c500
-rwxr-xr-xmodules/graphic_objects/src/jni/PolylineData.i416
-rwxr-xr-xmodules/graphic_objects/src/jni/PolylineData_wrap.c907
-rwxr-xr-xmodules/graphic_objects/src/jni/ScilabNativeView.i40
-rwxr-xr-xmodules/graphic_objects/src/jni/ScilabNativeView_wrap.c311
-rwxr-xr-xmodules/graphic_objects/src/jni/SurfaceData.i186
-rwxr-xr-xmodules/graphic_objects/src/jni/SurfaceData_wrap.c406
-rwxr-xr-xmodules/graphic_objects/src/jni/builder.giws.xml190
-rwxr-xr-xmodules/graphic_objects/src/jni/graphic_objects.giws.xml103
-rwxr-xr-xmodules/graphic_objects/src/jni/graphic_objects.i0
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-Builder.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-CallGraphicController.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-CallXmlLoader.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-DataLoader_wrap.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-ObjectData_wrap.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-PolylineData_wrap.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo12
-rwxr-xr-xmodules/graphic_objects/src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo12
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/.deps/.dirstamp0
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/.deps/libscigraphic_objects_disable_la-nographic_objects.Plo146
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/.dirstamp0
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/.libs/libscigraphic_objects_disable_la-nographic_objects.obin0 -> 8528 bytes
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo12
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/nographic_objects.c86
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/nographic_objects.h26
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj267
-rwxr-xr-xmodules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj.filters35
-rwxr-xr-xmodules/graphic_objects/src/scripts/genPropertiesName.sh96
-rwxr-xr-xmodules/graphic_objects/src/scripts/propertiesMap.properties447
-rwxr-xr-xmodules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testAxes.java1183
-rwxr-xr-xmodules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testGraphicObject.java342
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_11472.dia.ref23
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_11472.tst28
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_12234.dia.ref17
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_12234.tst20
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_13510.dia.ref23
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_13510.tst28
-rwxr-xr-xmodules/graphic_objects/tests/nonreg_tests/bug_13725.tst24
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/delete.dia.ref10
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/delete.tst11
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/hiddenhandles.dia.ref24
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/hiddenhandles.tst30
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/path.dia.ref59
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/path.tst77
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/sdf.dia.ref9
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/sdf.tst11
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/xpoly.dia.ref44
-rwxr-xr-xmodules/graphic_objects/tests/unit_tests/xpoly.tst66
648 files changed, 79926 insertions, 0 deletions
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects-disable.la b/modules/graphic_objects/.libs/libscigraphic_objects-disable.la
new file mode 120000
index 000000000..7fe90c9e9
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects-disable.la
@@ -0,0 +1 @@
+../libscigraphic_objects-disable.la \ No newline at end of file
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects-disable.lai b/modules/graphic_objects/.libs/libscigraphic_objects-disable.lai
new file mode 100755
index 000000000..d07f9c76b
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects-disable.lai
@@ -0,0 +1,41 @@
+# libscigraphic_objects-disable.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libscigraphic_objects-disable.so.5'
+
+# Names of this library.
+library_names='libscigraphic_objects-disable.so.5.5.2 libscigraphic_objects-disable.so.5 libscigraphic_objects-disable.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscigraphic_objects-disable.
+current=10
+age=5
+revision=2
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib/scilab'
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects-disable.so b/modules/graphic_objects/.libs/libscigraphic_objects-disable.so
new file mode 120000
index 000000000..b64a37634
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects-disable.so
@@ -0,0 +1 @@
+libscigraphic_objects-disable.so.5.5.2 \ No newline at end of file
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects-disable.so.5 b/modules/graphic_objects/.libs/libscigraphic_objects-disable.so.5
new file mode 120000
index 000000000..b64a37634
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects-disable.so.5
@@ -0,0 +1 @@
+libscigraphic_objects-disable.so.5.5.2 \ No newline at end of file
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects-disable.so.5.5.2 b/modules/graphic_objects/.libs/libscigraphic_objects-disable.so.5.5.2
new file mode 100755
index 000000000..a0d9261a3
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects-disable.so.5.5.2
Binary files differ
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects.la b/modules/graphic_objects/.libs/libscigraphic_objects.la
new file mode 120000
index 000000000..43b20ba6d
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects.la
@@ -0,0 +1 @@
+../libscigraphic_objects.la \ No newline at end of file
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects.lai b/modules/graphic_objects/.libs/libscigraphic_objects.lai
new file mode 100755
index 000000000..3d1f656e7
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects.lai
@@ -0,0 +1,41 @@
+# libscigraphic_objects.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libscigraphic_objects.so.5'
+
+# Names of this library.
+library_names='libscigraphic_objects.so.5.5.2 libscigraphic_objects.so.5 libscigraphic_objects.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscigraphic_objects.
+current=10
+age=5
+revision=2
+
+# Is this an already installed library?
+installed=yes
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib/scilab'
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects.so b/modules/graphic_objects/.libs/libscigraphic_objects.so
new file mode 120000
index 000000000..babd7a8d2
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects.so
@@ -0,0 +1 @@
+libscigraphic_objects.so.5.5.2 \ No newline at end of file
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects.so.5 b/modules/graphic_objects/.libs/libscigraphic_objects.so.5
new file mode 120000
index 000000000..babd7a8d2
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects.so.5
@@ -0,0 +1 @@
+libscigraphic_objects.so.5.5.2 \ No newline at end of file
diff --git a/modules/graphic_objects/.libs/libscigraphic_objects.so.5.5.2 b/modules/graphic_objects/.libs/libscigraphic_objects.so.5.5.2
new file mode 100755
index 000000000..477d5832c
--- /dev/null
+++ b/modules/graphic_objects/.libs/libscigraphic_objects.so.5.5.2
Binary files differ
diff --git a/modules/graphic_objects/Makefile b/modules/graphic_objects/Makefile
new file mode 100755
index 000000000..f1ff7677c
--- /dev/null
+++ b/modules/graphic_objects/Makefile
@@ -0,0 +1,1960 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# modules/graphic_objects/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+#
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) DIGITEO - 2010 - Allan CORNET
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/scilab
+pkgincludedir = $(includedir)/scilab
+pkglibdir = $(libdir)/scilab
+pkglibexecdir = $(libexecdir)/scilab
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+am__append_1 = java
+#am__append_2 = giws
+am__append_3 = libscigraphic_objects.la
+#am__append_4 = swig
+subdir = modules/graphic_objects
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/backtrace.m4 \
+ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/curl.m4 \
+ $(top_srcdir)/m4/docbook.m4 $(top_srcdir)/m4/doxygen.m4 \
+ $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+ $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+ $(top_srcdir)/m4/intel_compiler.m4 \
+ $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+ $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+ $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+ $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+ $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+ $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+ "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" \
+ "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" \
+ "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libscigraphic_objects_disable_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo
+am_libscigraphic_objects_disable_la_OBJECTS = $(am__objects_1)
+libscigraphic_objects_disable_la_OBJECTS = \
+ $(am_libscigraphic_objects_disable_la_OBJECTS)
+AM_V_lt = $(am__v_lt_$(V))
+am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am__DEPENDENCIES_1 =
+libscigraphic_objects_la_DEPENDENCIES = \
+ $(top_builddir)/modules/output_stream/libscioutput_stream.la \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__objects_2 = src/jni/libscigraphic_objects_la-DataLoader_wrap.lo \
+ src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo \
+ src/jni/libscigraphic_objects_la-PolylineData_wrap.lo \
+ src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo \
+ src/jni/libscigraphic_objects_la-ObjectData_wrap.lo
+am__objects_3 = \
+ src/jni/libscigraphic_objects_la-CallGraphicController.lo \
+ src/jni/libscigraphic_objects_la-Builder.lo \
+ src/jni/libscigraphic_objects_la-CallXmlLoader.lo
+am__objects_4 = \
+ src/cpp/libscigraphic_objects_la-createGraphicObject.lo \
+ src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo \
+ src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo \
+ src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo \
+ src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo \
+ src/cpp/libscigraphic_objects_la-dataModel.lo \
+ src/cpp/libscigraphic_objects_la-Data3D.lo \
+ src/cpp/libscigraphic_objects_la-DataLoader.lo \
+ src/cpp/libscigraphic_objects_la-NgonData.lo \
+ src/cpp/libscigraphic_objects_la-NgonGeneralData.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridData.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo \
+ src/cpp/libscigraphic_objects_la-NgonPolylineData.lo \
+ src/cpp/libscigraphic_objects_la-MeshData.lo \
+ src/cpp/libscigraphic_objects_la-MeshFecData.lo \
+ src/cpp/libscigraphic_objects_la-ColorComputer.lo \
+ src/cpp/libscigraphic_objects_la-DecompositionUtils.lo \
+ src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo \
+ src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-Triangulator.lo \
+ src/cpp/libscigraphic_objects_la-ScilabView.lo \
+ src/cpp/libscigraphic_objects_la-FigureList.lo \
+ src/cpp/libscigraphic_objects_la-HandleManagement.lo \
+ src/cpp/libscigraphic_objects_la-AxesModel.lo \
+ src/cpp/libscigraphic_objects_la-FigureModel.lo \
+ src/cpp/libscigraphic_objects_la-CurrentFigure.lo \
+ src/cpp/libscigraphic_objects_la-CurrentObject.lo \
+ src/cpp/libscigraphic_objects_la-CurrentSubwin.lo \
+ src/cpp/libscigraphic_objects_la-createObjectData.lo \
+ src/cpp/libscigraphic_objects_la-pickSurface.lo \
+ src/cpp/libscigraphic_objects_la-Texture.lo \
+ src/cpp/libscigraphic_objects_la-NormalGenerator.lo
+am_libscigraphic_objects_la_OBJECTS = $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4)
+libscigraphic_objects_la_OBJECTS = \
+ $(am_libscigraphic_objects_la_OBJECTS)
+libscigraphic_objects_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(libscigraphic_objects_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+am_libscigraphic_objects_la_rpath = -rpath $(pkglibdir)
+AM_V_P = $(am__v_P_$(V))
+am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_$(V))
+am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_$(V))
+am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_$(V))
+am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_$(V))
+am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(libscigraphic_objects_disable_la_SOURCES) \
+ $(libscigraphic_objects_la_SOURCES)
+DIST_SOURCES = $(libscigraphic_objects_disable_la_SOURCES) \
+ $(libscigraphic_objects_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libscigraphic_objects_la_etc_DATA) \
+ $(libscigraphic_objects_la_root_DATA) \
+ $(libscigraphic_objects_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing aclocal-1.14
+ALL_LINGUAS = en_US fr_FR zh_CN zh_TW ru_RU ca_ES de_DE es_ES pt_BR ja_JP it_IT uk_UA pl_PL cs_CZ
+ALL_LINGUAS_DOC = en_US fr_FR pt_BR ja_JP ru_RU
+AMTAR = $${TAR-tar}
+AM_DEFAULT_VERBOSITY = 1
+ANT = /usr/bin/ant
+ANTLR = /usr/share/java/antlr.jar
+AR = ar
+ARPACK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -larpack
+ASM3 = /usr/share/java/asm3-3.3.2.jar
+AUTOCONF = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing autoconf
+AUTOHEADER = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing autoheader
+AUTOMAKE = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing automake-1.14
+AVALON_FRAMEWORK = /home/shashank/scilab-master_5.5.2/thirdparty/avalon-framework.jar
+AWK = mawk
+BATIK = /home/shashank/scilab-master_5.5.2/thirdparty/batik-all-1.7.jar
+BLAS_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lblas
+CC = gcc
+CCACHE =
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CHECKSTYLE =
+COBERTURA = /usr/share/java/cobertura.jar
+COMMONS_BEANUTILS =
+COMMONS_IO = /home/shashank/scilab-master_5.5.2/thirdparty/commons-io.jar
+COMMONS_LOGGING = /home/shashank/scilab-master_5.5.2/thirdparty/commons-logging.jar
+CPP = gcc -E
+CPPFLAGS =
+CURL_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+CURL_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/curl-config
+CURL_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lcurl -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -lssl -lcrypto -lrt -lz
+CURL_VERSION = libcurl 7.19.7
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEMOTOOLS_ENABLE = yes
+DEPDIR = .deps
+DLLTOOL = false
+DOCBOOK_ROOT = /home/shashank/scilab-master_5.5.2/thirdparty/docbook/
+DOXYGEN_BIN =
+DSYMUTIL =
+DUMPBIN =
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+ECJ = /home/shashank/scilab-master_5.5.2/thirdparty/ecj.jar
+EGREP = /bin/grep -E
+EXEEXT =
+F77 = gfortran
+FFLAGS = -g -O2
+FFTW3_LIB = -L/home/shashank/scilab-master_5.5.2/usr/lib -lfftw3
+FFTW_ENABLE = yes
+FGREP = /bin/grep -F
+FLEXDOCK = /home/shashank/scilab-master_5.5.2/thirdparty/flexdock-1.2.4.jar
+FLIBS = -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lpthread -ldl -lcurses -lgfortran -lm -lquadmath
+FOP = /home/shashank/scilab-master_5.5.2/thirdparty/fop.jar
+FREEHEP_GRAPHICS2D = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphics2d.jar
+FREEHEP_GRAPHICSIO = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphicsio.jar
+FREEHEP_GRAPHICSIO_EMF = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-graphicsio-emf.jar
+FREEHEP_IO = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-io.jar
+FREEHEP_UTIL = /home/shashank/scilab-master_5.5.2/thirdparty/freehep-util.jar
+GENHTML =
+GETTEXT_MACRO_VERSION = 0.19
+GIWS_BIN =
+GLUEGEN2_RT = /home/shashank/scilab-master_5.5.2/thirdparty/gluegen2-rt.jar
+GMSGFMT = /usr/bin/msgfmt
+GMSGFMT_015 = /usr/bin/msgfmt
+GRAPHICS_ENABLE = yes
+GREP = /bin/grep
+GUI_ENABLE = yes
+HDF5_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+HDF5_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lhdf5 -lhdf5_hl
+HELP_ENABLE = yes
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+INTLLIBS =
+INTL_MACOSX_LIBS =
+JAR = /usr/lib/jvm/java-8-openjdk-amd64/bin/jar
+JAVA = /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+JAVAC = /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
+JAVAC_DEBUG = off
+JAVADOC = /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc
+JAVAH = /usr/lib/jvm/java-8-openjdk-amd64/bin/javah
+JAVASCI_ENABLE = yes
+JAVA_ENABLE = yes
+JAVA_G = /usr/lib/jvm/java-8-openjdk-amd64/bin/java
+JAVA_HOME = /usr/lib/jvm/java-8-openjdk-amd64
+JAVA_JNI_INCLUDE = -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux
+JAVA_JNI_LIBS = -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64 -ljava -lverify -L/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server -ljvm
+JDB = /usr/lib/jvm/java-8-openjdk-amd64/bin/jdb
+JEUCLID_CORE = /home/shashank/scilab-master_5.5.2/thirdparty/jeuclid-core.jar
+JGRAPHX = /home/shashank/scilab-master_5.5.2/thirdparty/jgraphx.jar
+JHALL = /home/shashank/scilab-master_5.5.2/thirdparty/jhall.jar
+JLATEXMATH = /home/shashank/scilab-master_5.5.2/thirdparty/jlatexmath-1.0.3.jar
+JLATEXMATH_FOP = /home/shashank/scilab-master_5.5.2/thirdparty/jlatexmath-fop-1.0.3.jar
+JOGL2 = /home/shashank/scilab-master_5.5.2/thirdparty/jogl2.jar
+JROSETTA_API = /home/shashank/scilab-master_5.5.2/thirdparty/jrosetta-API.jar
+JROSETTA_ENGINE = /home/shashank/scilab-master_5.5.2/thirdparty/jrosetta-engine.jar
+JUNIT4 = /usr/share/java/junit4.jar
+LAPACK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -llapack
+LCOV =
+LD = /usr/bin/ld -m elf_x86_64
+LDFLAGS = -Wl,--no-as-needed
+LIBICONV = -liconv
+LIBINTL =
+LIBM = -lm
+LIBOBJS =
+LIBS = -lpthread -ldl -lcurses -lm
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIPO =
+LN_S = ln -s
+LOGGING_LEVEL = SEVERE
+LOOKS = /home/shashank/scilab-master_5.5.2/thirdparty/looks-2.1.1.jar
+LTLIBICONV = -liconv
+LTLIBINTL =
+LTLIBOBJS =
+MAINT = #
+MAKEINFO = ${SHELL} /home/shashank/scilab-master_5.5.2/config/missing makeinfo
+MANIFEST_TOOL = :
+MATIO_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+MATIO_ENABLE = yes
+MATIO_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lm -lz -lmatio -lhdf5
+MKDIR_P = /bin/mkdir -p
+MPI_ENABLE = no
+MSGCAT = /usr/bin/msgcat
+MSGFMT = /usr/bin/msgfmt
+MSGFMT_015 = /usr/bin/msgfmt
+MSGMERGE = /usr/bin/msgmerge
+NM = nm
+NMEDIT =
+OBJDUMP = objdump
+OBJEXT = o
+OCAMLC = ocamlc
+OCAMLDEP = ocamldep
+OCAMLLEX = ocamllex
+OCAMLOPT = ocamlopt
+OCAMLYACC = ocamlyacc
+OPENMPI_CC =
+OPENMPI_CFLAGS =
+OPENMPI_CXX =
+OPENMPI_CXXFLAGS =
+OPENMPI_LIBS =
+OPENMP_CFLAGS = -fopenmp
+OPENMP_CXXFLAGS = -fopenmp
+OPENMP_ENABLE = yes
+OPENMP_LIBS = -lgomp -lstdc++
+OTOOL =
+OTOOL64 =
+PACKAGE = scilab
+PACKAGE_BUGREPORT = http://bugzilla.scilab.org/
+PACKAGE_NAME = Scilab
+PACKAGE_STRING = Scilab 5
+PACKAGE_TARNAME = scilab
+PACKAGE_URL =
+PACKAGE_VERSION = 5
+PATH_SEPARATOR = :
+PCRE_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+PCRE_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/pcre-config
+PCRE_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lpcreposix -lpcre
+PCRE_VERSION = 8.35
+PKG_CONFIG = /usr/bin/pkg-config
+POSUB = po
+POW_LIB =
+PYTHON =
+RANLIB = ranlib
+RELOCATABLE = no
+RT_LIB = -lrt
+SAXON = /home/shashank/scilab-master_5.5.2/thirdparty/saxon9he.jar
+SCILAB_BINARY_VERSION = 5.5.2
+SCILAB_LIBRARY_VERSION = 5:5:2
+SCILAB_VERSION_MAINTENANCE = 2
+SCILAB_VERSION_MAJOR = 5
+SCILAB_VERSION_MINOR = 5
+SCIRENDERER = ${modules.dir}/scirenderer/${build.jar.dir}/scirenderer.jar
+SCIRENDERER_CP = $SCILAB/modules/scirenderer/jar/scirenderer.jar
+SCI_CFLAGS = -D_LARGEFILE64_SOURCE -DNDEBUG -m64 -fno-stack-protector
+SCI_CXXFLAGS = -DNDEBUG -fno-stack-protector
+SCI_FFLAGS = -DNDEBUG -m64 -fPIC
+SCI_LDFLAGS =
+SED = /bin/sed
+SET_MAKE =
+SET_RELOCATABLE =
+SHELL = /bin/bash
+SKINLF = /home/shashank/scilab-master_5.5.2/thirdparty/skinlf.jar
+SPLINT = no
+STRIP = strip
+SWIG_BIN =
+SWIG_JAVA =
+SWIG_RUNTIME_LIBS_DIR =
+SWIG_SCILAB =
+TCLTK_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -ltk8.5 -L/home/shashank/scilab-master_5.5.2/usr/lib -ltcl8.5 -ldl
+TCL_INC_PATH = -I/home/shashank/scilab-master_5.5.2/usr/include
+TK_INC_PATH = -I/home/shashank/scilab-master_5.5.2/usr/include
+UMFPACK_CFLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include
+UMFPACK_ENABLE = yes
+UMFPACK_LIB = -L/home/shashank/scilab-master_5.5.2/usr/lib -lumfpack -lamd
+USE_NLS = yes
+VERSION = 5
+WITH_OCAML =
+WITH_TKSCI = yes
+XCOS_ENABLE = yes
+XGETTEXT = /usr/bin/xgettext
+XGETTEXT_015 = /usr/bin/xgettext
+XGETTEXT_EXTRA_OPTIONS =
+XMKMF =
+XMLGRAPHICS_COMMONS = /home/shashank/scilab-master_5.5.2/thirdparty/xmlgraphics-commons-1.4.jar
+XML_APIS_EXT = /home/shashank/scilab-master_5.5.2/thirdparty/xml-apis-ext.jar
+XML_CONFIG = /home/shashank/scilab-master_5.5.2/usr/bin/xml2-config
+XML_FLAGS = -I/home/shashank/scilab-master_5.5.2/usr/include/libxml2
+XML_LIBS = -L/home/shashank/scilab-master_5.5.2/usr/lib -lxml2 -L/home/scilab/work/linux-prerequisites-sources/trunk/Dev-Tools/SE/Prerequirements/linux_x64/usr/lib -lz -lm -ldl
+XML_VERSION = 2.9.1
+X_CFLAGS =
+X_EXTRA_LIBS =
+X_LIBS =
+X_PRE_LIBS =
+abs_builddir = /home/shashank/scilab-master_5.5.2/modules/graphic_objects
+abs_srcdir = /home/shashank/scilab-master_5.5.2/modules/graphic_objects
+abs_top_builddir = /home/shashank/scilab-master_5.5.2
+abs_top_srcdir = /home/shashank/scilab-master_5.5.2
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_DUMPBIN =
+ac_ct_F77 = gfortran
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = $${TAR-tar} chof - "$$tardir"
+am__untar = $${TAR-tar} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias =
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+cxx_present = yes
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias =
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/shashank/scilab-master_5.5.2/config/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = $(MKDIR_P)
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix = ../../
+top_builddir = ../..
+top_srcdir = ../..
+
+#### Target ######
+modulename = graphic_objects
+
+#### graphic_objects : Conf files ####
+libscigraphic_objects_la_rootdir = $(mydatadir)
+libscigraphic_objects_la_root_DATA = changelog.txt license.txt readme.txt
+
+#### graphic_objects : init scripts ####
+libscigraphic_objects_la_etcdir = $(mydatadir)/etc
+libscigraphic_objects_la_etc_DATA = etc/graphic_objects.quit \
+ etc/graphic_objects.start
+
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_1)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+BUILT_SOURCES = includes/graphicObjectsProperties.h $(am__append_2) \
+ $(am__append_4)
+#This file is also generated, but can not be listed to prevent GCJ call.
+#src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
+GRAPHIC_OBJECTS_JNI_SOURCES = src/jni/CallGraphicController.cpp \
+ src/jni/Builder.cpp \
+ src/jni/CallXmlLoader.cpp
+
+GRAPHIC_OBJECTS_C_SOURCES = src/jni/DataLoader_wrap.c \
+ src/jni/ScilabNativeView_wrap.c \
+ src/jni/PolylineData_wrap.c \
+ src/jni/SurfaceData_wrap.c \
+ src/jni/ObjectData_wrap.c
+
+GRAPHIC_OBJECTS_CXX_SOURCES = src/cpp/createGraphicObject.cpp \
+ src/cpp/getGraphicObjectProperty.cpp \
+ src/cpp/getConsoleIdentifier.cpp \
+ src/cpp/setGraphicObjectProperty.cpp \
+ src/cpp/deleteGraphicObject.cpp \
+ src/cpp/dataModel.cpp \
+ src/cpp/Data3D.cpp \
+ src/cpp/DataLoader.cpp \
+ src/cpp/NgonData.cpp \
+ src/cpp/NgonGeneralData.cpp \
+ src/cpp/NgonGridData.cpp \
+ src/cpp/NgonGridMatplotData.cpp \
+ src/cpp/NgonPolylineData.cpp \
+ src/cpp/MeshData.cpp \
+ src/cpp/MeshFecData.cpp \
+ src/cpp/ColorComputer.cpp \
+ src/cpp/DecompositionUtils.cpp \
+ src/cpp/Fac3DColorComputer.cpp \
+ src/cpp/Fac3DDecomposer.cpp \
+ src/cpp/NgonGridDataDecomposer.cpp \
+ src/cpp/NgonGridGrayplotDataDecomposer.cpp \
+ src/cpp/MatPlotDecomposer.cpp \
+ src/cpp/NgonGridMatplotDataDecomposer.cpp \
+ src/cpp/Plot3DDecomposer.cpp \
+ src/cpp/PolylineDecomposer.cpp \
+ src/cpp/MeshFecDataDecomposer.cpp \
+ src/cpp/Triangulator.cpp \
+ src/cpp/ScilabView.cpp \
+ src/cpp/FigureList.cpp \
+ src/cpp/HandleManagement.cpp \
+ src/cpp/AxesModel.cpp \
+ src/cpp/FigureModel.cpp \
+ src/cpp/CurrentFigure.cpp \
+ src/cpp/CurrentObject.cpp \
+ src/cpp/CurrentSubwin.cpp \
+ src/cpp/createObjectData.cpp \
+ src/cpp/pickSurface.cpp \
+ src/cpp/Texture.cpp \
+ src/cpp/NormalGenerator.cpp
+
+GIWS_WRAPPERS = src/jni/graphic_objects.giws.xml \
+ src/jni/builder.giws.xml
+
+libscigraphic_objects_la_CPPFLAGS = $(JAVA_JNI_INCLUDE) \
+ -I$(srcdir)/includes/ \
+ -I$(srcdir)/src/cpp/ \
+ -I$(srcdir)/src/c/ \
+ -I$(srcdir)/src/jni/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/commons/src/jni/ \
+ -I$(top_srcdir)/modules/core/includes/ \
+ -I$(top_srcdir)/modules/jvm/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/
+
+
+# Without the graphic_objects module
+libscigraphic_objects_disable_la_CPPFLAGS = -I$(srcdir)/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/
+
+GRAPHIC_OBJECTS_DISABLE_C_SOURCES = src/nographic_objects/nographic_objects.c
+libscigraphic_objects_disable_la_SOURCES = $(GRAPHIC_OBJECTS_DISABLE_C_SOURCES)
+pkglib_LTLIBRARIES = libscigraphic_objects-disable.la $(am__append_3)
+libscigraphic_objects_la_LDFLAGS = $(AM_LDFLAGS)
+libscigraphic_objects_la_SOURCES = $(GRAPHIC_OBJECTS_GEN_SOURCES) $(GRAPHIC_OBJECTS_C_SOURCES) $(GRAPHIC_OBJECTS_JNI_SOURCES) $(GATEWAY_C_SOURCES) $(GATEWAY_CXX_SOURCES) $(GRAPHIC_OBJECTS_CXX_SOURCES)
+
+# For the code check (splint)
+CHECK_SRC = $(GRAPHIC_OBJECTS_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscigraphic_objects_la_CPPFLAGS)
+
+#### SWIG Declaration ####
+SWIG_WRAPPERS = src/jni/DataLoader.i \
+ src/jni/ScilabNativeView.i \
+ src/jni/PolylineData.i \
+ src/jni/SurfaceData.i \
+ src/jni/graphic_objects.i \
+ src/jni/ObjectData.i
+
+libscigraphic_objects_la_LIBADD = $(top_builddir)/modules/output_stream/libscioutput_stream.la $(X_LIBS) $(X_EXTRA_LIBS)
+
+#### graphic_objects : gateway declaration ####
+libscigraphic_objects_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscigraphic_objects_la_sci_gateway_DATA = sci_gateway/graphic_objects_gateway.xml
+USEANT = 1
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/graphic_objects/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/graphic_objects/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/Makefile.incl.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+src/nographic_objects/$(am__dirstamp):
+ @$(MKDIR_P) src/nographic_objects
+ @: > src/nographic_objects/$(am__dirstamp)
+src/nographic_objects/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/nographic_objects/$(DEPDIR)
+ @: > src/nographic_objects/$(DEPDIR)/$(am__dirstamp)
+src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo: \
+ src/nographic_objects/$(am__dirstamp) \
+ src/nographic_objects/$(DEPDIR)/$(am__dirstamp)
+
+libscigraphic_objects-disable.la: $(libscigraphic_objects_disable_la_OBJECTS) $(libscigraphic_objects_disable_la_DEPENDENCIES) $(EXTRA_libscigraphic_objects_disable_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) -rpath $(pkglibdir) $(libscigraphic_objects_disable_la_OBJECTS) $(libscigraphic_objects_disable_la_LIBADD) $(LIBS)
+src/jni/$(am__dirstamp):
+ @$(MKDIR_P) src/jni
+ @: > src/jni/$(am__dirstamp)
+src/jni/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/jni/$(DEPDIR)
+ @: > src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-DataLoader_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-PolylineData_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-ObjectData_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-CallGraphicController.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-Builder.lo: src/jni/$(am__dirstamp) \
+ src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-CallXmlLoader.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/cpp/$(am__dirstamp):
+ @$(MKDIR_P) src/cpp
+ @: > src/cpp/$(am__dirstamp)
+src/cpp/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/cpp/$(DEPDIR)
+ @: > src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-createGraphicObject.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-dataModel.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Data3D.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-DataLoader.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonData.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGeneralData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonPolylineData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshFecData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-ColorComputer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-DecompositionUtils.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Triangulator.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-ScilabView.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-FigureList.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-HandleManagement.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-AxesModel.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-FigureModel.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-CurrentFigure.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-CurrentObject.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-CurrentSubwin.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-createObjectData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-pickSurface.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Texture.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NormalGenerator.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+
+libscigraphic_objects.la: $(libscigraphic_objects_la_OBJECTS) $(libscigraphic_objects_la_DEPENDENCIES) $(EXTRA_libscigraphic_objects_la_DEPENDENCIES)
+ $(AM_V_CXXLD)$(libscigraphic_objects_la_LINK) $(am_libscigraphic_objects_la_rpath) $(libscigraphic_objects_la_OBJECTS) $(libscigraphic_objects_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f src/cpp/*.$(OBJEXT)
+ -rm -f src/cpp/*.lo
+ -rm -f src/jni/*.$(OBJEXT)
+ -rm -f src/jni/*.lo
+ -rm -f src/nographic_objects/*.$(OBJEXT)
+ -rm -f src/nographic_objects/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Plo
+include src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Plo
+include src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Plo
+include src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Plo
+
+.c.o:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CC)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Plo
+# $(AM_V_CC)source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
+
+src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo: src/nographic_objects/nographic_objects.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_disable_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo -MD -MP -MF src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Tpo -c -o src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo `test -f 'src/nographic_objects/nographic_objects.c' || echo '$(srcdir)/'`src/nographic_objects/nographic_objects.c
+ $(AM_V_at)$(am__mv) src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Tpo src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Plo
+# $(AM_V_CC)source='src/nographic_objects/nographic_objects.c' object='src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_disable_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo `test -f 'src/nographic_objects/nographic_objects.c' || echo '$(srcdir)/'`src/nographic_objects/nographic_objects.c
+
+src/jni/libscigraphic_objects_la-DataLoader_wrap.lo: src/jni/DataLoader_wrap.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-DataLoader_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-DataLoader_wrap.lo `test -f 'src/jni/DataLoader_wrap.c' || echo '$(srcdir)/'`src/jni/DataLoader_wrap.c
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Plo
+# $(AM_V_CC)source='src/jni/DataLoader_wrap.c' object='src/jni/libscigraphic_objects_la-DataLoader_wrap.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-DataLoader_wrap.lo `test -f 'src/jni/DataLoader_wrap.c' || echo '$(srcdir)/'`src/jni/DataLoader_wrap.c
+
+src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo: src/jni/ScilabNativeView_wrap.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo `test -f 'src/jni/ScilabNativeView_wrap.c' || echo '$(srcdir)/'`src/jni/ScilabNativeView_wrap.c
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Plo
+# $(AM_V_CC)source='src/jni/ScilabNativeView_wrap.c' object='src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo `test -f 'src/jni/ScilabNativeView_wrap.c' || echo '$(srcdir)/'`src/jni/ScilabNativeView_wrap.c
+
+src/jni/libscigraphic_objects_la-PolylineData_wrap.lo: src/jni/PolylineData_wrap.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-PolylineData_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-PolylineData_wrap.lo `test -f 'src/jni/PolylineData_wrap.c' || echo '$(srcdir)/'`src/jni/PolylineData_wrap.c
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Plo
+# $(AM_V_CC)source='src/jni/PolylineData_wrap.c' object='src/jni/libscigraphic_objects_la-PolylineData_wrap.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-PolylineData_wrap.lo `test -f 'src/jni/PolylineData_wrap.c' || echo '$(srcdir)/'`src/jni/PolylineData_wrap.c
+
+src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo: src/jni/SurfaceData_wrap.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo `test -f 'src/jni/SurfaceData_wrap.c' || echo '$(srcdir)/'`src/jni/SurfaceData_wrap.c
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Plo
+# $(AM_V_CC)source='src/jni/SurfaceData_wrap.c' object='src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo `test -f 'src/jni/SurfaceData_wrap.c' || echo '$(srcdir)/'`src/jni/SurfaceData_wrap.c
+
+src/jni/libscigraphic_objects_la-ObjectData_wrap.lo: src/jni/ObjectData_wrap.c
+ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-ObjectData_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-ObjectData_wrap.lo `test -f 'src/jni/ObjectData_wrap.c' || echo '$(srcdir)/'`src/jni/ObjectData_wrap.c
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Plo
+# $(AM_V_CC)source='src/jni/ObjectData_wrap.c' object='src/jni/libscigraphic_objects_la-ObjectData_wrap.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+# $(AM_V_CC_no)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-ObjectData_wrap.lo `test -f 'src/jni/ObjectData_wrap.c' || echo '$(srcdir)/'`src/jni/ObjectData_wrap.c
+
+.cpp.o:
+ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CXX)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Po
+# $(AM_V_CXX)source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+ $(am__mv) $$depbase.Tpo $$depbase.Plo
+# $(AM_V_CXX)source='$<' object='$@' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<
+
+src/jni/libscigraphic_objects_la-CallGraphicController.lo: src/jni/CallGraphicController.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/jni/libscigraphic_objects_la-CallGraphicController.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Tpo -c -o src/jni/libscigraphic_objects_la-CallGraphicController.lo `test -f 'src/jni/CallGraphicController.cpp' || echo '$(srcdir)/'`src/jni/CallGraphicController.cpp
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Plo
+# $(AM_V_CXX)source='src/jni/CallGraphicController.cpp' object='src/jni/libscigraphic_objects_la-CallGraphicController.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/jni/libscigraphic_objects_la-CallGraphicController.lo `test -f 'src/jni/CallGraphicController.cpp' || echo '$(srcdir)/'`src/jni/CallGraphicController.cpp
+
+src/jni/libscigraphic_objects_la-Builder.lo: src/jni/Builder.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/jni/libscigraphic_objects_la-Builder.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Tpo -c -o src/jni/libscigraphic_objects_la-Builder.lo `test -f 'src/jni/Builder.cpp' || echo '$(srcdir)/'`src/jni/Builder.cpp
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Plo
+# $(AM_V_CXX)source='src/jni/Builder.cpp' object='src/jni/libscigraphic_objects_la-Builder.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/jni/libscigraphic_objects_la-Builder.lo `test -f 'src/jni/Builder.cpp' || echo '$(srcdir)/'`src/jni/Builder.cpp
+
+src/jni/libscigraphic_objects_la-CallXmlLoader.lo: src/jni/CallXmlLoader.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/jni/libscigraphic_objects_la-CallXmlLoader.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Tpo -c -o src/jni/libscigraphic_objects_la-CallXmlLoader.lo `test -f 'src/jni/CallXmlLoader.cpp' || echo '$(srcdir)/'`src/jni/CallXmlLoader.cpp
+ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Plo
+# $(AM_V_CXX)source='src/jni/CallXmlLoader.cpp' object='src/jni/libscigraphic_objects_la-CallXmlLoader.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/jni/libscigraphic_objects_la-CallXmlLoader.lo `test -f 'src/jni/CallXmlLoader.cpp' || echo '$(srcdir)/'`src/jni/CallXmlLoader.cpp
+
+src/cpp/libscigraphic_objects_la-createGraphicObject.lo: src/cpp/createGraphicObject.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-createGraphicObject.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Tpo -c -o src/cpp/libscigraphic_objects_la-createGraphicObject.lo `test -f 'src/cpp/createGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/createGraphicObject.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Plo
+# $(AM_V_CXX)source='src/cpp/createGraphicObject.cpp' object='src/cpp/libscigraphic_objects_la-createGraphicObject.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-createGraphicObject.lo `test -f 'src/cpp/createGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/createGraphicObject.cpp
+
+src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo: src/cpp/getGraphicObjectProperty.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Tpo -c -o src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo `test -f 'src/cpp/getGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/getGraphicObjectProperty.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Plo
+# $(AM_V_CXX)source='src/cpp/getGraphicObjectProperty.cpp' object='src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo `test -f 'src/cpp/getGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/getGraphicObjectProperty.cpp
+
+src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo: src/cpp/getConsoleIdentifier.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Tpo -c -o src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo `test -f 'src/cpp/getConsoleIdentifier.cpp' || echo '$(srcdir)/'`src/cpp/getConsoleIdentifier.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Plo
+# $(AM_V_CXX)source='src/cpp/getConsoleIdentifier.cpp' object='src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo `test -f 'src/cpp/getConsoleIdentifier.cpp' || echo '$(srcdir)/'`src/cpp/getConsoleIdentifier.cpp
+
+src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo: src/cpp/setGraphicObjectProperty.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Tpo -c -o src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo `test -f 'src/cpp/setGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/setGraphicObjectProperty.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Plo
+# $(AM_V_CXX)source='src/cpp/setGraphicObjectProperty.cpp' object='src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo `test -f 'src/cpp/setGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/setGraphicObjectProperty.cpp
+
+src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo: src/cpp/deleteGraphicObject.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Tpo -c -o src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo `test -f 'src/cpp/deleteGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/deleteGraphicObject.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Plo
+# $(AM_V_CXX)source='src/cpp/deleteGraphicObject.cpp' object='src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo `test -f 'src/cpp/deleteGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/deleteGraphicObject.cpp
+
+src/cpp/libscigraphic_objects_la-dataModel.lo: src/cpp/dataModel.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-dataModel.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Tpo -c -o src/cpp/libscigraphic_objects_la-dataModel.lo `test -f 'src/cpp/dataModel.cpp' || echo '$(srcdir)/'`src/cpp/dataModel.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Plo
+# $(AM_V_CXX)source='src/cpp/dataModel.cpp' object='src/cpp/libscigraphic_objects_la-dataModel.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-dataModel.lo `test -f 'src/cpp/dataModel.cpp' || echo '$(srcdir)/'`src/cpp/dataModel.cpp
+
+src/cpp/libscigraphic_objects_la-Data3D.lo: src/cpp/Data3D.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Data3D.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Tpo -c -o src/cpp/libscigraphic_objects_la-Data3D.lo `test -f 'src/cpp/Data3D.cpp' || echo '$(srcdir)/'`src/cpp/Data3D.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Plo
+# $(AM_V_CXX)source='src/cpp/Data3D.cpp' object='src/cpp/libscigraphic_objects_la-Data3D.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Data3D.lo `test -f 'src/cpp/Data3D.cpp' || echo '$(srcdir)/'`src/cpp/Data3D.cpp
+
+src/cpp/libscigraphic_objects_la-DataLoader.lo: src/cpp/DataLoader.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-DataLoader.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Tpo -c -o src/cpp/libscigraphic_objects_la-DataLoader.lo `test -f 'src/cpp/DataLoader.cpp' || echo '$(srcdir)/'`src/cpp/DataLoader.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Plo
+# $(AM_V_CXX)source='src/cpp/DataLoader.cpp' object='src/cpp/libscigraphic_objects_la-DataLoader.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-DataLoader.lo `test -f 'src/cpp/DataLoader.cpp' || echo '$(srcdir)/'`src/cpp/DataLoader.cpp
+
+src/cpp/libscigraphic_objects_la-NgonData.lo: src/cpp/NgonData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonData.lo `test -f 'src/cpp/NgonData.cpp' || echo '$(srcdir)/'`src/cpp/NgonData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Plo
+# $(AM_V_CXX)source='src/cpp/NgonData.cpp' object='src/cpp/libscigraphic_objects_la-NgonData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonData.lo `test -f 'src/cpp/NgonData.cpp' || echo '$(srcdir)/'`src/cpp/NgonData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGeneralData.lo: src/cpp/NgonGeneralData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGeneralData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGeneralData.lo `test -f 'src/cpp/NgonGeneralData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGeneralData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Plo
+# $(AM_V_CXX)source='src/cpp/NgonGeneralData.cpp' object='src/cpp/libscigraphic_objects_la-NgonGeneralData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGeneralData.lo `test -f 'src/cpp/NgonGeneralData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGeneralData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridData.lo: src/cpp/NgonGridData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridData.lo `test -f 'src/cpp/NgonGridData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Plo
+# $(AM_V_CXX)source='src/cpp/NgonGridData.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridData.lo `test -f 'src/cpp/NgonGridData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo: src/cpp/NgonGridMatplotData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo `test -f 'src/cpp/NgonGridMatplotData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Plo
+# $(AM_V_CXX)source='src/cpp/NgonGridMatplotData.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo `test -f 'src/cpp/NgonGridMatplotData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonPolylineData.lo: src/cpp/NgonPolylineData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonPolylineData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonPolylineData.lo `test -f 'src/cpp/NgonPolylineData.cpp' || echo '$(srcdir)/'`src/cpp/NgonPolylineData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Plo
+# $(AM_V_CXX)source='src/cpp/NgonPolylineData.cpp' object='src/cpp/libscigraphic_objects_la-NgonPolylineData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonPolylineData.lo `test -f 'src/cpp/NgonPolylineData.cpp' || echo '$(srcdir)/'`src/cpp/NgonPolylineData.cpp
+
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/MeshData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshData.lo `test -f 'src/cpp/MeshData.cpp' || echo '$(srcdir)/'`src/cpp/MeshData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Plo
+# $(AM_V_CXX)source='src/cpp/MeshData.cpp' object='src/cpp/libscigraphic_objects_la-MeshData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshData.lo `test -f 'src/cpp/MeshData.cpp' || echo '$(srcdir)/'`src/cpp/MeshData.cpp
+
+src/cpp/libscigraphic_objects_la-MeshFecData.lo: src/cpp/MeshFecData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshFecData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshFecData.lo `test -f 'src/cpp/MeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Plo
+# $(AM_V_CXX)source='src/cpp/MeshFecData.cpp' object='src/cpp/libscigraphic_objects_la-MeshFecData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshFecData.lo `test -f 'src/cpp/MeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecData.cpp
+
+src/cpp/libscigraphic_objects_la-ColorComputer.lo: src/cpp/ColorComputer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-ColorComputer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Tpo -c -o src/cpp/libscigraphic_objects_la-ColorComputer.lo `test -f 'src/cpp/ColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/ColorComputer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Plo
+# $(AM_V_CXX)source='src/cpp/ColorComputer.cpp' object='src/cpp/libscigraphic_objects_la-ColorComputer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-ColorComputer.lo `test -f 'src/cpp/ColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/ColorComputer.cpp
+
+src/cpp/libscigraphic_objects_la-DecompositionUtils.lo: src/cpp/DecompositionUtils.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-DecompositionUtils.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Tpo -c -o src/cpp/libscigraphic_objects_la-DecompositionUtils.lo `test -f 'src/cpp/DecompositionUtils.cpp' || echo '$(srcdir)/'`src/cpp/DecompositionUtils.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Plo
+# $(AM_V_CXX)source='src/cpp/DecompositionUtils.cpp' object='src/cpp/libscigraphic_objects_la-DecompositionUtils.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-DecompositionUtils.lo `test -f 'src/cpp/DecompositionUtils.cpp' || echo '$(srcdir)/'`src/cpp/DecompositionUtils.cpp
+
+src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo: src/cpp/Fac3DColorComputer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Tpo -c -o src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo `test -f 'src/cpp/Fac3DColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DColorComputer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Plo
+# $(AM_V_CXX)source='src/cpp/Fac3DColorComputer.cpp' object='src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo `test -f 'src/cpp/Fac3DColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DColorComputer.cpp
+
+src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo: src/cpp/Fac3DDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo `test -f 'src/cpp/Fac3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/Fac3DDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo `test -f 'src/cpp/Fac3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo: src/cpp/NgonGridDataDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo `test -f 'src/cpp/NgonGridDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridDataDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/NgonGridDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo `test -f 'src/cpp/NgonGridDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo: src/cpp/NgonGridGrayplotDataDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo `test -f 'src/cpp/NgonGridGrayplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridGrayplotDataDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/NgonGridGrayplotDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo `test -f 'src/cpp/NgonGridGrayplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridGrayplotDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo: src/cpp/MatPlotDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo `test -f 'src/cpp/MatPlotDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MatPlotDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/MatPlotDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo `test -f 'src/cpp/MatPlotDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MatPlotDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo: src/cpp/NgonGridMatplotDataDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo `test -f 'src/cpp/NgonGridMatplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotDataDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/NgonGridMatplotDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo `test -f 'src/cpp/NgonGridMatplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo: src/cpp/Plot3DDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo `test -f 'src/cpp/Plot3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Plot3DDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/Plot3DDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo `test -f 'src/cpp/Plot3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Plot3DDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo: src/cpp/PolylineDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo `test -f 'src/cpp/PolylineDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/PolylineDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/PolylineDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo `test -f 'src/cpp/PolylineDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/PolylineDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo: src/cpp/MeshFecDataDecomposer.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo `test -f 'src/cpp/MeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecDataDecomposer.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Plo
+# $(AM_V_CXX)source='src/cpp/MeshFecDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo `test -f 'src/cpp/MeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-Triangulator.lo: src/cpp/Triangulator.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Triangulator.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Tpo -c -o src/cpp/libscigraphic_objects_la-Triangulator.lo `test -f 'src/cpp/Triangulator.cpp' || echo '$(srcdir)/'`src/cpp/Triangulator.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Plo
+# $(AM_V_CXX)source='src/cpp/Triangulator.cpp' object='src/cpp/libscigraphic_objects_la-Triangulator.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Triangulator.lo `test -f 'src/cpp/Triangulator.cpp' || echo '$(srcdir)/'`src/cpp/Triangulator.cpp
+
+src/cpp/libscigraphic_objects_la-ScilabView.lo: src/cpp/ScilabView.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-ScilabView.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Tpo -c -o src/cpp/libscigraphic_objects_la-ScilabView.lo `test -f 'src/cpp/ScilabView.cpp' || echo '$(srcdir)/'`src/cpp/ScilabView.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Plo
+# $(AM_V_CXX)source='src/cpp/ScilabView.cpp' object='src/cpp/libscigraphic_objects_la-ScilabView.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-ScilabView.lo `test -f 'src/cpp/ScilabView.cpp' || echo '$(srcdir)/'`src/cpp/ScilabView.cpp
+
+src/cpp/libscigraphic_objects_la-FigureList.lo: src/cpp/FigureList.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-FigureList.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Tpo -c -o src/cpp/libscigraphic_objects_la-FigureList.lo `test -f 'src/cpp/FigureList.cpp' || echo '$(srcdir)/'`src/cpp/FigureList.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Plo
+# $(AM_V_CXX)source='src/cpp/FigureList.cpp' object='src/cpp/libscigraphic_objects_la-FigureList.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-FigureList.lo `test -f 'src/cpp/FigureList.cpp' || echo '$(srcdir)/'`src/cpp/FigureList.cpp
+
+src/cpp/libscigraphic_objects_la-HandleManagement.lo: src/cpp/HandleManagement.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-HandleManagement.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Tpo -c -o src/cpp/libscigraphic_objects_la-HandleManagement.lo `test -f 'src/cpp/HandleManagement.cpp' || echo '$(srcdir)/'`src/cpp/HandleManagement.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Plo
+# $(AM_V_CXX)source='src/cpp/HandleManagement.cpp' object='src/cpp/libscigraphic_objects_la-HandleManagement.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-HandleManagement.lo `test -f 'src/cpp/HandleManagement.cpp' || echo '$(srcdir)/'`src/cpp/HandleManagement.cpp
+
+src/cpp/libscigraphic_objects_la-AxesModel.lo: src/cpp/AxesModel.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-AxesModel.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Tpo -c -o src/cpp/libscigraphic_objects_la-AxesModel.lo `test -f 'src/cpp/AxesModel.cpp' || echo '$(srcdir)/'`src/cpp/AxesModel.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Plo
+# $(AM_V_CXX)source='src/cpp/AxesModel.cpp' object='src/cpp/libscigraphic_objects_la-AxesModel.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-AxesModel.lo `test -f 'src/cpp/AxesModel.cpp' || echo '$(srcdir)/'`src/cpp/AxesModel.cpp
+
+src/cpp/libscigraphic_objects_la-FigureModel.lo: src/cpp/FigureModel.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-FigureModel.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Tpo -c -o src/cpp/libscigraphic_objects_la-FigureModel.lo `test -f 'src/cpp/FigureModel.cpp' || echo '$(srcdir)/'`src/cpp/FigureModel.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Plo
+# $(AM_V_CXX)source='src/cpp/FigureModel.cpp' object='src/cpp/libscigraphic_objects_la-FigureModel.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-FigureModel.lo `test -f 'src/cpp/FigureModel.cpp' || echo '$(srcdir)/'`src/cpp/FigureModel.cpp
+
+src/cpp/libscigraphic_objects_la-CurrentFigure.lo: src/cpp/CurrentFigure.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-CurrentFigure.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Tpo -c -o src/cpp/libscigraphic_objects_la-CurrentFigure.lo `test -f 'src/cpp/CurrentFigure.cpp' || echo '$(srcdir)/'`src/cpp/CurrentFigure.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Plo
+# $(AM_V_CXX)source='src/cpp/CurrentFigure.cpp' object='src/cpp/libscigraphic_objects_la-CurrentFigure.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-CurrentFigure.lo `test -f 'src/cpp/CurrentFigure.cpp' || echo '$(srcdir)/'`src/cpp/CurrentFigure.cpp
+
+src/cpp/libscigraphic_objects_la-CurrentObject.lo: src/cpp/CurrentObject.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-CurrentObject.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Tpo -c -o src/cpp/libscigraphic_objects_la-CurrentObject.lo `test -f 'src/cpp/CurrentObject.cpp' || echo '$(srcdir)/'`src/cpp/CurrentObject.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Plo
+# $(AM_V_CXX)source='src/cpp/CurrentObject.cpp' object='src/cpp/libscigraphic_objects_la-CurrentObject.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-CurrentObject.lo `test -f 'src/cpp/CurrentObject.cpp' || echo '$(srcdir)/'`src/cpp/CurrentObject.cpp
+
+src/cpp/libscigraphic_objects_la-CurrentSubwin.lo: src/cpp/CurrentSubwin.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-CurrentSubwin.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Tpo -c -o src/cpp/libscigraphic_objects_la-CurrentSubwin.lo `test -f 'src/cpp/CurrentSubwin.cpp' || echo '$(srcdir)/'`src/cpp/CurrentSubwin.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Plo
+# $(AM_V_CXX)source='src/cpp/CurrentSubwin.cpp' object='src/cpp/libscigraphic_objects_la-CurrentSubwin.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-CurrentSubwin.lo `test -f 'src/cpp/CurrentSubwin.cpp' || echo '$(srcdir)/'`src/cpp/CurrentSubwin.cpp
+
+src/cpp/libscigraphic_objects_la-createObjectData.lo: src/cpp/createObjectData.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-createObjectData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Tpo -c -o src/cpp/libscigraphic_objects_la-createObjectData.lo `test -f 'src/cpp/createObjectData.cpp' || echo '$(srcdir)/'`src/cpp/createObjectData.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Plo
+# $(AM_V_CXX)source='src/cpp/createObjectData.cpp' object='src/cpp/libscigraphic_objects_la-createObjectData.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-createObjectData.lo `test -f 'src/cpp/createObjectData.cpp' || echo '$(srcdir)/'`src/cpp/createObjectData.cpp
+
+src/cpp/libscigraphic_objects_la-pickSurface.lo: src/cpp/pickSurface.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-pickSurface.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Tpo -c -o src/cpp/libscigraphic_objects_la-pickSurface.lo `test -f 'src/cpp/pickSurface.cpp' || echo '$(srcdir)/'`src/cpp/pickSurface.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Plo
+# $(AM_V_CXX)source='src/cpp/pickSurface.cpp' object='src/cpp/libscigraphic_objects_la-pickSurface.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-pickSurface.lo `test -f 'src/cpp/pickSurface.cpp' || echo '$(srcdir)/'`src/cpp/pickSurface.cpp
+
+src/cpp/libscigraphic_objects_la-Texture.lo: src/cpp/Texture.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Texture.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Tpo -c -o src/cpp/libscigraphic_objects_la-Texture.lo `test -f 'src/cpp/Texture.cpp' || echo '$(srcdir)/'`src/cpp/Texture.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Plo
+# $(AM_V_CXX)source='src/cpp/Texture.cpp' object='src/cpp/libscigraphic_objects_la-Texture.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Texture.lo `test -f 'src/cpp/Texture.cpp' || echo '$(srcdir)/'`src/cpp/Texture.cpp
+
+src/cpp/libscigraphic_objects_la-NormalGenerator.lo: src/cpp/NormalGenerator.cpp
+ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NormalGenerator.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Tpo -c -o src/cpp/libscigraphic_objects_la-NormalGenerator.lo `test -f 'src/cpp/NormalGenerator.cpp' || echo '$(srcdir)/'`src/cpp/NormalGenerator.cpp
+ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Plo
+# $(AM_V_CXX)source='src/cpp/NormalGenerator.cpp' object='src/cpp/libscigraphic_objects_la-NormalGenerator.lo' libtool=yes \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(AM_V_CXX_no)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NormalGenerator.lo `test -f 'src/cpp/NormalGenerator.cpp' || echo '$(srcdir)/'`src/cpp/NormalGenerator.cpp
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf src/cpp/.libs src/cpp/_libs
+ -rm -rf src/jni/.libs src/jni/_libs
+ -rm -rf src/nographic_objects/.libs src/nographic_objects/_libs
+install-libscigraphic_objects_la_etcDATA: $(libscigraphic_objects_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscigraphic_objects_la_etc_DATA)'; test -n "$(libscigraphic_objects_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscigraphic_objects_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscigraphic_objects_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libscigraphic_objects_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscigraphic_objects_la_etc_DATA)'; test -n "$(libscigraphic_objects_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscigraphic_objects_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscigraphic_objects_la_rootDATA: $(libscigraphic_objects_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscigraphic_objects_la_root_DATA)'; test -n "$(libscigraphic_objects_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscigraphic_objects_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscigraphic_objects_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libscigraphic_objects_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscigraphic_objects_la_root_DATA)'; test -n "$(libscigraphic_objects_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscigraphic_objects_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libscigraphic_objects_la_sci_gatewayDATA: $(libscigraphic_objects_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscigraphic_objects_la_sci_gateway_DATA)'; test -n "$(libscigraphic_objects_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libscigraphic_objects_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscigraphic_objects_la_sci_gateway_DATA)'; test -n "$(libscigraphic_objects_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f src/cpp/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/cpp/$(am__dirstamp)
+ -rm -f src/jni/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/jni/$(am__dirstamp)
+ -rm -f src/nographic_objects/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/nographic_objects/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf src/cpp/$(DEPDIR) src/jni/$(DEPDIR) src/nographic_objects/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local \
+ install-libscigraphic_objects_la_etcDATA \
+ install-libscigraphic_objects_la_rootDATA \
+ install-libscigraphic_objects_la_sci_gatewayDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf src/cpp/$(DEPDIR) src/jni/$(DEPDIR) src/nographic_objects/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscigraphic_objects_la_etcDATA \
+ uninstall-libscigraphic_objects_la_rootDATA \
+ uninstall-libscigraphic_objects_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+.MAKE: all check check-am install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+ check-local clean clean-generic clean-libtool clean-local \
+ clean-pkglibLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-local distclean-tags distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-data-local install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am \
+ install-html-local install-info install-info-am \
+ install-libscigraphic_objects_la_etcDATA \
+ install-libscigraphic_objects_la_rootDATA \
+ install-libscigraphic_objects_la_sci_gatewayDATA install-man \
+ install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am \
+ uninstall-libscigraphic_objects_la_etcDATA \
+ uninstall-libscigraphic_objects_la_rootDATA \
+ uninstall-libscigraphic_objects_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+ if test -d $(mydatadir)/tests; then \
+ @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+ fi
+check-code:
+ if test -f build.xml; then \
+ $(ANT) checkstyle; \
+ fi
+ if test -x "$(SPLINT)"; then \
+ $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+ fi
+java:
+# Some configurations needs to export JAVA_HOME in the current env
+ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT); \
+ fi
+
+clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) clean; \
+ fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+#swig: $(SWIG_WRAPPERS)
+# @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+# SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+# if test -n "$(SWIG_WRAPPERS)"; then \
+# for file in $(SWIG_WRAPPERS) ; do \
+# echo "Swig process of $$file (Java) ..."; \
+# $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME -outdir $$SWIG_OUTDIR $$file; \
+# done; \
+# fi
+
+#swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+# @SWIG_OUTDIR=src/swig/; \
+# if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+# for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+# echo "Swig process of $$file (Scilab) ..."; \
+# $(SWIG_BIN) $(SWIG_SCILAB) -outdir $$SWIG_OUTDIR $$file; \
+# done; \
+# fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+#giws: $(GIWS_WRAPPERS)
+# @GIWS_OUTPUTDIR=src/jni/; \
+# MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+# if test -n "$(GIWS_WRAPPERS)"; then \
+# for file in $(GIWS_WRAPPERS) ; do \
+# echo "GIWS process of $$file ..."; \
+# if test -z "$(GIWS_OPTIONS)"; then \
+# $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+# else \
+# echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+# $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+# fi \
+# done; \
+# fi
+
+#giws-exception:
+# @GIWS_OUTPUTDIR=src/jni/;\
+# echo "GIWS: Generation of exception class ..."; \
+# $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been built"; \
+ else \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+ fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+ @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+ rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+ done
+
+test:
+# More tests could be added here
+ @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) test; \
+ fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been build"; \
+ else \
+ echo "Creating $@"; \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+ fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+ @if test -d $(srcdir)/javadoc; then \
+ cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+ fi
+# If the user wants the help sources to be installed
+ @echo "-------- Install of XML sources of help files --------"; \
+ for lang in $(ALL_LINGUAS); do \
+ if test -d $(srcdir)/help/$$lang; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+ if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+ for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+ done ; \
+ fi; \
+ fi; \
+ done; \
+ @echo "-------- Install of MathML sources --------"; \
+ if test -d $(srcdir)/help/mml/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+ if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+ for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+ done ; \
+ fi; \
+ fi
+install-data-local:
+# Install the tests
+ @echo "-------- Install tests (if any) --------"; \
+ for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the help chapter
+ @echo "-------- Install the help chapter (if any) --------"; \
+ for lang in $(HELP_CHAPTERLANG); do \
+ HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+ if test -f $$HELPFILE; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ fi; \
+ done
+# Install the demos & examples
+ @echo "-------- Install demos & examples (if any) --------"; \
+ for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the macros
+ @echo "-------- Install macros (if any) --------"; \
+ for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ if test -d $(srcdir)/$$dir/; then \
+ FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+ if test -n "$(MACROSSPECIALEXT)"; then \
+ specialExtDir=""; \
+ for specialExt in $(MACROSSPECIALEXT); do \
+ specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+ done; \
+ FILELIST="$$FILELIST $$specialExtDir"; \
+ fi; \
+ for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+ done; \
+ fi; \
+ done
+# Install java files (.jar)
+ @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+ echo "-------- Install jar files --------"; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+ for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+ done ; \
+ fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+clean-local: clean-java
+#clean-local:
+
+distclean-local:
+ rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+ $(AM_CPPFLAGS)
+ $(AM_CPPFLAGS)
+
+includes/graphicObjectsProperties.h: Makefile.am src/scripts/propertiesMap.properties
+ @$(top_srcdir)/modules/graphic_objects/src/scripts/genPropertiesName.sh --C $(top_srcdir)/modules/graphic_objects/src/scripts/propertiesMap.properties $(top_srcdir)/modules/graphic_objects/includes/graphicObjectProperties.h
+ @$(top_srcdir)/modules/graphic_objects/src/scripts/genPropertiesName.sh --java $(top_srcdir)/modules/graphic_objects/src/scripts/propertiesMap.properties $(top_srcdir)/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/modules/graphic_objects/Makefile.am b/modules/graphic_objects/Makefile.am
new file mode 100755
index 000000000..26010b1f6
--- /dev/null
+++ b/modules/graphic_objects/Makefile.am
@@ -0,0 +1,152 @@
+#
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) DIGITEO - 2010 - Allan CORNET
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+#### Target ######
+modulename=graphic_objects
+
+
+#### graphic_objects : Conf files ####
+libscigraphic_objects_la_rootdir = $(mydatadir)
+libscigraphic_objects_la_root_DATA = changelog.txt license.txt readme.txt
+
+
+#### graphic_objects : init scripts ####
+libscigraphic_objects_la_etcdir = $(mydatadir)/etc
+libscigraphic_objects_la_etc_DATA = etc/graphic_objects.quit \
+ etc/graphic_objects.start
+
+include $(top_srcdir)/Makefile.incl.am
+
+BUILT_SOURCES = includes/graphicObjectsProperties.h
+#This file is also generated, but can not be listed to prevent GCJ call.
+#src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
+
+GRAPHIC_OBJECTS_JNI_SOURCES = src/jni/CallGraphicController.cpp \
+ src/jni/Builder.cpp \
+ src/jni/CallXmlLoader.cpp
+
+GRAPHIC_OBJECTS_C_SOURCES = src/jni/DataLoader_wrap.c \
+ src/jni/ScilabNativeView_wrap.c \
+ src/jni/PolylineData_wrap.c \
+ src/jni/SurfaceData_wrap.c \
+ src/jni/ObjectData_wrap.c
+
+GRAPHIC_OBJECTS_CXX_SOURCES = src/cpp/createGraphicObject.cpp \
+ src/cpp/getGraphicObjectProperty.cpp \
+ src/cpp/getConsoleIdentifier.cpp \
+ src/cpp/setGraphicObjectProperty.cpp \
+ src/cpp/deleteGraphicObject.cpp \
+ src/cpp/dataModel.cpp \
+ src/cpp/Data3D.cpp \
+ src/cpp/DataLoader.cpp \
+ src/cpp/NgonData.cpp \
+ src/cpp/NgonGeneralData.cpp \
+ src/cpp/NgonGridData.cpp \
+ src/cpp/NgonGridMatplotData.cpp \
+ src/cpp/NgonPolylineData.cpp \
+ src/cpp/MeshData.cpp \
+ src/cpp/MeshFecData.cpp \
+ src/cpp/ColorComputer.cpp \
+ src/cpp/DecompositionUtils.cpp \
+ src/cpp/Fac3DColorComputer.cpp \
+ src/cpp/Fac3DDecomposer.cpp \
+ src/cpp/NgonGridDataDecomposer.cpp \
+ src/cpp/NgonGridGrayplotDataDecomposer.cpp \
+ src/cpp/MatPlotDecomposer.cpp \
+ src/cpp/NgonGridMatplotDataDecomposer.cpp \
+ src/cpp/Plot3DDecomposer.cpp \
+ src/cpp/PolylineDecomposer.cpp \
+ src/cpp/MeshFecDataDecomposer.cpp \
+ src/cpp/Triangulator.cpp \
+ src/cpp/ScilabView.cpp \
+ src/cpp/FigureList.cpp \
+ src/cpp/HandleManagement.cpp \
+ src/cpp/AxesModel.cpp \
+ src/cpp/FigureModel.cpp \
+ src/cpp/CurrentFigure.cpp \
+ src/cpp/CurrentObject.cpp \
+ src/cpp/CurrentSubwin.cpp \
+ src/cpp/createObjectData.cpp \
+ src/cpp/pickSurface.cpp \
+ src/cpp/Texture.cpp \
+ src/cpp/NormalGenerator.cpp
+
+GIWS_WRAPPERS = src/jni/graphic_objects.giws.xml \
+ src/jni/builder.giws.xml
+
+if GIWS
+BUILT_SOURCES += giws
+endif
+
+
+libscigraphic_objects_la_CPPFLAGS = $(JAVA_JNI_INCLUDE) \
+ -I$(srcdir)/includes/ \
+ -I$(srcdir)/src/cpp/ \
+ -I$(srcdir)/src/c/ \
+ -I$(srcdir)/src/jni/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/commons/src/jni/ \
+ -I$(top_srcdir)/modules/core/includes/ \
+ -I$(top_srcdir)/modules/jvm/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/
+ $(AM_CPPFLAGS)
+
+# Without the graphic_objects module
+libscigraphic_objects_disable_la_CPPFLAGS = -I$(srcdir)/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/
+ $(AM_CPPFLAGS)
+
+GRAPHIC_OBJECTS_DISABLE_C_SOURCES = src/nographic_objects/nographic_objects.c
+libscigraphic_objects_disable_la_SOURCES = $(GRAPHIC_OBJECTS_DISABLE_C_SOURCES)
+
+pkglib_LTLIBRARIES = libscigraphic_objects-disable.la
+
+if GUI
+pkglib_LTLIBRARIES += libscigraphic_objects.la
+endif
+
+libscigraphic_objects_la_LDFLAGS = $(AM_LDFLAGS)
+
+libscigraphic_objects_la_SOURCES = $(GRAPHIC_OBJECTS_GEN_SOURCES) $(GRAPHIC_OBJECTS_C_SOURCES) $(GRAPHIC_OBJECTS_JNI_SOURCES) $(GATEWAY_C_SOURCES) $(GATEWAY_CXX_SOURCES) $(GRAPHIC_OBJECTS_CXX_SOURCES)
+
+# For the code check (splint)
+CHECK_SRC= $(GRAPHIC_OBJECTS_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscigraphic_objects_la_CPPFLAGS)
+
+
+#### SWIG Declaration ####
+SWIG_WRAPPERS = src/jni/DataLoader.i \
+ src/jni/ScilabNativeView.i \
+ src/jni/PolylineData.i \
+ src/jni/SurfaceData.i \
+ src/jni/graphic_objects.i \
+ src/jni/ObjectData.i
+
+if SWIG
+BUILT_SOURCES+=swig
+endif
+
+libscigraphic_objects_la_LIBADD = $(top_builddir)/modules/output_stream/libscioutput_stream.la $(X_LIBS) $(X_EXTRA_LIBS)
+
+
+#### graphic_objects : gateway declaration ####
+libscigraphic_objects_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscigraphic_objects_la_sci_gateway_DATA = sci_gateway/graphic_objects_gateway.xml
+
+includes/graphicObjectsProperties.h: Makefile.am src/scripts/propertiesMap.properties
+ @$(top_srcdir)/modules/graphic_objects/src/scripts/genPropertiesName.sh --C $(top_srcdir)/modules/graphic_objects/src/scripts/propertiesMap.properties $(top_srcdir)/modules/graphic_objects/includes/graphicObjectProperties.h
+ @$(top_srcdir)/modules/graphic_objects/src/scripts/genPropertiesName.sh --java $(top_srcdir)/modules/graphic_objects/src/scripts/propertiesMap.properties $(top_srcdir)/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
+
+if GUI
+USEANT=1
+endif
diff --git a/modules/graphic_objects/Makefile.in b/modules/graphic_objects/Makefile.in
new file mode 100755
index 000000000..e43838e4e
--- /dev/null
+++ b/modules/graphic_objects/Makefile.in
@@ -0,0 +1,1960 @@
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) DIGITEO - 2010 - Allan CORNET
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+# Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+# Copyright (C) 2006-2008 - INRIA - Sylvestre LEDRU <sylvestre.ledru@inria.fr>
+# Copyright (C) 2008 - INRIA - Pierre MARECHAL <pierre.marechal@inria.fr>
+#
+# This file must be used under the terms of the CeCILL.
+# This source file is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at
+# http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+#
+
+##########
+### Makefile included stuff
+### Target, variable, suffixes which are supposed to be useful in every makefile.am
+##########
+
+
+VPATH = @srcdir@
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = $(top_srcdir)/Makefile.incl.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/mkinstalldirs \
+ $(top_srcdir)/config/depcomp
+@NEED_JAVA_TRUE@am__append_1 = java
+@GIWS_TRUE@am__append_2 = giws
+@GUI_TRUE@am__append_3 = libscigraphic_objects.la
+@SWIG_TRUE@am__append_4 = swig
+subdir = modules/graphic_objects
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/backtrace.m4 \
+ $(top_srcdir)/m4/compiler.m4 $(top_srcdir)/m4/curl.m4 \
+ $(top_srcdir)/m4/docbook.m4 $(top_srcdir)/m4/doxygen.m4 \
+ $(top_srcdir)/m4/fftw.m4 $(top_srcdir)/m4/fortran.m4 \
+ $(top_srcdir)/m4/giws.m4 $(top_srcdir)/m4/hdf5.m4 \
+ $(top_srcdir)/m4/intel_compiler.m4 \
+ $(top_srcdir)/m4/java-thirdparty.m4 $(top_srcdir)/m4/java.m4 \
+ $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/lib-ld.m4 \
+ $(top_srcdir)/m4/libsmath.m4 $(top_srcdir)/m4/libtool.m4 \
+ $(top_srcdir)/m4/libxml2.m4 $(top_srcdir)/m4/ltoptions.m4 \
+ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+ $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/macosx.m4 \
+ $(top_srcdir)/m4/mpi.m4 $(top_srcdir)/m4/ocaml.m4 \
+ $(top_srcdir)/m4/pcre.m4 $(top_srcdir)/m4/pkg.m4 \
+ $(top_srcdir)/m4/relocatable.m4 $(top_srcdir)/m4/swig.m4 \
+ $(top_srcdir)/m4/symlinks.m4 $(top_srcdir)/m4/tcltk.m4 \
+ $(top_srcdir)/m4/umfpack.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/modules/core/includes/machine.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(pkglibdir)" \
+ "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" \
+ "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" \
+ "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)"
+LTLIBRARIES = $(pkglib_LTLIBRARIES)
+libscigraphic_objects_disable_la_LIBADD =
+am__dirstamp = $(am__leading_dot)dirstamp
+am__objects_1 = src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo
+am_libscigraphic_objects_disable_la_OBJECTS = $(am__objects_1)
+libscigraphic_objects_disable_la_OBJECTS = \
+ $(am_libscigraphic_objects_disable_la_OBJECTS)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 =
+am__DEPENDENCIES_1 =
+libscigraphic_objects_la_DEPENDENCIES = \
+ $(top_builddir)/modules/output_stream/libscioutput_stream.la \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am__objects_2 = src/jni/libscigraphic_objects_la-DataLoader_wrap.lo \
+ src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo \
+ src/jni/libscigraphic_objects_la-PolylineData_wrap.lo \
+ src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo \
+ src/jni/libscigraphic_objects_la-ObjectData_wrap.lo
+am__objects_3 = \
+ src/jni/libscigraphic_objects_la-CallGraphicController.lo \
+ src/jni/libscigraphic_objects_la-Builder.lo \
+ src/jni/libscigraphic_objects_la-CallXmlLoader.lo
+am__objects_4 = \
+ src/cpp/libscigraphic_objects_la-createGraphicObject.lo \
+ src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo \
+ src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo \
+ src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo \
+ src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo \
+ src/cpp/libscigraphic_objects_la-dataModel.lo \
+ src/cpp/libscigraphic_objects_la-Data3D.lo \
+ src/cpp/libscigraphic_objects_la-DataLoader.lo \
+ src/cpp/libscigraphic_objects_la-NgonData.lo \
+ src/cpp/libscigraphic_objects_la-NgonGeneralData.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridData.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo \
+ src/cpp/libscigraphic_objects_la-NgonPolylineData.lo \
+ src/cpp/libscigraphic_objects_la-MeshData.lo \
+ src/cpp/libscigraphic_objects_la-MeshFecData.lo \
+ src/cpp/libscigraphic_objects_la-ColorComputer.lo \
+ src/cpp/libscigraphic_objects_la-DecompositionUtils.lo \
+ src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo \
+ src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo \
+ src/cpp/libscigraphic_objects_la-Triangulator.lo \
+ src/cpp/libscigraphic_objects_la-ScilabView.lo \
+ src/cpp/libscigraphic_objects_la-FigureList.lo \
+ src/cpp/libscigraphic_objects_la-HandleManagement.lo \
+ src/cpp/libscigraphic_objects_la-AxesModel.lo \
+ src/cpp/libscigraphic_objects_la-FigureModel.lo \
+ src/cpp/libscigraphic_objects_la-CurrentFigure.lo \
+ src/cpp/libscigraphic_objects_la-CurrentObject.lo \
+ src/cpp/libscigraphic_objects_la-CurrentSubwin.lo \
+ src/cpp/libscigraphic_objects_la-createObjectData.lo \
+ src/cpp/libscigraphic_objects_la-pickSurface.lo \
+ src/cpp/libscigraphic_objects_la-Texture.lo \
+ src/cpp/libscigraphic_objects_la-NormalGenerator.lo
+am_libscigraphic_objects_la_OBJECTS = $(am__objects_2) \
+ $(am__objects_3) $(am__objects_4)
+libscigraphic_objects_la_OBJECTS = \
+ $(am_libscigraphic_objects_la_OBJECTS)
+libscigraphic_objects_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ $(AM_CXXFLAGS) $(CXXFLAGS) $(libscigraphic_objects_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+@GUI_TRUE@am_libscigraphic_objects_la_rpath = -rpath $(pkglibdir)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/modules/core/includes
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
+SOURCES = $(libscigraphic_objects_disable_la_SOURCES) \
+ $(libscigraphic_objects_la_SOURCES)
+DIST_SOURCES = $(libscigraphic_objects_disable_la_SOURCES) \
+ $(libscigraphic_objects_la_SOURCES)
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+DATA = $(libscigraphic_objects_la_etc_DATA) \
+ $(libscigraphic_objects_la_root_DATA) \
+ $(libscigraphic_objects_la_sci_gateway_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates. Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+ BEGIN { nonempty = 0; } \
+ { items[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique. This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+ list='$(am__tagged_files)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | $(am__uniquify_input)`
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
+ALL_LINGUAS_DOC = @ALL_LINGUAS_DOC@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+ANT = @ANT@
+ANTLR = @ANTLR@
+AR = @AR@
+ARPACK_LIBS = @ARPACK_LIBS@
+ASM3 = @ASM3@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVALON_FRAMEWORK = @AVALON_FRAMEWORK@
+AWK = @AWK@
+BATIK = @BATIK@
+BLAS_LIBS = @BLAS_LIBS@
+CC = @CC@
+CCACHE = @CCACHE@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECKSTYLE = @CHECKSTYLE@
+COBERTURA = @COBERTURA@
+COMMONS_BEANUTILS = @COMMONS_BEANUTILS@
+COMMONS_IO = @COMMONS_IO@
+COMMONS_LOGGING = @COMMONS_LOGGING@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CURL_CFLAGS = @CURL_CFLAGS@
+CURL_CONFIG = @CURL_CONFIG@
+CURL_LIBS = @CURL_LIBS@
+CURL_VERSION = @CURL_VERSION@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEMOTOOLS_ENABLE = @DEMOTOOLS_ENABLE@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DOCBOOK_ROOT = @DOCBOOK_ROOT@
+DOXYGEN_BIN = @DOXYGEN_BIN@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ = @ECJ@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FFTW3_LIB = @FFTW3_LIB@
+FFTW_ENABLE = @FFTW_ENABLE@
+FGREP = @FGREP@
+FLEXDOCK = @FLEXDOCK@
+FLIBS = @FLIBS@
+FOP = @FOP@
+FREEHEP_GRAPHICS2D = @FREEHEP_GRAPHICS2D@
+FREEHEP_GRAPHICSIO = @FREEHEP_GRAPHICSIO@
+FREEHEP_GRAPHICSIO_EMF = @FREEHEP_GRAPHICSIO_EMF@
+FREEHEP_IO = @FREEHEP_IO@
+FREEHEP_UTIL = @FREEHEP_UTIL@
+GENHTML = @GENHTML@
+GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
+GIWS_BIN = @GIWS_BIN@
+GLUEGEN2_RT = @GLUEGEN2_RT@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GRAPHICS_ENABLE = @GRAPHICS_ENABLE@
+GREP = @GREP@
+GUI_ENABLE = @GUI_ENABLE@
+HDF5_CFLAGS = @HDF5_CFLAGS@
+HDF5_LIBS = @HDF5_LIBS@
+HELP_ENABLE = @HELP_ENABLE@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+JAR = @JAR@
+JAVA = @JAVA@
+JAVAC = @JAVAC@
+JAVAC_DEBUG = @JAVAC_DEBUG@
+JAVADOC = @JAVADOC@
+JAVAH = @JAVAH@
+JAVASCI_ENABLE = @JAVASCI_ENABLE@
+JAVA_ENABLE = @JAVA_ENABLE@
+JAVA_G = @JAVA_G@
+JAVA_HOME = @JAVA_HOME@
+JAVA_JNI_INCLUDE = @JAVA_JNI_INCLUDE@
+JAVA_JNI_LIBS = @JAVA_JNI_LIBS@
+JDB = @JDB@
+JEUCLID_CORE = @JEUCLID_CORE@
+JGRAPHX = @JGRAPHX@
+JHALL = @JHALL@
+JLATEXMATH = @JLATEXMATH@
+JLATEXMATH_FOP = @JLATEXMATH_FOP@
+JOGL2 = @JOGL2@
+JROSETTA_API = @JROSETTA_API@
+JROSETTA_ENGINE = @JROSETTA_ENGINE@
+JUNIT4 = @JUNIT4@
+LAPACK_LIBS = @LAPACK_LIBS@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBM = @LIBM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOGGING_LEVEL = @LOGGING_LEVEL@
+LOOKS = @LOOKS@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MATIO_CFLAGS = @MATIO_CFLAGS@
+MATIO_ENABLE = @MATIO_ENABLE@
+MATIO_LIBS = @MATIO_LIBS@
+MKDIR_P = @MKDIR_P@
+MPI_ENABLE = @MPI_ENABLE@
+MSGCAT = @MSGCAT@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OCAMLC = @OCAMLC@
+OCAMLDEP = @OCAMLDEP@
+OCAMLLEX = @OCAMLLEX@
+OCAMLOPT = @OCAMLOPT@
+OCAMLYACC = @OCAMLYACC@
+OPENMPI_CC = @OPENMPI_CC@
+OPENMPI_CFLAGS = @OPENMPI_CFLAGS@
+OPENMPI_CXX = @OPENMPI_CXX@
+OPENMPI_CXXFLAGS = @OPENMPI_CXXFLAGS@
+OPENMPI_LIBS = @OPENMPI_LIBS@
+OPENMP_CFLAGS = @OPENMP_CFLAGS@
+OPENMP_CXXFLAGS = @OPENMP_CXXFLAGS@
+OPENMP_ENABLE = @OPENMP_ENABLE@
+OPENMP_LIBS = @OPENMP_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_CONFIG = @PCRE_CONFIG@
+PCRE_LIBS = @PCRE_LIBS@
+PCRE_VERSION = @PCRE_VERSION@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PYTHON = @PYTHON@
+RANLIB = @RANLIB@
+RELOCATABLE = @RELOCATABLE@
+RT_LIB = @RT_LIB@
+SAXON = @SAXON@
+SCILAB_BINARY_VERSION = @SCILAB_BINARY_VERSION@
+SCILAB_LIBRARY_VERSION = @SCILAB_LIBRARY_VERSION@
+SCILAB_VERSION_MAINTENANCE = @SCILAB_VERSION_MAINTENANCE@
+SCILAB_VERSION_MAJOR = @SCILAB_VERSION_MAJOR@
+SCILAB_VERSION_MINOR = @SCILAB_VERSION_MINOR@
+SCIRENDERER = @SCIRENDERER@
+SCIRENDERER_CP = @SCIRENDERER_CP@
+SCI_CFLAGS = @SCI_CFLAGS@
+SCI_CXXFLAGS = @SCI_CXXFLAGS@
+SCI_FFLAGS = @SCI_FFLAGS@
+SCI_LDFLAGS = @SCI_LDFLAGS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SET_RELOCATABLE = @SET_RELOCATABLE@
+SHELL = @SHELL@
+SKINLF = @SKINLF@
+SPLINT = @SPLINT@
+STRIP = @STRIP@
+SWIG_BIN = @SWIG_BIN@
+SWIG_JAVA = @SWIG_JAVA@
+SWIG_RUNTIME_LIBS_DIR = @SWIG_RUNTIME_LIBS_DIR@
+SWIG_SCILAB = @SWIG_SCILAB@
+TCLTK_LIBS = @TCLTK_LIBS@
+TCL_INC_PATH = @TCL_INC_PATH@
+TK_INC_PATH = @TK_INC_PATH@
+UMFPACK_CFLAGS = @UMFPACK_CFLAGS@
+UMFPACK_ENABLE = @UMFPACK_ENABLE@
+UMFPACK_LIB = @UMFPACK_LIB@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WITH_OCAML = @WITH_OCAML@
+WITH_TKSCI = @WITH_TKSCI@
+XCOS_ENABLE = @XCOS_ENABLE@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+XMKMF = @XMKMF@
+XMLGRAPHICS_COMMONS = @XMLGRAPHICS_COMMONS@
+XML_APIS_EXT = @XML_APIS_EXT@
+XML_CONFIG = @XML_CONFIG@
+XML_FLAGS = @XML_FLAGS@
+XML_LIBS = @XML_LIBS@
+XML_VERSION = @XML_VERSION@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cxx_present = @cxx_present@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+#### Target ######
+modulename = graphic_objects
+
+#### graphic_objects : Conf files ####
+libscigraphic_objects_la_rootdir = $(mydatadir)
+libscigraphic_objects_la_root_DATA = changelog.txt license.txt readme.txt
+
+#### graphic_objects : init scripts ####
+libscigraphic_objects_la_etcdir = $(mydatadir)/etc
+libscigraphic_objects_la_etc_DATA = etc/graphic_objects.quit \
+ etc/graphic_objects.start
+
+
+# Where all the Scilab stuff is installed (macros, help, ...)
+mydatadir = $(pkgdatadir)/modules/$(modulename)
+
+# Set AM_* SCI detected settings
+AM_CPPFLAGS = $(SCI_CPPFLAGS)
+AM_CFLAGS = $(SCI_CFLAGS)
+AM_CXXFLAGS = $(SCI_CXXFLAGS)
+# append includes to AM_FFLAGS to manage fortran includes
+AM_FFLAGS = $(SCI_FFLAGS) -I$(top_srcdir)/modules/core/includes/
+
+# Tag shared libraries with the Scilab version
+AM_LDFLAGS = $(SCI_LDFLAGS) -version-number $(SCILAB_LIBRARY_VERSION)
+
+# splint options
+SPLINT_OPTIONS = -weak -booltype BOOL
+
+########################### JAVA ######################################
+#### We are delegating java compilation to ant... Thanks to that
+#### the procedure will be the same with Microsoft Windows (C)
+#### and Linux/Unix
+#######################################################################
+TARGETS_ALL = $(am__append_1)
+
+################ MACROS ######################
+# Rule to build a macro
+# NOT USED AT THE MOMENT
+SUFFIXES = .sci
+
+########### INSTALL DOCUMENTATION ###################
+
+# Install documentation files into the right target
+# We do not use the automake mechanism (libxxxx_la_help_fr_DATA) because
+# automake needs the html files to be present which is not the case when
+# we are building Scilab
+
+# Where it should be installed
+pkgdocdir = $(mydatadir)
+
+# What is the mask of the help source
+DOCMASKXML = *.xml
+
+# What is the mask of the MathML sources
+DOCMASKMML = *.mml
+
+########### INSTALL DATA ###################
+# Install macros, help & demos
+# Where it should be installed
+pkgmacrosdir = $(mydatadir)
+# Which directory we process
+MACRODIRS = macros/
+# Mask of the Scilab sources macros
+MACROMASK = *.sci
+# Mask of the Scilab executable sources macros
+MACROBUILDMASK = *.sce
+# Mask of the Scilab compiled macros
+MACROBINMASK = *.bin
+# List of the standard directory for tests
+TESTS_DIR = tests/benchmarks tests/nonreg_tests tests/unit_tests tests/java
+# Where the demos should be installed
+pkgdemosdir = $(mydatadir)
+# List of the standard directory for demos
+DEMOS_DIR = demos
+# List of the standard directory for examples
+EXAMPLES_DIR = examples
+# Where to export JAVA archives (.jar)
+JARDIR = jar/
+# JAR files mask
+JARMASK = *.jar
+# Chapter file
+HELP_CHAPTERDIR = help/
+HELP_CHAPTERFILE = addchapter.sce
+HELP_CHAPTERLANG = en_US fr_FR pt_BR
+BUILT_SOURCES = includes/graphicObjectsProperties.h $(am__append_2) \
+ $(am__append_4)
+#This file is also generated, but can not be listed to prevent GCJ call.
+#src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
+GRAPHIC_OBJECTS_JNI_SOURCES = src/jni/CallGraphicController.cpp \
+ src/jni/Builder.cpp \
+ src/jni/CallXmlLoader.cpp
+
+GRAPHIC_OBJECTS_C_SOURCES = src/jni/DataLoader_wrap.c \
+ src/jni/ScilabNativeView_wrap.c \
+ src/jni/PolylineData_wrap.c \
+ src/jni/SurfaceData_wrap.c \
+ src/jni/ObjectData_wrap.c
+
+GRAPHIC_OBJECTS_CXX_SOURCES = src/cpp/createGraphicObject.cpp \
+ src/cpp/getGraphicObjectProperty.cpp \
+ src/cpp/getConsoleIdentifier.cpp \
+ src/cpp/setGraphicObjectProperty.cpp \
+ src/cpp/deleteGraphicObject.cpp \
+ src/cpp/dataModel.cpp \
+ src/cpp/Data3D.cpp \
+ src/cpp/DataLoader.cpp \
+ src/cpp/NgonData.cpp \
+ src/cpp/NgonGeneralData.cpp \
+ src/cpp/NgonGridData.cpp \
+ src/cpp/NgonGridMatplotData.cpp \
+ src/cpp/NgonPolylineData.cpp \
+ src/cpp/MeshData.cpp \
+ src/cpp/MeshFecData.cpp \
+ src/cpp/ColorComputer.cpp \
+ src/cpp/DecompositionUtils.cpp \
+ src/cpp/Fac3DColorComputer.cpp \
+ src/cpp/Fac3DDecomposer.cpp \
+ src/cpp/NgonGridDataDecomposer.cpp \
+ src/cpp/NgonGridGrayplotDataDecomposer.cpp \
+ src/cpp/MatPlotDecomposer.cpp \
+ src/cpp/NgonGridMatplotDataDecomposer.cpp \
+ src/cpp/Plot3DDecomposer.cpp \
+ src/cpp/PolylineDecomposer.cpp \
+ src/cpp/MeshFecDataDecomposer.cpp \
+ src/cpp/Triangulator.cpp \
+ src/cpp/ScilabView.cpp \
+ src/cpp/FigureList.cpp \
+ src/cpp/HandleManagement.cpp \
+ src/cpp/AxesModel.cpp \
+ src/cpp/FigureModel.cpp \
+ src/cpp/CurrentFigure.cpp \
+ src/cpp/CurrentObject.cpp \
+ src/cpp/CurrentSubwin.cpp \
+ src/cpp/createObjectData.cpp \
+ src/cpp/pickSurface.cpp \
+ src/cpp/Texture.cpp \
+ src/cpp/NormalGenerator.cpp
+
+GIWS_WRAPPERS = src/jni/graphic_objects.giws.xml \
+ src/jni/builder.giws.xml
+
+libscigraphic_objects_la_CPPFLAGS = $(JAVA_JNI_INCLUDE) \
+ -I$(srcdir)/includes/ \
+ -I$(srcdir)/src/cpp/ \
+ -I$(srcdir)/src/c/ \
+ -I$(srcdir)/src/jni/ \
+ -I$(top_srcdir)/modules/api_scilab/includes/ \
+ -I$(top_srcdir)/modules/commons/src/jni/ \
+ -I$(top_srcdir)/modules/core/includes/ \
+ -I$(top_srcdir)/modules/jvm/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/
+
+
+# Without the graphic_objects module
+libscigraphic_objects_disable_la_CPPFLAGS = -I$(srcdir)/includes/ \
+ -I$(top_srcdir)/modules/localization/includes/ \
+ -I$(top_srcdir)/modules/output_stream/includes/
+
+GRAPHIC_OBJECTS_DISABLE_C_SOURCES = src/nographic_objects/nographic_objects.c
+libscigraphic_objects_disable_la_SOURCES = $(GRAPHIC_OBJECTS_DISABLE_C_SOURCES)
+pkglib_LTLIBRARIES = libscigraphic_objects-disable.la $(am__append_3)
+libscigraphic_objects_la_LDFLAGS = $(AM_LDFLAGS)
+libscigraphic_objects_la_SOURCES = $(GRAPHIC_OBJECTS_GEN_SOURCES) $(GRAPHIC_OBJECTS_C_SOURCES) $(GRAPHIC_OBJECTS_JNI_SOURCES) $(GATEWAY_C_SOURCES) $(GATEWAY_CXX_SOURCES) $(GRAPHIC_OBJECTS_CXX_SOURCES)
+
+# For the code check (splint)
+CHECK_SRC = $(GRAPHIC_OBJECTS_C_SOURCES) $(GATEWAY_C_SOURCES)
+INCLUDE_FLAGS = $(libscigraphic_objects_la_CPPFLAGS)
+
+#### SWIG Declaration ####
+SWIG_WRAPPERS = src/jni/DataLoader.i \
+ src/jni/ScilabNativeView.i \
+ src/jni/PolylineData.i \
+ src/jni/SurfaceData.i \
+ src/jni/graphic_objects.i \
+ src/jni/ObjectData.i
+
+libscigraphic_objects_la_LIBADD = $(top_builddir)/modules/output_stream/libscioutput_stream.la $(X_LIBS) $(X_EXTRA_LIBS)
+
+#### graphic_objects : gateway declaration ####
+libscigraphic_objects_la_sci_gatewaydir = $(mydatadir)/sci_gateway
+libscigraphic_objects_la_sci_gateway_DATA = sci_gateway/graphic_objects_gateway.xml
+@GUI_TRUE@USEANT = 1
+all: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .sci .bin .c .cpp .lo .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.incl.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign modules/graphic_objects/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign modules/graphic_objects/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+$(top_srcdir)/Makefile.incl.am:
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \
+ }
+
+uninstall-pkglibLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \
+ done
+
+clean-pkglibLTLIBRARIES:
+ -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES)
+ @list='$(pkglib_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+src/nographic_objects/$(am__dirstamp):
+ @$(MKDIR_P) src/nographic_objects
+ @: > src/nographic_objects/$(am__dirstamp)
+src/nographic_objects/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/nographic_objects/$(DEPDIR)
+ @: > src/nographic_objects/$(DEPDIR)/$(am__dirstamp)
+src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo: \
+ src/nographic_objects/$(am__dirstamp) \
+ src/nographic_objects/$(DEPDIR)/$(am__dirstamp)
+
+libscigraphic_objects-disable.la: $(libscigraphic_objects_disable_la_OBJECTS) $(libscigraphic_objects_disable_la_DEPENDENCIES) $(EXTRA_libscigraphic_objects_disable_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(LINK) -rpath $(pkglibdir) $(libscigraphic_objects_disable_la_OBJECTS) $(libscigraphic_objects_disable_la_LIBADD) $(LIBS)
+src/jni/$(am__dirstamp):
+ @$(MKDIR_P) src/jni
+ @: > src/jni/$(am__dirstamp)
+src/jni/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/jni/$(DEPDIR)
+ @: > src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-DataLoader_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-PolylineData_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-ObjectData_wrap.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-CallGraphicController.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-Builder.lo: src/jni/$(am__dirstamp) \
+ src/jni/$(DEPDIR)/$(am__dirstamp)
+src/jni/libscigraphic_objects_la-CallXmlLoader.lo: \
+ src/jni/$(am__dirstamp) src/jni/$(DEPDIR)/$(am__dirstamp)
+src/cpp/$(am__dirstamp):
+ @$(MKDIR_P) src/cpp
+ @: > src/cpp/$(am__dirstamp)
+src/cpp/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) src/cpp/$(DEPDIR)
+ @: > src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-createGraphicObject.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-dataModel.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Data3D.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-DataLoader.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonData.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGeneralData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonPolylineData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshFecData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-ColorComputer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-DecompositionUtils.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Triangulator.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-ScilabView.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-FigureList.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-HandleManagement.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-AxesModel.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-FigureModel.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-CurrentFigure.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-CurrentObject.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-CurrentSubwin.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-createObjectData.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-pickSurface.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-Texture.lo: src/cpp/$(am__dirstamp) \
+ src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigraphic_objects_la-NormalGenerator.lo: \
+ src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+
+libscigraphic_objects.la: $(libscigraphic_objects_la_OBJECTS) $(libscigraphic_objects_la_DEPENDENCIES) $(EXTRA_libscigraphic_objects_la_DEPENDENCIES)
+ $(AM_V_CXXLD)$(libscigraphic_objects_la_LINK) $(am_libscigraphic_objects_la_rpath) $(libscigraphic_objects_la_OBJECTS) $(libscigraphic_objects_la_LIBADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+ -rm -f src/cpp/*.$(OBJEXT)
+ -rm -f src/cpp/*.lo
+ -rm -f src/jni/*.$(OBJEXT)
+ -rm -f src/jni/*.lo
+ -rm -f src/nographic_objects/*.$(OBJEXT)
+ -rm -f src/nographic_objects/*.lo
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo: src/nographic_objects/nographic_objects.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_disable_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo -MD -MP -MF src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Tpo -c -o src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo `test -f 'src/nographic_objects/nographic_objects.c' || echo '$(srcdir)/'`src/nographic_objects/nographic_objects.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Tpo src/nographic_objects/$(DEPDIR)/libscigraphic_objects_disable_la-nographic_objects.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/nographic_objects/nographic_objects.c' object='src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_disable_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo `test -f 'src/nographic_objects/nographic_objects.c' || echo '$(srcdir)/'`src/nographic_objects/nographic_objects.c
+
+src/jni/libscigraphic_objects_la-DataLoader_wrap.lo: src/jni/DataLoader_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-DataLoader_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-DataLoader_wrap.lo `test -f 'src/jni/DataLoader_wrap.c' || echo '$(srcdir)/'`src/jni/DataLoader_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-DataLoader_wrap.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jni/DataLoader_wrap.c' object='src/jni/libscigraphic_objects_la-DataLoader_wrap.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-DataLoader_wrap.lo `test -f 'src/jni/DataLoader_wrap.c' || echo '$(srcdir)/'`src/jni/DataLoader_wrap.c
+
+src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo: src/jni/ScilabNativeView_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo `test -f 'src/jni/ScilabNativeView_wrap.c' || echo '$(srcdir)/'`src/jni/ScilabNativeView_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-ScilabNativeView_wrap.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jni/ScilabNativeView_wrap.c' object='src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo `test -f 'src/jni/ScilabNativeView_wrap.c' || echo '$(srcdir)/'`src/jni/ScilabNativeView_wrap.c
+
+src/jni/libscigraphic_objects_la-PolylineData_wrap.lo: src/jni/PolylineData_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-PolylineData_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-PolylineData_wrap.lo `test -f 'src/jni/PolylineData_wrap.c' || echo '$(srcdir)/'`src/jni/PolylineData_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-PolylineData_wrap.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jni/PolylineData_wrap.c' object='src/jni/libscigraphic_objects_la-PolylineData_wrap.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-PolylineData_wrap.lo `test -f 'src/jni/PolylineData_wrap.c' || echo '$(srcdir)/'`src/jni/PolylineData_wrap.c
+
+src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo: src/jni/SurfaceData_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo `test -f 'src/jni/SurfaceData_wrap.c' || echo '$(srcdir)/'`src/jni/SurfaceData_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-SurfaceData_wrap.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jni/SurfaceData_wrap.c' object='src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo `test -f 'src/jni/SurfaceData_wrap.c' || echo '$(srcdir)/'`src/jni/SurfaceData_wrap.c
+
+src/jni/libscigraphic_objects_la-ObjectData_wrap.lo: src/jni/ObjectData_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT src/jni/libscigraphic_objects_la-ObjectData_wrap.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Tpo -c -o src/jni/libscigraphic_objects_la-ObjectData_wrap.lo `test -f 'src/jni/ObjectData_wrap.c' || echo '$(srcdir)/'`src/jni/ObjectData_wrap.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-ObjectData_wrap.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='src/jni/ObjectData_wrap.c' object='src/jni/libscigraphic_objects_la-ObjectData_wrap.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o src/jni/libscigraphic_objects_la-ObjectData_wrap.lo `test -f 'src/jni/ObjectData_wrap.c' || echo '$(srcdir)/'`src/jni/ObjectData_wrap.c
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+
+src/jni/libscigraphic_objects_la-CallGraphicController.lo: src/jni/CallGraphicController.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/jni/libscigraphic_objects_la-CallGraphicController.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Tpo -c -o src/jni/libscigraphic_objects_la-CallGraphicController.lo `test -f 'src/jni/CallGraphicController.cpp' || echo '$(srcdir)/'`src/jni/CallGraphicController.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-CallGraphicController.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/jni/CallGraphicController.cpp' object='src/jni/libscigraphic_objects_la-CallGraphicController.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/jni/libscigraphic_objects_la-CallGraphicController.lo `test -f 'src/jni/CallGraphicController.cpp' || echo '$(srcdir)/'`src/jni/CallGraphicController.cpp
+
+src/jni/libscigraphic_objects_la-Builder.lo: src/jni/Builder.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/jni/libscigraphic_objects_la-Builder.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Tpo -c -o src/jni/libscigraphic_objects_la-Builder.lo `test -f 'src/jni/Builder.cpp' || echo '$(srcdir)/'`src/jni/Builder.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-Builder.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/jni/Builder.cpp' object='src/jni/libscigraphic_objects_la-Builder.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/jni/libscigraphic_objects_la-Builder.lo `test -f 'src/jni/Builder.cpp' || echo '$(srcdir)/'`src/jni/Builder.cpp
+
+src/jni/libscigraphic_objects_la-CallXmlLoader.lo: src/jni/CallXmlLoader.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/jni/libscigraphic_objects_la-CallXmlLoader.lo -MD -MP -MF src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Tpo -c -o src/jni/libscigraphic_objects_la-CallXmlLoader.lo `test -f 'src/jni/CallXmlLoader.cpp' || echo '$(srcdir)/'`src/jni/CallXmlLoader.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Tpo src/jni/$(DEPDIR)/libscigraphic_objects_la-CallXmlLoader.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/jni/CallXmlLoader.cpp' object='src/jni/libscigraphic_objects_la-CallXmlLoader.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/jni/libscigraphic_objects_la-CallXmlLoader.lo `test -f 'src/jni/CallXmlLoader.cpp' || echo '$(srcdir)/'`src/jni/CallXmlLoader.cpp
+
+src/cpp/libscigraphic_objects_la-createGraphicObject.lo: src/cpp/createGraphicObject.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-createGraphicObject.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Tpo -c -o src/cpp/libscigraphic_objects_la-createGraphicObject.lo `test -f 'src/cpp/createGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/createGraphicObject.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-createGraphicObject.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/createGraphicObject.cpp' object='src/cpp/libscigraphic_objects_la-createGraphicObject.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-createGraphicObject.lo `test -f 'src/cpp/createGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/createGraphicObject.cpp
+
+src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo: src/cpp/getGraphicObjectProperty.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Tpo -c -o src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo `test -f 'src/cpp/getGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/getGraphicObjectProperty.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-getGraphicObjectProperty.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/getGraphicObjectProperty.cpp' object='src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo `test -f 'src/cpp/getGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/getGraphicObjectProperty.cpp
+
+src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo: src/cpp/getConsoleIdentifier.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Tpo -c -o src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo `test -f 'src/cpp/getConsoleIdentifier.cpp' || echo '$(srcdir)/'`src/cpp/getConsoleIdentifier.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-getConsoleIdentifier.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/getConsoleIdentifier.cpp' object='src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo `test -f 'src/cpp/getConsoleIdentifier.cpp' || echo '$(srcdir)/'`src/cpp/getConsoleIdentifier.cpp
+
+src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo: src/cpp/setGraphicObjectProperty.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Tpo -c -o src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo `test -f 'src/cpp/setGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/setGraphicObjectProperty.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-setGraphicObjectProperty.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/setGraphicObjectProperty.cpp' object='src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo `test -f 'src/cpp/setGraphicObjectProperty.cpp' || echo '$(srcdir)/'`src/cpp/setGraphicObjectProperty.cpp
+
+src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo: src/cpp/deleteGraphicObject.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Tpo -c -o src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo `test -f 'src/cpp/deleteGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/deleteGraphicObject.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-deleteGraphicObject.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/deleteGraphicObject.cpp' object='src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo `test -f 'src/cpp/deleteGraphicObject.cpp' || echo '$(srcdir)/'`src/cpp/deleteGraphicObject.cpp
+
+src/cpp/libscigraphic_objects_la-dataModel.lo: src/cpp/dataModel.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-dataModel.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Tpo -c -o src/cpp/libscigraphic_objects_la-dataModel.lo `test -f 'src/cpp/dataModel.cpp' || echo '$(srcdir)/'`src/cpp/dataModel.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-dataModel.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/dataModel.cpp' object='src/cpp/libscigraphic_objects_la-dataModel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-dataModel.lo `test -f 'src/cpp/dataModel.cpp' || echo '$(srcdir)/'`src/cpp/dataModel.cpp
+
+src/cpp/libscigraphic_objects_la-Data3D.lo: src/cpp/Data3D.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Data3D.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Tpo -c -o src/cpp/libscigraphic_objects_la-Data3D.lo `test -f 'src/cpp/Data3D.cpp' || echo '$(srcdir)/'`src/cpp/Data3D.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Data3D.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/Data3D.cpp' object='src/cpp/libscigraphic_objects_la-Data3D.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Data3D.lo `test -f 'src/cpp/Data3D.cpp' || echo '$(srcdir)/'`src/cpp/Data3D.cpp
+
+src/cpp/libscigraphic_objects_la-DataLoader.lo: src/cpp/DataLoader.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-DataLoader.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Tpo -c -o src/cpp/libscigraphic_objects_la-DataLoader.lo `test -f 'src/cpp/DataLoader.cpp' || echo '$(srcdir)/'`src/cpp/DataLoader.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-DataLoader.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/DataLoader.cpp' object='src/cpp/libscigraphic_objects_la-DataLoader.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-DataLoader.lo `test -f 'src/cpp/DataLoader.cpp' || echo '$(srcdir)/'`src/cpp/DataLoader.cpp
+
+src/cpp/libscigraphic_objects_la-NgonData.lo: src/cpp/NgonData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonData.lo `test -f 'src/cpp/NgonData.cpp' || echo '$(srcdir)/'`src/cpp/NgonData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonData.cpp' object='src/cpp/libscigraphic_objects_la-NgonData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonData.lo `test -f 'src/cpp/NgonData.cpp' || echo '$(srcdir)/'`src/cpp/NgonData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGeneralData.lo: src/cpp/NgonGeneralData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGeneralData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGeneralData.lo `test -f 'src/cpp/NgonGeneralData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGeneralData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGeneralData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonGeneralData.cpp' object='src/cpp/libscigraphic_objects_la-NgonGeneralData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGeneralData.lo `test -f 'src/cpp/NgonGeneralData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGeneralData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridData.lo: src/cpp/NgonGridData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridData.lo `test -f 'src/cpp/NgonGridData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonGridData.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridData.lo `test -f 'src/cpp/NgonGridData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo: src/cpp/NgonGridMatplotData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo `test -f 'src/cpp/NgonGridMatplotData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonGridMatplotData.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo `test -f 'src/cpp/NgonGridMatplotData.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotData.cpp
+
+src/cpp/libscigraphic_objects_la-NgonPolylineData.lo: src/cpp/NgonPolylineData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonPolylineData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonPolylineData.lo `test -f 'src/cpp/NgonPolylineData.cpp' || echo '$(srcdir)/'`src/cpp/NgonPolylineData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonPolylineData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonPolylineData.cpp' object='src/cpp/libscigraphic_objects_la-NgonPolylineData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonPolylineData.lo `test -f 'src/cpp/NgonPolylineData.cpp' || echo '$(srcdir)/'`src/cpp/NgonPolylineData.cpp
+
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/MeshData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshData.lo `test -f 'src/cpp/MeshData.cpp' || echo '$(srcdir)/'`src/cpp/MeshData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/MeshData.cpp' object='src/cpp/libscigraphic_objects_la-MeshData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshData.lo `test -f 'src/cpp/MeshData.cpp' || echo '$(srcdir)/'`src/cpp/MeshData.cpp
+
+src/cpp/libscigraphic_objects_la-MeshFecData.lo: src/cpp/MeshFecData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshFecData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshFecData.lo `test -f 'src/cpp/MeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/MeshFecData.cpp' object='src/cpp/libscigraphic_objects_la-MeshFecData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshFecData.lo `test -f 'src/cpp/MeshFecData.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecData.cpp
+
+src/cpp/libscigraphic_objects_la-ColorComputer.lo: src/cpp/ColorComputer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-ColorComputer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Tpo -c -o src/cpp/libscigraphic_objects_la-ColorComputer.lo `test -f 'src/cpp/ColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/ColorComputer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-ColorComputer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/ColorComputer.cpp' object='src/cpp/libscigraphic_objects_la-ColorComputer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-ColorComputer.lo `test -f 'src/cpp/ColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/ColorComputer.cpp
+
+src/cpp/libscigraphic_objects_la-DecompositionUtils.lo: src/cpp/DecompositionUtils.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-DecompositionUtils.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Tpo -c -o src/cpp/libscigraphic_objects_la-DecompositionUtils.lo `test -f 'src/cpp/DecompositionUtils.cpp' || echo '$(srcdir)/'`src/cpp/DecompositionUtils.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-DecompositionUtils.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/DecompositionUtils.cpp' object='src/cpp/libscigraphic_objects_la-DecompositionUtils.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-DecompositionUtils.lo `test -f 'src/cpp/DecompositionUtils.cpp' || echo '$(srcdir)/'`src/cpp/DecompositionUtils.cpp
+
+src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo: src/cpp/Fac3DColorComputer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Tpo -c -o src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo `test -f 'src/cpp/Fac3DColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DColorComputer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DColorComputer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/Fac3DColorComputer.cpp' object='src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo `test -f 'src/cpp/Fac3DColorComputer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DColorComputer.cpp
+
+src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo: src/cpp/Fac3DDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo `test -f 'src/cpp/Fac3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Fac3DDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/Fac3DDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo `test -f 'src/cpp/Fac3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Fac3DDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo: src/cpp/NgonGridDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo `test -f 'src/cpp/NgonGridDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridDataDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonGridDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo `test -f 'src/cpp/NgonGridDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo: src/cpp/NgonGridGrayplotDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo `test -f 'src/cpp/NgonGridGrayplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridGrayplotDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonGridGrayplotDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo `test -f 'src/cpp/NgonGridGrayplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridGrayplotDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo: src/cpp/MatPlotDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo `test -f 'src/cpp/MatPlotDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MatPlotDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MatPlotDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/MatPlotDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo `test -f 'src/cpp/MatPlotDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MatPlotDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo: src/cpp/NgonGridMatplotDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo `test -f 'src/cpp/NgonGridMatplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NgonGridMatplotDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo `test -f 'src/cpp/NgonGridMatplotDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/NgonGridMatplotDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo: src/cpp/Plot3DDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo `test -f 'src/cpp/Plot3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Plot3DDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Plot3DDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/Plot3DDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo `test -f 'src/cpp/Plot3DDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/Plot3DDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo: src/cpp/PolylineDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo `test -f 'src/cpp/PolylineDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/PolylineDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-PolylineDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/PolylineDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo `test -f 'src/cpp/PolylineDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/PolylineDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo: src/cpp/MeshFecDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Tpo -c -o src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo `test -f 'src/cpp/MeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecDataDecomposer.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-MeshFecDataDecomposer.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/MeshFecDataDecomposer.cpp' object='src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo `test -f 'src/cpp/MeshFecDataDecomposer.cpp' || echo '$(srcdir)/'`src/cpp/MeshFecDataDecomposer.cpp
+
+src/cpp/libscigraphic_objects_la-Triangulator.lo: src/cpp/Triangulator.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Triangulator.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Tpo -c -o src/cpp/libscigraphic_objects_la-Triangulator.lo `test -f 'src/cpp/Triangulator.cpp' || echo '$(srcdir)/'`src/cpp/Triangulator.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Triangulator.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/Triangulator.cpp' object='src/cpp/libscigraphic_objects_la-Triangulator.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Triangulator.lo `test -f 'src/cpp/Triangulator.cpp' || echo '$(srcdir)/'`src/cpp/Triangulator.cpp
+
+src/cpp/libscigraphic_objects_la-ScilabView.lo: src/cpp/ScilabView.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-ScilabView.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Tpo -c -o src/cpp/libscigraphic_objects_la-ScilabView.lo `test -f 'src/cpp/ScilabView.cpp' || echo '$(srcdir)/'`src/cpp/ScilabView.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-ScilabView.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/ScilabView.cpp' object='src/cpp/libscigraphic_objects_la-ScilabView.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-ScilabView.lo `test -f 'src/cpp/ScilabView.cpp' || echo '$(srcdir)/'`src/cpp/ScilabView.cpp
+
+src/cpp/libscigraphic_objects_la-FigureList.lo: src/cpp/FigureList.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-FigureList.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Tpo -c -o src/cpp/libscigraphic_objects_la-FigureList.lo `test -f 'src/cpp/FigureList.cpp' || echo '$(srcdir)/'`src/cpp/FigureList.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureList.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/FigureList.cpp' object='src/cpp/libscigraphic_objects_la-FigureList.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-FigureList.lo `test -f 'src/cpp/FigureList.cpp' || echo '$(srcdir)/'`src/cpp/FigureList.cpp
+
+src/cpp/libscigraphic_objects_la-HandleManagement.lo: src/cpp/HandleManagement.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-HandleManagement.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Tpo -c -o src/cpp/libscigraphic_objects_la-HandleManagement.lo `test -f 'src/cpp/HandleManagement.cpp' || echo '$(srcdir)/'`src/cpp/HandleManagement.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-HandleManagement.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/HandleManagement.cpp' object='src/cpp/libscigraphic_objects_la-HandleManagement.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-HandleManagement.lo `test -f 'src/cpp/HandleManagement.cpp' || echo '$(srcdir)/'`src/cpp/HandleManagement.cpp
+
+src/cpp/libscigraphic_objects_la-AxesModel.lo: src/cpp/AxesModel.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-AxesModel.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Tpo -c -o src/cpp/libscigraphic_objects_la-AxesModel.lo `test -f 'src/cpp/AxesModel.cpp' || echo '$(srcdir)/'`src/cpp/AxesModel.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-AxesModel.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/AxesModel.cpp' object='src/cpp/libscigraphic_objects_la-AxesModel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-AxesModel.lo `test -f 'src/cpp/AxesModel.cpp' || echo '$(srcdir)/'`src/cpp/AxesModel.cpp
+
+src/cpp/libscigraphic_objects_la-FigureModel.lo: src/cpp/FigureModel.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-FigureModel.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Tpo -c -o src/cpp/libscigraphic_objects_la-FigureModel.lo `test -f 'src/cpp/FigureModel.cpp' || echo '$(srcdir)/'`src/cpp/FigureModel.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-FigureModel.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/FigureModel.cpp' object='src/cpp/libscigraphic_objects_la-FigureModel.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-FigureModel.lo `test -f 'src/cpp/FigureModel.cpp' || echo '$(srcdir)/'`src/cpp/FigureModel.cpp
+
+src/cpp/libscigraphic_objects_la-CurrentFigure.lo: src/cpp/CurrentFigure.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-CurrentFigure.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Tpo -c -o src/cpp/libscigraphic_objects_la-CurrentFigure.lo `test -f 'src/cpp/CurrentFigure.cpp' || echo '$(srcdir)/'`src/cpp/CurrentFigure.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentFigure.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/CurrentFigure.cpp' object='src/cpp/libscigraphic_objects_la-CurrentFigure.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-CurrentFigure.lo `test -f 'src/cpp/CurrentFigure.cpp' || echo '$(srcdir)/'`src/cpp/CurrentFigure.cpp
+
+src/cpp/libscigraphic_objects_la-CurrentObject.lo: src/cpp/CurrentObject.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-CurrentObject.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Tpo -c -o src/cpp/libscigraphic_objects_la-CurrentObject.lo `test -f 'src/cpp/CurrentObject.cpp' || echo '$(srcdir)/'`src/cpp/CurrentObject.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentObject.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/CurrentObject.cpp' object='src/cpp/libscigraphic_objects_la-CurrentObject.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-CurrentObject.lo `test -f 'src/cpp/CurrentObject.cpp' || echo '$(srcdir)/'`src/cpp/CurrentObject.cpp
+
+src/cpp/libscigraphic_objects_la-CurrentSubwin.lo: src/cpp/CurrentSubwin.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-CurrentSubwin.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Tpo -c -o src/cpp/libscigraphic_objects_la-CurrentSubwin.lo `test -f 'src/cpp/CurrentSubwin.cpp' || echo '$(srcdir)/'`src/cpp/CurrentSubwin.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-CurrentSubwin.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/CurrentSubwin.cpp' object='src/cpp/libscigraphic_objects_la-CurrentSubwin.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-CurrentSubwin.lo `test -f 'src/cpp/CurrentSubwin.cpp' || echo '$(srcdir)/'`src/cpp/CurrentSubwin.cpp
+
+src/cpp/libscigraphic_objects_la-createObjectData.lo: src/cpp/createObjectData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-createObjectData.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Tpo -c -o src/cpp/libscigraphic_objects_la-createObjectData.lo `test -f 'src/cpp/createObjectData.cpp' || echo '$(srcdir)/'`src/cpp/createObjectData.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-createObjectData.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/createObjectData.cpp' object='src/cpp/libscigraphic_objects_la-createObjectData.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-createObjectData.lo `test -f 'src/cpp/createObjectData.cpp' || echo '$(srcdir)/'`src/cpp/createObjectData.cpp
+
+src/cpp/libscigraphic_objects_la-pickSurface.lo: src/cpp/pickSurface.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-pickSurface.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Tpo -c -o src/cpp/libscigraphic_objects_la-pickSurface.lo `test -f 'src/cpp/pickSurface.cpp' || echo '$(srcdir)/'`src/cpp/pickSurface.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-pickSurface.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/pickSurface.cpp' object='src/cpp/libscigraphic_objects_la-pickSurface.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-pickSurface.lo `test -f 'src/cpp/pickSurface.cpp' || echo '$(srcdir)/'`src/cpp/pickSurface.cpp
+
+src/cpp/libscigraphic_objects_la-Texture.lo: src/cpp/Texture.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-Texture.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Tpo -c -o src/cpp/libscigraphic_objects_la-Texture.lo `test -f 'src/cpp/Texture.cpp' || echo '$(srcdir)/'`src/cpp/Texture.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-Texture.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/Texture.cpp' object='src/cpp/libscigraphic_objects_la-Texture.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-Texture.lo `test -f 'src/cpp/Texture.cpp' || echo '$(srcdir)/'`src/cpp/Texture.cpp
+
+src/cpp/libscigraphic_objects_la-NormalGenerator.lo: src/cpp/NormalGenerator.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigraphic_objects_la-NormalGenerator.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Tpo -c -o src/cpp/libscigraphic_objects_la-NormalGenerator.lo `test -f 'src/cpp/NormalGenerator.cpp' || echo '$(srcdir)/'`src/cpp/NormalGenerator.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Tpo src/cpp/$(DEPDIR)/libscigraphic_objects_la-NormalGenerator.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/cpp/NormalGenerator.cpp' object='src/cpp/libscigraphic_objects_la-NormalGenerator.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigraphic_objects_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigraphic_objects_la-NormalGenerator.lo `test -f 'src/cpp/NormalGenerator.cpp' || echo '$(srcdir)/'`src/cpp/NormalGenerator.cpp
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+ -rm -rf src/cpp/.libs src/cpp/_libs
+ -rm -rf src/jni/.libs src/jni/_libs
+ -rm -rf src/nographic_objects/.libs src/nographic_objects/_libs
+install-libscigraphic_objects_la_etcDATA: $(libscigraphic_objects_la_etc_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscigraphic_objects_la_etc_DATA)'; test -n "$(libscigraphic_objects_la_etcdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscigraphic_objects_la_etcdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscigraphic_objects_la_etcdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" || exit $$?; \
+ done
+
+uninstall-libscigraphic_objects_la_etcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscigraphic_objects_la_etc_DATA)'; test -n "$(libscigraphic_objects_la_etcdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscigraphic_objects_la_etcdir)'; $(am__uninstall_files_from_dir)
+install-libscigraphic_objects_la_rootDATA: $(libscigraphic_objects_la_root_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscigraphic_objects_la_root_DATA)'; test -n "$(libscigraphic_objects_la_rootdir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscigraphic_objects_la_rootdir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscigraphic_objects_la_rootdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" || exit $$?; \
+ done
+
+uninstall-libscigraphic_objects_la_rootDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscigraphic_objects_la_root_DATA)'; test -n "$(libscigraphic_objects_la_rootdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscigraphic_objects_la_rootdir)'; $(am__uninstall_files_from_dir)
+install-libscigraphic_objects_la_sci_gatewayDATA: $(libscigraphic_objects_la_sci_gateway_DATA)
+ @$(NORMAL_INSTALL)
+ @list='$(libscigraphic_objects_la_sci_gateway_DATA)'; test -n "$(libscigraphic_objects_la_sci_gatewaydir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)" || exit $$?; \
+ done
+
+uninstall-libscigraphic_objects_la_sci_gatewayDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(libscigraphic_objects_la_sci_gateway_DATA)'; test -n "$(libscigraphic_objects_la_sci_gatewaydir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)'; $(am__uninstall_files_from_dir)
+
+ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ set x; \
+ here=`pwd`; \
+ $(am__define_uniq_tagged_files); \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+ $(am__define_uniq_tagged_files); \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+ list='$(am__tagged_files)'; \
+ case "$(srcdir)" in \
+ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+ *) sdir=$(subdir)/$(srcdir) ;; \
+ esac; \
+ for i in $$list; do \
+ if test -f "$$i"; then \
+ echo "$(subdir)/$$i"; \
+ else \
+ echo "$$sdir/$$i"; \
+ fi; \
+ done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+ $(MAKE) $(AM_MAKEFLAGS) check-local
+check: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(DATA) all-local
+installdirs:
+ for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(libscigraphic_objects_la_etcdir)" "$(DESTDIR)$(libscigraphic_objects_la_rootdir)" "$(DESTDIR)$(libscigraphic_objects_la_sci_gatewaydir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+ -rm -f src/cpp/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/cpp/$(am__dirstamp)
+ -rm -f src/jni/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/jni/$(am__dirstamp)
+ -rm -f src/nographic_objects/$(DEPDIR)/$(am__dirstamp)
+ -rm -f src/nographic_objects/$(am__dirstamp)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local \
+ clean-pkglibLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf src/cpp/$(DEPDIR) src/jni/$(DEPDIR) src/nographic_objects/$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-local distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local \
+ install-libscigraphic_objects_la_etcDATA \
+ install-libscigraphic_objects_la_rootDATA \
+ install-libscigraphic_objects_la_sci_gatewayDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-pkglibLTLIBRARIES
+
+install-html: install-html-am
+
+install-html-am: install-html-local
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf src/cpp/$(DEPDIR) src/jni/$(DEPDIR) src/nographic_objects/$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-libscigraphic_objects_la_etcDATA \
+ uninstall-libscigraphic_objects_la_rootDATA \
+ uninstall-libscigraphic_objects_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+.MAKE: all check check-am install install-am install-strip
+
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am \
+ check-local clean clean-generic clean-libtool clean-local \
+ clean-pkglibLTLIBRARIES cscopelist-am ctags ctags-am distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-local distclean-tags distdir dvi dvi-am html html-am \
+ info info-am install install-am install-data install-data-am \
+ install-data-local install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am \
+ install-html-local install-info install-info-am \
+ install-libscigraphic_objects_la_etcDATA \
+ install-libscigraphic_objects_la_rootDATA \
+ install-libscigraphic_objects_la_sci_gatewayDATA install-man \
+ install-pdf install-pdf-am install-pkglibLTLIBRARIES \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-compile \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-am uninstall uninstall-am \
+ uninstall-libscigraphic_objects_la_etcDATA \
+ uninstall-libscigraphic_objects_la_rootDATA \
+ uninstall-libscigraphic_objects_la_sci_gatewayDATA \
+ uninstall-pkglibLTLIBRARIES
+
+
+# This target enables tests for Scilab
+check-local: $(top_builddir)/scilab-bin test
+ if test -d $(mydatadir)/tests; then \
+ @COMMAND="try test_run('$(modulename)');catch exit(-1);end;exit(0)"; export LANG=C; $(top_builddir)/bin/scilab -nwni -nb -e "$$COMMAND"; \
+ fi
+check-code:
+ if test -f build.xml; then \
+ $(ANT) checkstyle; \
+ fi
+ if test -x "$(SPLINT)"; then \
+ $(SPLINT) $(SPLINT_OPTIONS) -I$(top_srcdir)/modules/core/includes/ -I$(top_srcdir)/libs/MALLOC/includes/ -I$(top_srcdir)/modules/localization/includes/ $(INCLUDE_FLAGS) $(CHECK_SRC); \
+ fi
+@NEED_JAVA_TRUE@java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@ if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@ $(ANT); \
+@NEED_JAVA_TRUE@ fi
+
+@NEED_JAVA_TRUE@clean-java:
+# Some configurations needs to export JAVA_HOME in the current env
+@NEED_JAVA_TRUE@ @if test "$(JAVA_HOME)"; then export JAVA_HOME=$(JAVA_HOME); fi; \
+@NEED_JAVA_TRUE@ if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+@NEED_JAVA_TRUE@ if test -f build.xml -a $$USEANT -eq 1; then \
+@NEED_JAVA_TRUE@ $(ANT) clean; \
+@NEED_JAVA_TRUE@ fi;
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@SWIG_TRUE@swig: $(SWIG_WRAPPERS)
+@SWIG_TRUE@ @SWIG_PACKAGENAME=org.scilab.modules.$(modulename); \
+@SWIG_TRUE@ SWIG_OUTDIR=src/java/org/scilab/modules/$(modulename)/; \
+@SWIG_TRUE@ if test -n "$(SWIG_WRAPPERS)"; then \
+@SWIG_TRUE@ for file in $(SWIG_WRAPPERS) ; do \
+@SWIG_TRUE@ echo "Swig process of $$file (Java) ..."; \
+@SWIG_TRUE@ $(SWIG_BIN) $(SWIG_JAVA) -package $$SWIG_PACKAGENAME -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@ done; \
+@SWIG_TRUE@ fi
+
+@SWIG_TRUE@swig-scilab: $(SWIG_SCILAB_WRAPPERS)
+@SWIG_TRUE@ @SWIG_OUTDIR=src/swig/; \
+@SWIG_TRUE@ if test -n "$(SWIG_SCILAB_WRAPPERS)"; then \
+@SWIG_TRUE@ for file in $(SWIG_SCILAB_WRAPPERS) ; do \
+@SWIG_TRUE@ echo "Swig process of $$file (Scilab) ..."; \
+@SWIG_TRUE@ $(SWIG_BIN) $(SWIG_SCILAB) -outdir $$SWIG_OUTDIR $$file; \
+@SWIG_TRUE@ done; \
+@SWIG_TRUE@ fi
+
+# If the user request for the SWIG generation of the wrappers Java => C/C++
+# We call the target swig-build on the variable SWIG_WRAPPERS
+
+@GIWS_TRUE@giws: $(GIWS_WRAPPERS)
+@GIWS_TRUE@ @GIWS_OUTPUTDIR=src/jni/; \
+@GIWS_TRUE@ MANDATORY_OPTIONS="--throws-exception-on-error --description-file"; \
+@GIWS_TRUE@ if test -n "$(GIWS_WRAPPERS)"; then \
+@GIWS_TRUE@ for file in $(GIWS_WRAPPERS) ; do \
+@GIWS_TRUE@ echo "GIWS process of $$file ..."; \
+@GIWS_TRUE@ if test -z "$(GIWS_OPTIONS)"; then \
+@GIWS_TRUE@ $(GIWS_BIN) --disable-return-size-array --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@ else \
+@GIWS_TRUE@ echo "Custom GIWS call with '$$GIWS_OPTIONS'"; \
+@GIWS_TRUE@ $(GIWS_BIN) $$GIWS_OPTIONS --output-dir $$GIWS_OUTPUTDIR $$MANDATORY_OPTIONS $$file; \
+@GIWS_TRUE@ fi \
+@GIWS_TRUE@ done; \
+@GIWS_TRUE@ fi
+
+@GIWS_TRUE@giws-exception:
+@GIWS_TRUE@ @GIWS_OUTPUTDIR=src/jni/;\
+@GIWS_TRUE@ echo "GIWS: Generation of exception class ..."; \
+@GIWS_TRUE@ $(GIWS_BIN) --generate-exception-class --output-dir $$GIWS_OUTPUTDIR
+
+macros:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been built"; \
+ else \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('macros/buildmacros.sce');quit;";\
+ fi)
+
+# Removes the macros
+clean-macros:
+# Removes macros (*.bin generated from .sci)
+ @for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ echo "rm -f $(builddir)/$$dir/$(MACROBINMASK)"; \
+ rm -f $(builddir)/$$dir/$(MACROBINMASK); \
+ done
+
+test:
+# More tests could be added here
+ @if test -z "$(USEANT)"; then USEANT=0; else USEANT=1; fi; \
+ if test -f build.xml -a $$USEANT -eq 1; then \
+ $(ANT) test; \
+ fi
+
+all-local: $(TARGETS_ALL)
+
+.sci.bin:
+ -@( if test ! -x $(top_builddir)/scilab-bin; then \
+ echo "Error : Cannot build $< : Scilab has not been build"; \
+ else \
+ echo "Creating $@"; \
+ $(top_builddir)/bin/scilab -ns -nwni -e "exec('$(abs_srcdir)/$<');save('$(abs_srcdir)/$@');exit;"; \
+ fi )
+
+install-html-local:
+
+install-data-local-local:
+# Mainly for javasci
+ @if test -d $(srcdir)/javadoc; then \
+ cp -R $(srcdir)/javadoc $(DESTDIR)/$(mydatadir)/; \
+ fi
+# If the user wants the help sources to be installed
+@INSTALL_HELP_XML_TRUE@ @echo "-------- Install of XML sources of help files --------"; \
+@INSTALL_HELP_XML_TRUE@ for lang in $(ALL_LINGUAS); do \
+@INSTALL_HELP_XML_TRUE@ if test -d $(srcdir)/help/$$lang; then \
+@INSTALL_HELP_XML_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/$$lang && \
+@INSTALL_HELP_XML_TRUE@ if ls -lLd $(srcdir)/help/$$lang/$(DOCMASKXML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@ for file in $(srcdir)/help/$$lang/$(DOCMASKXML) ; do \
+@INSTALL_HELP_XML_TRUE@ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/$$lang" ; \
+@INSTALL_HELP_XML_TRUE@ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/$$lang ; \
+@INSTALL_HELP_XML_TRUE@ done ; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ done; \
+@INSTALL_HELP_XML_TRUE@ @echo "-------- Install of MathML sources --------"; \
+@INSTALL_HELP_XML_TRUE@ if test -d $(srcdir)/help/mml/; then \
+@INSTALL_HELP_XML_TRUE@ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/help/mml/ && \
+@INSTALL_HELP_XML_TRUE@ if ls -lLd $(srcdir)/help/mml/$(DOCMASKMML) >/dev/null 2>&1; then \
+@INSTALL_HELP_XML_TRUE@ for file in $(srcdir)/help/mml/$(DOCMASKMML) ; do \
+@INSTALL_HELP_XML_TRUE@ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/help/mml" ; \
+@INSTALL_HELP_XML_TRUE@ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/help/mml ; \
+@INSTALL_HELP_XML_TRUE@ done ; \
+@INSTALL_HELP_XML_TRUE@ fi; \
+@INSTALL_HELP_XML_TRUE@ fi
+install-data-local:
+# Install the tests
+ @echo "-------- Install tests (if any) --------"; \
+ for dir in $(TESTS_DIR) $(TESTS_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgmacrosdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgmacrosdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the help chapter
+ @echo "-------- Install the help chapter (if any) --------"; \
+ for lang in $(HELP_CHAPTERLANG); do \
+ HELPFILE=$(srcdir)/$(HELP_CHAPTERDIR)$$lang/$(HELP_CHAPTERFILE); \
+ if test -f $$HELPFILE; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(HELP_CHAPTERDIR)/$$lang/; \
+ echo $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ $(INSTALL_DATA) $$HELPFILE $(DESTDIR)$(pkgdocdir)/$$HELPFILE; \
+ fi; \
+ done
+# Install the demos & examples
+ @echo "-------- Install demos & examples (if any) --------"; \
+ for dir in $(DEMOS_DIR) $(DEMOS_DIREXT) $(EXAMPLES_DIR) $(EXAMPLES_DIREXT) ; do \
+ if test -d $(srcdir)/$$dir/; then \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir && \
+ for file in `find $(srcdir)/$$dir | sed "s|^$(srcdir)/$$dir||" 2>/dev/null`; do \
+ if test -d "$(srcdir)/$$dir/$$file"; then \
+ echo $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$$dir/$$file; \
+ $(mkinstalldirs) "$(DESTDIR)$(pkgdocdir)/$$dir/$$file"; \
+ else \
+ echo "$(INSTALL_DATA) $(srcdir)/$$dir/$$file $(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ $(INSTALL_DATA) "$(srcdir)/$$dir/$$file" "$(DESTDIR)$(pkgdocdir)/`dirname $$dir/$$file`" ; \
+ fi \
+ done; \
+ fi; \
+ done
+# Install the macros
+ @echo "-------- Install macros (if any) --------"; \
+ for dir in $(MACRODIRS) $(MACROSDIRSEXT) ; do \
+ $(mkinstalldirs) $(DESTDIR)$(pkgmacrosdir)/$$dir && \
+ if test -d $(srcdir)/$$dir/; then \
+ FILELIST="$(srcdir)/$$dir/$(MACROMASK) $(srcdir)/$$dir/$(MACROBINMASK) $(srcdir)/$$dir/$(MACROBUILDMASK) $(srcdir)/$$dir/names $(srcdir)/$$dir/lib";\
+ if test -n "$(MACROSSPECIALEXT)"; then \
+ specialExtDir=""; \
+ for specialExt in $(MACROSSPECIALEXT); do \
+ specialExtDir="$$specialExtDir $(srcdir)/$$dir/$$specialExt"; \
+ done; \
+ FILELIST="$$FILELIST $$specialExtDir"; \
+ fi; \
+ for file in `ls -1 $$FILELIST 2>/dev/null`; do \
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgmacrosdir)/$$dir" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgmacrosdir)/$$dir ; \
+ done; \
+ fi; \
+ done
+# Install java files (.jar)
+ @if ls -lLd $(srcdir)/$(JARDIR)$(JARMASK) >/dev/null 2>&1; then \
+ echo "-------- Install jar files --------"; \
+ $(mkinstalldirs) $(DESTDIR)$(pkgdocdir)/$(JARDIR); \
+ for file in $(srcdir)/$(JARDIR)$(JARMASK); do\
+ echo "$(INSTALL_DATA) $$file $(DESTDIR)$(pkgdocdir)/$(JARDIR)" ; \
+ $(INSTALL_DATA) "$$file" $(DESTDIR)$(pkgdocdir)/$(JARDIR) ; \
+ done ; \
+ fi
+
+########### CLEAN ###################
+# Clean help (generated automatically by Scilab)
+# It used to clean the macro (clean-macros) but this was causing
+# make clean && make to fail Scilab startup
+@NEED_JAVA_TRUE@clean-local: clean-java
+@NEED_JAVA_FALSE@clean-local:
+
+distclean-local:
+ rm -f $(builddir)/help/*/.last_successful_build_javaHelp $(builddir)/help/*/.list_*
+
+.PHONY: macros java swig giws
+ $(AM_CPPFLAGS)
+ $(AM_CPPFLAGS)
+
+includes/graphicObjectsProperties.h: Makefile.am src/scripts/propertiesMap.properties
+ @$(top_srcdir)/modules/graphic_objects/src/scripts/genPropertiesName.sh --C $(top_srcdir)/modules/graphic_objects/src/scripts/propertiesMap.properties $(top_srcdir)/modules/graphic_objects/includes/graphicObjectProperties.h
+ @$(top_srcdir)/modules/graphic_objects/src/scripts/genPropertiesName.sh --java $(top_srcdir)/modules/graphic_objects/src/scripts/propertiesMap.properties $(top_srcdir)/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/modules/graphic_objects/build.xml b/modules/graphic_objects/build.xml
new file mode 100755
index 000000000..a235a0192
--- /dev/null
+++ b/modules/graphic_objects/build.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ -->
+
+<project name="graphic_objects" default="jar">
+
+ <import file="../../build.incl.xml"/>
+ <property name="library.name" value="${library.graphic_objects.name}" />
+
+ <description>
+ Build the Scilab graphic_objects module
+ </description>
+
+</project>
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallGraphicController.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallGraphicController.class
new file mode 100755
index 000000000..1282e3284
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallGraphicController.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallXmlLoader.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallXmlLoader.class
new file mode 100755
index 000000000..1bec6f189
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/CallXmlLoader.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoader.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoader.class
new file mode 100755
index 000000000..1d83270da
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoader.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoaderJNI.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoaderJNI.class
new file mode 100755
index 000000000..4687a64f7
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/DataLoaderJNI.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/JavaObjectLoader.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/JavaObjectLoader.class
new file mode 100755
index 000000000..0e698b91f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/JavaObjectLoader.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/MainDataLoader.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/MainDataLoader.class
new file mode 100755
index 000000000..6efc9671a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/MainDataLoader.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectData.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectData.class
new file mode 100755
index 000000000..4aaa38902
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectData.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectDataJNI.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectDataJNI.class
new file mode 100755
index 000000000..760c00e3e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectDataJNI.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectRemovedException.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectRemovedException.class
new file mode 100755
index 000000000..2acddefd8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ObjectRemovedException.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineData.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineData.class
new file mode 100755
index 000000000..aadc89a91
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineData.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineDataJNI.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineDataJNI.class
new file mode 100755
index 000000000..7d5c838eb
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/PolylineDataJNI.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeView.class
new file mode 100755
index 000000000..b3a833c50
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.class
new file mode 100755
index 000000000..2fa1196f1
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceData.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceData.class
new file mode 100755
index 000000000..97cec565e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceData.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceDataJNI.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceDataJNI.class
new file mode 100755
index 000000000..b0f72a303
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/SurfaceDataJNI.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcDrawingMethod.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcDrawingMethod.class
new file mode 100755
index 000000000..05ffb0925
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcDrawingMethod.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcProperty.class
new file mode 100755
index 000000000..0b72cb4b2
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc$ArcProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc.class
new file mode 100755
index 000000000..4856c04f0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/Arc.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/ArcDecomposer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/ArcDecomposer.class
new file mode 100755
index 000000000..e7aebaef9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/arc/ArcDecomposer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$1.class
new file mode 100755
index 000000000..d3b0825dc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$AxesProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$AxesProperty.class
new file mode 100755
index 000000000..d3715f529
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$AxesProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$GridPosition.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$GridPosition.class
new file mode 100755
index 000000000..3712fc04f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes$GridPosition.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes.class
new file mode 100755
index 000000000..fba52bbbf
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Axes.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxesContainer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxesContainer.class
new file mode 100755
index 000000000..128c89035
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxesContainer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisLocation.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisLocation.class
new file mode 100755
index 000000000..b947aff89
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisLocation.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisPropertyProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisPropertyProperty.class
new file mode 100755
index 000000000..907822b76
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty$AxisPropertyProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty.class
new file mode 100755
index 000000000..ca4773cb8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/AxisProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxProperty.class
new file mode 100755
index 000000000..ca410e62b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxType.class
new file mode 100755
index 000000000..62dc25e27
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box$BoxType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box.class
new file mode 100755
index 000000000..f68d7c1d5
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Box.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$CameraProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$CameraProperty.class
new file mode 100755
index 000000000..ffd1df8cc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$CameraProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$ViewType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$ViewType.class
new file mode 100755
index 000000000..2224e5c2a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera$ViewType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera.class
new file mode 100755
index 000000000..f31ab0d1e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/Camera.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksArrays.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksArrays.class
new file mode 100755
index 000000000..6b6200b2b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksArrays.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksPropertyProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksPropertyProperty.class
new file mode 100755
index 000000000..fff9116e6
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty$TicksPropertyProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty.class
new file mode 100755
index 000000000..a2eb107c0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axes/TicksProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$AxisProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$AxisProperty.class
new file mode 100755
index 000000000..dd8ed9ec9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$AxisProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$TicksDirection.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$TicksDirection.class
new file mode 100755
index 000000000..938bc5de8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis$TicksDirection.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis.class
new file mode 100755
index 000000000..c71d75a67
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/axis/Axis.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/builder/Builder.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/builder/Builder.class
new file mode 100755
index 000000000..616ba96bd
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/builder/Builder.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/compound/Compound.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/compound/Compound.class
new file mode 100755
index 000000000..a7da0a0cf
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/compound/Compound.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ConsoleProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ConsoleProperty.class
new file mode 100755
index 000000000..ab805e72c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ConsoleProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ScilabMode.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ScilabMode.class
new file mode 100755
index 000000000..f24d0e936
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console$ScilabMode.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console.class
new file mode 100755
index 000000000..a9359bc03
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/console/Console.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject$ClippableContouredObjectPropertyType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject$ClippableContouredObjectPropertyType.class
new file mode 100755
index 000000000..993f7ae14
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject$ClippableContouredObjectPropertyType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.class
new file mode 100755
index 000000000..936519f35
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject$ContouredObjectPropertyType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject$ContouredObjectPropertyType.class
new file mode 100755
index 000000000..d8f0ee7e9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject$ContouredObjectPropertyType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.class
new file mode 100755
index 000000000..c3337595d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$1.class
new file mode 100755
index 000000000..03ff86c62
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LinePropertyType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LinePropertyType.class
new file mode 100755
index 000000000..6e83ac732
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LinePropertyType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LineType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LineType.class
new file mode 100755
index 000000000..7b8e6572f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line$LineType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line.class
new file mode 100755
index 000000000..480600dd8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Line.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkPropertyType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkPropertyType.class
new file mode 100755
index 000000000..a7a0c266d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkPropertyType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkSizeUnitType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkSizeUnitType.class
new file mode 100755
index 000000000..7a8b3989c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark$MarkSizeUnitType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark.class
new file mode 100755
index 000000000..5defd2417
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/contouredObject/Mark.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$1.class
new file mode 100755
index 000000000..d94a49fee
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$DatatipObjectProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$DatatipObjectProperty.class
new file mode 100755
index 000000000..f51f685ce
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$DatatipObjectProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$TipOrientation.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$TipOrientation.class
new file mode 100755
index 000000000..3b3dadeb6
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip$TipOrientation.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip.class
new file mode 100755
index 000000000..806761f7d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/datatip/Datatip.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/event/EventHandler.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/event/EventHandler.class
new file mode 100755
index 000000000..433ce2f93
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/event/EventHandler.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec$FecProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec$FecProperty.class
new file mode 100755
index 000000000..a80fc7363
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec$FecProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec.class
new file mode 100755
index 000000000..b61650a83
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/fec/Fec.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/ColorMap.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/ColorMap.class
new file mode 100755
index 000000000..9452c41c5
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/ColorMap.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$1.class
new file mode 100755
index 000000000..4bb7d854b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$BarType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$BarType.class
new file mode 100755
index 000000000..3b3de61f8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$BarType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$Canvas.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$Canvas.class
new file mode 100755
index 000000000..97b233125
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$Canvas.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$CanvasProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$CanvasProperty.class
new file mode 100755
index 000000000..132220cda
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$CanvasProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$EventHandlerProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$EventHandlerProperty.class
new file mode 100755
index 000000000..26e088e7c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$EventHandlerProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensions.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensions.class
new file mode 100755
index 000000000..af7c3d0c5
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensions.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensionsProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensionsProperty.class
new file mode 100755
index 000000000..9f0bb28fc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureDimensionsProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureName.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureName.class
new file mode 100755
index 000000000..0041f8ab8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureName.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureNameProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureNameProperty.class
new file mode 100755
index 000000000..045ecba3d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureNameProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureProperty.class
new file mode 100755
index 000000000..6f70593d4
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$FigureProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$PixelDrawingMode.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$PixelDrawingMode.class
new file mode 100755
index 000000000..93df7bc13
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$PixelDrawingMode.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingMode.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingMode.class
new file mode 100755
index 000000000..8dc5524da
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingMode.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingModeProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingModeProperty.class
new file mode 100755
index 000000000..942fd4f45
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RenderingModeProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RotationType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RotationType.class
new file mode 100755
index 000000000..e33854d4c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure$RotationType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure.class
new file mode 100755
index 000000000..13490cc5f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/figure/Figure.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$1.class
new file mode 100755
index 000000000..1ff2a0754
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$2.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$2.class
new file mode 100755
index 000000000..8d91440b2
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$2.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$3.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$3.class
new file mode 100755
index 000000000..3941439bf
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$3.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$4.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$4.class
new file mode 100755
index 000000000..e96ed1fec
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController$4.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController.class
new file mode 100755
index 000000000..881d79bc1
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicController/GraphicController.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel$1.class
new file mode 100755
index 000000000..4cb8c160b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.class
new file mode 100755
index 000000000..78f6700d7
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/CallBack.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/CallBack.class
new file mode 100755
index 000000000..3fc378c7d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/CallBack.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClipStateType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClipStateType.class
new file mode 100755
index 000000000..282b07661
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClipStateType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClippablePropertyType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClippablePropertyType.class
new file mode 100755
index 000000000..b27b8e760
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty$ClippablePropertyType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.class
new file mode 100755
index 000000000..993a7d47d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject$GraphicClippableObjectProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject$GraphicClippableObjectProperty.class
new file mode 100755
index 000000000..9cd4c7f9a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject$GraphicClippableObjectProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.class
new file mode 100755
index 000000000..4e0c472f0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$1.class
new file mode 100755
index 000000000..466838c1e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$GraphicObjectPropertyType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$GraphicObjectPropertyType.class
new file mode 100755
index 000000000..2992bd7e4
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$GraphicObjectPropertyType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$Type.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$Type.class
new file mode 100755
index 000000000..bf352fb6e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$Type.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$UpdateStatus.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$UpdateStatus.class
new file mode 100755
index 000000000..c94caa00d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject$UpdateStatus.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.class
new file mode 100755
index 000000000..40dc1752e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.class
new file mode 100755
index 000000000..26d07ae82
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/Visitor.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/Visitor.class
new file mode 100755
index 000000000..111b5a38f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicObject/Visitor.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.class
new file mode 100755
index 000000000..52830a297
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GedTreeView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GedTreeView.class
new file mode 100755
index 000000000..5c6faf35e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GedTreeView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GraphicView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GraphicView.class
new file mode 100755
index 000000000..a1849d440
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GraphicView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GuiLogView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GuiLogView.class
new file mode 100755
index 000000000..82c6f8abf
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/GuiLogView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/LogView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/LogView.class
new file mode 100755
index 000000000..d0579177b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/LogView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/ScilabView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/ScilabView.class
new file mode 100755
index 000000000..aff8d2060
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/ScilabView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView$GraphicObjectNode.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView$GraphicObjectNode.class
new file mode 100755
index 000000000..392c6437a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView$GraphicObjectNode.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView.class
new file mode 100755
index 000000000..87146d15c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/graphicView/TreeView.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$DataMapping.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$DataMapping.class
new file mode 100755
index 000000000..f1553f114
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$DataMapping.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$GrayplotProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$GrayplotProperty.class
new file mode 100755
index 000000000..e6c8846e1
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot$GrayplotProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot.class
new file mode 100755
index 000000000..43a0d316e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Grayplot.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot$ImageplotProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot$ImageplotProperty.class
new file mode 100755
index 000000000..6b619bd8c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot$ImageplotProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot.class
new file mode 100755
index 000000000..c988148c1
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Imageplot.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Matplot.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Matplot.class
new file mode 100755
index 000000000..3590d763e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/imageplot/Matplot.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label$LabelProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label$LabelProperty.class
new file mode 100755
index 000000000..44ecaae1f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label$LabelProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label.class
new file mode 100755
index 000000000..7a27555af
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/label/Label.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendLocation.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendLocation.class
new file mode 100755
index 000000000..ffab12dcd
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendLocation.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendProperty.class
new file mode 100755
index 000000000..55f535d33
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend$LegendProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend.class
new file mode 100755
index 000000000..db938a9af
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/legend/Legend.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet$ColorTripletProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet$ColorTripletProperty.class
new file mode 100755
index 000000000..470533572
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet$ColorTripletProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet.class
new file mode 100755
index 000000000..03bf7e932
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/ColorTriplet.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$1.class
new file mode 100755
index 000000000..6c0f57534
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightProperty.class
new file mode 100755
index 000000000..96e56a004
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightType.class
new file mode 100755
index 000000000..d1d5ecbf7
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light$LightType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light.class
new file mode 100755
index 000000000..e8801d306
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Light.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material$MaterialProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material$MaterialProperty.class
new file mode 100755
index 000000000..41e3de9ad
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material$MaterialProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material.class
new file mode 100755
index 000000000..ac3170da2
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/lighting/Material.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$1.class
new file mode 100755
index 000000000..347ed5533
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$PolylineProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$PolylineProperty.class
new file mode 100755
index 000000000..feb2e427b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline$PolylineProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline.class
new file mode 100755
index 000000000..d605d140c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/polyline/Polyline.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle$RectangleProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle$RectangleProperty.class
new file mode 100755
index 000000000..16f40c904
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle$RectangleProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle.class
new file mode 100755
index 000000000..c513acc76
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/Rectangle.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.class
new file mode 100755
index 000000000..0d39420d3
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$DataMapping.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$DataMapping.class
new file mode 100755
index 000000000..5314bd3d0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$DataMapping.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$Fac3dProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$Fac3dProperty.class
new file mode 100755
index 000000000..0152c8143
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d$Fac3dProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d.class
new file mode 100755
index 000000000..12832f09c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Fac3d.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Plot3d.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Plot3d.class
new file mode 100755
index 000000000..8ac3c6008
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Plot3d.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$1.class
new file mode 100755
index 000000000..f89261571
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$SurfaceProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$SurfaceProperty.class
new file mode 100755
index 000000000..b1bf0d662
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface$SurfaceProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface.class
new file mode 100755
index 000000000..822636869
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/surface/Surface.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject$ClippableTextObjectProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject$ClippableTextObjectProperty.class
new file mode 100755
index 000000000..5cfc673ef
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject$ClippableTextObjectProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.class
new file mode 100755
index 000000000..3bfcdc908
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font$FontProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font$FontProperty.class
new file mode 100755
index 000000000..e43fccfce
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font$FontProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font.class
new file mode 100755
index 000000000..653d3d257
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Font.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText$FormattedTextProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText$FormattedTextProperty.class
new file mode 100755
index 000000000..4d7f48dfd
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText$FormattedTextProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText.class
new file mode 100755
index 000000000..e0bdbd93c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/FormattedText.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$Alignment.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$Alignment.class
new file mode 100755
index 000000000..68c76dc90
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$Alignment.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextBoxMode.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextBoxMode.class
new file mode 100755
index 000000000..783b40f3a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextBoxMode.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextProperty.class
new file mode 100755
index 000000000..67e2e0b2f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text$TextProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text.class
new file mode 100755
index 000000000..7875d9538
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/Text.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject$TextObjectProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject$TextObjectProperty.class
new file mode 100755
index 000000000..621f2f8a1
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject$TextObjectProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject.class
new file mode 100755
index 000000000..0b9d249ae
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/textObject/TextObject.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar$UibarProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar$UibarProperty.class
new file mode 100755
index 000000000..2d7a878d6
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar$UibarProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar.class
new file mode 100755
index 000000000..0c742d46d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/Uibar.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.class
new file mode 100755
index 000000000..8717217d8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.class
new file mode 100755
index 000000000..e908e2bdc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.class
new file mode 100755
index 000000000..9db026f4a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$1.class
new file mode 100755
index 000000000..319dea994
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$AnchorType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$AnchorType.class
new file mode 100755
index 000000000..66c24b167
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$AnchorType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$BorderLayoutType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$BorderLayoutType.class
new file mode 100755
index 000000000..a76b0b2e5
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$BorderLayoutType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$FillType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$FillType.class
new file mode 100755
index 000000000..1d9ba0ee3
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$FillType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$TitlePositionType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$TitlePositionType.class
new file mode 100755
index 000000000..ff501e09a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$TitlePositionType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolProperty.class
new file mode 100755
index 000000000..47a97f82e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolStyle.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolStyle.class
new file mode 100755
index 000000000..81e4ad6d9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol$UicontrolStyle.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.class
new file mode 100755
index 000000000..93a6e32bc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.class
new file mode 100755
index 000000000..cf75cd910
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.class
new file mode 100755
index 000000000..56641cc8d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.class
new file mode 100755
index 000000000..195cf1bad
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.class
new file mode 100755
index 000000000..e08103e58
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$1.class
new file mode 100755
index 000000000..90cb2676b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$BorderType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$BorderType.class
new file mode 100755
index 000000000..b031ace32
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$BorderType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$FrameBorderProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$FrameBorderProperty.class
new file mode 100755
index 000000000..41a1d4dcc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$FrameBorderProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$JustificationType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$JustificationType.class
new file mode 100755
index 000000000..293cd7351
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$JustificationType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$TitlePositionType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$TitlePositionType.class
new file mode 100755
index 000000000..23cad6ff7
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder$TitlePositionType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.class
new file mode 100755
index 000000000..1644f6713
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.class
new file mode 100755
index 000000000..6eb2f2f35
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$1.class
new file mode 100755
index 000000000..48051b1b9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$LayerProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$LayerProperty.class
new file mode 100755
index 000000000..d253c7087
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer$LayerProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.class
new file mode 100755
index 000000000..0baf06b63
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.class
new file mode 100755
index 000000000..caf4903cd
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.class
new file mode 100755
index 000000000..fc47ae01e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.class
new file mode 100755
index 000000000..acbda13e6
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.class
new file mode 100755
index 000000000..88a51cc75
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.class
new file mode 100755
index 000000000..fd9088c41
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$1.class
new file mode 100755
index 000000000..c1b99cbb8
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$TabProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$TabProperty.class
new file mode 100755
index 000000000..249f65947
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab$TabProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.class
new file mode 100755
index 000000000..6cd1fe83e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/table/Table.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/table/Table.class
new file mode 100755
index 000000000..bbb3c123c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/table/Table.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.class
new file mode 100755
index 000000000..30f3047c4
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.class
new file mode 100755
index 000000000..e38356a2f
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu$UimenuProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu$UimenuProperty.class
new file mode 100755
index 000000000..4742b7a2e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu$UimenuProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu.class
new file mode 100755
index 000000000..de69e6286
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/uimenu/Uimenu.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType$1.class
new file mode 100755
index 000000000..b9ab22d67
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType.class
new file mode 100755
index 000000000..39f91d083
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/LayoutType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder$MenuBarConfigurationHandler.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder$MenuBarConfigurationHandler.class
new file mode 100755
index 000000000..06ebc65bd
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder$MenuBarConfigurationHandler.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.class
new file mode 100755
index 000000000..783be80cc
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.class
new file mode 100755
index 000000000..6251ee715
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/Utils.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/Utils.class
new file mode 100755
index 000000000..119953c56
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/utils/Utils.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow$ArrowProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow$ArrowProperty.class
new file mode 100755
index 000000000..146d8573e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow$ArrowProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow.class
new file mode 100755
index 000000000..f19e5a7b4
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Arrow.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ$ChampProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ$ChampProperty.class
new file mode 100755
index 000000000..96704d781
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ$ChampProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ.class
new file mode 100755
index 000000000..56eb79c30
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Champ.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.class
new file mode 100755
index 000000000..cb51e01f3
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs$SegsProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs$SegsProperty.class
new file mode 100755
index 000000000..085051b3e
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs$SegsProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs.class
new file mode 100755
index 000000000..a64ee384b
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/Segs.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.class
new file mode 100755
index 000000000..56c03ea58
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField$VectFieldProperty.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField$VectFieldProperty.class
new file mode 100755
index 000000000..9dca6bad9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField$VectFieldProperty.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField.class
new file mode 100755
index 000000000..cffc29631
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectField.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.class
new file mode 100755
index 000000000..327978a62
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParser.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParser.class
new file mode 100755
index 000000000..a3d39db6a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParser.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.class
new file mode 100755
index 000000000..ed9896bc0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder$1.class
new file mode 100755
index 000000000..79c515ed0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.class
new file mode 100755
index 000000000..f164de4e9
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/Pair.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/Pair.class
new file mode 100755
index 000000000..44ad6f45d
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/Pair.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$1.class
new file mode 100755
index 000000000..f08db4f7c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$ModelType.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$ModelType.class
new file mode 100755
index 000000000..326a5a436
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader$ModelType.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.class
new file mode 100755
index 000000000..f8fbec15c
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.class
new file mode 100755
index 000000000..65aadedc7
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver$1.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver$1.class
new file mode 100755
index 000000000..2bc13c7c0
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver$1.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.class
new file mode 100755
index 000000000..ed7d2d636
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.class
Binary files differ
diff --git a/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlTools.class b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlTools.class
new file mode 100755
index 000000000..724d0aa1a
--- /dev/null
+++ b/modules/graphic_objects/build/classes/org/scilab/modules/graphic_objects/xmlloader/XmlTools.class
Binary files differ
diff --git a/modules/graphic_objects/changelog.txt b/modules/graphic_objects/changelog.txt
new file mode 100755
index 000000000..ce4aa992d
--- /dev/null
+++ b/modules/graphic_objects/changelog.txt
@@ -0,0 +1,4 @@
+graphic_objects (0.1-1) stable; urgency=medium
+
+ * First version of the module
+
diff --git a/modules/graphic_objects/etc/graphic_objects.quit b/modules/graphic_objects/etc/graphic_objects.quit
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/etc/graphic_objects.quit
diff --git a/modules/graphic_objects/etc/graphic_objects.start b/modules/graphic_objects/etc/graphic_objects.start
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/etc/graphic_objects.start
diff --git a/modules/graphic_objects/graphic_objects.iss b/modules/graphic_objects/graphic_objects.iss
new file mode 100755
index 000000000..9d12251a0
--- /dev/null
+++ b/modules/graphic_objects/graphic_objects.iss
@@ -0,0 +1,34 @@
+;
+; Scilab ( http://mwww.scilab.org/ ) - This file is part of Scilab
+; Copyright (C) 2012 - DIGITEO - Allan CORNET
+; Copyright (C) 2015 - Scilab Enterprises - Vincent COUVERT
+;
+; This file must be used under the terms of the CeCILL.
+; This source file is licensed as described in the file COPYING, which
+; you should have received as part of this distribution. The terms
+; are also available at
+; http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+;
+;--------------------------------------------------------------------------------------------------------------
+; Inno Setup Script (5.3 and more) for Scilab (UNICODE version required)
+;
+;--------------------------------------------------------------------------------------------------------------
+; graphic_objects module
+;--------------------------------------------------------------------------------------------------------------
+;
+#define GRAPHIC_OBJECTS "graphic_objects"
+;
+Source: modules\{#GRAPHIC_OBJECTS}\license.txt; DestDir: {app}\modules\{#GRAPHIC_OBJECTS}; Components: {#COMPN_GRAPHICS}
+;
+Source: bin\sci{#GRAPHIC_OBJECTS}.dll; DestDir: {app}\bin; Components: {#COMPN_GRAPHICS}
+;
+Source: bin\nosci{#GRAPHIC_OBJECTS}.dll; DestDir: {app}\bin; DestName: sci{#GRAPHIC_OBJECTS}.dll; Components: not ({#COMPN_GRAPHICS})
+;
+Source: modules\{#GRAPHIC_OBJECTS}\etc\{#GRAPHIC_OBJECTS}.quit; DestDir: {app}\modules\{#GRAPHIC_OBJECTS}\etc; Components: {#COMPN_GRAPHICS}
+Source: modules\{#GRAPHIC_OBJECTS}\etc\{#GRAPHIC_OBJECTS}.start; DestDir: {app}\modules\{#GRAPHIC_OBJECTS}\etc; Components: {#COMPN_GRAPHICS}
+;
+Source: modules\{#GRAPHIC_OBJECTS}\tests\*.*; DestDir: {app}\modules\{#GRAPHIC_OBJECTS}\tests; Flags: recursesubdirs; Components: {#COMPN_GRAPHICS} and {#COMPN_TESTS}
+;
+Source: modules\{#GRAPHIC_OBJECTS}\jar\org.scilab.modules.{#GRAPHIC_OBJECTS}.jar;DestDir: {app}\modules\{#GRAPHIC_OBJECTS}\jar; Components: {#COMPN_GRAPHICS}
+;
+;--------------------------------------------------------------------------------------------------------------
diff --git a/modules/graphic_objects/includes/AxesModel.h b/modules/graphic_objects/includes/AxesModel.h
new file mode 100755
index 000000000..fa4676a33
--- /dev/null
+++ b/modules/graphic_objects/includes/AxesModel.h
@@ -0,0 +1,24 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#ifndef __AXES_MODEL_H__
+#define __AXES_MODEL_H__
+
+#include "dynlib_graphic_objects.h"
+#include "BOOL.h"
+
+GRAPHIC_OBJECTS_IMPEXP int getAxesModel(void);
+
+GRAPHIC_OBJECTS_IMPEXP void setAxesModel(int iUID);
+
+GRAPHIC_OBJECTS_IMPEXP BOOL isAxesModel(int iUID);
+
+#endif /* !__AXES_MODEL_H__ */
diff --git a/modules/graphic_objects/includes/ColorComputer.hxx b/modules/graphic_objects/includes/ColorComputer.hxx
new file mode 100755
index 000000000..3de603445
--- /dev/null
+++ b/modules/graphic_objects/includes/ColorComputer.hxx
@@ -0,0 +1,244 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef COLORCOMPUTER_HXX
+#define COLORCOMPUTER_HXX
+
+#include "DecompositionUtils.hxx"
+
+/**
+ * Offset passed to the getColor function for colors mapped to z values.
+ */
+#define Z_COLOR_OFFSET 0.5
+
+/**
+ * Offset passed to the getColor function for linearly mapped colors.
+ */
+#define COLOR_OFFSET 0.1
+
+/**
+ * Special color index values.
+ */
+enum SpecialColorIndexValues
+{
+ WHITE_LOWER_INDEX = -4,
+ BLACK_LOWER_INDEX = -3,
+ BLACK_UPPER_INDEX = 0
+};
+
+/**
+ * The minimum value of a single R, G or B component.
+ */
+#define MIN_COMPONENT_VALUE 0.0
+
+/**
+ * The maximum value of a single R, G or B component.
+ */
+#define MAX_COMPONENT_VALUE 1.0
+
+/**
+ * The index value corresponding to white.
+ */
+#define WHITE_INDEX -2.0
+
+/**
+ * The index value corresponding to black.
+ */
+#define BLACK_INDEX -1.0
+
+/**
+ * An offset used to center the color index when computing
+ * colormap texture coordinates.
+ */
+#define COLOR_TEXTURE_OFFSET 0.5
+
+/**
+ * ColorComputer class
+ * Various utility functions used to compute colors.
+ * To be extended.
+ */
+class ColorComputer
+{
+
+public :
+
+ /**
+ * Ouputs an RGB color mapped to a scalar value s belonging to an [smin, smax] interval.
+ * The output color is looked up in an RGB colormap, using a linear mapping between the latter and s.
+ * It does not currently check whether srange is greater than 0.
+ * If s is a Nan value, the black color is output.
+ * @param[in] the scalar value.
+ * @param[in] the interval's minimum value.
+ * @param[in] the interval's range (smax-smin).
+ * @param[in] an offset added to the index computed from s.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[out] a pointer to the array into which the resulting color is output (its R, G, B components are written consecutively).
+ */
+ static void getColor(double s, double smin, double srange, double indexOffset, double* colormap, int colormapSize, float* returnedColor);
+
+ /**
+ * Outputs an RGB color mapped to a scalar value s belonging to an [smin, smax] interval.
+ * The output color is looked up in an RGB colormap, using a linear mapping between a sub-interval of the latter and s.
+ * It neither checks whether srange is greater than 0 nor verifies that the sub-interval is included within the colormap's
+ * range (which must be ensured when specifying the sub-interval's bounds).
+ * If s is a Nan value, the black color is output.
+ * @param[in] the scalar value.
+ * @param[in] the interval's minimum value.
+ * @param[in] the interval's range (smax-smin).
+ * @param[in] an offset added to the index computed from s.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[in] the index specifying the colormap sub-interval's lower bound.
+ * @param[in] the index specifying the colormap sub-interval's upper bound.
+ * @param[out] a pointer to the array into which the resulting color is output (its R, G, B components are written consecutively).
+ */
+ static void getColor(double s, double smin, double srange, double indexOffset, double* colormap, int minIndex, int maxIndex,
+ int colormapSize, float* returnedColor);
+
+ /**
+ * Outputs an RGB color directly mapped to a scalar value s.
+ * The output color is looked up in an RGB colormap, using s as a direct index.
+ * White and black are respectively output when s <= -3 and -3 < s < 0 ; s is also
+ * clamped to the colormap's upper bound (colormapSize-1). If s is a Nan value, black is also
+ * output.
+ * @param[in] the scalar value used as an index.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[out] a pointer to the array into which the resulting color is output (its R, G, B components are written consecutively).
+ * @param[in] a boolean to indicate if the color is clamped (by default true).
+ */
+ template <typename T>
+ inline static void getDirectColor(T s, double* colormap, int colormapSize, float* returnedColor, bool clamped = true)
+ {
+ int index = 0;
+
+ if (s <= (T) BLACK_LOWER_INDEX)
+ {
+ /* Clamp to white */
+ returnedColor[0] = MAX_COMPONENT_VALUE;
+ returnedColor[1] = MAX_COMPONENT_VALUE;
+ returnedColor[2] = MAX_COMPONENT_VALUE;
+ }
+ else if ((((T) BLACK_LOWER_INDEX < s) && (s < (T) BLACK_UPPER_INDEX)) || !DecompositionUtils::isANumber(s))
+ {
+ /* Black is also output for Nan values */
+ returnedColor[0] = MIN_COMPONENT_VALUE;
+ returnedColor[1] = MIN_COMPONENT_VALUE;
+ returnedColor[2] = MIN_COMPONENT_VALUE;
+ }
+ else
+ {
+ if (s > (T)(colormapSize - 1))
+ {
+ if (clamped)
+ {
+ s = (T) (colormapSize - 1);
+ }
+ else
+ {
+ returnedColor[0] = -1;
+ return;
+ }
+ }
+
+ index = (int) s;
+
+ returnedColor[0] = (float)colormap[index];
+ returnedColor[1] = (float)colormap[colormapSize + index];
+ returnedColor[2] = (float)colormap[2 * colormapSize + index];
+ }
+ }
+
+ /**
+ * Outputs an RGB color directly mapped to a scalar value s.
+ * The output color is looked up in an RGB colormap, using s as a direct index.
+ * White and black are respectively output when s <= -3 and -3 < s < 0 ; s is also
+ * clamped to the colormap's upper bound (colormapSize-1). If s is a Nan value, black is also
+ * output.
+ * @param[in] the scalar value used as an index.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[out] a pointer to the array into which the resulting color is output (its R, G, B components are written consecutively).
+ * @param[in] a boolean to indicate if the color is clamped (by default true).
+ */
+ template <typename T>
+ inline static void getDirectByteColor(T s, double* colormap, int colormapSize, unsigned char* returnedColor, bool clamped = true)
+ {
+ float color[3];
+ unsigned int * rc = (unsigned int *)returnedColor;
+ getDirectColor(s, colormap, colormapSize, color, clamped);
+
+ if (!clamped && color[0] == -1)
+ {
+ *rc = 0;
+ }
+ else
+ {
+ returnedColor[0] = (unsigned char)(color[0] * 255);
+ returnedColor[1] = (unsigned char)(color[1] * 255);
+ returnedColor[2] = (unsigned char)(color[2] * 255);
+ returnedColor[3] = 0xFF;
+ }
+ }
+
+ /**
+ * Returns a colormap index from a scalar value s.
+ * Indices corresponding to white and black are respectively output when -4 < s <= -3 and -3 < s < 0;
+ * if s <= -4, the lower colormap index is returned (0).
+ * s is also clamped to the colormap's uppderbound (colormapSize-1).
+ * @param[in] the scalar value used as an index.
+ * @param[in] the colormap's size.
+ * @return the index obtained from s.
+ */
+ static double getDirectIndex(double s, int colormapSize);
+
+ /**
+ * Outputs an RGB color directly mapped to a scalar value s.
+ * The output color is looked up in an RGB colormap, using s as a direct index,
+ * which is clamped to the colormap bounds, that is [0, colormapSize-1] . If s is a Nan value,
+ * the black color is output.
+ * @param[in] the scalar value used as an index.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[out] a pointer to the array into which the resulting color is output (its R, G, B components are written consecutively).
+ */
+ static void getClampedDirectColor(double s, double* colormap, int colormapSize, float* returnedColor);
+
+ /**
+ * Returns the given index rounded down and clamped to the colormap size.
+ * @param[in] the scalar value used as an index.
+ * @param[in] the colormap's size.
+ * @return the index clamped to the colormap size.
+ */
+ static double getClampedDirectIndex(double s, int colormapSize);
+
+ /**
+ * Returns a colormap index mapped to a scalar value s belonging to an [smin, smax] interval.
+ * The index belongs to an [imin, imax] interval which is linearly mapped to s, smin and smax respectively
+ * corresponding to the imin and imax indices. The computed index is rounded down and then clamped to
+ * the [imin, imax] interval.
+ * It neither checks whether srange is greater than 0 nor verifies than minIndex and maxIndex are valid colormap
+ * indices.
+ * @param[in] the scalar value.
+ * @param[in] the scale value's minimum value.
+ * @param[in] the scalar value interval's range (smax-smin).
+ * @param[in] an offset added to the index computed from s.
+ * @param[in] the index specifying the index interval's lower bound.
+ * @param[in] the index specifying the index interval's upper bound.
+ * @return the computed index.
+ */
+ static double getIndex(double s, double smin, double srange, double indexOffset, int minIndex, int maxIndex);
+};
+
+#endif
+
diff --git a/modules/graphic_objects/includes/CurrentFigure.h b/modules/graphic_objects/includes/CurrentFigure.h
new file mode 100755
index 000000000..4e16fa0ff
--- /dev/null
+++ b/modules/graphic_objects/includes/CurrentFigure.h
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __CURRENT_FIGURE_H__
+#define __CURRENT_FIGURE_H__
+
+#include "dynlib_graphic_objects.h"
+/**
+ * Returns UID of the current selected figure.
+ */
+GRAPHIC_OBJECTS_IMPEXP int getCurrentFigure(void);
+
+/**
+ * Modify the current figure if needed.
+ */
+GRAPHIC_OBJECTS_IMPEXP void setCurrentFigure(int iUID);
+
+/**
+ * To know if a figure is the selected one.
+ */
+GRAPHIC_OBJECTS_IMPEXP BOOL isCurrentFigure(int iUID);
+
+#endif /* !__CURRENT_FIGURE_H__ */
diff --git a/modules/graphic_objects/includes/CurrentObject.h b/modules/graphic_objects/includes/CurrentObject.h
new file mode 100755
index 000000000..d882fe0ba
--- /dev/null
+++ b/modules/graphic_objects/includes/CurrentObject.h
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __CURRENT_OBJECT_H__
+#define __CURRENT_OBJECT_H__
+
+#include "dynlib_graphic_objects.h"
+#include "BOOL.h"
+/**
+ * Returns UID of the current selected object.
+ */
+GRAPHIC_OBJECTS_IMPEXP int getCurrentObject(void);
+
+/**
+ * Modify the current object if needed.
+ */
+GRAPHIC_OBJECTS_IMPEXP void setCurrentObject(int iUID);
+
+/**
+ * To know if an object is the selected one.
+ */
+GRAPHIC_OBJECTS_IMPEXP BOOL isCurrentObject(int iUID);
+
+/**
+ * get parent object
+ */
+GRAPHIC_OBJECTS_IMPEXP int getParentObject(int iUID);
+GRAPHIC_OBJECTS_IMPEXP void setParentObject(int iUID, int iParent);
+
+#endif /* !__CURRENT_OBJECT_H__ */
diff --git a/modules/graphic_objects/includes/CurrentSubwin.h b/modules/graphic_objects/includes/CurrentSubwin.h
new file mode 100755
index 000000000..f84d2ffb2
--- /dev/null
+++ b/modules/graphic_objects/includes/CurrentSubwin.h
@@ -0,0 +1,22 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __CURRENT_SUBWIN_H__
+#define __CURRENT_SUBWIN_H__
+
+#include "dynlib_graphic_objects.h"
+
+GRAPHIC_OBJECTS_IMPEXP int getCurrentSubWin(void);
+
+GRAPHIC_OBJECTS_IMPEXP void setCurrentSubWin(int iUID);
+
+#endif /* !__CURRENT_SUBWIN_H__ */
diff --git a/modules/graphic_objects/includes/Data3D.hxx b/modules/graphic_objects/includes/Data3D.hxx
new file mode 100755
index 000000000..53b082886
--- /dev/null
+++ b/modules/graphic_objects/includes/Data3D.hxx
@@ -0,0 +1,71 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef DATA_3D_HXX
+#define DATA_3D_HXX
+
+#include <string>
+
+#include "DataProperties.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <stdio.h>
+}
+
+/**
+ * An abstract 3D data class
+ * To be completed
+ */
+
+class Data3D
+{
+protected:
+ /* To be added: a member indicating how color is specified (per-vertex or per-facet) */
+
+public :
+ /**
+ * Constructor
+ */
+ Data3D(void);
+
+ /**
+ * Destructor
+ */
+ virtual ~Data3D(void);
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ virtual int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ virtual int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ virtual void getDataProperty(int property, void **_pvData);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/DataController.hxx b/modules/graphic_objects/includes/DataController.hxx
new file mode 100755
index 000000000..9ae2e11b4
--- /dev/null
+++ b/modules/graphic_objects/includes/DataController.hxx
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "DataModel.hxx"
+
+extern "C" {
+#include "BOOL.h"
+}
+
+class DataController
+{
+
+public :
+ static BOOL setGraphicObjectProperty(int iUID, int _iName, void const* _dblValue, int numElements)
+ {
+ return DataModel::get()->setGraphicObjectProperty(iUID, _iName, _dblValue, numElements);
+ }
+
+ static void getGraphicObjectProperty(int iUID, int _iName, void **_pvData)
+ {
+ return DataModel::get()->getGraphicObjectProperty(iUID, _iName, _pvData);
+ }
+
+ static int createDataObject(int iUID, int _iType)
+ {
+ return DataModel::get()->createDataObject(iUID, _iType);
+ }
+
+ static void deleteDataObject(int iUID)
+ {
+ DataModel::get()->deleteDataObject(iUID);
+ }
+
+};
diff --git a/modules/graphic_objects/includes/DataLoader.hxx b/modules/graphic_objects/includes/DataLoader.hxx
new file mode 100755
index 000000000..b039c40e3
--- /dev/null
+++ b/modules/graphic_objects/includes/DataLoader.hxx
@@ -0,0 +1,213 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Pierre Lando
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef DATA_LOADER_HXX
+#define DATA_LOADER_HXX
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ typedef struct
+ {
+ void * address;
+ unsigned int size;
+ } JavaDirectBuffer;
+
+ /**
+ * Return the texture width for the given object.
+ * @param[in] the given object id.
+ * @return the texture width for the given object.
+ */
+ int getTextureWidth(int id);
+
+ /**
+ * Return the texture height for the given object.
+ * @param[in] the given object id.
+ * @return the texture height for the given object.
+ */
+ int getTextureHeight(int id);
+
+ /**
+ * Fill the given buffer with texture data.
+ * @param[in] the id of the object texture.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @return the length of writed data.
+ */
+ int fillTextureData(int id, unsigned char* buffer, int bufferLength);
+
+ /**
+ * Fill the given buffer with sub-texture data.
+ * @param[in] the id of the object texture.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the x-coordinate of the first pixel.
+ * @param[in] the y-coordinate of the first pixel.
+ * @param[in] the width of the sub-texture.
+ * @param[in] the length of the sub-texture.
+ * @return the length of writed data.
+ */
+ int fillSubTextureData(int id, unsigned char* buffer, int bufferLength, int x, int y, int width, int height);
+
+ /**
+ * Return the number of data elements for the given object.
+ * @param[in] the given object id.
+ * @return the number of data elements.
+ */
+ int getDataSize(int id);
+
+ /**
+ * Fill the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinate taken by one element in the buffer.
+ * @param[in] this byte mask specifies which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double scale[], double translation[], int logMask);
+
+ /**
+ * Fill the given buffer with normal data from the given object.
+ * @param[in] the id of the given object.
+ * @param[in] the buffer with position data.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinate taken by one element in the buffer.
+ */
+ void fillNormals(int id, float* position, float* buffer, int bufferLength, int elementsSize);
+
+
+ /**
+ * Fill the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[in] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinate taken by one element in the buffer (3 for RGB, 4 for RGBA).
+ */
+ void fillColors(int id, float* buffer, int bufferLength, int elementsSize);
+
+ /**
+ * Fill the given buffer with texture coordinates data from the given object.
+ * @param[in] the id of the given object.
+ * @param[in] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ */
+ void fillTextureCoordinates(int id, float* buffer, int bufferLength);
+
+ /**
+ * Return the number of indices for the given object.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ int getIndicesSize(int id);
+
+ /**
+ * Fill the given buffer with indices data of the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ /**
+ * Return the number of indices for the wire of the given object.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ int getWireIndicesSize(int id);
+
+ /**
+ * Fill the given buffer with wire indices data of the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ int fillWireIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ /**
+ * Return the number of mark indices of the given object.
+ * @param[in] the given object id.
+ * @return the number of mark indices.
+ */
+ int getMarkIndicesSize(int id);
+
+ /**
+ * Fill the given buffer with mark indices data of the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @return the number of indices actually written.
+ */
+ int fillMarkIndices(int id, int* buffer, int bufferLength);
+
+ /**
+ * Get texture data of the given object.
+ * @param[in] the id of the given object.
+ * @return a JavaDirectBuffer struct which will be converted into a java.nio.ByteBuffer.
+ */
+ JavaDirectBuffer getTextureData(int id);
+
+ /**
+ * Get texture image type of the given object.
+ * @param[in] id the id of the given object.
+ * @return the image type.
+ */
+ int getTextureImageType(int id);
+
+ /**
+ * Get the Scilab data type associated with the texture of the given object.
+ * @param[in] id the id of the given object.
+ * @return the image type (0 for RGB, 1 for RGBA, 2 for GRAY).
+ */
+ int getTextureDataType(int id);
+
+ /**
+ * Get texture OpenGL type of the given object.
+ * @param[in] id the id of the given object.
+ * @return the OpenGL type.
+ */
+ int getTextureGLType(int id);
+
+ /**
+ * Dispose texture data of the given object.
+ * @param[in] id the id of the given object.
+ * @param[in] buffer the address of the buffer to dipose.
+ */
+ void disposeTextureData(int id, unsigned char * buffer);
+
+ /**
+ * Dispose texture data of the given object.
+ * @param[in] id the id of the given object.
+ * @return 1 if the texture is ROW_MAJOR_ORDER
+ */
+ int isTextureRowOrder(int id);
+
+ /**
+ * Set tha availability of the ABGR extension
+ * @param[in] isAvailable 0 if it is not available
+ */
+ void setABGRExt(int isAvailable);
+
+#ifdef __cplusplus
+} //extern "C"
+#endif
+
+#endif /* DATA_LOADER_HXX */
diff --git a/modules/graphic_objects/includes/DataModel.hxx b/modules/graphic_objects/includes/DataModel.hxx
new file mode 100755
index 000000000..a5f9b13aa
--- /dev/null
+++ b/modules/graphic_objects/includes/DataModel.hxx
@@ -0,0 +1,82 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef DATA_MODEL_H
+#define DATA_MODEL_H
+
+#include <map>
+#include <string>
+
+#include "Data3D.hxx"
+
+#include "NgonGeneralData.hxx"
+#include "NgonGridData.hxx"
+#include "NgonGridMatplotData.hxx"
+#include "NgonPolylineData.hxx"
+#include "MeshData.hxx"
+#include "MeshFecData.hxx"
+
+#include "graphicObjectProperties.h"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <stdio.h>
+}
+
+class DataModel
+{
+private :
+ DataModel()
+ {
+ m_dataMap = new std::map<int, Data3D*>();
+ }
+
+public :
+ static DataModel *get()
+ {
+ if (m_me == NULL)
+ {
+ m_me = new DataModel();
+ }
+
+ return m_me;
+ }
+
+public :
+ /**
+ * Sets a graphic object property
+ * As some set methods allocate memory, the FALSE return value also indicates
+ * a failed allocation for these methods, which overlaps with the non-existing
+ * property return value (also FALSE); returning an int, with -1 for a failed
+ * allocation would possibly solve this problem.
+ */
+ BOOL setGraphicObjectProperty(int iUID, int _iName, void const* _dblValue, int numElements);
+
+ /** Returns a graphic object vector property */
+ void getGraphicObjectProperty(int iUID, int _iName, void **_pvData);
+
+ /** Creates a data object */
+ int createDataObject(int iUID, int _iType);
+
+ /**
+ * Deletes a data object
+ */
+ void deleteDataObject(int iUID);
+
+private :
+ static DataModel *m_me;
+
+ std::map<int, Data3D*> *m_dataMap;
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/DataProperties.hxx b/modules/graphic_objects/includes/DataProperties.hxx
new file mode 100755
index 000000000..a037232d1
--- /dev/null
+++ b/modules/graphic_objects/includes/DataProperties.hxx
@@ -0,0 +1,73 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef DATA_PROPERTIES_H
+#define DATA_PROPERTIES_H
+
+/*
+ * Properties values
+ * A static enum would probably be better.
+ * To be modified.
+ */
+
+#define UNKNOWN_DATA_PROPERTY 0
+
+#define NUM_GONS 1
+#define NUM_VERTICES_PER_GON 2
+
+#define NUM_ELEMENTS 3
+#define NUM_ELEMENTS_ARRAY 4
+#define COORDINATES 5
+#define X_COORDINATES 6
+#define Y_COORDINATES 7
+#define Z_COORDINATES 8
+
+#define X_COORDINATES_SHIFT 9
+#define Y_COORDINATES_SHIFT 10
+#define Z_COORDINATES_SHIFT 11
+#define X_COORDINATES_SHIFT_SET 12
+#define Y_COORDINATES_SHIFT_SET 13
+#define Z_COORDINATES_SHIFT_SET 14
+#define Z_COORDINATES_SET 15
+
+#define NUM_VERTICES 16
+#define NUM_INDICES 17
+#define INDICES 18
+#define VALUES 19
+
+#define FEC_ELEMENTS 20
+#define NUM_VERTICES_BY_ELEM 21
+
+#define NUM_X 22
+#define NUM_Y 23
+#define NUM_Z 24
+#define GRID_SIZE 25
+#define X_DIMENSIONS 26
+#define Y_DIMENSIONS 27
+
+#define COLORS 28
+#define NUM_COLORS 29
+
+#define MATPLOT_BOUNDS 30
+#define MATPLOT_TYPE 31
+#define MATPLOT_VIDEO_MODE 32
+#define MATPLOT_GL_TYPE 33
+#define MATPLOT_DATA_INFOS 34
+#define MATPLOT_DATA_TYPE 35
+#define MATPLOT_DATA_ORDER 36
+#define MATPLOT_IMAGE_TYPE 37
+#define MATPLOT_IMAGE_DATA 38
+#define MATPLOT_IMAGE_DATASIZE 39
+#define DISPLAY_FUNCTION_DATA 40
+#define DISPLAY_FUNCTION_DATA_SIZE 41
+
+#endif
diff --git a/modules/graphic_objects/includes/DecompositionUtils.hxx b/modules/graphic_objects/includes/DecompositionUtils.hxx
new file mode 100755
index 000000000..387428af4
--- /dev/null
+++ b/modules/graphic_objects/includes/DecompositionUtils.hxx
@@ -0,0 +1,182 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef DECOMPOSITION_UTILS_HXX
+#define DECOMPOSITION_UTILS_HXX
+
+/**
+ * Decomposition utility class
+ * A set of various static utility methods.
+ */
+
+class DecompositionUtils
+{
+
+public :
+
+ /**
+ * Tests whether a scalar value is a valid number,
+ * that is, not a NaN.
+ * @param[in] the scalar value to test.
+ * @return 1 if the value is not a Nan, 0 if it is.
+ */
+ static int isANumber(double x);
+
+ static int isANumber(int x)
+ {
+ return 1;
+ }
+
+ static int isANumber(unsigned int x)
+ {
+ return 1;
+ }
+
+ static int isANumber(char x)
+ {
+ return 1;
+ }
+
+ static int isANumber(unsigned char x)
+ {
+ return 1;
+ }
+
+ static int isANumber(short x)
+ {
+ return 1;
+ }
+
+ static int isANumber(unsigned short x)
+ {
+ return 1;
+ }
+
+ /**
+ * Tests whether a scalar value is finite.
+ * @param[in] the scalar value to test.
+ * @return 1 if the value is finite, 0 if it is infinite.
+ */
+ static int isFinite(double x);
+
+ /**
+ * Tests whether a scalar value is valid.
+ * The value is valid if it is neither infinite nor a NaN.
+ * @param[in] the scalar value to test.
+ * @return 1 if the value is valid, 0 if it is not.
+ */
+ static int isValid(double x);
+
+ /**
+ * Tests whether a point is valid.
+ * The point is valid if none of its coordinates is infinite or a NaN.
+ * @param[in] the point's x-coordinate.
+ * @param[in] the point's y-coordinate.
+ * @param[in] the point's z-coordinate.
+ * @return 1 if the point is valid, 0 if it is not.
+ */
+ static int isValid(double x, double y, double z);
+
+ /**
+ * Tests whether a point is valid.
+ * The point is valid if none of its coordinates is infinite or a NaN.
+ * @param[in] the point's x-coordinate.
+ * @param[in] the point's y-coordinate.
+ * @return 1 if the point is valid, 0 if it is not.
+ */
+ static int isValid(double x, double y);
+
+ /**
+ * Returns the base-10 logarithm of the input value.
+ * @param[in] the input value.
+ * @return the base-10 logarithm of the input value.
+ */
+ static double getLog10Value(double value);
+
+ /**
+ * Determines if a single-component point is valid in logarithmic scale.
+ * @param[in] the point's coordinate.
+ * @return 1 if the point is valid, 0 if it is not.
+ */
+ static int isLogValid(double x);
+
+ /**
+ * Determines if a point is valid in logarithmic scale.
+ * It checks whether any of its coordinates is strictly less than 0 (if the
+ * logarithmic scale applies). In the event of the former, the point is
+ * determined as not valid.
+ * @param[in] the point's x-coordinate.
+ * @param[in] the point's y-coordinate.
+ * @param[in] the bit mask specifying for which coordinates the logarithmic scale is used.
+ * @return 1 if the point is valid, 0 if it is not.
+ */
+ static int isLogValid(double x, double y, int logMask);
+
+ /**
+ * Determines if a point is valid in logarithmic scale.
+ * It checks whether any of its coordinates is strictly less than 0 (if the
+ * logarithmic scale applies). In the event of the former, the point is
+ * determined as not valid.
+ * @param[in] the point's x-coordinate.
+ * @param[in] the point's y-coordinate.
+ * @param[in] the point's z-coordinate.
+ * @param[in] the bit mask specifying for which coordinates the logarithmic scale is used.
+ * @return 1 if the point is valid, 0 if it is not.
+ */
+ static int isLogValid(double x, double y, double z, int logMask);
+
+ /**
+ * Returns the maximum representable double value.
+ * @return the maximum representable double value.
+ */
+ static double getMaxDoubleValue(void);
+
+ /**
+ * Returns the minimum representable double value.
+ * @return the minimum representable double value.
+ */
+ static double getMinDoubleValue(void);
+
+ /**
+ * Returns the absolute value of its input value.
+ * @param[in] the value.
+ * @return the absolute value.
+ */
+ static double getAbsoluteValue(double value);
+
+ /**
+ * Returns the square root of its input value.
+ * @param[in] the value.
+ * @return the value's square root.
+ */
+ static double getSquareRoot(double value);
+
+ /**
+ * Utility function which outputs the triangle indices of a rectangle decomposed
+ * into 2 adjacent triangles. Decomposition is always performed the same way as it does not
+ * depend on input vertex values. This function should therefore be used only for rectangles.
+ * @param[out] the triangle indices (v0, v1, v2), (v3, v4, v5).
+ */
+ static void getDecomposedRectangleTriangleIndices(int* indices);
+
+ /**
+ * Decomposes a quadrilateral facet into two triangles and outputs the resulting vertex indices.
+ * As there are two possible decompositions, it chooses the one which has the most coplanar triangles.
+ * The output triangles' vertex indices are in counter-clockwise order.
+ * @param[in] the facet vertices (4 (x,y,z) triplets, in counter-clockwise order).
+ * @param[in] the facet vertices' indices (4 elements, in counter-clockwise order).
+ * @param[out] the triangles' vertex indices (6 elements: two consecutive index triplets).
+ */
+ static void getDecomposedQuadTriangleIndices(double vertices[4][3], int* facetVertexIndices, int* triangleVertexIndices);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/Fac3DColorComputer.hxx b/modules/graphic_objects/includes/Fac3DColorComputer.hxx
new file mode 100755
index 000000000..22c3e04cf
--- /dev/null
+++ b/modules/graphic_objects/includes/Fac3DColorComputer.hxx
@@ -0,0 +1,181 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef FAC3DCOLORCOMPUTER_HXX
+#define FAC3DCOLORCOMPUTER_HXX
+
+#include <string>
+
+extern "C" {
+#include <stdlib.h>
+}
+
+/**
+ * Fac3D color computer class
+ * Outputs color values depending on the corresponding Fac3D objects's color
+ * values and properties (color_flag, data_mapping, etc.).
+ *
+ * To do:
+ * -extend to take into account constant or z-mapped colors (respectively color_flag == 0
+ * and color_flag == 1).
+ */
+
+class Fac3DColorComputer
+{
+private :
+ /* To do: rename colors to values in order to take into account Z values */
+
+ /** The Fac3D object's color values array */
+ double* colors;
+
+ /**
+ * The Fac3D object's total number of color values
+ * Must be equal either to numGons (per-facet colors) or
+ * to numGons*numVerticesPerGon (per-vertex colors).
+ */
+ int numColors;
+
+ /** The Fac3D object's color flag value */
+ int colorFlag;
+
+ /** A flag specifying whether color values are directly mapped (1) or scaled (0) */
+ int dataMapping;
+
+ /** The number of n-gons */
+ int numGons;
+
+ /** The number of vertices per n-gon */
+ int numVerticesPerGon;
+
+ /**
+ * The number of colors per facet
+ * Must be equal either to numVerticesPerGon (per-vertex colors) or 1 (per-facet colors).
+ */
+ int numColorsPerFacet;
+
+ /** A flag specifying whether colors are defined per-facet (0) or per-vertex (1) */
+ int perVertex;
+
+ /** The maximum color value */
+ double minColorValue;
+
+ /** The minimum color value */
+ double maxColorValue;
+
+ /** The color range actually used (used maximum - used minimum) */
+ double colorRange;
+
+ /** The actual minimum value used */
+ double usedMinColorValue;
+
+ /* A flag specifying whether the color range's min and max bounds are different (1) or not (0) */
+ int colorRangeValid;
+
+public :
+
+ /**
+ * Fac3DColorComputer default constructor.
+ * Initializes the value array to NULL and all other values to 0
+ * (except dataMapping, set to 1).
+ */
+ Fac3DColorComputer(void);
+
+ /**
+ * Fac3DColorComputer constructor.
+ * @param[in] the color array.
+ * @param[in] the number of colors.
+ * @param[in] the color flag.
+ * @param[in] a flag specifying whether colors are direct indices into the colormap (1) or must be scaled (0).
+ * @param[in] the number of n-gons.
+ * @param[in] the number of vertices per n-gon.
+ */
+ Fac3DColorComputer(double* colors, int numColors, int colorFlag, int dataMapping, int numGons, int numVerticesPerGon);
+
+ /**
+ * Fac3DColorComputer destructor.
+ */
+ ~Fac3DColorComputer();
+
+ /**
+ * Indicates whether facets are shaded with a single color or using interpolated shading.
+ * Interpolated shading is used only if colors are defined per vertex and color flag is equal to 3.
+ * Single color (flat) shading is used in any other case.
+ * @return 1 if interpolated shading is used, 0 if flat shading is used.
+ */
+ int isInterpolatedShadingUsed(void);
+
+ /**
+ * Returns the color of facet i at vertex j which is actually output for rendering,
+ * where 0 <= j < numVerticesPerGon.
+ * The colors actually output for rendering may differ from the facet's color values for scaled
+ * colors if the color range is invalid, that is, if the min and max color
+ * values are equal. In this case, it returns the color at half the actually used color range.
+ * In any other case, it returns the facet's color values by calling getFacetColor.
+ * @param[in] the facet index.
+ * @param[in] the vertex index j.
+ * @return the facet color at vertex j.
+ */
+ double getOutputFacetColor(int facetIndex, int vertexIndex);
+
+ /**
+ * Returns the color of facet i at vertex j,
+ * where 0 <= j < numVerticesPerGon.
+ * The vertex index j is relevant only when per-vertex colors are specified and
+ * color_flag is equal to 3. In any other case, a given facet's color
+ * is the same for all its vertices, j is therefore ignored.
+ * @param[in] the facet index.
+ * @param[in] the vertex index j.
+ * @return the facet color at vertex j.
+ */
+ double getFacetColor(int facetIndex, int vertexIndex);
+
+ /**
+ * Compute a facet's average color value.
+ * @param[in] the facet index.
+ * @return the facet's average color value.
+ */
+ double computeAverageValue(int facetIndex);
+
+ /**
+ * Determines whether a facet's color values are valid or not.
+ * @param[in] the facet index.
+ * @return 1 if the facet's color values are valid, 0 otherwise.
+ */
+ int isFacetColorValid(int facetIndex);
+
+ /**
+ * Computes the minimum and maximum color values,
+ * which are then stored as members.
+ */
+ void computeMinMaxValues(void);
+
+ /**
+ * Computes the minimum and maximum values of a facet.
+ * The input minimum and maximum values are updated to the facet's ones if the latter
+ * are respectively less than and greater than the former.
+ * @param[in] the facet index.
+ * @param[in,out] the current minimum value, updated to the facet's minimum.
+ * @param[in,out] the current maximum value, updated to the facet's maximum.
+ */
+ void computeFacetMinMax(int facetIndex, double* currentMin, double* currentMax);
+
+ /**
+ * Returns the minimum color value and the color range which are
+ * actually used to get scaled colors.
+ * The maximum color value is equal to the minimum one added to the color range.
+ * @param[out] the minimum color value.
+ * @param[out] the color range.
+ */
+ void getColorRangeValue(double* minColorValue, double* colorRange);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/Fac3DDecomposer.hxx b/modules/graphic_objects/includes/Fac3DDecomposer.hxx
new file mode 100755
index 000000000..62a1fbc89
--- /dev/null
+++ b/modules/graphic_objects/includes/Fac3DDecomposer.hxx
@@ -0,0 +1,184 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef FAC3DDECOMPOSER_DECOMPOSER_HXX
+#define FAC3DDECOMPOSER_DECOMPOSER_HXX
+
+#include <string>
+
+extern "C" {
+#include <stdlib.h>
+}
+
+/**
+ * Fac3D decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed Fac3D object's properties.
+ * Fac3D data is represented by an N-gon set, as referred by the
+ * various comments.
+ */
+
+class Fac3DDecomposer
+{
+
+private :
+
+ /**
+ * Specifies how the minimum and maximum values are computed from an input array
+ * of per-vertex or per-face values.
+ * The first enum value corresponds to either per-face or per-vertex input values
+ * whereas the last two are only relevant to per-vertex input values.
+ */
+ enum MinMaxComputation {
+ ALL_VALUES, /** all input values are used */
+ FACE_AVERAGE, /** per-face averaged values */
+ FIRST_VERTEX_VALUE /** only each face's first value */
+ };
+
+ /**
+ * Fills a buffer with texture coordinate computed from z values.
+ * Colors are looked up in a color map, which is linearly mapped to the N-gon set's normalized z values.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[in] the z coordinate array.
+ * @param[in] the number of N-gons.
+ * @param[in] the number of vertices per N-gon.
+ */
+ static void fillNormalizedZColorsTextureCoordinates(float* buffer, int bufferLength, double* colormap, int colormapSize,
+ double* z, int numGons, int numVerticesPerGon);
+
+ /**
+ * Fills a buffer with a single color.
+ * The color buffer is filled with a single color value, looked up in a color map.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[in] the single color value used to fill the buffer.
+ * @param[in] the number of N-gons.
+ * @param[in] the number of vertices per N-gon.
+ */
+ static void fillConstantColorsTextureCoordinates(float* buffer, int bufferLength, double* colormap, int colormapSize,
+ double colorValue, int numGons, int numVerticesPerGon);
+
+ /**
+ * Fills a buffer with color data.
+ * Colors are looked up in a color map, using the N-gon set's color data array as an input.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[in] the N-gon set's color values array.
+ * @param[in] the color flag value.
+ * @param[in] a flag specifying whether color values are defined per-vertex (1) or per-facet (0).
+ * @param[in] a flag specifying whether color values are linearly mapped to the color map (0) or a direct mapping is used (1).
+ * @param[in] the number of N-gons.
+ * @param[in] the number of vertices per N-gon.
+ */
+ static void fillDataColorsTextureCoordinates(float* buffer, int bufferLength, double* colormap, int colormapSize,
+ double* colors, int colorFlag, int perVertex, int dataMapping, int numGons, int numVerticesPerGon);
+
+ /**
+ * Computes the average value of an N-gon's vertex values.
+ * @param[in] a pointer to the N-gon's first vertex value.
+ * @param[in] the number of vertices.
+ * @return the average value.
+ */
+ static double computeAverageValue(double* values, int numVertices);
+
+ /**
+ * Computes and returns an N-gon set's minimum and maximum values.
+ * @param[in] the N-gon set's value array.
+ * @param[in] the number of values
+ * @param[in] the number of N-gons.
+ * @param[in] the number of vertices per N-gon.
+ * @param[in] specifies the way the minimum and maximum are computed: using all the input values, per-face averaged ones, or only each face's first value.
+ * The first case corresponds to either per-face or per-vertex values whereas the last two are valid only for per-vertex values.
+ * @param[out] a pointer to the returned minimum value.
+ * @param[out] a pointer to the returned maximum value.
+ */
+ static void computeMinMaxValues(double* values, int numValues, int numGons, int numVerticesPerGon, int minMaxComputation, double* valueMin, double* valueMax);
+
+public :
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param[in] the given object id.
+ * @return the number of data elements.
+ */
+ static int getDataSize(int id);
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ */
+ static void fillTextureCoordinates(int id, float* buffer, int bufferLength);
+
+ /**
+ * Returns the number of indices for the given object.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param[in] the given object id.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ /**
+ * Returns the number of wireframe indices for the given object.
+ * It is equal to twice the number of segments that can be at most
+ * drawn according to the Fac3d object's properties and therefore does not
+ * take non-representable points into account.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getWireIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with wireframe indices data of the given object.
+ * The number of indices actually written is equal to or less than
+ * the buffer length, which is the object's maximum number of indices.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillWireIndices(int id, int* buffer, int bufferLength, int logMask);
+
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/FigureList.h b/modules/graphic_objects/includes/FigureList.h
new file mode 100755
index 000000000..a65f850ba
--- /dev/null
+++ b/modules/graphic_objects/includes/FigureList.h
@@ -0,0 +1,65 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __FIGURE_LIST_H__
+#define __FIGURE_LIST_H__
+
+#include "dynlib_graphic_objects.h"
+#include "BOOL.h"
+
+/**
+ * @return number of opened windows in Scilab.
+ */
+GRAPHIC_OBJECTS_IMPEXP int sciGetNbFigure(void);
+
+/**
+ * @return the next free figure id.
+ */
+GRAPHIC_OBJECTS_IMPEXP int getValidDefaultFigureId();
+
+/**
+ * Fill the array Ids with all the figure ids currently used by Scilab.
+ * @param ids should be as long as there are figures.
+ */
+GRAPHIC_OBJECTS_IMPEXP void sciGetFiguresId(int ids[]);
+
+/**
+ * @return TRUE if the figure with index id exists
+ */
+GRAPHIC_OBJECTS_IMPEXP BOOL sciIsExistingFigure(int figNum);
+
+/**
+ * Register Scilab View to Graphic Controller
+ */
+GRAPHIC_OBJECTS_IMPEXP void registerToController(void);
+
+/**
+ * Unregister Scilab View to Graphic Controller
+ */
+GRAPHIC_OBJECTS_IMPEXP void unregisterToController(void);
+
+/**
+ * to know if there are some opened graphic windows
+ */
+GRAPHIC_OBJECTS_IMPEXP BOOL sciHasFigures(void);
+
+/**
+ * returns the UID of window i
+ * or NULL if this window does not exists
+ */
+GRAPHIC_OBJECTS_IMPEXP int getFigureFromIndex(int figNum);
+
+GRAPHIC_OBJECTS_IMPEXP int search_path(char* _pstPath);
+GRAPHIC_OBJECTS_IMPEXP char* get_path(int uid);
+
+
+#endif /* !__FIGURE_LIST_H__ */
diff --git a/modules/graphic_objects/includes/FigureModel.h b/modules/graphic_objects/includes/FigureModel.h
new file mode 100755
index 000000000..1a3e224cc
--- /dev/null
+++ b/modules/graphic_objects/includes/FigureModel.h
@@ -0,0 +1,25 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __FIGURE_MODEL_H__
+#define __FIGURE_MODEL_H__
+
+#include "dynlib_graphic_objects.h"
+#include "BOOL.h"
+
+GRAPHIC_OBJECTS_IMPEXP int getFigureModel(void);
+
+GRAPHIC_OBJECTS_IMPEXP void setFigureModel(int iUID);
+
+GRAPHIC_OBJECTS_IMPEXP BOOL isFigureModel(int iUID);
+
+#endif /* !__FIGURE_MODEL_H__ */
diff --git a/modules/graphic_objects/includes/HandleManagement.h b/modules/graphic_objects/includes/HandleManagement.h
new file mode 100755
index 000000000..9be38f856
--- /dev/null
+++ b/modules/graphic_objects/includes/HandleManagement.h
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2001 - 2002 - INRIA - Mathieu Philipe
+ * Copyright (C) 2002 - 2004 - INRIA - Djalel Abdemouche
+ * Copyright (C) 2004 - 2006 - INRIA - Fabrice Leray
+ * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
+ * Copyright (C) 2011 - 2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*------------------------------------------------------------------------
+ * Graphic library
+ * newGraph Library header
+ * Comment:
+ * This file contains all functions used in graphics handle management.
+ --------------------------------------------------------------------------*/
+
+#ifndef __HANDLE_MANAGEMENT_H__
+#define __HANDLE_MANAGEMENT_H__
+
+#include "dynlib_graphic_objects.h"
+
+/**
+ * @brief Get the handle for an UID.
+ *
+ * This should also allocate a new handle on demand. UID can be safely
+ * deallocated after this call.
+ *
+ * @param any uid
+ * @return a handle mapped to the uid
+ */
+GRAPHIC_OBJECTS_IMPEXP long getHandle(int iUID);
+
+/**
+ * @brief Get the uid of an handle.
+ *
+ * @param a valid handle
+ * @return a reference to an existing uid or null if invalid.
+ */
+GRAPHIC_OBJECTS_IMPEXP int getObjectFromHandle(long handle);
+
+#endif /* !__HANDLE_MANAGEMENT_H__ */
diff --git a/modules/graphic_objects/includes/MatPlotDecomposer.hxx b/modules/graphic_objects/includes/MatPlotDecomposer.hxx
new file mode 100755
index 000000000..61b043e94
--- /dev/null
+++ b/modules/graphic_objects/includes/MatPlotDecomposer.hxx
@@ -0,0 +1,32 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Pierre Lando
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef MATPLOT_DECOMPOSER_HXX
+#define MATPLOT_DECOMPOSER_HXX
+
+class MatPlotDecomposer
+{
+public:
+ static int getTextureWidth(int id);
+ static int getTextureHeight(int id);
+ static int fillTextureData(int id, unsigned char* buffer, int bufferLength);
+ static int fillTextureData(int id, unsigned char* buffer, int bufferLength, int x, int y, int width, int height);
+ static int getTextureData(int id, void ** address, unsigned int * size);
+ static void disposeTextureData(int id, unsigned char * buffer);
+ static int getTextureImageType(int id);
+ static int getTextureDataType(int id);
+ static int getTextureGLType(int id);
+ static int isTextureRowOrder(int id);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/Matplot.h b/modules/graphic_objects/includes/Matplot.h
new file mode 100755
index 000000000..e9511b5f4
--- /dev/null
+++ b/modules/graphic_objects/includes/Matplot.h
@@ -0,0 +1,100 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef MATPLOT_H
+#define MATPLOT_H
+
+#include "dynlib_graphic_objects.h"
+
+typedef enum
+{
+ MATPLOT_HM1_Char = 0,
+ MATPLOT_HM1_UChar = 1,
+ MATPLOT_HM1_Double = 2,
+ MATPLOT_HM3_Char = 3,
+ MATPLOT_HM3_UChar = 4,
+ MATPLOT_HM3_Double = 5,
+ MATPLOT_HM4_Char = 6,
+ MATPLOT_HM4_UChar = 7,
+ MATPLOT_HM4_Double = 8,
+ MATPLOT_Char = 9,
+ MATPLOT_UChar = 10,
+ MATPLOT_Int = 11,
+ MATPLOT_UInt = 12,
+ MATPLOT_Short = 13,
+ MATPLOT_UShort = 14,
+ MATPLOT_Double = 15
+} DataType;
+
+typedef enum
+{
+ MATPLOT_FORTRAN = 0,
+ MATPLOT_C = 1
+} DataOrder;
+
+typedef enum
+{
+ MATPLOT_NONE = -1,
+ MATPLOT_RGB = 0,
+ MATPLOT_RGBA = 1,
+ MATPLOT_GRAY = 2,
+ MATPLOT_INDEX = 3,
+ MATPLOT_RED = 4,
+ MATPLOT_GREEN = 5,
+ MATPLOT_BLUE = 6,
+ MATPLOT_RGB_332 = 7,
+ MATPLOT_RGB_444 = 8,
+ MATPLOT_RGB_555 = 9,
+ MATPLOT_RGBA_4444 = 10,
+ MATPLOT_RGBA_5551 = 11,
+ MATPLOT_ARGB = 12,
+} ImageType;
+
+typedef enum
+{
+ MATPLOT_GL_RGB = 0,
+ MATPLOT_GL_RGB_RGBA = 1,
+ MATPLOT_GL_BGR = 2,
+ MATPLOT_GL_GRAY = 3,
+ MATPLOT_GL_GRAY_16 = 4,
+ MATPLOT_GL_RGBA = 5,
+ MATPLOT_GL_RGBA_REV = 6,
+ MATPLOT_GL_ABGR = 7,
+ MATPLOT_GL_RGB_332 = 8,
+ MATPLOT_GL_RED = 9,
+ MATPLOT_GL_GREEN = 10,
+ MATPLOT_GL_BLUE = 11,
+ MATPLOT_GL_INTENSITY = 12,
+ MATPLOT_GL_RGBA_4444 = 13,
+ MATPLOT_GL_RGBA_5551 = 14,
+ MATPLOT_GL_RGB_FLOAT = 15,
+ MATPLOT_GL_RGBA_FLOAT = 16,
+ MATPLOT_GL_GRAY_FLOAT = 17,
+ MATPLOT_GL_RED_16 = 18,
+ MATPLOT_GL_GREEN_16 = 19,
+ MATPLOT_GL_BLUE_16 = 20,
+ MATPLOT_GL_RED_FLOAT = 21,
+ MATPLOT_GL_GREEN_FLOAT = 22,
+ MATPLOT_GL_BLUE_FLOAT = 23,
+ MATPLOT_GL_RGBA_BYTE = 24
+} GLType;
+
+/**
+ * Build an integer which contains the given info
+ * @param[in] datatype the data type
+ * @param[in] dataorder the data order
+ * @param[in] imagetype the image type
+ * @return an int
+ */
+GRAPHIC_OBJECTS_IMPEXP int buildMatplotType(DataType datatype, DataOrder dataorder, ImageType imagetype);
+
+#endif // MATPLOT_H
diff --git a/modules/graphic_objects/includes/MeshData.hxx b/modules/graphic_objects/includes/MeshData.hxx
new file mode 100755
index 000000000..b50c8dc25
--- /dev/null
+++ b/modules/graphic_objects/includes/MeshData.hxx
@@ -0,0 +1,198 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef MESH_DATA_HXX
+#define MESH_DATA_HXX
+
+#include "Data3D.hxx"
+
+extern "C" {
+#include "BOOL.h"
+}
+
+/**
+ * Mesh data class
+ */
+
+class MeshData: public Data3D
+{
+
+protected:
+
+ /**
+ * Vertex coordinates array
+ * Contiguous (x, y, z) triplets
+ */
+ double* vertices;
+
+ /** Element indices array
+ * Contiguous (v0, v1, v2, ...) triplets
+ */
+ unsigned int* indices;
+
+ /**
+ * Per-vertex or per-facet scalar values
+ * Considered to be per-vertex for now
+ * To be correctly implemented
+ */
+ double* values;
+
+ /** Number of vertices */
+ unsigned int numberVertices;
+
+ /** Number of elements */
+ unsigned int numberElements;
+
+ unsigned int numberVerticesByElem;
+
+public:
+ /**
+ * Constructor
+ */
+ MeshData(void);
+
+ /**
+ * Constructor
+ * To be implemented
+ */
+ MeshData(unsigned int numberVertices, unsigned int numberElements, unsigned int numberVerticesByElem = 3);
+
+ /**
+ * Destructor
+ */
+ virtual ~MeshData();
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Returns the number of vertices composing the mesh
+ * @return the number of vertices
+ */
+ unsigned int getNumVertices();
+
+ /**
+ * Sets the number of vertices
+ * Resizes the vertex array if required
+ * @param[in] numVertices the number of vertices to set
+ * @return 1 if the number of vertices has been successfully set, 0 otherwise (failed allocation)
+ */
+ int setNumVertices(unsigned int numVertices);
+
+ /**
+ * Returns the number of index triplets (number of elements)
+ * @return the number of index triplets
+ */
+ unsigned int getNumIndices();
+
+ /**
+ * Returns the array of vertex coordinates
+ * @return a pointer to the array of vertex coordinates
+ */
+ double* getVertices(void);
+
+ /**
+ * Sets vertex coordinates
+ * @param[in] vertices a pointer the array of vertex {x,y,z} coordinates to set
+ * @param[in] numElements the number of vertices
+ */
+ void setVertices(double const* vertices, unsigned int numElements);
+
+ /**
+ * Returns the array of indices
+ * @return a pointer to the array indices
+ */
+ unsigned int* getIndices(void);
+
+ /**
+ * Sets the number of index triplets
+ * Resizes the array of indices if required
+ * @param[in] numIndices the number of index triplets to set
+ * @return 1 if the number of index triplets has been successfully set, 0 otherwise (failed allocation)
+ */
+ int setNumIndices(unsigned int numIndices);
+
+ /**
+ * Sets the array of index triplet values
+ * @param[in] indices a pointer to the array of index triplet values
+ * @param[in] numElements the number of triplets
+ */
+ void setIndices(unsigned int const* indices, unsigned int numElements);
+
+ /**
+ * Sets the x coordinates
+ * @param[in] data a pointer to the array of x coordinates
+ * @param[in] numElements the number of x coordinates to set
+ */
+ void setDataX(double const* data, unsigned int numElements);
+
+ /**
+ * Sets the y coordinates
+ * @param[in] data a pointer to the array of y coordinates
+ * @param[in] numElements the number of y coordinates to set
+ */
+ void setDataY(double const* data, unsigned int numElements);
+
+ /**
+ * Sets the z coordinates
+ * @param[in] data a pointer to the array of z coordinates
+ * @param[in] numElements the number of z coordinates to set
+ */
+ void setDataZ(double const* data, unsigned int numElements);
+
+ /**
+ * Returns the array of per-vertex values
+ * @return a pointer to the array of per-vertex values
+ */
+ double* getValues(void);
+
+ /**
+ * Sets the array of per-vertex values
+ * @param[in] data a pointer to the array of per-vertex values
+ * @param[in] numElements the number of values to set
+ */
+ void setValues(double const* data, unsigned int numElements);
+
+ /**
+ * Resets the vertex coordinates
+ */
+ void resetCoordinates(void);
+
+ /**
+ * Converts a vertex index as seen by Scilab to an internal format vertex index
+ * @param[in] scilabIndex the Scilab index to convert
+ * @return the internal format vertex index
+ */
+ static unsigned int scilabIndexToIndex(unsigned int scilabIndex);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/MeshFecData.hxx b/modules/graphic_objects/includes/MeshFecData.hxx
new file mode 100755
index 000000000..715174e73
--- /dev/null
+++ b/modules/graphic_objects/includes/MeshFecData.hxx
@@ -0,0 +1,109 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef MESH_FEC_DATA_HXX
+#define MESH_FEC_DATA_HXX
+
+#include "Data3D.hxx"
+#include "MeshData.hxx"
+
+extern "C" {
+#include "BOOL.h"
+}
+
+/**
+ * Fec triangle mesh data class
+ */
+
+class MeshFecData: public MeshData
+{
+
+private:
+
+ /**
+ * Fec-specific triangle values array
+ * Each fec triangle is a 5-tuple (number, v0, v1, v2, flag), the numTriangles
+ * values being stored contiguously for each element (numTriangles number values,
+ * numTriangles v0 values, etc.)
+ * The v0, v1, v2 values are duplicate with the parent class' indices.
+ */
+ double* fecValues;
+
+public:
+ /**
+ * Constructor
+ */
+ MeshFecData(void);
+
+ /**
+ * Constructor
+ * To be implemented
+ */
+ MeshFecData(unsigned int numberVertices, unsigned int numberTriangles, unsigned int numberVerticesByElem = 3);
+
+ /**
+ * Destructor
+ */
+ virtual ~MeshFecData();
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Returns the number of index triplets
+ * @return the number of index triplets
+ */
+ unsigned int getNumIndices();
+
+ /**
+ * Sets the number of number of index triplets
+ * Resizes the arrays of indices and fec triangle values if required
+ * @param[in] numIndices the number of index triplets to set
+ * @return 1 if the number of index triplets has been successfully set, 0 otherwise (failed allocation)
+ */
+ int setNumIndices(unsigned int numIndices);
+
+ /**
+ * Sets the array of fec triangle values
+ * @param[in] a pointer to the array of fec triangles values
+ * @param[in] numElements the number of triangles to set
+ */
+ void setFecElements(double const* data, int numElements);
+
+ /**
+ * Returns the array of fec triangle values
+ * @return a pointer to the array of fec triangle values
+ */
+ double* getFecElements(void);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/MeshFecDataDecomposer.hxx b/modules/graphic_objects/includes/MeshFecDataDecomposer.hxx
new file mode 100755
index 000000000..6303eb69a
--- /dev/null
+++ b/modules/graphic_objects/includes/MeshFecDataDecomposer.hxx
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef MESHFECDATA_DECOMPOSER_HXX
+#define MESHFECDATA_DECOMPOSER_HXX
+
+/**
+ * TriangleMeshFecData decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed TriangleMeshFecData object's properties.
+ * It only has static member functions since it stores no actual state.
+ */
+
+class MeshFecDataDecomposer
+{
+
+private :
+
+ /**
+ * Computes and returns the minimum and maximum values of an array.
+ * @param[in] the value array.
+ * @param[in] the array's number of values.
+ * @param[out] a pointer to the returned minimum value.
+ * @param[out] a pointer to the returned maximum value.
+ */
+ static void computeMinMaxValues(double* values, int numValues, double* valueMin, double* valueMax);
+
+ /**
+ * Determines whether a face's vertices are valid or not.
+ * @param[in] the coordinates array.
+ * @param[in] the first vertex index.
+ * @param[in] the second vertex index.
+ * @param[in] the third vertex index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @return 1 if the face is valid, 0 if it is not.
+ */
+ static int areFaceVerticesValid(double* coordinates, int v0, int v1, int v2, int logMask);
+
+ /**
+ * Determines whether a face's vertices are valid or not.
+ * @param[in] the coordinates array.
+ * @param[in] the first vertex index.
+ * @param[in] the second vertex index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @return 1 if the face is valid, 0 if it is not.
+ */
+ static int areSegmentVerticesValid(double* coordinates, int v0, int v1, int logMask);
+
+ /**
+ * Determines whether a face's vertex values are valid or not.
+ * @param[in] the values array.
+ * @param[in] the first vertex index.
+ * @param[in] the second vertex index.
+ * @param[in] the third vertex index.
+ * @return 1 if all face values are valid, 0 if not.
+ */
+ static int areFaceValuesValid(double* values, int v0, int v1, int v2);
+
+ /**
+ * Determines whether a face's vertex values are valid or not.
+ * @param[in] the values array.
+ * @param[in] the first vertex index.
+ * @param[in] the second vertex index.
+ * @return 1 if all face values are valid, 0 if not.
+ */
+ static int areSegmentValuesValid(double* values, int v0, int v1);
+
+ /**
+ * Determines whether all the vertex indices making up a face are valid.
+ * To be valid, an index must belong to the interval [0, numVertices-1]
+ * @param[in] the number of vertices giving the largest valid vertex index.
+ * @param[in] the first vertex index.
+ * @param[in] the second vertex index.
+ * @param[in] the third vertex index.
+ * @return 1 if all indices are valid, 0 if not.
+ */
+ static int areFaceIndicesValid(int numVertices, int v0, int v1, int v2);
+
+ /**
+ * Determines whether all the vertex indices making up a face are valid.
+ * To be valid, an index must belong to the interval [0, numVertices-1]
+ * @param[in] the number of vertices giving the largest valid vertex index.
+ * @param[in] the first vertex index.
+ * @param[in] the second vertex index.
+ * @return 1 if all indices are valid, 0 if not.
+ */
+ static int areSegmentIndicesValid(int numVertices, int v0, int v1);
+
+ /**
+ * Returns the coordinates of a single vertex.
+ * @param[in] the coordinates array.
+ * @param[in] the vertex index.
+ * @param[out] a pointer to the returned coordinates {x, y, z}.
+ */
+ static void getVertexCoordinates(double* coordinates, int index, double* vertexCoordinates);
+
+public :
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param[in] the given object id.
+ * @return the number of data elements.
+ */
+ static int getDataSize(int id);
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by one element in the buffer (3 or 4).
+ */
+ static void fillColors(int id, float* buffer, int bufferLength, int elementsSize);
+
+ /**
+ * Fills the given buffer with texture coordinates data from the given object.
+ * @param[in] the id of the given object.
+ * @param[in] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ */
+ static void fillTextureCoordinates(int id, float* buffer, int bufferLength);
+
+ /**
+ * Returns the number of indices for the given object.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param[in] the given object id.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ /**
+ * Returns the number of wireframe indices for the given object.
+ * It is equal to twice the number of segments that can be at most
+ * drawn according to the Fec object's properties and therefore does not
+ * take non-representable points into account.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getWireIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with wireframe indices data of the given object.
+ * The number of indices actually written is equal to or less than
+ * the buffer length, which is the object's maximum number of indices.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillWireIndices(int id, int* buffer, int bufferLength, int logMask);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonData.hxx b/modules/graphic_objects/includes/NgonData.hxx
new file mode 100755
index 000000000..97c6a42c4
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonData.hxx
@@ -0,0 +1,99 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGON_DATA_HXX
+#define NGON_DATA_HXX
+
+#include <string>
+
+#include "Data3D.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <stdio.h>
+}
+
+/**
+ * Abstract class for n-gon data
+ */
+
+class NgonData : public Data3D
+{
+protected :
+
+ /** The total number of n-gons */
+ int numGons;
+
+ /** The number of vertices making up a single n-gon */
+ int numVerticesPerGon;
+
+public :
+ /**
+ * Constructor
+ */
+ NgonData(void);
+
+ /**
+ * Destructor
+ */
+ ~NgonData(void);
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Sets the number of n-gons
+ * @param[in] the number of n-gons
+ */
+ void setNumGons(int numGons);
+
+ /**
+ * Returns the number of n-gons
+ * @return the number of n-gons
+ */
+ int getNumGons(void);
+
+ /**
+ * Sets the number of vertices making up a single n-gon
+ * @param[in] the number of vertices per n-gon
+ */
+ void setNumVerticesPerGon(int numVerticesPerGon);
+
+ /**
+ * Returns the number of vertices making up a single n-gon
+ * @return the number of vertices per n-gon
+ */
+ int getNumVerticesPerGon(void);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonGeneralData.hxx b/modules/graphic_objects/includes/NgonGeneralData.hxx
new file mode 100755
index 000000000..89a449472
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonGeneralData.hxx
@@ -0,0 +1,166 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGON_GENERAL_DATA_HXX
+#define NGON_GENERAL_DATA_HXX
+
+#include <string>
+
+#include "NgonData.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+}
+
+/**
+ * General n-gon data class
+ */
+
+class NgonGeneralData : public NgonData
+{
+private :
+
+ /** The array of color values */
+ double* colorValues;
+
+ /** The size of the color values array */
+ int numColors;
+
+protected :
+ /** The coordinates array */
+ double* coordinates;
+
+public :
+ /**
+ * Constructor
+ */
+ NgonGeneralData(void);
+
+ /**
+ * Destructor
+ */
+ virtual ~NgonGeneralData(void);
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Returns the data coordinates array
+ * @return a pointer to the coordinates array
+ */
+ double* getData();
+
+ /**
+ * Returns the data x coordinates array
+ * @return a pointer to the x coordinates
+ */
+ double* getDataX(void);
+
+ /**
+ * Returns the data y coordinates array
+ * @return a pointer to the y coordinates
+ */
+ double* getDataY(void);
+
+ /**
+ * Returns the data z coordinates array
+ * @return a pointer to the z coordinates
+ */
+ double* getDataZ(void);
+
+ /**
+ * Sets the coordinates data
+ * @param[in] data a pointer to the data (3 * numElements values)
+ * @param[in] numElements the number of points in the data array ( #n-gons * #vertices per n-gon)
+ */
+ void setData(double const* data, int numElements);
+
+ /**
+ * Sets the x coordinates data
+ * @param[in] data a pointer to the data (numElements values)
+ * @param[in] numElements the number of points in the data array ( #n-gons * #vertices per n-gon)
+ */
+ void setDataX(double const* data, int numElements);
+
+ /**
+ * Sets the y coordinates data
+ * @param[in] data a pointer to the data (numElements values)
+ * @param[in] numElements the number of points in the data array ( #n-gons * #vertices per n-gon)
+ */
+ void setDataY(double const* data, int numElements);
+
+ /**
+ * Sets the z coordinates data
+ * @param[in] data a pointer to the data (numElements values)
+ * @param[in] numElements the number of points in the data array ( #n-gons * #vertices per n-gon)
+ */
+ void setDataZ(double const* data, int numElements);
+
+ /**
+ * Returns the number of elements (number of n-gons)
+ * @return the number of n-gons
+ */
+ int getNumElements(void);
+
+ /**
+ * Sets the number of elements (number of n-gons,
+ * number of vertices per n-gon, and number of color values)
+ * Resizes the data coordinates array if required, must therefore
+ * be called before any setData call.
+ * @param[in] numElementsArray a pointer to a 3-element array (# n-gons, # vertices per n-gon, # color values)
+ * @return 1 if it succeeded, 0 if the allocation failed
+ */
+ int setNumElementsArray(int const* numElementsArray);
+
+ /**
+ * Returns the color values array
+ * @return a pointer to the color values array
+ */
+ double* getColors(void);
+
+ /**
+ * Sets the color values array
+ * @param[in] colors a pointer to the color values array
+ * @param[in] numElements the number of color values in the data array
+ */
+ void setColors(double const* colors, int numElements);
+
+ /**
+ * Returns the number of colors
+ * @return the number of colors
+ */
+ int getNumColors(void);
+
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonGridData.hxx b/modules/graphic_objects/includes/NgonGridData.hxx
new file mode 100755
index 000000000..1ab4b8a94
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonGridData.hxx
@@ -0,0 +1,193 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGON_GRID_DATA_HXX
+#define NGON_GRID_DATA_HXX
+
+#include <string>
+
+#include "NgonData.hxx"
+
+extern "C" {
+#include "BOOL.h"
+}
+
+/**
+ * N-gons grid data class
+ */
+
+class NgonGridData : public NgonData
+{
+protected :
+
+ /** The x coordinates array */
+ double* xCoordinates;
+
+ /** The y coordinates array */
+ double* yCoordinates;
+
+ /** The z coordinates array */
+ double* zCoordinates;
+
+ /**
+ * The z coordinates shift value
+ * It is used exclusively to modify the z-position of Grayplot and Matplot objects,
+ * as their z coordinates actually correspond to data values, and must be set to 0
+ * in any other case.
+ */
+ double zCoordinatesShift;
+
+ /** The grid x size */
+ int xSize;
+
+ /** The grid y size */
+ int ySize;
+
+ /**
+ * The grid x vector dimensions (rows, columns)
+ * One of them must be equal to 1 and the other one to xSize.
+ */
+ int xDimensions[2];
+
+ /**
+ * The grid y vector dimensions (rows, colums)
+ * One of them must be equal to 1 and the other one to ySize.
+ */
+ int yDimensions[2];
+
+public :
+
+ /**
+ * Constructor
+ */
+ NgonGridData(void);
+
+ /**
+ * Destructor
+ */
+ ~NgonGridData(void);
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Returns the grid's x size
+ * @return the grid's x size
+ */
+ int getNumX(void);
+
+ /**
+ * Returns the grid's y size
+ * @return the grid's y size
+ */
+ int getNumY(void);
+
+ /**
+ * Returns the grid's z size
+ * @return the grid's number of elements
+ */
+ int getNumZ(void);
+
+ /**
+ * Returns the grid's x vector dimensions
+ * @return a pointer to a 2-element array (nb rows, nb columns)
+ */
+ int* getXDimensions(void);
+
+ /**
+ * Returns the grid's y vector dimensions
+ * @return a pointer to a 2-element array (nb rows, nb columns)
+ */
+ int* getYDimensions(void);
+
+ /**
+ * Sets the grid's x and y vectors dimensions
+ * Resizes the x, y, and z data coordinates arrays if required
+ * and must therefore be called prior to any setData call
+ * @param[in] gridSize a pointer to a 4-element array: x vector (nb rows, nb cols) and y vector (nb rows, nb cols) dimensions
+ * @return 1 if the property has been successfully set, 0 otherwise (failed allocation)
+ */
+ int setGridSize(int const* gridSize);
+
+ /**
+ * Sets the grid's x data
+ * @param[in] data a pointer to the x data (numElements values)
+ * @param[in] numElements the number of elements to set
+ */
+ void setDataX(double const* data, int numElements);
+
+ /**
+ * Sets the grid's y data
+ * @param[in] data a pointer to the y data (numElements values)
+ * @param[in] numElements the number of elements to set
+ */
+ void setDataY(double const* data, int numElements);
+
+ /**
+ * Sets the grid's z data
+ * @param[in] data a pointer to the z data (numElements values)
+ * @param[in] numElements the number of elements to set
+ */
+ void setDataZ(double const* data, int numElements);
+
+ /**
+ * Sets the grid's z coordinates shift
+ * @param[in] data a pointer to the z shift value
+ */
+ void setZCoordinatesShift(double const* data);
+
+ /**
+ * Returns the grid's x data
+ * @return a pointer to the grid's x data
+ */
+ double* getDataX(void);
+
+ /**
+ * Returns the grid's y data
+ * @return a pointer to the grid's y data
+ */
+ double* getDataY(void);
+
+ /**
+ * Returns the grid's z data
+ * @return a pointer to the grid's z data
+ */
+ double* getDataZ(void);
+
+ /**
+ * Returns the grid's z coordinates shift
+ * @return the z shift value
+ */
+ double getZCoordinatesShift(void);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonGridDataDecomposer.hxx b/modules/graphic_objects/includes/NgonGridDataDecomposer.hxx
new file mode 100755
index 000000000..ae7971c89
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonGridDataDecomposer.hxx
@@ -0,0 +1,340 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGONGRIDDATA_DECOMPOSER_HXX
+#define NGONGRIDDATA_DECOMPOSER_HXX
+
+#include <string>
+
+extern "C" {
+#include <stdlib.h>
+}
+
+/**
+ * NgonGridData decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed NgonGridData object's properties.
+ *
+ * To do: being able to specify either per-facet or per-vertex colors at execution time.
+ * Specifying per-facet colors and using flat shading at render time would reduce
+ * the vertex and color data duplication made necessary by using smooth shading
+ * when rendering flag-shaded facets (see the vertex and color data fill functions),
+ * with only a few additional modifications to the aforementioned functions.
+ */
+
+class NgonGridDataDecomposer
+{
+
+private :
+
+ /** NgonGridData decomposer instance */
+ static NgonGridDataDecomposer* decomposer;
+
+protected :
+
+ /**
+ * Fills a buffer with vertex data from a grid.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the grid x-coordinate array.
+ * @param[in] the grid y-coordinate array.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ */
+ virtual void fillGridVertices(float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask,
+ double* x, double* y, double* z, int numX, int numY);
+
+ /**
+ * Fills a buffer with color data from a grid.
+ * Colors are looked up in a color map, which is linearly mapped to the grid's normalized z values.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by a color element (3 or 4).
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ */
+ void fillNormalizedZGridColors(float* buffer, int bufferLength, int elementsSize, double* colormap, int colormapSize,
+ double* z, int numX, int numY);
+
+ /**
+ * Fills a buffer with color data from a grid.
+ * Colors are looked up in a color map, which is directly mapped to the grid's z values.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by a color element (3 or 4).
+ * @param[in] a pointer to the colormap used.
+ * @param[in] the colormap's size.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ */
+ void fillDirectGridColors(float* buffer, int bufferLength, int elementsSize, double* colormap, int colormapSize,
+ double* z, int numX, int numY);
+
+ /**
+ * Returns the coordinates of the (i,j) facet's four vertices, where (i,j) is the facet's
+ * lower-left corner. Vertices are output in the following order: (i,j), (i+1,j), (i+1,j+1) and (i,j+1).
+ * @param[in] the grid x-coordinate array.
+ * @param[in] the grid y-coordinate array.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[out] the facet's vertices (4 (x,y,z) triplets).
+ */
+ void getFacetCoordinates(double* x, double* y, double* z, int numX, int numY, int i, int j,
+ double vertices[4][3]);
+
+ /**
+ * Returns the z-coordinate of the (i,j) grid point.
+ * It treats z as a 1-element array, hence all grid points have the same z-value.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of points along the x-axis.
+ * @param[in] the grid's number of points along the y-axis.
+ * @param[in] the point's x index.
+ * @param[in] the point's y index.
+ * @return the (i,j) grid point's z-coordinate.
+ */
+ virtual double getZCoordinate(double* z, int numX, int numY, int i, int j);
+
+ /**
+ * Returns the z-coordinate of the (i,j) grid point, taking
+ * into account logarithmic scaling.
+ * It treats z as a 1-element array, hence all grid points have the same z-value.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of points along the x-axis.
+ * @param[in] the grid's number of points along the y-axis.
+ * @param[in] the point's x index.
+ * @param[in] the point's y index.
+ * @param[in] a flag specifying whether logarithmic scaling is used.
+ * @return the (i,j) grid point's z-coordinate.
+ */
+ virtual double getZCoordinate(double* z, int numX, int numY, int i, int j, int logUsed);
+
+ /**
+ * Returns the value of the (i,j) grid point.
+ * @param[in] the grid value array.
+ * @param[in] the grid's number of points along the x-axis.
+ * @param[in] the grid's number of points along the y-axis.
+ * @param[in] the point's x index.
+ * @param[in] the point's y index.
+ * @return the (i,j) grid point's value.
+ */
+ virtual double getValue(double* values, int numX, int numY, int i, int j);
+
+ /**
+ * Fills a buffer with triangle indices from a decomposed grid.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the grid x-coordinate array.
+ * @param[in] the grid y-coordinate array.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0).
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @return the number of indices actually written.
+ */
+ int fillTriangleIndices(int* buffer, int bufferLength, int logMask, double* x, double* y, double* z, double* values, int perNodeValues,
+ int numX, int numY);
+
+ /**
+ * Decomposes facet (i,j) into triangles and outputs the resulting vertex indices, where (i,j) is
+ * the facet's lower-left corner. As N-gon grid objects are plane, it always decomposes facets
+ * exactly the same way. The output triangles' vertex indices are in counter-clockwise order.
+ * @param[in] the grid x-coordinate array.
+ * @param[in] the grid y-coordinate array.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] the facet vertices' indices (4-element array: (i,j), (i+1,j), (i+1,j+1) and (i,j+1) indices).
+ * @param[out] the triangles' indices (6-element array: two consecutive triplets).
+ */
+ virtual void getFacetTriangles(double* x, double* y, double* z, int numX, int numY, int i, int j,
+ int* facetVertexIndices, int* triangleVertexIndices);
+
+ /**
+ * Determines whether a facet is valid.
+ * The facet is identified by its lower left-corner (i,j). It requires a flag (computed beforehand)
+ * as an input which indicates whether the (i,j) to (i,j+1) edge is valid or not, and outputs
+ * another flag indicating whether the (i+1,j) to (i+1,j+1) edge is valid or not.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0).
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @param[in] a flag indicating whether the (i,j) to (i,j+1) edge is valid.
+ * @param[out] a pointer to the output flag indicating whether the (i+1,j) to (i+1,j+1) edge is valid.
+ * @return 1 if the facet is valid, 0 if it is not.
+ */
+ virtual int isFacetValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed, int currentEdgeValid, int* nextEdgeValid);
+
+ /**
+ * Determines whether the left edge of a facet is valid.
+ * The left edge is between the lower-left corner (i,j) and the
+ * upper-left corner (i,j+1). The edge's validity depends only
+ * on its endpoints' z coordinates.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0).
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @return 1 if the edge valid, 0 if it is not.
+ */
+ virtual int isFacetEdgeValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed);
+
+ /**
+ * Returns a 1D vertex index from its x and y indices.
+ * @param[in] the number of vertices along the x-axis.
+ * @param[in] the number of vertices along the y-axis.
+ * @param[in] the x index.
+ * @param[in] the y index.
+ * @return the 1D vertex index.
+ */
+ static int getPointIndex(int numX, int numY, int i, int j);
+
+ /**
+ * Computes and returns the grid's minimum and maximum z values.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of z values along the x-axis.
+ * @param[in] the grid's number of z values along the y-axis.
+ * @param[out] a pointer to the returned minimum z value.
+ * @param[out] a pointer to the returned maximum z value.
+ */
+ static void computeMinMaxZValues(double* z, int numX, int numY, double* zMin, double* zMax);
+
+ /**
+ * Computes a facet's average z value.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the facet's lower-left corner x index.
+ * @param[in] the facet's lower-left corner y index.
+ * @return the facet's average z value.
+ */
+ static double computeFacetAverageZValue(double* z, int numX, int numY, int i, int j);
+
+ /**
+ * Writes the color value of a facet's four vertices into a buffer.
+ * The color is constant across the whole facet, hence four identical
+ * color values are consecutively written.
+ * @param[out] the buffer which is written to.
+ * @param[in] the buffer offset of the first vertex's color.
+ * @param[in] the facet color (3 or 4-element array).
+ * @param[in] the number of components taken by a color element (3 or 4).
+ */
+ static void writeFacetColorToBuffer(float* buffer, int bufferOffset, float* color, int elementsSize, bool hasTransparency = false);
+
+ /**
+ * Returns the index of a facet's first vertex (its lower-left corner).
+ * This index corresponds to the location of the facet's first vertex in an array whose elements
+ * are sets of four vertices, a set corresponding to a single grid facet, with shared vertices
+ * being duplicated. For facet (i,j), vertices are ordered as follows: (i,j), (i+1,j), (i,j+1), (i+1,j+1) .
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the facet's lower-left corner x index.
+ * @param[in] the facet's lower-left corner y index.
+ * @return the index of the facet's first vertex.
+ */
+ static int getFirstVertexIndex(int numX, int numY, int i, int j);
+
+public :
+
+ /**
+ * Returns the class' single instance.
+ * @return the class instance
+ */
+ static NgonGridDataDecomposer* get(void)
+ {
+ if (decomposer == NULL)
+ {
+ decomposer = new NgonGridDataDecomposer();
+ }
+
+ return decomposer;
+ }
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param[in] the given object id.
+ * @return the number of data elements.
+ */
+ static int getDataSize(int id);
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Returns the number of indices for the given object.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param[in] the given object id.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+};
+
+/**
+ * Specifies whether per-vertex or per-facet colors are used (0 corresponds to
+ * per-facet color values, any other value to per-vertex colors) for all the
+ * Ngon grid-derived objects, by commenting out the related code blocks.
+ * Temporary since this should be specified as a parameter of the vertex,
+ * index and color fill functions, independently for each Ngon grid-derived
+ * object type.
+ */
+#define PER_VERTEX_VALUES 0
+
+/**
+ * The default z-coordinate value for plane grid objects
+ * (Grayplot and Matplot) when the logarithmic scale is used.
+ * It is added to their z-shift value to obtain the actual z-coordinate.
+ */
+#define DEFAULT_LOG_COORD_Z 1.0
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonGridGrayplotDataDecomposer.hxx b/modules/graphic_objects/includes/NgonGridGrayplotDataDecomposer.hxx
new file mode 100755
index 000000000..b35a8c107
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonGridGrayplotDataDecomposer.hxx
@@ -0,0 +1,114 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGONGRIDGRAYPLOTDATA_DECOMPOSER_HXX
+#define NGONGRIDGRAYPLOTDATA_DECOMPOSER_HXX
+
+#include <string>
+
+#include "NgonGridDataDecomposer.hxx"
+
+extern "C" {
+#include <stdlib.h>
+}
+
+/**
+ * NgonGridGrayplotData decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed Grayplot object's properties.
+ */
+
+class NgonGridGrayplotDataDecomposer : public NgonGridDataDecomposer
+{
+
+private :
+
+ /** NgonGridGrayplotData decomposer instance */
+ static NgonGridGrayplotDataDecomposer* decomposer;
+
+protected :
+
+ /**
+ * Determines whether a facet is valid.
+ * The facet is identified by its lower left-corner (i,j). It requires a flag (computed beforehand)
+ * as an input which indicates whether the (i,j) to (i,j+1) edge is valid or not, and outputs
+ * another flag indicating whether the (i+1,j) to (i+1,j+1) edge is valid or not.
+ * Facet validity determination depends on the flag specifying how grid values are defined (per-node or per-facet).
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0).
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @param[in] a flag indicating whether the (i,j) to (i,j+1) edge is valid.
+ * @param[out] a pointer to the output flag indicating whether the (i+1,j) to (i+1,j+1) edge is valid.
+ * @return 1 if the facet is valid, 0 if it is not.
+ */
+ virtual int isFacetValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed, int currentEdgeValid, int* nextEdgeValid);
+
+ /**
+ * Determines whether the left edge of a facet is valid.
+ * The left edge is between the lower-left corner (i,j) and the
+ * upper-left corner (i,j+1). The edge's validity depends on its
+ * endpoints' z coordinates and grid values. Its determination also depends on
+ * the flag specifying how grid values are defined (per-node or per-facet).
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0).
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @return 1 if the edge is valid, 0 if it is not.
+ */
+ virtual int isFacetEdgeValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed);
+
+public :
+
+ /**
+ * Returns the class single instance.
+ * @return the class instance.
+ */
+ static NgonGridGrayplotDataDecomposer* get(void)
+ {
+ if (decomposer == NULL)
+ {
+ decomposer = new NgonGridGrayplotDataDecomposer();
+ }
+
+ return decomposer;
+ }
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by one element in the buffer (3 or 4).
+ */
+ static void fillColors(int id, float* buffer, int bufferLength, int elementsSize);
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param[in] the given object id.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonGridMatplotData.hxx b/modules/graphic_objects/includes/NgonGridMatplotData.hxx
new file mode 100755
index 000000000..eed9f0dd6
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonGridMatplotData.hxx
@@ -0,0 +1,246 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGON_GRID_MATPLOT_DATA_HXX
+#define NGON_GRID_MATPLOT_DATA_HXX
+
+#include <string>
+
+#include "NgonGridData.hxx"
+
+extern "C" {
+#include "BOOL.h"
+#include "Matplot.h"
+}
+
+/**
+ * N-gons grid Matplot data class
+ * The xDimensions and yDimensions properties inherited from NgonGridData have no
+ * useful purpose, as the x and y coordinates arrays are not currently visible to
+ * the user.
+ * To be done: refactoring
+ */
+
+class NgonGridMatplotData : public NgonGridData
+{
+
+private :
+
+ /** The 2D bounding rectangle {xmin, xmax, ymin, ymax} */
+ double boundingRectangle[4];
+
+ /**
+ * Matplot type
+ * Specifies whether x and y coordinates are computed directly from element indices (0)
+ * or computed using the 2D bounding rectangle (1)
+ */
+ int type;
+ ImageType imagetype;
+ DataType datatype;
+ GLType gltype;
+ DataOrder dataorder;
+ void * data;
+ void * scilabData;
+ unsigned int dataSize;
+
+ static const bool isLittleEndian;
+ static bool isABGRSupported;
+
+protected :
+
+ /**
+ * Computes the x and y coordinates depending on the type member
+ * If type is equal to 0, x and y coordinates are directly computed from matrix indices
+ * and the rectangle bounds are updated
+ * else, if equal to 1, the coordinates are computed by interpolating between the bounding
+ * rectangle's min and max vertices
+ */
+ void computeCoordinates(void);
+
+public :
+
+ /**
+ * Constructor
+ */
+ NgonGridMatplotData(void);
+
+ /**
+ * Destructor
+ */
+ ~NgonGridMatplotData(void);
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Sets the grid's x and y vectors dimensions
+ * Resizes the x, y, and z data coordinates arrays if required
+ * and must therefore be called prior to any setData call
+ * Similar to NgonGridData's setGridSize method, the main difference being how the z data array's size
+ * is computed.
+ * To be done: refactoring
+ * @param[in] gridSize a pointer to a 4-element array: x vector (nb rows, nb cols) and y vector (nb rows, nb cols) dimensions
+ * @return 1 if the property has been successfully set, 0 otherwise (failed allocation)
+ */
+ int setGridSize(int const* gridSize);
+
+ /**
+ * Sets the 2D bounding rectangle's coordinates
+ * Also sets the internal property type according to the value of its argument
+ * To be done: use the same coordinate ordering as the internal array
+ * @param[in] a pointer to a 4-element array: {xmin, ymin, xmax, ymax} bounds. If bounds is NULL, type is set to 0, else, it is set to 1
+ */
+ void setBounds(double const* bounds);
+
+ /**
+ * Returns the 2D bounding rectangle's coordinates
+ * @return a pointer to the bounding rectangle coordinates array {xmin, xmax, ymin, ymax}
+ */
+ double* getBounds(void);
+
+ /**
+ * Returns the Matplot type
+ * @return the Matplot type value
+ */
+ int getType(void);
+
+ /**
+ * Set the info about data
+ * @param[in] data info built with buildMatplotType
+ */
+ void setDataInfos(int datainfos);
+
+ /**
+ * Get the info about data
+ * @return the info
+ */
+ int getDataInfos();
+
+ /**
+ * Get the OpenGL type
+ * @return the type
+ */
+ int getGLType();
+
+ /**
+ * Get the image type
+ * @return the type
+ */
+ int getImageType();
+
+ /**
+ * Set the image type
+ * @param[in] imagetype the image type
+ */
+ int setImageType(int imagetype);
+
+ /**
+ * Get the data order (MATPLOT_FORTRAN or MATPLOT_C corresponding to COLUMN_MAJOR_ORDER & ROW_MAJOR_ORDER)
+ * @return the order
+ */
+ int getDataOrder();
+
+ /**
+ * Set the data order (MATPLOT_FORTRAN or MATPLOT_C corresponding to COLUMN_MAJOR_ORDER & ROW_MAJOR_ORDER)
+ * @param[in] the order
+ */
+ void setDataOrder(int dataOrder);
+
+ /**
+ * Set the Scilab data type
+ * @param[in] datatype the Scilab data type
+ */
+ void setDataType(int datatype);
+
+ /**
+ * Get the Scilab data type
+ * @return the Scilab data type
+ */
+ int getDataType();
+
+ /**
+ * Set the image data
+ * @param[in] data the image data
+ * @param[in] numElements the number of elements
+ */
+ void setImageData(void const* data, const int numElements);
+
+ /**
+ * Get the image data
+ * @return the image data
+ */
+ void * getImageData();
+
+ /**
+ * Get the Scilab data
+ * @return the Scilab data
+ */
+ void * getScilabData();
+
+ /**
+ * Get the image data size
+ * @return the iamge data size
+ */
+ unsigned int getImageDataSize();
+
+ /**
+ * Dispose the texture data
+ */
+ void disposeTextureData();
+
+ /**
+ * Sets the grid's z data
+ * This method is almost identical to NgonGridData's own setDataZ method
+ * the only difference being how the maximum number of elements is computed
+ * To be done: refactoring
+ * @param[in] data a pointer to the z data (numElements values)
+ * @param[in] numElements the number of elements to set
+ */
+ void setDataZ(double const* data, int numElements);
+
+ /**
+ * Set true if ABGR extension is supported
+ * @param[in] _isABGRSupported true if ABGR extension is supported
+ */
+ static void setABGRSupported(bool _isABGRSupported);
+
+private:
+
+ /**
+ * Init a boolean to true or false according to the endianess
+ */
+ static bool initEndian();
+
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonGridMatplotDataDecomposer.hxx b/modules/graphic_objects/includes/NgonGridMatplotDataDecomposer.hxx
new file mode 100755
index 000000000..302219e0e
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonGridMatplotDataDecomposer.hxx
@@ -0,0 +1,168 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGONGRIDMATPLOTDATA_DECOMPOSER_HXX
+#define NGONGRIDMATPLOTDATA_DECOMPOSER_HXX
+
+#include <string>
+#include "ColorComputer.hxx"
+
+extern "C"
+{
+#include "Matplot.h"
+}
+
+/**
+ * NgonGridMatplotData decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed Matplot object's properties.
+ *
+ */
+
+class NgonGridMatplotDataDecomposer : public NgonGridDataDecomposer
+{
+
+private :
+
+ /** NgonGridMatplotData decomposer instance */
+ static NgonGridMatplotDataDecomposer* decomposer;
+
+protected :
+
+ /**
+ * Fills a buffer with vertex data from a grid.
+ * In the case of Matplot objects, vertex coordinates are computed using the coordinates of the grid's lower-left corner
+ * and the distances between two adjacent vertices for both the x and y axes, which we label respectively (xmin, ymin) and
+ * (xd, yd). The relevant values are used as the x and y coordinate arrays (see the parameter descriptions).
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the grid x-coordinate array (2 elements: xmin, xd).
+ * @param[in] the grid y-coordinate array (2 elements: ymin, yd).
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ */
+ virtual void fillGridVertices(float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask,
+ double* x, double* y, double* z, int numX, int numY);
+
+ /**
+ * Determines whether a facet is valid.
+ * The facet is identified by its lower left-corner (i,j).
+ * For a Matplot object, facet (i,j)'s validity depends only on its z coordinate and its (i,j) value,
+ * edge validity being therefore irrelevant. The flag specifying per-node values should be 0,
+ * as Matplot grid values are defined per facet, although it is actually unused.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0). Unused.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used. Unused.
+ * @param[in] (i,j) to (i,j+1) edge validity flag. Unused.
+ * @param[out] a pointer to the output (i+1,j) to (i+1,j+1) edge validity flag. Always set to 1.
+ * @return 1 if the facet is valid, 0 if it is not.
+ */
+ virtual int isFacetValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed, int currentEdgeValid, int* nextEdgeValid);
+
+ /**
+ * Determines whether the left edge of a facet is valid.
+ * For a Matplot object, edge validity is irrelevant, it is therefore always equal to 1.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid value array.
+ * @param[in] a flag indicating whether grid values are defined per node (1) or per facet (0).
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] a flag specifying whether logarithmic coordinates are used.
+ * @return Always 1.
+ */
+ virtual int isFacetEdgeValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed);
+
+public :
+
+ /**
+ * Returns the class single instance.
+ * @return the class instance.
+ */
+ static NgonGridMatplotDataDecomposer* get(void)
+ {
+ if (decomposer == NULL)
+ {
+ decomposer = new NgonGridMatplotDataDecomposer();
+ }
+
+ return decomposer;
+ }
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by one element in the buffer (3 or 4).
+ */
+ static void fillColors(int id, float* buffer, int bufferLength, int elementsSize);
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param[in] the given object id.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ template <typename T>
+ inline static void fillColorsByIndex(T * indices, float * buffer, int elementsSize, const int nbRow, const int nbCol, double * colormap, const int colormapSize)
+ {
+ float facetColor[3];
+ T index;
+ int bufferOffset = 0;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ index = indices[nbRow - 1 + i * nbRow - j];
+ ColorComputer::getDirectColor(index - 1, colormap, colormapSize, facetColor);
+ writeFacetColorToBuffer(buffer, bufferOffset, facetColor, elementsSize);
+ bufferOffset += 4 * elementsSize;
+ }
+ }
+ }
+
+ static void getRGBAData(ImageType imagetype, DataType datatype, GLType gltype, void * data, float * buffer, int elementsSize, const int nbRow, const int nbCol, double * colormap, const int colormapSize);
+
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NgonPolylineData.hxx b/modules/graphic_objects/includes/NgonPolylineData.hxx
new file mode 100755
index 000000000..b6e9df4c3
--- /dev/null
+++ b/modules/graphic_objects/includes/NgonPolylineData.hxx
@@ -0,0 +1,231 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NGON_POLYLINE_DATA_HXX
+#define NGON_POLYLINE_DATA_HXX
+
+#include <string>
+
+#include "NgonGeneralData.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <stdio.h>
+}
+
+/**
+ * A class for polyline data
+ */
+
+class NgonPolylineData : public NgonGeneralData
+{
+private :
+
+ /** Specifies whether zCoordinates have been set */
+ int zCoordinatesSet;
+
+ /** The x-shift coordinates array */
+ double* xShift;
+
+ /** The y-shift coordinates array */
+ double* yShift;
+
+ /** The z-shift coordinates array */
+ double* zShift;
+
+ /** Specifies whether xShift coordinates have been set */
+ int xShiftSet;
+
+ /** Specifies whether yShift coordinates have been set */
+ int yShiftSet;
+
+ /** Specifies whether zShift coordinates have been set */
+ int zShiftSet;
+
+ /** The coordinates shift array */
+ double* coordinatesShift;
+
+ /** data of datatip display function */
+ int* display_function_data;
+ int display_function_data_size;
+
+public :
+ /**
+ * Constructor
+ */
+ NgonPolylineData(void);
+
+ /**
+ * Destructor
+ */
+ virtual ~NgonPolylineData(void);
+
+ /**
+ * Returns the identifier associated to a property name
+ * @param[in] propertyName the property name
+ * @return the property identifier
+ */
+ int getPropertyFromName(int propertyName);
+
+ /**
+ * Sets a data property
+ * @param[in] property the property identifier
+ * @param[in] value a pointer to the property values
+ * @param[in] numElements the number of elements to set
+ * @return 1 if the property has been successfully set, 0 otherwise
+ */
+ int setDataProperty(int property, void const* value, int numElements);
+
+ /**
+ * Returns a data property
+ * @param[in] property the property identifier
+ * @param[out] a pointer to a pointer to the returned property values
+ */
+ void getDataProperty(int property, void **_pvData);
+
+ /**
+ * Returns the number of elements (number of vertices making up the polyline)
+ * @return the polyline's number of vertices
+ */
+ int getNumElements(void);
+
+ /**
+ * Returns the z coordinates flag
+ * @return the z coordinates flag
+ */
+ int getZCoordinatesSet(void);
+
+ /**
+ * Sets the z coordinates flag
+ * @param[in] zCoordinatesSet the z coordinates flag to set (1 to specify that z coordinates have been set, 0 otherwise)
+ */
+ void setZCoordinatesSet(int zCoordinatesSet);
+
+ /**
+ * Returns the x coordinates shift array
+ * @return a pointer to the x coordinates shift array
+ */
+ double* getXCoordinatesShift(void);
+
+ /**
+ * Sets the x coordinates shift array
+ * Resizes it if required.
+ * @param[in] data a pointer to the x shift array (numElements values)
+ * @param[in] numElements the number of elements in the array
+ */
+ int setXCoordinatesShift(double const* data, int numElements);
+
+ /**
+ * Returns the y coordinates shift array
+ * @return a pointer to the y coordinates shift array
+ */
+ double* getYCoordinatesShift();
+
+ /**
+ * Sets the y coordinates shift array
+ * Resizes it if required.
+ * @param[in] data a pointer to the y shift array (numElements values)
+ * @param[in] numElements the number of elements in the array
+ */
+ int setYCoordinatesShift(double const* data, int numElements);
+
+ /**
+ * Returns the z coordinates shift array
+ * @return a pointer to the z coordinates shift array
+ */
+ double* getZCoordinatesShift();
+
+ /**
+ * Sets the z coordinates shift array
+ * Resizes it if required.
+ * @param data the z shift array (numElements values)
+ * @param numElements the number of elements in the array
+ */
+ int setZCoordinatesShift(double const* data, int numElements);
+
+ /**
+ * Returns the x coordinates shift array flag
+ * @return the x coordinates shift array flag
+ */
+ int getXCoordinatesShiftSet(void);
+
+ /**
+ * Sets the x coordinates shift array flag
+ * Deletes it if xShiftSet equal to 0
+ * @param[in] the x shift array set flag
+ */
+ void setXCoordinatesShiftSet(int xShiftSet);
+
+ /**
+ * Returns the y coordinates shift array flag
+ * @return the y coordinates shift array flag
+ */
+ int getYCoordinatesShiftSet(void);
+
+ /**
+ * Sets the y coordinates shift array flag
+ * Deletes it if yShiftSet equal to 0
+ * @param[in] the y shift array set flag
+ */
+ void setYCoordinatesShiftSet(int yShiftSet);
+
+ /**
+ * Returns the z coordinates shift array flag
+ * @return the z coordinates shift array flag
+ */
+ int getZCoordinatesShiftSet(void);
+
+ /**
+ * Sets the z coordinates shift array flag
+ * Deletes it if zShiftSet equal to 0
+ * @param[in] the z shift array set flag
+ */
+ void setZCoordinatesShiftSet(int zShiftSet);
+
+ /**
+ * Sets the number of elements composing the polyline
+ * (i.e. the number of vertices per gon)
+ * Updates the coordinates shift arrays if required.
+ * The latter probably ought to be done in one of the
+ * Data set methods.
+ * @param[in] numElementsArray a pointer to a 2-element array (always 1, #vertices)
+ * @return 1 if it succeeded, 0 if the allocation failed
+ */
+ int setNumElementsArray(int const* numElementsArray);
+
+ /**
+ * Copies the former shift coordinates array into the new one
+ * and pads with zeroes if the new number of elements exceeds
+ * the former one.
+ * @param[in] newShift a pointer the new shift coordinates array
+ * @param[in] oldShift a pointer to the former shift coordinates array
+ * @param[in] numElementsNew the new array's number of elements
+ */
+ void copyShiftCoordinatesArray(double * newShift, double const* oldShift, int numElementsNew);
+
+ /**
+ * Deletes the coordinates and shift arrays
+ */
+ void deleteCoordinatesArrays(void);
+
+ /**
+ * Sets data for display function
+ * @param data (numElements values)
+ * @param numElements the number of elements in the array
+ */
+ int setDisplayFunctionData(int const* data, int numElements);
+ int getDisplayFunctionDataSize();
+ int* getDisplayFunctionData();
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/NormalGenerator.hxx b/modules/graphic_objects/includes/NormalGenerator.hxx
new file mode 100755
index 000000000..31a7baf29
--- /dev/null
+++ b/modules/graphic_objects/includes/NormalGenerator.hxx
@@ -0,0 +1,45 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro SOUZA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef NORMAL_GENERATOR_HXX
+#define NORMAL_GENERATOR_HXX
+
+/**
+ * Returns the specified quad's vetex normal.
+ * (i,j) specifies which quad in the grid
+ * and k specifies which quad's vertex (0 .. 3).
+ */
+float * getGridNormal(float *buffer, int numX, int numY, int elementSize, int i, int j, int k);
+
+/**
+ * Calculates the normal vector for each quad
+ * averaging the normals of the 2 triangles that
+ * compose the quad.
+ */
+bool CalculateGridNormalFlat(float* position, float* buffer, int bufferLength, int elementSize);
+
+/**
+ * Calculates the normal vector for each quad
+ * in per-vertex mode averaging the normals of
+ * shared vertices.
+ */
+bool CalculateGridNormalSmooth(float* position, float* buffer, int bufferLength, int elementSize, int numX, int numY);
+
+/**
+ * Calculates the normal vector for each given polygon.
+ * All vertex normals from a given polygon are the
+ * average sum of each normal of the decomposition
+ * of that polygon in triangles.
+ */
+bool CalculatePolygonNormalFlat(float* position, float* buffer, int bufferLength, int elementSize, int polygonVertices);
+
+#endif
diff --git a/modules/graphic_objects/includes/Plot3DDecomposer.hxx b/modules/graphic_objects/includes/Plot3DDecomposer.hxx
new file mode 100755
index 000000000..99383f07f
--- /dev/null
+++ b/modules/graphic_objects/includes/Plot3DDecomposer.hxx
@@ -0,0 +1,146 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef PLOT3D_DECOMPOSER_HXX
+#define PLOT3D_DECOMPOSER_HXX
+
+#include "NgonGridDataDecomposer.hxx"
+
+/**
+ * Plot3D decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed Plot3D object's properties.
+ */
+
+class Plot3DDecomposer : public NgonGridDataDecomposer
+{
+
+private :
+
+ /** Plot3D decomposer instance */
+ static Plot3DDecomposer* decomposer;
+
+protected :
+
+ /**
+ * Returns the z-coordinate of the (i,j) grid point.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of points along the x-axis.
+ * @param[in] the grid's number of points along the y-axis.
+ * @param[in] the point's x index.
+ * @param[in] the point's y index.
+ * @return the (i,j) grid point's z-coordinate.
+ */
+ double getZCoordinate(double* z, int numX, int numY, int i, int j);
+
+ /**
+ * Returns the z-coordinate of the (i,j) grid point, taking
+ * into account logarithmic scaling.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of points along the x-axis.
+ * @param[in] the grid's number of points along the y-axis.
+ * @param[in] the point's x index.
+ * @param[in] the point's y index.
+ * @param[in] a flag specifying whether logarithmic scaling is used.
+ * @return the (i,j) grid point's z-coordinate.
+ */
+ double getZCoordinate(double* z, int numX, int numY, int i, int j, int logUsed);
+
+ /**
+ * Decomposes facet (i,j) into triangles and outputs the resulting vertex indices, where (i,j) is
+ * the facet's lower-left corner. As there are two possible decompositions, it chooses the one which
+ * has the most coplanar triangles. The output triangles' vertex indices are in counter-clockwise order.
+ * @param[in] the grid x-coordinate array.
+ * @param[in] the grid y-coordinate array.
+ * @param[in] the grid z-coordinate array.
+ * @param[in] the grid's number of vertices along the x-axis.
+ * @param[in] the grid's number of vertices along the y-axis.
+ * @param[in] the lower-left corner's x index.
+ * @param[in] the lower-left corner's y index.
+ * @param[in] the facet vertices' indices (4-element array: (i,j), (i+1,j), (i+1,j+1) and (i,j+1) indices).
+ * @param[out] the triangles' vertex indices (6-element array: two consecutive triplets).
+ */
+ virtual void getFacetTriangles(double* x, double* y, double* z, int numX, int numY, int i, int j,
+ int* facetVertexIndices, int* triangleVertexIndices);
+
+public :
+
+ /**
+ * Returns the class' single instance.
+ * @return the class instance
+ */
+ static Plot3DDecomposer* get(void)
+ {
+ if (decomposer == NULL)
+ {
+ decomposer = new Plot3DDecomposer();
+ }
+
+ return decomposer;
+ }
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by one element in the buffer (3 or 4).
+ */
+ static void fillColors(int id, float* buffer, int bufferLength, int elementsSize);
+
+ /**
+ * Fills the given buffer with index data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ /**
+ * Returns the number of wireframe indices for the given object.
+ * It is equal to twice the number of segments that can be at most
+ * drawn according to the Plot3D object's properties and therefore does not
+ * take non-representable points into account.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getWireIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with wireframe indices data of the given object.
+ * The number of indices actually written is equal to or less than
+ * the buffer length, which is the object's maximum number of indices.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillWireIndices(int id, int* buffer, int bufferLength, int logMask);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/PolylineDecomposer.hxx b/modules/graphic_objects/includes/PolylineDecomposer.hxx
new file mode 100755
index 000000000..8e9e46980
--- /dev/null
+++ b/modules/graphic_objects/includes/PolylineDecomposer.hxx
@@ -0,0 +1,440 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef POLYLINE_DECOMPOSER_HXX
+#define POLYLINE_DECOMPOSER_HXX
+
+#include <string>
+
+extern "C" {
+#include <stdio.h>
+}
+
+/**
+ * Polyline decomposer class
+ * Determines the vertices and the segments indices to be rendered
+ * as a function of the decomposed Polyline's properties.
+ * It only has static member functions since it stores no actual state.
+ *
+ * To be optimized: there is a lot of redundant code shared by the
+ * different fillIndices methods. The decomposition loop code is present
+ * in each method, whereas the only type-specific operations are those
+ * actually filling the index buffer.
+ * Furthermore, the loop is executed twice for methods outputting both
+ * line segments plus type-specific segments (e.g vertical lines). This
+ * can be solved by interleaving line and type-specifing segment indices.
+ */
+
+class PolylineDecomposer
+{
+
+private :
+
+ /**
+ * Fills a buffer with vertex data from a polyline decomposed into consecutive segments.
+ * @param[in] the id of the given polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation value to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ */
+ static void fillSegmentsDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Writes the coordinates of a polyline vertex to a buffer.
+ * Each coordinate may correspond to a different vertex (as specified by an index).
+ * @param[out] the buffer.
+ * @param[in] the buffer offset of the vertex's first component.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the indices of the polyline vertex(ices) to fetch (3 elements, 1 index for each of the X,Y and Z components).
+ * @param[in] the polyline's number of points.
+ * @param[in] the number of components per buffer element.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation value to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void getAndWriteVertexToBuffer(float* buffer, int offset, double* coordinates, int* vertexIndices, int nPoints, int elementsSize,
+ double* xshift, double* yshift, double* zshift, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Fills a buffer with vertex data from a polyline using a staircase decomposition.
+ * @param[in] the id of the given polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation value to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ */
+ static void fillStairDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Fills a buffer with vertex data from a polyline decomposed into a series of vertical lines.
+ * @param[in] the id of the given polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation value to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ */
+ static void fillVerticalLinesDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Writes one component of the coordinates of a bar's four vertices into a buffer.
+ * @param[out] the buffer which is written to.
+ * @param[in] the offsets of the four vertices into the buffer (4-element array).
+ * @param[in] the offset specifying which component (0, 1 or 2 for respectively X, Y or Z) is written.
+ * @param[in] the coordinates of the bar's vertices (4-element array, 1 component per vertex).
+ * @param[in] the shift value applied to the 4 coordinates.
+ * @param[in] a flag specifying whether the shift is applied or not.
+ * @param[in] the conversion scale factor to apply.
+ * @param[in] the conversion translation factor to apply.
+ * @param[in] a flag specifying whether logarithmic coordinates are used or not.
+ */
+ static void writeBarVerticesToBuffer(float* buffer, int* offsets, int componentOffset, double* coordinates, double shift, int shiftUsed, double scale, double translation, int logUsed);
+
+ /**
+ * Fills a buffer with vertex data from a polyline decomposed into a series of vertical bars and consecutive segments.
+ * @param[in] the id of the given polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ */
+ static void fillVerticalBarsDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Fills a buffer with vertex data from a polyline decomposed into a series of horizontal bars and consecutive segments.
+ * x, y coordinates and shift coordinates are swapped relative to the decomposition into vertical bars.
+ * To do: refactor with fillVerticalBarsDecompositionVertices as they are very similar.
+ * @param[in] the id of the given polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ */
+ static void fillHorizontalBarsDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Returns the number of triangle indices of a polyline decomposed into consecutive segments with arrow heads.
+ * The triangles correspond to the arrow heads.
+ * @param[in] the polyline's number of points.
+ * @param[in] a flag indicating whether the polyline is closed or not.
+ * @return the number of triangle indices.
+ */
+ static int getArrowTriangleIndicesSize(int nPoints, int closed);
+
+ /**
+ * Returns the number of triangle indices of a polyline decomposed into a series of bars and consecutive segments.
+ * @param[in] the polyline's number of points.
+ * @return the number of triangle indices.
+ */
+ static int getBarsDecompositionTriangleIndicesSize(int nPoints);
+
+ /**
+ * Fills a buffer with triangles indices obtained by triangulation of a polygon whose contour
+ * is defined by the polyline.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @param[in] the fill mode flag.
+ * @param[in] the polyline style.
+ * @return the number of indices actually written.
+ */
+ static int fillTriangleIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int fillMode, int polylineStyle);
+
+ /**
+ * Fills a buffer with the triangle indices of the arrow heads of a polyline's segments.
+ * One triangle is output for each valid segment.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @return the number of indices actually written.
+ */
+ static int fillArrowTriangleIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Fills a buffer with the triangle indices of a polyline decomposed into a series of bars and consecutive segments.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @return the number of indices actually written.
+ */
+ static int fillBarsDecompositionTriangleIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift);
+
+ /**
+ * Returns the number of segment indices of a polyline decomposed into consecutive segments.
+ * @param[in] the polyline's number of points.
+ * @param[in] the line mode flag.
+ * @param[in] a flag indicating whether the polyline is closed or not.
+ * @return the number of segment indices.
+ */
+ static int getSegmentsDecompositionSegmentIndicesSize(int nPoints, int lineMode, int closed);
+
+ /**
+ * Returns the number of segment indices of a polyline decomposed into a series of steps.
+ * @param[in] the polyline's number of points.
+ * @param[in] the line mode flag.
+ * @param[in] a flag indicating whether the polyline is closed or not.
+ * @return the number of segment indices.
+ */
+ static int getStairDecompositionSegmentIndicesSize(int nPoints, int lineMode, int closed);
+
+ /**
+ * Returns the number of segment indices of a polyline decomposed into a series of vertical lines and consecutive segments.
+ * @param[in] the polyline's number of points.
+ * @param[in] the line mode flag.
+ * @return the number of segment indices.
+ */
+ static int getVerticalLinesDecompositionSegmentIndicesSize(int nPoints, int lineMode);
+
+ /**
+ * Returns the number of segment indices of a polyline decomposed into a series of bars and consecutive segments.
+ * @param[in] the polyline's number of points.
+ * @param[in] the line mode flag.
+ * @return the number of segment indices.
+ */
+ static int getBarsDecompositionSegmentIndicesSize(int nPoints, int lineMode);
+
+ /**
+ * Fills a buffer with the segment indices of a polyline decomposed into consecutive segments.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @param[in] the line mode flag.
+ * @param[in] a flag indicating whether the polyline is closed or not.
+ * @return the number of indices actually written.
+ */
+ static int fillSegmentsDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode, int closed);
+
+ /**
+ * Fills a buffer with the segment indices of a polyline decomposed into a series of steps.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @param[in] the line mode flag.
+ * @param[in] a flag indicating whether the polyline is closed or not.
+ * @return the number of indices actually written.
+ */
+ static int fillStairDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode, int closed);
+
+ /**
+ * Fills a buffer with the segment indices of a polyline decomposed into a series of vertical lines and consecutive segments.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @param[in] the line mode flag.
+ * @return the number of indices actually written.
+ */
+ static int fillVerticalLinesDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode);
+
+ /**
+ * Fills a buffer with the segment indices of a polyline decomposed into a series of bars and consecutive segments.
+ * @param[in] the id of the polyline.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @param[in] the polyline coordinate array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the polyline x-shift array.
+ * @param[in] the polyline y-shift array.
+ * @param[in] the polyline z-shift array.
+ * @param[in] the line mode flag.
+ * @return the number of indices actually written.
+ */
+ static int fillBarsDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode);
+
+ /**
+ * Returns the coordinates of a polyline point, modified by their corresponding shift values.
+ * @param[in] the coordinate array
+ * @param[in] the x-shift array.
+ * @param[in] the y-shift array.
+ * @param[in] the z-shift array.
+ * @param[in] the polyline's number of points.
+ * @param[in] the point index.
+ * @param[out] the returned x coordinate.
+ * @param[out] the returned y coordinate.
+ * @param[out] the returned z coordinate.
+ */
+ static void getShiftedPolylinePoint(double* coordinates, double* xshift, double* yshift, double* zshift, int nPoints, int index,
+ double* x, double* y, double* z);
+
+
+public :
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param[in] the given object id.
+ * @return the number of data elements.
+ */
+ static int getDataSize(int id);
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of coordinates taken by one element in the buffer.
+ * @param[in] the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param[in] the conversion scale factor to apply to data.
+ * @param[in] the conversion translation factor to apply to data.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ */
+ static void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask);
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ * @param[in] the number of components taken by one element in the buffer (3 or 4).
+ */
+ static void fillColors(int id, float* buffer, int bufferLength, int elementsSize);
+
+ /**
+ * Fills the given buffer with texture coordinate data from the given object.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length in number of elements.
+ */
+ static void fillTextureCoordinates(int id, float* buffer, int bufferLength);
+
+ /**
+ * Returns the number of indices for the given object.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param[in] the given object id.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillIndices(int id, int* buffer, int bufferLength, int logMask);
+
+ /**
+ * Returns the number of wireframe indices for the given object.
+ * It is equal to twice the number of segments that can be at most
+ * drawn according to the polyline's properties and therefore does not
+ * take non-representable points into account.
+ * @param[in] the given object id.
+ * @return the object's number of indices.
+ */
+ static int getWireIndicesSize(int id);
+
+ /**
+ * Fills the given buffer with wireframe indices data of the given object.
+ * The number of indices actually written is equal to or less than
+ * the buffer length, which is the object's maximum number of indices.
+ * @param[in] the id of the given object.
+ * @param[out] the buffer to fill.
+ * @param[in] the buffer length.
+ * @param[in] the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ static int fillWireIndices(int id, int* buffer, int bufferLength, int logMask);
+};
+
+#endif
diff --git a/modules/graphic_objects/includes/ScilabView.hxx b/modules/graphic_objects/includes/ScilabView.hxx
new file mode 100755
index 000000000..d082aebab
--- /dev/null
+++ b/modules/graphic_objects/includes/ScilabView.hxx
@@ -0,0 +1,132 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __SCILAB_VIEW_HXX__
+#define __SCILAB_VIEW_HXX__
+
+#include <map>
+#include <list>
+#include <vector>
+#include <string>
+
+#include "dynlib_graphic_objects.h"
+
+extern "C"
+{
+ void ScilabNativeView__createObject(int id);
+ void ScilabNativeView__deleteObject(int id);
+ void ScilabNativeView__updateObject(int id, int iProperty);
+ void ScilabNativeView__setCurrentFigure(int id);
+ void ScilabNativeView__setCurrentSubWin(int id);
+ void ScilabNativeView__setCurrentObject(int id);
+ int ScilabNativeView__getValidDefaultFigureId();
+ int ScilabNativeView__getFigureFromIndex(int figNum);
+}
+
+struct PathItem
+{
+ typedef std::list<int> __child;
+ typedef __child::iterator __child_iterator;
+
+ std::string tag;
+ int uid;
+ int parent;
+ __child children;
+
+ PathItem() : tag(""), uid(0), parent(0) {}
+};
+
+class GRAPHIC_OBJECTS_IMPEXP ScilabView
+{
+private :
+ ScilabView() {}
+ ~ScilabView() {}
+
+ // Define type for easy manipulation.
+ typedef std::map<int, long> __handleList;
+ typedef __handleList::iterator __handleList_iterator;
+ typedef std::map<long, int> __uidList;
+ typedef __uidList::iterator __uidList_iterator;
+ typedef std::map<int, int> __figureList;
+ typedef __figureList::iterator __figureList_iterator;
+ typedef __figureList::reverse_iterator __figureList_reverse_iterator;
+ typedef std::map<int, std::vector<int> > __userdata;
+
+ typedef std::map<int, PathItem*> __pathList;
+ typedef __pathList::iterator __pathList_iterator;
+ typedef std::map<std::string, int> __pathFigList;
+ typedef __pathFigList::iterator __pathFigList_iterator;
+
+ static __figureList m_figureList;
+ static __handleList m_handleList;
+ static __uidList m_uidList;
+ static __pathFigList m_pathFigList;
+ static __pathList m_pathList;
+ static __userdata m_userdata;
+ static long m_topHandleValue;
+ static int m_currentFigure;
+ static int m_currentObject;
+ static int m_currentSubWin;
+ static int m_figureModel;
+ static int m_axesModel;
+
+public :
+ static void createObject(int iUID);
+ static void deleteObject(int iUID);
+ static void updateObject(int iUID, int iProperty);
+
+ static int getNbFigure(void);
+ static void getFiguresId(int ids[]);
+ static void registerToController(void);
+ static void unregisterToController(void);
+ static bool existsFigureId(int id);
+ static int getFigureFromIndex(int figureNumber);
+ static bool isEmptyFigureList(void);
+ static int getValidDefaultFigureId();
+
+ static int getCurrentFigure(void);
+ static void setCurrentFigure(int iUID);
+
+ static int getCurrentObject(void);
+ static void setCurrentObject(int iUID);
+
+ static int getCurrentSubWin(void);
+ static void setCurrentSubWin(int iUID);
+
+ static long getObjectHandle(int iUID);
+ static int getObjectFromHandle(long handle);
+
+ static int getFigureModel(void);
+ static void setFigureModel(int iUID);
+
+ static int getAxesModel(void);
+ static void setAxesModel(int iUID);
+
+ static PathItem* getItem(int uid);
+ static PathItem* getItem(std::string _pstTag);
+ static PathItem* getItem(std::string _pstTag, std::list<int>& _ignoredList);
+ static PathItem* getFigureItem(std::string _pstTag);
+
+ static int search_path(char* _pstPath);
+ static std::string get_path(int uid);
+
+ static void setUserdata(int _id, int* _data, int _datasize);
+ static int getUserdataSize(int _id);
+ static int* getUserdata(int _id);
+
+private :
+ static PathItem* search_children(PathItem* _path, std::string _subPath, bool _bDeep, std::list<int>& _ignoredList);
+
+};
+
+#endif /* !__SCILAB_VIEW_HXX__ */
+
diff --git a/modules/graphic_objects/includes/Texture.hxx b/modules/graphic_objects/includes/Texture.hxx
new file mode 100755
index 000000000..e6356cc2c
--- /dev/null
+++ b/modules/graphic_objects/includes/Texture.hxx
@@ -0,0 +1,61 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef TEXTURE_HXX
+#define TEXTURE_HXX
+
+extern "C" {
+#include "Matplot.h"
+}
+
+/**
+ *
+ */
+
+class Texture
+{
+
+private :
+
+ static float GrayR[256];
+ static float GrayG[256];
+ static float GrayB[256];
+ static unsigned char RGB8R[256];
+ static unsigned char RGB8G[256];
+ static unsigned char RGB8B[256];
+ static unsigned char R12[256];
+ static const bool isGrayTableInit;
+ static const bool isRGB8TableInit;
+ static const bool isR12TableInit;
+
+public :
+
+ /**
+ * Get a texture from data
+ * @param[in] data Scilab data to convert to an OpenGL texture
+ * @param[in] numElements the number of elements
+ * @param[in] datatype the type of the data
+ * @param[in] the expected image type
+ * @param[out] dest the destination pointer. If its size must be modified, then *dest is allocated.
+ * @param[out] the texture size
+ * @param[out] gltype the OpenGL data type
+ * @return true if *dest has been allocated.
+ */
+ static bool getImage(void const * data, const int numElements, const DataType datatype, const ImageType imagetype, void ** dest, unsigned int * datatSize, GLType * gltype);
+
+private:
+ static bool initGrayTables();
+ static bool initRGB8Tables();
+ static bool initR12Table();
+};
+
+#endif // TEXTURE_HXX
diff --git a/modules/graphic_objects/includes/Triangulator.hxx b/modules/graphic_objects/includes/Triangulator.hxx
new file mode 100755
index 000000000..bb59c8c15
--- /dev/null
+++ b/modules/graphic_objects/includes/Triangulator.hxx
@@ -0,0 +1,343 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef TRIANGULATOR_HXX
+#define TRIANGULATOR_HXX
+
+#include <algorithm>
+#include <limits>
+#include <list>
+#include <vector>
+
+#include <iostream>
+
+/*
+ * A structure representing a point.
+ */
+struct Vector3d
+{
+ double x;
+ double y;
+ double z;
+
+ Vector3d() { }
+ Vector3d(const double _x, const double _y, const double _z) : x(_x), y(_y), z(_z) { }
+};
+
+/**
+ * Triangulator class
+ * An implementation of the ear-clipping triangulation algorithm,
+ * an O(n^2) complexity algorithm, when n is the triangulated polygon's
+ * number of points. The polygon must be simple and non-intersecting.
+ * Triangulation occurs as if the polygon were plane, which is why only
+ * its two largest dimensions are considered and the third is ignored.
+ *
+ * To do:
+ * -extend to take into account self-intersecting polygons
+ * -use a more efficient and robust algorithm (such as the decomposition into monotone pieces O(n log n) algorithm)
+ * -use a dedicated library (more efficient and/or robust)
+ */
+class Triangulator
+{
+private:
+ /** The array of input points. */
+ std::vector<Vector3d> inputPoints;
+
+ /**
+ * The array of points, filled from the array of input points depending on the polygon's dimensions.
+ * It contains exactly the same number of points.
+ */
+ std::vector<Vector3d> points;
+
+ /** The polygon's number of points. */
+ int numPoints;
+
+ /** The polygons's initial number of points, including colinear vertices. */
+ int numInitPoints;
+
+ /**
+ * Specifies which of the polygon's axes is the smallest. 0, 1 and 2
+ * respectively correspond to the x, y, and z axes.
+ */
+ int smallestAxis;
+
+ /**
+ * Specifies the polygon's two largest axes, which are the triangle's two axes
+ * other than its smallest one.
+ */
+ int largestAxes[2];
+
+ /**
+ * Specifies whether the list of vertex indices must be flipped or not
+ * and indicates the vertices' order. If false, vertices are ordered counter-clockwise
+ * whereas they are ordered clockwise if it is true.
+ */
+ bool flipped;
+
+ /** The list of vertex indices. */
+ std::list<int> vertexIndices;
+
+ /** The list of actual vertex indices. */
+ std::vector<int> actualVertexIndices;
+
+ /** The list of ear vertex indices. */
+ std::list<int> earList;
+
+ /** The list of convex vertices. */
+ std::list<int> convexList;
+
+ /** The list of reflex vertices. */
+ std::list<int> reflexList;
+
+ /** The convexity flag array. */
+ std::vector<bool> flagList;
+
+ /** The list of output triangle indices. */
+ std::vector<int> triangleIndices;
+
+ /** The number of insertions into the ear vertex list. */
+ int numAddEars;
+
+ /** The number of deletions from the ear vertex list. */
+ int numDelEars;
+
+ /** The number of steps taken by the triangulation's execution. */
+ int numSteps;
+
+ /** The number of ear tests performed. */
+ int numEarTests;
+
+ /** The number of colinear vertices. */
+ int numColinearVertices;
+
+ double xmin, xmax, ymin, ymax, zmin, zmax;
+
+private:
+ /**
+ * Determines the polygon's smallest axis and its two largest axes.
+ */
+ void determineSmallestAxis(void);
+
+ /**
+ * Fills the array of points from the array of input points, depending on the polygon's
+ * smallest axis which must have been determined beforehand.
+ */
+ void fillPoints(void);
+
+ /**
+ * Computes and returns the polygon's signed area.
+ * Its sign depends on the order of the polygon's vertices.
+ * If positive, the vertices are ordered counter-clockwise whereas they are ordered
+ * clockwise if it is negative.
+ * @return the polygon's area.
+ */
+ double computeArea(void);
+
+ /**
+ * Fills the list of vertex indices, depending on their order.
+ */
+ void fillVertexIndices(void);
+
+ /**
+ * Removes colinear vertices.
+ */
+ void removeColinearVertices(void);
+
+ /**
+ * Removes duplicate vertices.
+ */
+ void removeDuplicateVertices(void);
+
+ /**
+ * Fills the list of convex vertices, determining whether each vertex vi is convex or not.
+ * It also fills the convexity flag array.
+ */
+ void fillConvexVerticesList(void);
+
+ /**
+ * Fills the list of ear vertices.
+ */
+ void fillEarList(void);
+
+ /**
+ * Gets the vertices adjacent to vertex i.
+ * @param[in] vertex i's iterator.
+ * @param[out] a reference to vertex i-1's iterator.
+ * @param[out] a reference to vertex i+1's iterator.
+ */
+ void getAdjacentVertices(std::list<int>::iterator vi, std::list<int>::iterator& vim1, std::list<int>::iterator& vip1);
+
+ /**
+ * Determines whether a vertex is convex or not.
+ * @param[in] the vertex's iterator.
+ * @return true if the vertex is convex, false if it is not.
+ */
+ bool isConvex(std::list<int>::iterator vertex);
+
+ /**
+ * Determines whether a vertex is an ear vertex.
+ * @param[in] the vertex's iterator.
+ * @return true if it is an ear, false if not.
+ */
+ bool isAnEar(std::list<int>::iterator vertex);
+
+ /**
+ * Updates a vertex's state due to the next/previous vertex
+ * having been removed. It performs an ear test and accordingly
+ * updates the ear vertex list. If the vertex becomes convex, its
+ * flag is updated as well as the reflex vertex list.
+ * @param[in] the updated vertex's iterator.
+ */
+ void updateVertex(std::list<int>::iterator vertex);
+
+ /**
+ * Computes the dot product between edge e(i) (from vertex i to i+1) and the vector
+ * orthogonal to edge e(i-1) (from vertex i-1 to i) such that the angle from e(i-1)
+ * to this vector vector is +90°.
+ * @param[in] the index of vertex i-1.
+ * @param[in] the index of vertex i.
+ * @param[in] the index of vertex i+1.
+ * @return the dot product.
+ */
+ double computeDotProduct(int im1, int i, int ip1);
+
+ /**
+ * Determines whether a point P is located within the triangle ABC.
+ * It considers that P and ABC both lie in the xy plane.
+ * @param[in] the triangle's first point.
+ * @param[in] the triangle's second point.
+ * @param[in] the triangle's third point.
+ * @return true if P is located within ABC, false if not.
+ */
+ bool pointInTriangle(Vector3d A, Vector3d B, Vector3d C, Vector3d P);
+
+ /**
+ * Subtracts the second input vector from the first one and returns the result.
+ * It should be moved to a Vector3d class.
+ * @param[in] the first vector.
+ * @param[in] the second vector.
+ * @return the resulting vector.
+ */
+ static Vector3d minus(Vector3d v0, Vector3d v1);
+
+ /**
+ * Computes and returns the dot product of two vectors.
+ * It should be moved to a Vector3d class.
+ * @param[in] the first vector.
+ * @param[in] the second vector.
+ * @return the dot product.
+ */
+ static double dot(Vector3d v0, Vector3d v1);
+
+ /**
+ * Normalizes a 2D vector, the z coordinate is ignored.
+ * It should be moved to a Vector3d class.
+ * @param[in] the vector to normalize.
+ * @return the normalized vector.
+ */
+ static Vector3d normalize(Vector3d v);
+
+ /**
+ * Compares whether two vertices are identical or not.
+ * Two vertices are considered identical if they x and y coordinates
+ * are equal, the z coordinate being ignored.
+ * It should be moved to a Vector3d class.
+ * @param[in] the first vector.
+ * @param[in] the second vector.
+ * @return true if the two vertices are identical, false if not.
+ */
+ static bool compareVertices(Vector3d v0, Vector3d v1);
+
+ /**
+ * Determines whether two floating-point values are equal.
+ * @param[in] the first value.
+ * @param[in] the second value.
+ * @return true if the values are equal, false if not.
+ */
+ static bool areEqual(double x0, double x1);
+
+ /**
+ * Computes and returns a vector p orthogonal to vector v,
+ * such that the angle from v to p is +90°. v and p are considered
+ * to lie in the xy plane.
+ * It should be moved to a Vector3d class.
+ * @param[in] the vector.
+ * @return the vector perpendicular to vector v.
+ */
+ static Vector3d perpendicularVector(Vector3d v);
+
+public:
+ /** Default constructor. */
+ Triangulator(void);
+
+ /**
+ * Initializes and fills the lists used by the algorithm from the
+ * list of input points, which must have been filled beforehand.
+ */
+ void initialize(void);
+
+ /**
+ * Adds a point to the array of input points.
+ * @param[in] the point's x-coordinate.
+ * @param[in] the point's y-coordinate.
+ * @param[in] the point's z-coordinate.
+ */
+ void addPoint(double x, double y, double z);
+
+ /**
+ * Triangulates the input data.
+ */
+ void triangulate(void);
+
+ /**
+ * Returns the number of triangles resulting from the algorithm's execution.
+ * @return the number of triangles.
+ */
+ int getNumberTriangles(void);
+
+ /**
+ * Returns the array of triangle indices resulting from the algorithm's execution.
+ * @return a pointer to the array of triangle indices.
+ */
+ int* getIndices(void);
+
+ /**
+ * Returns the number steps performed by the algorithm.
+ * @return the number of steps performed.
+ */
+ int getNumberSteps();
+
+ /**
+ * Returns the number of ear tests performed by the algorithm.
+ * Relevant only to debugging.
+ * @return the number of ear tests performed.
+ */
+ int getNumberEarTests();
+
+ /**
+ * Clears the lists of points, vertex indices, and the lists storing
+ * the algorithm's internal state (vertex indices, ear vertices and others).
+ */
+ void clear(void);
+};
+
+/**
+ * An arbitrary tolerance value used to determine colinear edges.
+ */
+#define TOLERANCE 0.0000001
+
+/**
+ * An epsilon value used when comparing vertices.
+ */
+#define EPSILON 0.00000001
+
+#endif
diff --git a/modules/graphic_objects/includes/createGraphicObject.h b/modules/graphic_objects/includes/createGraphicObject.h
new file mode 100755
index 000000000..2340058b3
--- /dev/null
+++ b/modules/graphic_objects/includes/createGraphicObject.h
@@ -0,0 +1,77 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __CREATEGRAPHICOBJECT_H__
+#define __CREATEGRAPHICOBJECT_H__
+
+#include "dynlib_graphic_objects.h"
+#include "BOOL.h"
+
+/*
+** Ask Controller to create a graphic object
+** of the given _sType.
+*/
+GRAPHIC_OBJECTS_IMPEXP int createGraphicObject(int _iType);
+
+/*
+** Ask Controller to clone a graphic object
+** referenced the given _sId.
+*/
+GRAPHIC_OBJECTS_IMPEXP int cloneGraphicObject(int iId);
+
+/*
+** Ask Controller to create a data object
+** referenced by the given _sId and of the given _sType
+*/
+GRAPHIC_OBJECTS_IMPEXP int createDataObject(int iId, int _iType);
+
+/*
+** Ask Controller to create a figure menubar
+** referenced by the given _sFigureId and of the given _sType
+*/
+GRAPHIC_OBJECTS_IMPEXP void buildFigureMenuBar(int iFigureId);
+
+GRAPHIC_OBJECTS_IMPEXP int cloneGraphicContext(int iSourceIdentifier, int iDestIdentifier);
+GRAPHIC_OBJECTS_IMPEXP int cloneFontContext(int iSourceIdentifier, int iDestIdentifier);
+
+GRAPHIC_OBJECTS_IMPEXP BOOL isAxesRedrawing(int iSubWin);
+GRAPHIC_OBJECTS_IMPEXP void cloneMenus(int iModel, int iNewParent);
+GRAPHIC_OBJECTS_IMPEXP int cloneAxesModel(int iParent);
+
+GRAPHIC_OBJECTS_IMPEXP int createHiddenLabel(int iParent);
+GRAPHIC_OBJECTS_IMPEXP int createLabel(int iParent, int type);
+GRAPHIC_OBJECTS_IMPEXP int createNewFigureWithAxes();
+GRAPHIC_OBJECTS_IMPEXP int createFigure(int _bDockable, int _iMenubarType, int _iToolbarType, int _bDefaultAxes, int _bVisible);
+GRAPHIC_OBJECTS_IMPEXP int createSubWin(int iParent);
+GRAPHIC_OBJECTS_IMPEXP int createText(int iParentsubwinUID, char** text, int nbRow, int nbCol, double x, double y, BOOL autoSize, double* userSize, int centerPos, int *foreground, int *background, BOOL isboxed, BOOL isline, BOOL isfilled, int align);
+GRAPHIC_OBJECTS_IMPEXP int createRect(int iParentsubwinUID, double x, double y, double height, double width, int foreground, int background, int isfilled, int isline);
+GRAPHIC_OBJECTS_IMPEXP int createArc(int parent, double x, double y, double h, double w, double start, double end, int* foreground, int* background, BOOL filled, BOOL line);
+GRAPHIC_OBJECTS_IMPEXP int createAxis(int parent, int dir, int tics, double* vx, int nx, double* vy, int ny, int subint, char* format, int fontSize, int textColor, int ticsColor, BOOL seg);
+GRAPHIC_OBJECTS_IMPEXP int createCompound(int parent, int* children, int childrenCount);
+GRAPHIC_OBJECTS_IMPEXP int createCompoundSeq(int parent, int childrenCount);
+GRAPHIC_OBJECTS_IMPEXP int createFec(int parent, double* zminmax, int zminmaxsize, int* colminmax, int colminmaxSize, int* colout, int coloutSize, BOOL with_mesh);
+GRAPHIC_OBJECTS_IMPEXP int createGrayplot(int parent, int type, double* pvecx, int pvecxSize, int n1, int n2);
+GRAPHIC_OBJECTS_IMPEXP int createPolyline(int parent, BOOL closed, int plot, int *foreground, int* background, int backgroundSize,
+ int* mark_style, int* mark_foreground, int* mark_background, BOOL isline, BOOL isfilled, BOOL ismark, BOOL isinterp);
+GRAPHIC_OBJECTS_IMPEXP int createLegend(int parent, char** text, int iTextSize, int* handles, int iHandlesSize);
+GRAPHIC_OBJECTS_IMPEXP int createSegs(int parent, double* vx, int vxSize, double* vy, int vySize, double* vz, int vzSize, int* style, int styleSize, double arsize);
+GRAPHIC_OBJECTS_IMPEXP int createChamp(int parent, double* vx, int vxSize, double* vy, int vySize, double* vfx, int vfxSize, double* vfy, int vfySize, double arsize, BOOL typeofchamp);
+GRAPHIC_OBJECTS_IMPEXP int createSurface(int parent, int typeof3d, int colorFlag, int colorMode);
+GRAPHIC_OBJECTS_IMPEXP int createLight(int parent, int type, BOOL visible, double* pos, double* dir, double* ambient, double* diffuse, double* specular);
+
+GRAPHIC_OBJECTS_IMPEXP void initSubWinTo3d(int subwin, char* legend, int* flag, double alpha, double theta,
+ double* ebox, double* x, int xSize, double* y, int ySize, double* z, int zSize);
+
+GRAPHIC_OBJECTS_IMPEXP int xmlload(char* xmlfile);
+GRAPHIC_OBJECTS_IMPEXP int xmldomload(char* xmlfile);
+GRAPHIC_OBJECTS_IMPEXP char* xmlsave(int id, char* xmlfile, BOOL isReverse);
+#endif /* !__CREATEGRAPHICOBJECT_H__ */
diff --git a/modules/graphic_objects/includes/deleteGraphicObject.h b/modules/graphic_objects/includes/deleteGraphicObject.h
new file mode 100755
index 000000000..3d6ffcb8c
--- /dev/null
+++ b/modules/graphic_objects/includes/deleteGraphicObject.h
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __DELETEGRAPHICOBJECT_H__
+#define __DELETEGRAPHICOBJECT_H__
+
+#include "dynlib_graphic_objects.h"
+
+/*
+** Ask Controller to delete a graphic object
+** referenced by the given _sId.
+*/
+GRAPHIC_OBJECTS_IMPEXP void deleteGraphicObject(int iUID);
+
+/*
+** Ask Controller to delete a data object
+** referenced by the given _sId.
+*/
+GRAPHIC_OBJECTS_IMPEXP void deleteDataObject(int iUID);
+
+#endif /* !__DELETEGRAPHICOBJECT_H__ */
diff --git a/modules/graphic_objects/includes/dynlib_graphic_objects.h b/modules/graphic_objects/includes/dynlib_graphic_objects.h
new file mode 100755
index 000000000..a5c1128f5
--- /dev/null
+++ b/modules/graphic_objects/includes/dynlib_graphic_objects.h
@@ -0,0 +1,28 @@
+/*
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) DIGITEO - 2010 - Allan CORNET
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution. The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+*
+*/
+
+/*--------------------------------------------------------------------------*/
+#ifndef __DYNLIB_GRAPHIC_OBJECTS_H__
+#define __DYNLIB_GRAPHIC_OBJECTS_H__
+
+#ifdef _MSC_VER
+#ifdef GRAPHIC_OBJECTS_EXPORTS
+#define GRAPHIC_OBJECTS_IMPEXP __declspec(dllexport)
+#else
+#define GRAPHIC_OBJECTS_IMPEXP __declspec(dllimport)
+#endif
+#else
+#define GRAPHIC_OBJECTS_IMPEXP
+#endif
+
+#endif /* __DYNLIB_GRAPHIC_OBJECTS_H__ */
+/*--------------------------------------------------------------------------*/
diff --git a/modules/graphic_objects/includes/getConsoleIdentifier.h b/modules/graphic_objects/includes/getConsoleIdentifier.h
new file mode 100755
index 000000000..64348554d
--- /dev/null
+++ b/modules/graphic_objects/includes/getConsoleIdentifier.h
@@ -0,0 +1,23 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __GETCONSOLEIDENTIFIER_H__
+#define __GETCONSOLEIDENTIFIER_H__
+
+#include "dynlib_graphic_objects.h"
+
+/*
+** Retrieve Scilab Console identifier.
+*/
+GRAPHIC_OBJECTS_IMPEXP int getConsoleIdentifier(void);
+
+#endif /* !__GETCONSOLEIDENTIFIER_H__ */
diff --git a/modules/graphic_objects/includes/getGraphicObjectProperty.h b/modules/graphic_objects/includes/getGraphicObjectProperty.h
new file mode 100755
index 000000000..0321e4472
--- /dev/null
+++ b/modules/graphic_objects/includes/getGraphicObjectProperty.h
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __GETGRAPHICOBJECTPROPERTY_H__
+#define __GETGRAPHICOBJECTPROPERTY_H__
+
+#include <stdlib.h>
+
+#include "returnType.h"
+#include "dynlib_graphic_objects.h"
+#include "CurrentObject.h"
+
+/*
+** Retrieve Graphic object property from Model.
+** Specify type expected as parameter for JNI.
+*/
+GRAPHIC_OBJECTS_IMPEXP void getGraphicObjectProperty(int iID, const int _iName, enum _ReturnType_ _returnType, void **_pvData);
+
+/**
+ * @brief release a Graphic object property from the Model.
+ *
+ * Data are free/delete if they are passed by copy. Passed by copy properties are :
+ * 1. out of DataModel properties
+ * 2. with datatype passed as pointer or pointer of pointer
+ *
+ * @param _pstName property name
+ * @param _pvData the data to release
+ * @param _returnType the property type descriptor
+ * @param numElements size of the _pvData argument
+ */
+GRAPHIC_OBJECTS_IMPEXP void releaseGraphicObjectProperty(const int _iName, void * _pvData, enum _ReturnType_ _returnType, int numElements);
+
+#endif /* !__GETGRAPHICOBJECTPROPERTY_H__ */
diff --git a/modules/graphic_objects/includes/graphicObjectProperties.h b/modules/graphic_objects/includes/graphicObjectProperties.h
new file mode 100755
index 000000000..63f71de72
--- /dev/null
+++ b/modules/graphic_objects/includes/graphicObjectProperties.h
@@ -0,0 +1,418 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Bruno JOFRET
+ * Copyright (C) 2012-2014 - Scilab-Enterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*
+ * -=- This is a generated file, please do not edit by hand -=-
+ * -=- Please see properties definitions in -=-
+ * -=- SCI/modules/graphic_objects/src/scripts/propertiesMap.properties -=-
+ */
+
+#ifndef __GRAPHIC_OBJECT_PROPERTIES_H__
+#define __GRAPHIC_OBJECT_PROPERTIES_H__
+
+#define __GO_ARC__ 0
+#define __GO_AXES__ 1
+#define __GO_AXESMODEL__ 2
+#define __GO_AXIS__ 3
+#define __GO_CHAMP__ 4
+#define __GO_COMPOUND__ 5
+#define __GO_FAC3D__ 6
+#define __GO_FEC__ 7
+#define __GO_FIGURE__ 8
+#define __GO_FIGUREMODEL__ 9
+#define __GO_GRAYPLOT__ 10
+#define __GO_LABEL__ 11
+#define __GO_LEGEND__ 12
+#define __GO_MATPLOT__ 13
+#define __GO_PLOT3D__ 14
+#define __GO_POLYLINE__ 15
+#define __GO_RECTANGLE__ 16
+#define __GO_SEGS__ 17
+#define __GO_TEXT__ 18
+#define __GO_UICONTROL__ 19
+#define __GO_UIMENU__ 20
+#define __GO_UICONTEXTMENU__ 21
+#define __GO_CHILDREN__ 22
+#define __GO_CHILDREN_COUNT__ 23
+#define __GO_PARENT__ 24
+#define __GO_USER_DATA__ 25
+#define __GO_USER_DATA_SIZE__ 26
+#define __GO_VISIBLE__ 27
+#define __GO_HIDDEN__ 28
+#define __GO_TYPE__ 29
+#define __GO_DATA_MODEL__ 30
+#define __GO_PARENT_FIGURE__ 31
+#define __GO_PARENT_AXES__ 32
+#define __GO_HAS_LEGEND_CHILD__ 33
+#define __GO_LEGEND_CHILD__ 34
+#define __GO_SELECTED_CHILD__ 35
+#define __GO_CALLBACK__ 36
+#define __GO_CALLBACKTYPE__ 37
+#define __GO_DATA_MODEL_COORDINATES__ 38
+#define __GO_DATA_MODEL_X__ 39
+#define __GO_DATA_MODEL_Y__ 40
+#define __GO_DATA_MODEL_Z__ 41
+#define __GO_DATA_MODEL_X_COORDINATES_SHIFT__ 42
+#define __GO_DATA_MODEL_Y_COORDINATES_SHIFT__ 43
+#define __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ 44
+#define __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__ 45
+#define __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__ 46
+#define __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__ 47
+#define __GO_DATA_MODEL_NUM_ELEMENTS__ 48
+#define __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ 49
+#define __GO_DATA_MODEL_NUM_VERTICES_PER_GON__ 50
+#define __GO_DATA_MODEL_NUM_GONS__ 51
+#define __GO_DATA_MODEL_Z_COORDINATES_SET__ 52
+#define __GO_DATA_MODEL_COLORS__ 53
+#define __GO_DATA_MODEL_NUM_COLORS__ 54
+#define __GO_DATA_MODEL_NUM_VERTICES__ 55
+#define __GO_DATA_MODEL_NUM_INDICES__ 56
+#define __GO_DATA_MODEL_INDICES__ 57
+#define __GO_DATA_MODEL_VALUES__ 58
+#define __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ 59
+#define __GO_DATA_MODEL_FEC_ELEMENTS__ 60
+#define __GO_DATA_MODEL_NUM_X__ 61
+#define __GO_DATA_MODEL_NUM_Y__ 62
+#define __GO_DATA_MODEL_NUM_Z__ 63
+#define __GO_DATA_MODEL_GRID_SIZE__ 64
+#define __GO_DATA_MODEL_X_DIMENSIONS__ 65
+#define __GO_DATA_MODEL_Y_DIMENSIONS__ 66
+#define __GO_MATPLOT_TRANSLATE__ 67
+#define __GO_MATPLOT_SCALE__ 68
+#define __GO_DATA_MODEL_MATPLOT_BOUNDS__ 69
+#define __GO_DATA_MODEL_MATPLOT_TYPE__ 70
+#define __GO_DATA_MODEL_MATPLOT_GL_TYPE__ 71
+#define __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ 72
+#define __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ 73
+#define __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ 74
+#define __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ 75
+#define __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ 76
+#define __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ 77
+#define __GO_REFERENCED__ 78
+#define __GO_VALID__ 79
+#define __GO_POSITION__ 80
+#define __GO_SIZE__ 81
+#define __GO_CANVAS__ 82
+#define __GO_AUTORESIZE__ 83
+#define __GO_VIEWPORT__ 84
+#define __GO_AXES_SIZE__ 85
+#define __GO_FIGURE_NAME__ 86
+#define __GO_NAME__ 87
+#define __GO_ID__ 88
+#define __GO_INFO_MESSAGE__ 89
+#define __GO_COLORMAP__ 90
+#define __GO_COLORMAP_SIZE__ 91
+#define __GO_RENDERING_MODE__ 92
+#define __GO_PIXEL_DRAWING_MODE__ 93
+#define __GO_ANTIALIASING__ 94
+#define __GO_IMMEDIATE_DRAWING__ 95
+#define __GO_BACKGROUND__ 96
+#define __GO_EVENTHANDLER__ 97
+#define __GO_EVENTHANDLER_NAME__ 98
+#define __GO_EVENTHANDLER_ENABLE__ 99
+#define __GO_TAG__ 100
+#define __GO_ROTATION_TYPE__ 101
+#define __GO_RESIZEFCN__ 102
+#define __GO_CLOSEREQUESTFCN__ 103
+#define __GO_DEFAULT_AXES__ 104
+#define __GO_UPPER_LEFT_POINT__ 105
+#define __GO_WIDTH__ 106
+#define __GO_HEIGHT__ 107
+#define __GO_START_ANGLE__ 108
+#define __GO_END_ANGLE__ 109
+#define __GO_ARC_DRAWING_METHOD__ 110
+#define __GO_X_AXIS_VISIBLE__ 111
+#define __GO_X_AXIS_REVERSE__ 112
+#define __GO_X_AXIS_GRID_COLOR__ 113
+#define __GO_X_AXIS_GRID_THICKNESS__ 114
+#define __GO_X_AXIS_GRID_STYLE__ 115
+#define __GO_X_AXIS_LABEL__ 116
+#define __GO_X_AXIS_LOCATION__ 117
+#define __GO_X_AXIS_LOG_FLAG__ 118
+#define __GO_X_AXIS_TICKS__ 119
+#define __GO_X_AXIS_FORMAT__ 120
+#define __GO_X_AXIS_ST_FACTORS__ 121
+#define __GO_X_AXIS_AUTO_TICKS__ 122
+#define __GO_X_AXIS_NUMBER_TICKS__ 123
+#define __GO_X_AXIS_TICKS_LOCATIONS__ 124
+#define __GO_X_AXIS_TICKS_LABELS__ 125
+#define __GO_X_AXIS_SUBTICKS__ 126
+#define __GO_Y_AXIS_VISIBLE__ 127
+#define __GO_Y_AXIS_REVERSE__ 128
+#define __GO_Y_AXIS_GRID_COLOR__ 129
+#define __GO_Y_AXIS_GRID_THICKNESS__ 130
+#define __GO_Y_AXIS_GRID_STYLE__ 131
+#define __GO_Y_AXIS_LABEL__ 132
+#define __GO_Y_AXIS_LOCATION__ 133
+#define __GO_Y_AXIS_LOG_FLAG__ 134
+#define __GO_Y_AXIS_TICKS__ 135
+#define __GO_Y_AXIS_FORMAT__ 136
+#define __GO_Y_AXIS_ST_FACTORS__ 137
+#define __GO_Y_AXIS_AUTO_TICKS__ 138
+#define __GO_Y_AXIS_NUMBER_TICKS__ 139
+#define __GO_Y_AXIS_TICKS_LOCATIONS__ 140
+#define __GO_Y_AXIS_TICKS_LABELS__ 141
+#define __GO_Y_AXIS_SUBTICKS__ 142
+#define __GO_Z_AXIS_VISIBLE__ 143
+#define __GO_Z_AXIS_REVERSE__ 144
+#define __GO_Z_AXIS_GRID_COLOR__ 145
+#define __GO_Z_AXIS_GRID_THICKNESS__ 146
+#define __GO_Z_AXIS_GRID_STYLE__ 147
+#define __GO_Z_AXIS_LABEL__ 148
+#define __GO_Z_AXIS_LOCATION__ 149
+#define __GO_Z_AXIS_LOG_FLAG__ 150
+#define __GO_Z_AXIS_TICKS__ 151
+#define __GO_Z_AXIS_FORMAT__ 152
+#define __GO_Z_AXIS_ST_FACTORS__ 153
+#define __GO_Z_AXIS_AUTO_TICKS__ 154
+#define __GO_Z_AXIS_NUMBER_TICKS__ 155
+#define __GO_Z_AXIS_TICKS_LOCATIONS__ 156
+#define __GO_Z_AXIS_TICKS_LABELS__ 157
+#define __GO_Z_AXIS_SUBTICKS__ 158
+#define __GO_AUTO_SUBTICKS__ 159
+#define __GO_GRID_POSITION__ 160
+#define __GO_TITLE__ 161
+#define __GO_AUTO_CLEAR__ 162
+#define __GO_FILLED__ 163
+#define __GO_CAMERA__ 164
+#define __GO_VIEW__ 165
+#define __GO_ISOVIEW__ 166
+#define __GO_CUBE_SCALING__ 167
+#define __GO_ROTATION_ANGLES__ 168
+#define __GO_ROTATION_ANGLES_3D__ 169
+#define __GO_BOX_TYPE__ 170
+#define __GO_HIDDEN_AXIS_COLOR__ 171
+#define __GO_X_TIGHT_LIMITS__ 172
+#define __GO_Y_TIGHT_LIMITS__ 173
+#define __GO_Z_TIGHT_LIMITS__ 174
+#define __GO_DATA_BOUNDS__ 175
+#define __GO_REAL_DATA_BOUNDS__ 176
+#define __GO_ZOOM_ENABLED__ 177
+#define __GO_ZOOM_BOX__ 178
+#define __GO_AUTO_SCALE__ 179
+#define __GO_FIRST_PLOT__ 180
+#define __GO_MARGINS__ 181
+#define __GO_AUTO_MARGINS__ 182
+#define __GO_AXES_BOUNDS__ 183
+#define __GO_CLIP_PROPERTY__ 184
+#define __GO_CLIP_STATE__ 185
+#define __GO_CLIP_BOX__ 186
+#define __GO_CLIP_BOX_SET__ 187
+#define __GO_LINE__ 188
+#define __GO_LINE_MODE__ 189
+#define __GO_LINE_STYLE__ 190
+#define __GO_LINE_THICKNESS__ 191
+#define __GO_LINE_COLOR__ 192
+#define __GO_FILL_MODE__ 193
+#define __GO_MARK__ 194
+#define __GO_MARK_MODE__ 195
+#define __GO_MARK_STYLE__ 196
+#define __GO_MARK_SIZE_UNIT__ 197
+#define __GO_MARK_SIZE__ 198
+#define __GO_MARK_FOREGROUND__ 199
+#define __GO_MARK_BACKGROUND__ 200
+#define __GO_MARK_OFFSET__ 201
+#define __GO_MARK_STRIDE__ 202
+#define __GO_SELECTED__ 203
+#define __GO_TICKS_DIRECTION__ 204
+#define __GO_X_NUMBER_TICKS__ 205
+#define __GO_Y_NUMBER_TICKS__ 206
+#define __GO_X_TICKS_COORDS__ 207
+#define __GO_Y_TICKS_COORDS__ 208
+#define __GO_TICKS_COLOR__ 209
+#define __GO_TICKS_SEGMENT__ 210
+#define __GO_TICKS_STYLE__ 211
+#define __GO_SUBTICKS__ 212
+#define __GO_NUMBER_TICKS_LABELS__ 213
+#define __GO_TICKS_LABELS__ 214
+#define __GO_FORMATN__ 215
+#define __GO_FONT__ 216
+#define __GO_FONT_STYLE__ 217
+#define __GO_FONT_SIZE__ 218
+#define __GO_FONT_COLOR__ 219
+#define __GO_FONT_FRACTIONAL__ 220
+#define __GO_Z_BOUNDS__ 221
+#define __GO_OUTSIDE_COLOR__ 222
+#define __GO_COLOR_RANGE__ 223
+#define __GO_DATA_MAPPING__ 224
+#define __GO_FONT_ANGLE__ 225
+#define __GO_AUTO_POSITION__ 226
+#define __GO_CORNERS__ 227
+#define __GO_AUTO_ROTATION__ 228
+#define __GO_LINKS__ 229
+#define __GO_LINKS_COUNT__ 230
+#define __GO_LEGEND_LOCATION__ 231
+#define __GO_MARKS_COUNT__ 232
+#define __GO_LINE_WIDTH__ 233
+#define __GO_CLOSED__ 234
+#define __GO_ARROW_SIZE_FACTOR__ 235
+#define __GO_POLYLINE_STYLE__ 236
+#define __GO_INTERP_COLOR_VECTOR__ 237
+#define __GO_INTERP_COLOR_VECTOR_SET__ 238
+#define __GO_INTERP_COLOR_MODE__ 239
+#define __GO_X_SHIFT__ 240
+#define __GO_Y_SHIFT__ 241
+#define __GO_Z_SHIFT__ 242
+#define __GO_BAR_WIDTH__ 243
+#define __GO_SURFACE_MODE__ 244
+#define __GO_COLOR_MODE__ 245
+#define __GO_COLOR_FLAG__ 246
+#define __GO_ALIGNMENT__ 247
+#define __GO_BOX__ 248
+#define __GO_TEXT_BOX__ 249
+#define __GO_TEXT_BOX_MODE__ 250
+#define __GO_AUTO_DIMENSIONING__ 251
+#define __GO_FORMATTED_TEXT__ 252
+#define __GO_TEXT_ARRAY_DIMENSIONS__ 253
+#define __GO_TEXT_STRINGS__ 254
+#define __GO_BASE__ 255
+#define __GO_BASE_X__ 256
+#define __GO_BASE_Y__ 257
+#define __GO_BASE_Z__ 258
+#define __GO_DIRECTION__ 259
+#define __GO_DIRECTION_X__ 260
+#define __GO_DIRECTION_Y__ 261
+#define __GO_DIRECTION_Z__ 262
+#define __GO_ARROW_SIZE__ 263
+#define __GO_SEGS_COLORS__ 264
+#define __GO_COLORED__ 265
+#define __GO_ARROWS__ 266
+#define __GO_NUMBER_ARROWS__ 267
+#define __GO_CHAMP_DIMENSIONS__ 268
+#define __GO_BOUNDING_BOX__ 269
+#define __GO_MAX_LENGTH__ 270
+#define __GO_MAX_USABLE_LENGTH__ 271
+#define __GO_HIDDEN_COLOR__ 272
+#define __GO_STYLE__ 273
+#define __GO_UI_CHECKBOX__ 274
+#define __GO_UI_EDIT__ 275
+#define __GO_UI_SPINNER__ 276
+#define __GO_UI_FRAME__ 277
+#define __GO_UI_FRAME_SCROLLABLE__ 278
+#define __GO_UI_IMAGE__ 279
+#define __GO_UI_LISTBOX__ 280
+#define __GO_UI_POPUPMENU__ 281
+#define __GO_UI_PUSHBUTTON__ 282
+#define __GO_UI_RADIOBUTTON__ 283
+#define __GO_UI_SLIDER__ 284
+#define __GO_UI_TABLE__ 285
+#define __GO_UI_TEXT__ 286
+#define __GO_UI_LAYER__ 287
+#define __GO_UI_BACKGROUNDCOLOR__ 288
+#define __GO_UI_ENABLE__ 289
+#define __GO_UI_FONTANGLE__ 290
+#define __GO_UI_FONTNAME__ 291
+#define __GO_UI_FONTSIZE__ 292
+#define __GO_UI_FONTUNITS__ 293
+#define __GO_UI_FONTWEIGHT__ 294
+#define __GO_UI_FOREGROUNDCOLOR__ 295
+#define __GO_UI_HORIZONTALALIGNMENT__ 296
+#define __GO_UI_LISTBOXTOP__ 297
+#define __GO_UI_LISTBOXTOP_SIZE__ 298
+#define __GO_UI_MAX__ 299
+#define __GO_UI_MIN__ 300
+#define __GO_UI_RELIEF__ 301
+#define __GO_UI_STRING__ 302
+#define __GO_UI_TAB_STRING__ 303
+#define __GO_UI_STRING_SIZE__ 304
+#define __GO_UI_STRING_COLNB__ 305
+#define __GO_UI_TOOLTIPSTRING__ 306
+#define __GO_UI_TOOLTIPSTRING_SIZE__ 307
+#define __GO_UI_SLIDERSTEP__ 308
+#define __GO_UI_UNITS__ 309
+#define __GO_UI_VALUE__ 310
+#define __GO_UI_TAB_VALUE__ 311
+#define __GO_UI_VALUE_SIZE__ 312
+#define __GO_UI_VERTICALALIGNMENT__ 313
+#define __GO_UIPARENTMENU__ 314
+#define __GO_UICHILDMENU__ 315
+#define __GO_UICHECKEDMENU__ 316
+#define __GO_UI_CHECKED__ 317
+#define __GO_UI_LABEL__ 318
+#define __GO_UI_MNEMONIC__ 319
+#define __GO_UI_ACCELERATOR__ 320
+#define __GO_UI_SEPARATOR__ 321
+#define __GO_UI_ICON__ 322
+#define __GO_CONSOLE__ 323
+#define __GO_SHOWHIDDENHANDLES__ 324
+#define __GO_SHOWHIDDENPROPERTIES__ 325
+#define __GO_USEDEPRECATEDLF__ 326
+#define __GO_WAITBAR__ 327
+#define __GO_PROGRESSIONBAR__ 328
+#define __GO_UI_MESSAGE__ 329
+#define __GO_UI_MESSAGE_SIZE__ 330
+#define __GO_DATATIP__ 331
+#define __GO_DATATIP_DATA__ 332
+#define __GO_DATATIP_ORIENTATION__ 333
+#define __GO_DATATIP_3COMPONENT__ 334
+#define __GO_DATATIP_AUTOORIENTATION__ 335
+#define __GO_DATATIP_INTERP_MODE__ 336
+#define __GO_DATATIP_DISPLAY_FNC__ 337
+#define __GO_DATATIP_BOX_MODE__ 338
+#define __GO_DATATIP_LABEL_MODE__ 339
+#define __GO_DATATIP_MARK__ 340
+#define __GO_AMBIENTCOLOR__ 341
+#define __GO_DIFFUSECOLOR__ 342
+#define __GO_SPECULARCOLOR__ 343
+#define __GO_COLOR_MATERIAL__ 344
+#define __GO_MATERIAL_SHININESS__ 345
+#define __GO_LIGHT__ 346
+#define __GO_LIGHT_TYPE__ 347
+#define __GO_DATATIPS__ 348
+#define __GO_DATATIPS_COUNT__ 349
+#define __GO_DATATIP_INDEXES__ 350
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 351
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 352
+#define __GO_RESIZE__ 353
+#define __GO_TOOLBAR__ 354
+#define __GO_TOOLBAR_VISIBLE__ 355
+#define __GO_MENUBAR__ 356
+#define __GO_MENUBAR_VISIBLE__ 357
+#define __GO_INFOBAR_VISIBLE__ 358
+#define __GO_DOCKABLE__ 359
+#define __GO_LAYOUT__ 360
+#define __GO_LAYOUT_SET__ 361
+#define __GO_UI_TAB__ 362
+#define __GO_UI_GRIDBAG_GRID__ 363
+#define __GO_UI_GRIDBAG_WEIGHT__ 364
+#define __GO_UI_GRIDBAG_FILL__ 365
+#define __GO_UI_GRIDBAG_ANCHOR__ 366
+#define __GO_UI_GRIDBAG_PADDING__ 367
+#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 368
+#define __GO_UI_GRID_GRID__ 369
+#define __GO_UI_GRID_PADDING__ 370
+#define __GO_UI_BORDER_POSITION__ 371
+#define __GO_UI_BORDER_PREFERREDSIZE__ 372
+#define __GO_GRID_OPT_GRID__ 373
+#define __GO_GRID_OPT_PADDING__ 374
+#define __GO_BORDER_OPT_PADDING__ 375
+#define __GO_UI_FRAME_BORDER__ 376
+#define __GO_UI_FRAME_BORDER_COLOR__ 377
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 378
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 379
+#define __GO_UI_FRAME_BORDER_IN_BORDER__ 380
+#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 381
+#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 382
+#define __GO_UI_FRAME_BORDER_ROUNDED__ 383
+#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 384
+#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 385
+#define __GO_UI_FRAME_BORDER_TITLE__ 386
+#define __GO_UI_FRAME_BORDER_POSITION__ 387
+#define __GO_UI_FRAME_BORDER_STYLE__ 388
+#define __GO_UI_GROUP_NAME__ 389
+#define __GO_UI_TITLE_POSITION__ 390
+#define __GO_UI_TITLE_SCROLL__ 391
+#define __GO_UI_FRAME_BORDER_TYPE__ 392
+#define __GO_UI_SCROLLABLE__ 393
+
+#endif /* !__GRAPHIC_OBJECT_PROPERTIES_H__ */
diff --git a/modules/graphic_objects/includes/returnType.h b/modules/graphic_objects/includes/returnType.h
new file mode 100755
index 000000000..6d11098b4
--- /dev/null
+++ b/modules/graphic_objects/includes/returnType.h
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __RETURNTYPE_H__
+#define __RETURNTYPE_H__
+
+enum _ReturnType_
+{
+ jni_string,
+ jni_string_vector,
+ jni_double,
+ jni_double_vector,
+ jni_int,
+ jni_int_vector,
+ jni_bool,
+ jni_bool_vector
+};
+
+#endif /* !__RETURNTYPE_H__ */
diff --git a/modules/graphic_objects/includes/setGraphicObjectProperty.h b/modules/graphic_objects/includes/setGraphicObjectProperty.h
new file mode 100755
index 000000000..0d0297e99
--- /dev/null
+++ b/modules/graphic_objects/includes/setGraphicObjectProperty.h
@@ -0,0 +1,29 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#ifndef __SETGRAPHICOBJECTPROPERTY_H__
+#define __SETGRAPHICOBJECTPROPERTY_H__
+
+#include <stdlib.h>
+
+#include "BOOL.h"
+
+#include "returnType.h"
+#include "dynlib_graphic_objects.h"
+#include "CurrentObject.h"
+
+GRAPHIC_OBJECTS_IMPEXP void setGraphicObjectRelationship(int iParentId, int iChildId);
+GRAPHIC_OBJECTS_IMPEXP BOOL setGraphicObjectProperty(int iUID, const int _iPropertyName, void const* _pvValue, enum _ReturnType_ _valueTtype, int numElements);
+GRAPHIC_OBJECTS_IMPEXP BOOL setGraphicObjectPropertyAndNoWarn(int iUID, const int _iPropertyName, void const* _pvValue, enum _ReturnType_ _valueTtype, int numElements);
+GRAPHIC_OBJECTS_IMPEXP BOOL setGraphicObjectPropertyAndWarn(int iUID, const int _iPropertyName, void const* _pvValue, enum _ReturnType_ _valueTtype, int numElements, int warnJava);
+
+#endif /* !__SETGRAPHICOBJECTPROPERTY_H__ */
diff --git a/modules/graphic_objects/jar/org.scilab.modules.graphic_objects.jar b/modules/graphic_objects/jar/org.scilab.modules.graphic_objects.jar
new file mode 100755
index 000000000..fbc7c5369
--- /dev/null
+++ b/modules/graphic_objects/jar/org.scilab.modules.graphic_objects.jar
Binary files differ
diff --git a/modules/graphic_objects/libscigraphic_objects-disable.la b/modules/graphic_objects/libscigraphic_objects-disable.la
new file mode 100755
index 000000000..15f177d68
--- /dev/null
+++ b/modules/graphic_objects/libscigraphic_objects-disable.la
@@ -0,0 +1,41 @@
+# libscigraphic_objects-disable.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libscigraphic_objects-disable.so.5'
+
+# Names of this library.
+library_names='libscigraphic_objects-disable.so.5.5.2 libscigraphic_objects-disable.so.5 libscigraphic_objects-disable.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscigraphic_objects-disable.
+current=10
+age=5
+revision=2
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib/scilab'
diff --git a/modules/graphic_objects/libscigraphic_objects.la b/modules/graphic_objects/libscigraphic_objects.la
new file mode 100755
index 000000000..0bacf7646
--- /dev/null
+++ b/modules/graphic_objects/libscigraphic_objects.la
@@ -0,0 +1,41 @@
+# libscigraphic_objects.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libscigraphic_objects.so.5'
+
+# Names of this library.
+library_names='libscigraphic_objects.so.5.5.2 libscigraphic_objects.so.5 libscigraphic_objects.so'
+
+# The name of the static archive.
+old_library=''
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=''
+
+# Libraries that this one depends upon.
+dependency_libs=' -lpthread -ldl -lcurses'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libscigraphic_objects.
+current=10
+age=5
+revision=2
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/local/lib/scilab'
diff --git a/modules/graphic_objects/license.txt b/modules/graphic_objects/license.txt
new file mode 100755
index 000000000..706cdbeb3
--- /dev/null
+++ b/modules/graphic_objects/license.txt
@@ -0,0 +1,9 @@
+Copyright:
+Copyright (c) 2010 - DIGITEO
+
+License:
+This module must be used under the terms of the CeCILL.
+This module file is licensed as described in the file COPYING, which
+you should have received as part of this distribution. The terms
+are also available at
+http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
diff --git a/modules/graphic_objects/locales/cs_CZ.po b/modules/graphic_objects/locales/cs_CZ.po
new file mode 100755
index 000000000..2b4e0b922
--- /dev/null
+++ b/modules/graphic_objects/locales/cs_CZ.po
@@ -0,0 +1,29 @@
+# Czech translation for scilab
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2012-07-22 20:51+0000\n"
+"Last-Translator: Zbyněk Schwarz <Unknown>\n"
+"Language-Team: Czech <cs@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Modul Scilabu '%s' není nainstalován.\n"
diff --git a/modules/graphic_objects/locales/de_DE.po b/modules/graphic_objects/locales/de_DE.po
new file mode 100755
index 000000000..9ff3e5064
--- /dev/null
+++ b/modules/graphic_objects/locales/de_DE.po
@@ -0,0 +1,29 @@
+# German translation for scilab
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-01-16 11:50+0000\n"
+"Last-Translator: Dennis Baudys <Unknown>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Scilab '%s' Modul nicht installiert.\n"
diff --git a/modules/graphic_objects/locales/fr_FR.po b/modules/graphic_objects/locales/fr_FR.po
new file mode 100755
index 000000000..4e914ff45
--- /dev/null
+++ b/modules/graphic_objects/locales/fr_FR.po
@@ -0,0 +1,30 @@
+# French translation for scilab
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-09-09 08:39+0000\n"
+"Last-Translator: Julie PAUL <Unknown>\n"
+"Language-Team: French <fr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+"Valeur erronée de la propriété '%s' : Un nom de fonction valide attendu.\n"
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr "Le module Scilab '%s' est désactivé en mode -nogui ou -nwni.\n"
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Le module '%s' de Scilab n'est pas installé.\n"
diff --git a/modules/graphic_objects/locales/graphic_objects.pot b/modules/graphic_objects/locales/graphic_objects.pot
new file mode 100755
index 000000000..011ce04b2
--- /dev/null
+++ b/modules/graphic_objects/locales/graphic_objects.pot
@@ -0,0 +1,35 @@
+# Localization of the module graphic_objects
+# Please see in SCI/tools/localization for localization management
+# Copyright (C) 2007-2008 - INRIA
+# Copyright (C) 2008-2011 - DIGITEO
+# Copyright (C) 2012-2014 - Scilab-Enterprises
+# This file is distributed under the same license as the Scilab package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Scilab\n"
+"Report-Msgid-Bugs-To: <localization@lists.scilab.org>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"Last-Translator: Vincent COUVERT <vincent.couvert@scilab-enterprises.com>\n"
+"Language-Team: Scilab Localization <localization@lists.scilab.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Revision-Date: 2015-03-27 13:54+0100\n"
+
+# File: src/java/org/scilab/modules/graphic_objects/datatip/Datatip.java, line: 359
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+
+#
+# File: src/nographic_objects/nographic_objects.c, line: 31
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+
+#
+# File: src/nographic_objects/nographic_objects.c, line: 36
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr ""
diff --git a/modules/graphic_objects/locales/it_IT.po b/modules/graphic_objects/locales/it_IT.po
new file mode 100755
index 000000000..93665be35
--- /dev/null
+++ b/modules/graphic_objects/locales/it_IT.po
@@ -0,0 +1,32 @@
+# Italian translation for scilab
+# Copyright (c) 2015 Rosetta Contributors and Canonical Ltd 2015
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2015-02-14 21:30+0000\n"
+"Last-Translator: Carml <mighty.carml@gmail.com>\n"
+"Language-Team: Italian <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+"La proprietà \"%s\" ha un valore sbagliato: era atteso un nome di funzione "
+"valido.\n"
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+"Il modulo \"%s\" di Scilab è disabilitato in modalità -nogui o -nwni.\n"
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Il modulo \"%s\" di Scilab non è installato.\n"
diff --git a/modules/graphic_objects/locales/ja_JP.po b/modules/graphic_objects/locales/ja_JP.po
new file mode 100755
index 000000000..bd5096da6
--- /dev/null
+++ b/modules/graphic_objects/locales/ja_JP.po
@@ -0,0 +1,29 @@
+# Japanese translation for scilab
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-09-15 05:18+0000\n"
+"Last-Translator: Rui Hirokawa <Unknown>\n"
+"Language-Team: Japanese <ja@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr "'%s'プロパティの値が間違っています: 有効な関数名を指定してください.\n"
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr "-nogui または -nwni モードでは Scilab '%s' モジュールは無効です.\n"
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Scilabモジュール '%s' はインストールされていません.\n"
diff --git a/modules/graphic_objects/locales/pl_PL.po b/modules/graphic_objects/locales/pl_PL.po
new file mode 100755
index 000000000..076e63117
--- /dev/null
+++ b/modules/graphic_objects/locales/pl_PL.po
@@ -0,0 +1,29 @@
+# Polish translation for scilab
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2012-10-25 20:45+0000\n"
+"Last-Translator: Grzegorz Szostek <Unknown>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Moduł %s programu Scilab nie jest zainstalowany.\n"
diff --git a/modules/graphic_objects/locales/pt_BR.po b/modules/graphic_objects/locales/pt_BR.po
new file mode 100755
index 000000000..f52e355a2
--- /dev/null
+++ b/modules/graphic_objects/locales/pt_BR.po
@@ -0,0 +1,29 @@
+# Brazilian Portuguese translation for scilab
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-09-16 15:03+0000\n"
+"Last-Translator: B Berwanger <brunoberwanger@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Módulo '%s' não instalado.\n"
diff --git a/modules/graphic_objects/locales/ru_RU.po b/modules/graphic_objects/locales/ru_RU.po
new file mode 100755
index 000000000..5c7ea7e4d
--- /dev/null
+++ b/modules/graphic_objects/locales/ru_RU.po
@@ -0,0 +1,30 @@
+# Russian translation for scilab
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2015-03-01 15:03+0000\n"
+"Last-Translator: Stanislav V. Kroter <krotersv@gmail.com>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+"Неверное значение для свойства '%s': ожидалось корректное имя функции.\n"
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr "Модуль «%s» выключен в режимах -nogui и -nwni.\n"
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Модуль Scilab «%s» не установлен.\n"
diff --git a/modules/graphic_objects/locales/uk_UA.po b/modules/graphic_objects/locales/uk_UA.po
new file mode 100755
index 000000000..e2fb2923e
--- /dev/null
+++ b/modules/graphic_objects/locales/uk_UA.po
@@ -0,0 +1,31 @@
+# Ukrainian translation for scilab
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2014-09-30 16:48+0000\n"
+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+"Помилкове значення властивості «%s»: мало бути вказано коректну назву "
+"функції.\n"
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr "Модуль «%s» Scilab у режимі -nogui або -nwni вимкнено.\n"
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Модуль «%s» Scilab не встановлено.\n"
diff --git a/modules/graphic_objects/locales/zh_CN.po b/modules/graphic_objects/locales/zh_CN.po
new file mode 100755
index 000000000..c2decf419
--- /dev/null
+++ b/modules/graphic_objects/locales/zh_CN.po
@@ -0,0 +1,29 @@
+# Chinese (Simplified) translation for scilab
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the scilab package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: scilab\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2013-04-16 17:44+0100\n"
+"PO-Revision-Date: 2013-03-10 14:12+0000\n"
+"Last-Translator: Wesh <Unknown>\n"
+"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build 17413)\n"
+
+#, c-format
+msgid "Wrong value for '%s' property: A valid function name expected.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module disabled in -nogui or -nwni mode.\n"
+msgstr ""
+
+#, c-format
+msgid "Scilab '%s' module not installed.\n"
+msgstr "Scilab模块'%s'尚未安装。\n"
diff --git a/modules/graphic_objects/macros/buildmacros.bat b/modules/graphic_objects/macros/buildmacros.bat
new file mode 100755
index 000000000..23a827489
--- /dev/null
+++ b/modules/graphic_objects/macros/buildmacros.bat
@@ -0,0 +1,11 @@
+
+rem Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+rem Copyright (C) 2009 - DIGITEO
+rem
+rem This file must be used under the terms of the CeCILL.
+rem This source file is licensed as described in the file COPYING, which
+rem you should have received as part of this distribution. The terms
+rem are also available at
+rem http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+@..\..\..\bin\scilex -nwni -ns -e exec('buildmacros.sce');quit;
diff --git a/modules/graphic_objects/macros/buildmacros.sce b/modules/graphic_objects/macros/buildmacros.sce
new file mode 100755
index 000000000..7098ebf08
--- /dev/null
+++ b/modules/graphic_objects/macros/buildmacros.sce
@@ -0,0 +1,16 @@
+
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET <allan.cornet@inria.fr>
+//
+// This file must be used under the terms of the CeCILL.
+// This source file is licensed as described in the file COPYING, which
+// you should have received as part of this distribution. The terms
+// are also available at
+// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+if (isdef("genlib") == %f) then
+ exec(SCI+"/modules/functions/scripts/buildmacros/loadgenlib.sce");
+end
+
+//genlib("graphic_objects_datalib","SCI/modules/graphics_objects/macros",%f,%t);
+
diff --git a/modules/graphic_objects/macros/cleanmacros.bat b/modules/graphic_objects/macros/cleanmacros.bat
new file mode 100755
index 000000000..053cf56f2
--- /dev/null
+++ b/modules/graphic_objects/macros/cleanmacros.bat
@@ -0,0 +1,13 @@
+
+rem Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+rem Copyright (C) 2009 - DIGITEO
+rem
+rem This file must be used under the terms of the CeCILL.
+rem This source file is licensed as described in the file COPYING, which
+rem you should have received as part of this distribution. The terms
+rem are also available at
+rem http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+
+@del *.bin 2>NUL
+@del lib 2>NUL
+@del names 2>NUL
diff --git a/modules/graphic_objects/readme.txt b/modules/graphic_objects/readme.txt
new file mode 100755
index 000000000..785eeeca8
--- /dev/null
+++ b/modules/graphic_objects/readme.txt
@@ -0,0 +1 @@
+README File
diff --git a/modules/graphic_objects/sci_gateway/graphic_objects_gateway.xml b/modules/graphic_objects/sci_gateway/graphic_objects_gateway.xml
new file mode 100755
index 000000000..def51ccc5
--- /dev/null
+++ b/modules/graphic_objects/sci_gateway/graphic_objects_gateway.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE GATEWAY SYSTEM "../../functions/xml/gateway.dtd">
+<GATEWAY name="graphic_objects">
+ <!-- =================== -->
+ <!--
+ Scilab
+ Interface description. In this file, we define the list of the function which
+ will be available into Scilab and the link to the "native" function.
+
+ gatewayId is the position in the hashtable 'Interfaces' defined in the
+ file SCI/modules/core/src/c/callinterf.h
+
+ primitiveId is the position in the hashtable '<module>Table Tab[]' defined
+ in the file modules/<module>/sci_gateway/c/gw_<module>.c
+
+ primitiveName is the name of the Scilab function
+
+ @author Allan CORNET
+ @date DIGITEO 2010
+ ===================
+ Don't touch if you do not know what you are doing
+-->
+ <!-- =================== -->
+ <PRIMITIVE gatewayId="69" primitiveId="1" primitiveName="graphicfunction"/>
+</GATEWAY>
diff --git a/modules/graphic_objects/src/c/DllmainGraphic_objects.c b/modules/graphic_objects/src/c/DllmainGraphic_objects.c
new file mode 100755
index 000000000..271042a6f
--- /dev/null
+++ b/modules/graphic_objects/src/c/DllmainGraphic_objects.c
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <windows.h>
+/*--------------------------------------------------------------------------*/
+#pragma comment(lib,"../../../../bin/libintl.lib")
+/*--------------------------------------------------------------------------*/
+int WINAPI DllMain (HINSTANCE hInstance , DWORD reason, PVOID pvReserved)
+{
+ switch (reason)
+ {
+ case DLL_PROCESS_ATTACH:
+ break;
+ case DLL_PROCESS_DETACH:
+ break;
+ case DLL_THREAD_ATTACH:
+ break;
+ case DLL_THREAD_DETACH:
+ break;
+ }
+ return 1;
+}
+/*--------------------------------------------------------------------------*/
+
diff --git a/modules/graphic_objects/src/c/core_Import.def b/modules/graphic_objects/src/c/core_Import.def
new file mode 100755
index 000000000..2c728206b
--- /dev/null
+++ b/modules/graphic_objects/src/c/core_Import.def
@@ -0,0 +1,10 @@
+LIBRARY core.dll
+
+
+EXPORTS
+;
+com_
+getScilabMode
+callFunctionFromGateway
+MyHeapAlloc
+MyHeapFree
diff --git a/modules/graphic_objects/src/c/graphic_objects.vcxproj b/modules/graphic_objects/src/c/graphic_objects.vcxproj
new file mode 100755
index 000000000..2e5c852f3
--- /dev/null
+++ b/modules/graphic_objects/src/c/graphic_objects.vcxproj
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{30F9EE41-587B-4618-8DE7-698D3FBA4985}</ProjectGuid>
+ <RootNamespace>graphic_objects</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">sci$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">sci$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">sci$(ProjectName)</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">sci$(ProjectName)</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;../../../windows_tools/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>..\..\..\..\bin\scilocalization.lib;core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/sci$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;../../../windows_tools/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/sci$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;../../../windows_tools/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:X86 /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>..\..\..\..\bin\scilocalization.lib;core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/sci$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>
+ </LinkTimeCodeGeneration>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;../../../windows_tools/includes;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>lib /DEF:"$(ProjectDir)core_import.def" /SUBSYSTEM:WINDOWS /MACHINE:X64 /OUT:"$(ProjectDir)core.lib" 1&gt;NUL 2&gt;NUL
+
+</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>core.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/sci$(ProjectName).dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>
+ </LinkTimeCodeGeneration>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\cpp\AxesModel.cpp" />
+ <ClCompile Include="..\cpp\CurrentFigure.cpp" />
+ <ClCompile Include="..\cpp\CurrentObject.cpp" />
+ <ClCompile Include="..\cpp\CurrentSubwin.cpp" />
+ <ClCompile Include="..\cpp\Fac3DColorComputer.cpp" />
+ <ClCompile Include="..\cpp\FigureList.cpp" />
+ <ClCompile Include="..\cpp\FigureModel.cpp" />
+ <ClCompile Include="..\cpp\getConsoleIdentifier.cpp" />
+ <ClCompile Include="..\cpp\HandleManagement.cpp" />
+ <ClCompile Include="..\cpp\MatPlotDecomposer.cpp" />
+ <ClCompile Include="..\cpp\MeshData.cpp" />
+ <ClCompile Include="..\cpp\MeshFecData.cpp" />
+ <ClCompile Include="..\cpp\MeshFecDataDecomposer.cpp" />
+ <ClCompile Include="..\cpp\NgonGridMatplotDataDecomposer.cpp" />
+ <ClCompile Include="..\cpp\NormalGenerator.cpp" />
+ <ClCompile Include="..\cpp\ScilabView.cpp" />
+ <ClCompile Include="..\cpp\Texture.cpp" />
+ <ClCompile Include="..\cpp\Triangulator.cpp" />
+ <ClCompile Include="..\jni\Builder.cpp" />
+ <ClCompile Include="..\jni\CallGraphicController.cpp" />
+ <ClCompile Include="..\cpp\ColorComputer.cpp" />
+ <ClCompile Include="..\cpp\createGraphicObject.cpp" />
+ <ClCompile Include="..\cpp\Data3D.cpp" />
+ <ClCompile Include="..\cpp\DataLoader.cpp" />
+ <ClCompile Include="..\jni\CallXmlLoader.cpp" />
+ <ClCompile Include="..\jni\DataLoader_wrap.c" />
+ <ClCompile Include="..\cpp\dataModel.cpp" />
+ <ClCompile Include="..\cpp\DecompositionUtils.cpp" />
+ <ClCompile Include="..\cpp\deleteGraphicObject.cpp" />
+ <ClCompile Include="..\jni\ObjectData_wrap.c" />
+ <ClCompile Include="..\jni\PolylineData_wrap.c" />
+ <ClCompile Include="..\jni\ScilabNativeView_wrap.c" />
+ <ClCompile Include="DllmainGraphic_objects.c" />
+ <ClCompile Include="..\cpp\Fac3DDecomposer.cpp" />
+ <ClCompile Include="..\cpp\getGraphicObjectProperty.cpp" />
+ <ClCompile Include="..\cpp\NgonData.cpp" />
+ <ClCompile Include="..\cpp\NgonGeneralData.cpp" />
+ <ClCompile Include="..\cpp\NgonGridData.cpp" />
+ <ClCompile Include="..\cpp\NgonGridDataDecomposer.cpp" />
+ <ClCompile Include="..\cpp\NgonGridGrayplotDataDecomposer.cpp" />
+ <ClCompile Include="..\cpp\NgonGridMatplotData.cpp" />
+ <ClCompile Include="..\cpp\NgonPolylineData.cpp" />
+ <ClCompile Include="..\cpp\Plot3DDecomposer.cpp" />
+ <ClCompile Include="..\cpp\PolylineDecomposer.cpp" />
+ <ClCompile Include="..\cpp\setGraphicObjectProperty.cpp" />
+ <ClCompile Include="..\jni\SurfaceData_wrap.c" />
+ <ClCompile Include="..\cpp\createObjectData.cpp" />
+ <ClCompile Include="..\cpp\pickSurface.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\includes\Fac3DColorComputer.hxx" />
+ <ClInclude Include="..\..\includes\FigureList.h" />
+ <ClInclude Include="..\..\includes\getConsoleIdentifier.h" />
+ <ClInclude Include="..\..\includes\getGraphicObjectProperty.h" />
+ <ClInclude Include="..\..\includes\graphicObjectProperties.h" />
+ <ClInclude Include="..\..\includes\Matplot.h" />
+ <ClInclude Include="..\..\includes\MatPlotDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\NgonGridMatplotDataDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\returnType.h" />
+ <ClInclude Include="..\..\includes\ScilabView.hxx" />
+ <ClInclude Include="..\..\includes\setGraphicObjectProperty.h" />
+ <ClInclude Include="..\..\includes\Texture.hxx" />
+ <ClInclude Include="..\..\includes\Triangulator.hxx" />
+ <ClInclude Include="..\jni\Builder.hxx" />
+ <ClInclude Include="..\jni\CallGraphicController.hxx" />
+ <ClInclude Include="..\..\includes\createGraphicObject.h" />
+ <ClInclude Include="..\..\includes\Data3D.hxx" />
+ <ClInclude Include="..\..\includes\DataController.hxx" />
+ <ClInclude Include="..\..\includes\DataProperties.hxx" />
+ <ClInclude Include="..\..\includes\DecompositionUtils.hxx" />
+ <ClInclude Include="..\..\includes\deleteGraphicObject.h" />
+ <ClInclude Include="..\..\includes\dynlib_graphic_objects.h" />
+ <ClInclude Include="..\..\includes\Fac3DDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\NgonData.hxx" />
+ <ClInclude Include="..\..\includes\NgonGeneralData.hxx" />
+ <ClInclude Include="..\..\includes\NgonGridData.hxx" />
+ <ClInclude Include="..\..\includes\NgonGridDataDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\NgonGridGrayplotDataDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\NgonGridMatplotData.hxx" />
+ <ClInclude Include="..\..\includes\NgonPolylineData.hxx" />
+ <ClInclude Include="..\..\includes\NormalGenerator.hxx" />
+ <ClInclude Include="..\..\includes\Plot3DDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\PolylineDecomposer.hxx" />
+ <ClInclude Include="..\..\includes\TriangleMeshData.hxx" />
+ <ClInclude Include="..\..\includes\TriangleMeshFecDataDecomposer.hxx" />
+ <ClInclude Include="..\jni\CallXmlLoader.hxx" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="..\jni\ObjectData.i" />
+ <None Include="..\jni\PolylineData.i" />
+ <None Include="..\jni\SurfaceData.i" />
+ <None Include="..\jni\ScilabNativeView.i" />
+ <None Include="core_import.def" />
+ <None Include="..\jni\DataLoader.i" />
+ <None Include="..\..\graphic_objects.iss" />
+ <None Include="..\..\sci_gateway\graphic_objects_gateway.xml" />
+ <None Include="..\..\Makefile.am" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\api_scilab\api_scilab.vcxproj">
+ <Project>{43c5bab1-1dca-4743-a183-77e0d42fe7d0}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\commons\src\c\commons.vcxproj">
+ <Project>{eca09a1e-6d12-4a47-92e1-a671c181df77}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\jvm\libjvm.vcxproj">
+ <Project>{8ba2dda8-bd04-4d4d-8ee6-6caa955f7470}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\output_stream\src\c\output_stream.vcxproj">
+ <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\windows_tools\src\c\scilab_windows\scilab_windows.vcxproj">
+ <Project>{8028f371-6a94-4a26-8804-6e7f05f1d1aa}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/graphic_objects/src/c/graphic_objects.vcxproj.filters b/modules/graphic_objects/src/c/graphic_objects.vcxproj.filters
new file mode 100755
index 000000000..b61c492b9
--- /dev/null
+++ b/modules/graphic_objects/src/c/graphic_objects.vcxproj.filters
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{f79df525-a28f-468e-baef-7a11c09d48b6}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{7d5a274b-0f38-4a01-9b9c-76921537ed71}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="localization">
+ <UniqueIdentifier>{5ffd4074-3898-45da-bc72-d7e2f4d603af}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{b65a6b60-178c-4b9e-9564-39f5703fd8bd}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies\Imports">
+ <UniqueIdentifier>{426706e8-160d-467c-a553-370ddc7e5bdd}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Swig Files">
+ <UniqueIdentifier>{f978b9df-c998-47b7-9c55-5979f3804a5c}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\jni\CallGraphicController.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\ColorComputer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\createGraphicObject.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\Data3D.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\DataLoader.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\DataLoader_wrap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\dataModel.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\DecompositionUtils.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\deleteGraphicObject.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="DllmainGraphic_objects.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\Fac3DDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\getGraphicObjectProperty.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonGeneralData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonGridData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonGridDataDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonGridGrayplotDataDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonGridMatplotData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonPolylineData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NormalGenerator.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\Plot3DDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\PolylineDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\setGraphicObjectProperty.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\NgonGridMatplotDataDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\ScilabView.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\ScilabNativeView_wrap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\AxesModel.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\CurrentFigure.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\CurrentObject.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\CurrentSubwin.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\FigureList.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\FigureModel.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\HandleManagement.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\Fac3DColorComputer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\getConsoleIdentifier.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\Triangulator.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\MatPlotDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\PolylineData_wrap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\SurfaceData_wrap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\createObjectData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\pickSurface.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\ObjectData_wrap.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\Texture.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\Builder.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\jni\CallXmlLoader.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\MeshData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\MeshFecData.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\cpp\MeshFecDataDecomposer.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\jni\CallGraphicController.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\createGraphicObject.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Data3D.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\DataController.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\DataProperties.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\DecompositionUtils.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\deleteGraphicObject.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\dynlib_graphic_objects.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Fac3DDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonData.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonGeneralData.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonGridData.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonGridDataDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonGridGrayplotDataDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonGridMatplotData.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonPolylineData.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NormalGenerator.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Plot3DDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\PolylineDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\TriangleMeshData.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\TriangleMeshFecDataDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\NgonGridMatplotDataDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\FigureList.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\ScilabView.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Fac3DColorComputer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\getConsoleIdentifier.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\getGraphicObjectProperty.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\graphicObjectProperties.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\returnType.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\setGraphicObjectProperty.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Triangulator.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\MatPlotDecomposer.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Matplot.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\includes\Texture.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\jni\Builder.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\jni\CallXmlLoader.hxx">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="core_import.def">
+ <Filter>Libraries Dependencies\Imports</Filter>
+ </None>
+ <None Include="..\jni\DataLoader.i">
+ <Filter>Swig Files</Filter>
+ </None>
+ <None Include="..\..\graphic_objects.iss" />
+ <None Include="..\..\sci_gateway\graphic_objects_gateway.xml" />
+ <None Include="..\..\Makefile.am" />
+ <None Include="..\jni\ScilabNativeView.i">
+ <Filter>Swig Files</Filter>
+ </None>
+ <None Include="..\jni\PolylineData.i">
+ <Filter>Swig Files</Filter>
+ </None>
+ <None Include="..\jni\SurfaceData.i">
+ <Filter>Swig Files</Filter>
+ </None>
+ <None Include="..\jni\ObjectData.i">
+ <Filter>Swig Files</Filter>
+ </None>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/modules/graphic_objects/src/cpp/.deps/.dirstamp b/modules/graphic_objects/src/cpp/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/.dirstamp
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-AxesModel.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-AxesModel.Plo
new file mode 100755
index 000000000..b02afb02d
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-AxesModel.Plo
@@ -0,0 +1,265 @@
+src/cpp/libscigraphic_objects_la-AxesModel.lo: src/cpp/AxesModel.cpp \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/ScilabView.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h includes/AxesModel.h \
+ ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+includes/AxesModel.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ColorComputer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ColorComputer.Plo
new file mode 100755
index 000000000..4b374b44a
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ColorComputer.Plo
@@ -0,0 +1,138 @@
+src/cpp/libscigraphic_objects_la-ColorComputer.lo: \
+ src/cpp/ColorComputer.cpp /usr/include/stdc-predef.h \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ /usr/include/math.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ includes/getGraphicObjectProperty.h /usr/include/stdlib.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+/usr/include/math.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentFigure.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentFigure.Plo
new file mode 100755
index 000000000..9ea22a9b2
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentFigure.Plo
@@ -0,0 +1,266 @@
+src/cpp/libscigraphic_objects_la-CurrentFigure.lo: \
+ src/cpp/CurrentFigure.cpp /usr/include/stdc-predef.h \
+ includes/ScilabView.hxx /usr/include/c++/5/map \
+ /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/core/includes/BOOL.h includes/CurrentFigure.h
+
+/usr/include/stdc-predef.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/CurrentFigure.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentObject.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentObject.Plo
new file mode 100755
index 000000000..ee92a86fe
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentObject.Plo
@@ -0,0 +1,316 @@
+src/cpp/libscigraphic_objects_la-CurrentObject.lo: \
+ src/cpp/CurrentObject.cpp /usr/include/stdc-predef.h \
+ includes/ScilabView.hxx /usr/include/c++/5/map \
+ /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/CurrentObject.h ../../modules/core/includes/BOOL.h \
+ includes/setGraphicObjectProperty.h includes/graphicObjectProperties.h \
+ includes/CurrentObject.h
+
+/usr/include/stdc-predef.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
+
+includes/CurrentObject.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentSubwin.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentSubwin.Plo
new file mode 100755
index 000000000..3e124c971
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-CurrentSubwin.Plo
@@ -0,0 +1,258 @@
+src/cpp/libscigraphic_objects_la-CurrentSubwin.lo: \
+ src/cpp/CurrentSubwin.cpp /usr/include/stdc-predef.h \
+ includes/ScilabView.hxx /usr/include/c++/5/map \
+ /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h includes/CurrentSubwin.h
+
+/usr/include/stdc-predef.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentSubwin.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Data3D.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Data3D.Plo
new file mode 100755
index 000000000..ca0567944
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Data3D.Plo
@@ -0,0 +1,243 @@
+src/cpp/libscigraphic_objects_la-Data3D.lo: src/cpp/Data3D.cpp \
+ /usr/include/stdc-predef.h includes/Data3D.hxx /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/Data3D.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DataLoader.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DataLoader.Plo
new file mode 100755
index 000000000..97b4a09be
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DataLoader.Plo
@@ -0,0 +1,339 @@
+src/cpp/libscigraphic_objects_la-DataLoader.lo: src/cpp/DataLoader.cpp \
+ /usr/include/stdc-predef.h /usr/include/c++/5/cstring \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/string.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/DataLoader.hxx includes/MatPlotDecomposer.hxx \
+ includes/Fac3DDecomposer.hxx /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ includes/NgonGridMatplotData.hxx includes/NgonGridData.hxx \
+ includes/NgonData.hxx includes/Data3D.hxx includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/Matplot.h \
+ includes/dynlib_graphic_objects.h \
+ includes/NgonGridGrayplotDataDecomposer.hxx \
+ includes/NgonGridDataDecomposer.hxx \
+ includes/NgonGridMatplotDataDecomposer.hxx includes/ColorComputer.hxx \
+ includes/DecompositionUtils.hxx includes/Plot3DDecomposer.hxx \
+ includes/PolylineDecomposer.hxx includes/MeshFecDataDecomposer.hxx \
+ includes/NormalGenerator.hxx includes/getGraphicObjectProperty.h \
+ includes/returnType.h includes/CurrentObject.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/c++/5/cstring:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/string.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/DataLoader.hxx:
+
+includes/MatPlotDecomposer.hxx:
+
+includes/Fac3DDecomposer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/NgonGridMatplotData.hxx:
+
+includes/NgonGridData.hxx:
+
+includes/NgonData.hxx:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/Matplot.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/NgonGridGrayplotDataDecomposer.hxx:
+
+includes/NgonGridDataDecomposer.hxx:
+
+includes/NgonGridMatplotDataDecomposer.hxx:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/Plot3DDecomposer.hxx:
+
+includes/PolylineDecomposer.hxx:
+
+includes/MeshFecDataDecomposer.hxx:
+
+includes/NormalGenerator.hxx:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DecompositionUtils.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DecompositionUtils.Plo
new file mode 100755
index 000000000..62ada5560
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-DecompositionUtils.Plo
@@ -0,0 +1,56 @@
+src/cpp/libscigraphic_objects_la-DecompositionUtils.lo: \
+ src/cpp/DecompositionUtils.cpp /usr/include/stdc-predef.h \
+ includes/DecompositionUtils.hxx /usr/include/math.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/float.h
+
+/usr/include/stdc-predef.h:
+
+includes/DecompositionUtils.hxx:
+
+/usr/include/math.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/float.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DColorComputer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DColorComputer.Plo
new file mode 100755
index 000000000..91ead5855
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DColorComputer.Plo
@@ -0,0 +1,260 @@
+src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo: \
+ src/cpp/Fac3DColorComputer.cpp /usr/include/stdc-predef.h \
+ includes/DecompositionUtils.hxx includes/Fac3DColorComputer.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h
+
+/usr/include/stdc-predef.h:
+
+includes/DecompositionUtils.hxx:
+
+includes/Fac3DColorComputer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DDecomposer.Plo
new file mode 100755
index 000000000..a5d111593
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Fac3DDecomposer.Plo
@@ -0,0 +1,287 @@
+src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo: \
+ src/cpp/Fac3DDecomposer.cpp /usr/include/stdc-predef.h \
+ includes/DecompositionUtils.hxx includes/ColorComputer.hxx \
+ includes/DecompositionUtils.hxx includes/Fac3DColorComputer.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/Fac3DDecomposer.hxx \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/DecompositionUtils.hxx:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/Fac3DColorComputer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/Fac3DDecomposer.hxx:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureList.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureList.Plo
new file mode 100755
index 000000000..75dc8c9d1
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureList.Plo
@@ -0,0 +1,265 @@
+src/cpp/libscigraphic_objects_la-FigureList.lo: src/cpp/FigureList.cpp \
+ /usr/include/stdc-predef.h includes/ScilabView.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h includes/FigureList.h \
+ ../../modules/core/includes/BOOL.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h
+
+/usr/include/stdc-predef.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+includes/FigureList.h:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureModel.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureModel.Plo
new file mode 100755
index 000000000..36850541d
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-FigureModel.Plo
@@ -0,0 +1,265 @@
+src/cpp/libscigraphic_objects_la-FigureModel.lo: src/cpp/FigureModel.cpp \
+ /usr/include/stdc-predef.h /usr/include/string.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/ScilabView.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h includes/FigureModel.h \
+ ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+includes/FigureModel.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-HandleManagement.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-HandleManagement.Plo
new file mode 100755
index 000000000..e5f01bc9e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-HandleManagement.Plo
@@ -0,0 +1,258 @@
+src/cpp/libscigraphic_objects_la-HandleManagement.lo: \
+ src/cpp/HandleManagement.cpp /usr/include/stdc-predef.h \
+ includes/ScilabView.hxx /usr/include/c++/5/map \
+ /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/string /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/dynlib_graphic_objects.h includes/HandleManagement.h
+
+/usr/include/stdc-predef.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+includes/HandleManagement.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MatPlotDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MatPlotDecomposer.Plo
new file mode 100755
index 000000000..419a279bc
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MatPlotDecomposer.Plo
@@ -0,0 +1,348 @@
+src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo: \
+ src/cpp/MatPlotDecomposer.cpp /usr/include/stdc-predef.h \
+ includes/DecompositionUtils.hxx includes/MatPlotDecomposer.hxx \
+ includes/DataProperties.hxx includes/ColorComputer.hxx \
+ includes/DecompositionUtils.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/c++/5/cstring \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/setGraphicObjectProperty.h \
+ includes/graphicObjectProperties.h includes/Matplot.h
+
+/usr/include/stdc-predef.h:
+
+includes/DecompositionUtils.hxx:
+
+includes/MatPlotDecomposer.hxx:
+
+includes/DataProperties.hxx:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/c++/5/cstring:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
+
+includes/Matplot.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshData.Plo
new file mode 100755
index 000000000..847fcd182
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshData.Plo
@@ -0,0 +1,253 @@
+src/cpp/libscigraphic_objects_la-MeshData.lo: src/cpp/MeshData.cpp \
+ /usr/include/stdc-predef.h includes/MeshData.hxx includes/Data3D.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/DataProperties.hxx \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/MeshData.hxx:
+
+includes/Data3D.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/DataProperties.hxx:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecData.Plo
new file mode 100755
index 000000000..6475955e0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecData.Plo
@@ -0,0 +1,258 @@
+src/cpp/libscigraphic_objects_la-MeshFecData.lo: src/cpp/MeshFecData.cpp \
+ /usr/include/stdc-predef.h includes/MeshFecData.hxx includes/Data3D.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/MeshData.hxx \
+ includes/MeshData.hxx includes/DataProperties.hxx /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/MeshFecData.hxx:
+
+includes/Data3D.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/MeshData.hxx:
+
+includes/MeshData.hxx:
+
+includes/DataProperties.hxx:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecDataDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecDataDecomposer.Plo
new file mode 100755
index 000000000..1f24bf2e6
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-MeshFecDataDecomposer.Plo
@@ -0,0 +1,339 @@
+src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo: \
+ src/cpp/MeshFecDataDecomposer.cpp /usr/include/stdc-predef.h \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ includes/DecompositionUtils.hxx includes/MeshFecDataDecomposer.hxx \
+ /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/MeshFecDataDecomposer.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonData.Plo
new file mode 100755
index 000000000..826984bc1
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonData.Plo
@@ -0,0 +1,254 @@
+src/cpp/libscigraphic_objects_la-NgonData.lo: src/cpp/NgonData.cpp \
+ /usr/include/stdc-predef.h includes/NgonData.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/Data3D.hxx \
+ includes/DataProperties.hxx ../../modules/core/includes/BOOL.h \
+ /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/DataProperties.hxx \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/NgonData.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/DataProperties.hxx:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGeneralData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGeneralData.Plo
new file mode 100755
index 000000000..07dad7493
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGeneralData.Plo
@@ -0,0 +1,310 @@
+src/cpp/libscigraphic_objects_la-NgonGeneralData.lo: \
+ src/cpp/NgonGeneralData.cpp /usr/include/stdc-predef.h \
+ /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc includes/NgonGeneralData.hxx \
+ includes/NgonData.hxx includes/Data3D.hxx includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/DataProperties.hxx \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/DataProperties.hxx:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridData.Plo
new file mode 100755
index 000000000..87a942a55
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridData.Plo
@@ -0,0 +1,291 @@
+src/cpp/libscigraphic_objects_la-NgonGridData.lo: \
+ src/cpp/NgonGridData.cpp /usr/include/stdc-predef.h \
+ includes/NgonGridData.hxx /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/NgonData.hxx \
+ includes/Data3D.hxx includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/NgonGridData.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/NgonData.hxx:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridDataDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridDataDecomposer.Plo
new file mode 100755
index 000000000..8f8114106
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridDataDecomposer.Plo
@@ -0,0 +1,280 @@
+src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo: \
+ src/cpp/NgonGridDataDecomposer.cpp /usr/include/stdc-predef.h \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ includes/DecompositionUtils.hxx includes/NgonGridDataDecomposer.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/NgonGridDataDecomposer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo
new file mode 100755
index 000000000..51d4eb9f3
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.Plo
@@ -0,0 +1,288 @@
+src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo: \
+ src/cpp/NgonGridGrayplotDataDecomposer.cpp /usr/include/stdc-predef.h \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ includes/DecompositionUtils.hxx \
+ includes/NgonGridGrayplotDataDecomposer.hxx /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ includes/NgonGridDataDecomposer.hxx /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/NgonGridGrayplotDataDecomposer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/NgonGridDataDecomposer.hxx:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotData.Plo
new file mode 100755
index 000000000..486676515
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotData.Plo
@@ -0,0 +1,326 @@
+src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo: \
+ src/cpp/NgonGridMatplotData.cpp /usr/include/stdc-predef.h \
+ includes/NgonGridMatplotData.hxx /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/NgonGridData.hxx \
+ includes/NgonData.hxx includes/Data3D.hxx includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/Matplot.h \
+ includes/dynlib_graphic_objects.h includes/Texture.hxx \
+ /usr/include/c++/5/climits \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/NgonGridMatplotData.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/NgonGridData.hxx:
+
+includes/NgonData.hxx:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/Matplot.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/Texture.hxx:
+
+/usr/include/c++/5/climits:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/xopen_lim.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo
new file mode 100755
index 000000000..e87d5dcee
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.Plo
@@ -0,0 +1,350 @@
+src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo: \
+ src/cpp/NgonGridMatplotDataDecomposer.cpp /usr/include/stdc-predef.h \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ includes/DecompositionUtils.hxx includes/NgonGridDataDecomposer.hxx \
+ /usr/include/c++/5/string \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ includes/NgonGridMatplotDataDecomposer.hxx includes/ColorComputer.hxx \
+ includes/Matplot.h includes/dynlib_graphic_objects.h \
+ /usr/include/c++/5/iostream /usr/include/c++/5/ostream \
+ /usr/include/c++/5/ios /usr/include/c++/5/bits/ios_base.h \
+ /usr/include/c++/5/bits/locale_classes.h \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/CurrentObject.h ../../modules/core/includes/BOOL.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/NgonGridDataDecomposer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/NgonGridMatplotDataDecomposer.hxx:
+
+includes/ColorComputer.hxx:
+
+includes/Matplot.h:
+
+includes/dynlib_graphic_objects.h:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonPolylineData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonPolylineData.Plo
new file mode 100755
index 000000000..fb40920d3
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NgonPolylineData.Plo
@@ -0,0 +1,313 @@
+src/cpp/libscigraphic_objects_la-NgonPolylineData.lo: \
+ src/cpp/NgonPolylineData.cpp /usr/include/stdc-predef.h \
+ /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc includes/NgonPolylineData.hxx \
+ includes/NgonGeneralData.hxx includes/NgonData.hxx includes/Data3D.hxx \
+ includes/DataProperties.hxx ../../modules/core/includes/BOOL.h \
+ /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/DataProperties.hxx \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+includes/NgonPolylineData.hxx:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/DataProperties.hxx:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NormalGenerator.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NormalGenerator.Plo
new file mode 100755
index 000000000..42c182b59
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-NormalGenerator.Plo
@@ -0,0 +1,54 @@
+src/cpp/libscigraphic_objects_la-NormalGenerator.lo: \
+ src/cpp/NormalGenerator.cpp /usr/include/stdc-predef.h \
+ /usr/include/math.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h \
+ includes/NormalGenerator.hxx
+
+/usr/include/stdc-predef.h:
+
+/usr/include/math.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+includes/NormalGenerator.hxx:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Plot3DDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Plot3DDecomposer.Plo
new file mode 100755
index 000000000..a6d019c5b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Plot3DDecomposer.Plo
@@ -0,0 +1,290 @@
+src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo: \
+ src/cpp/Plot3DDecomposer.cpp /usr/include/stdc-predef.h \
+ /usr/include/c++/5/cstring \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/string.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ includes/DecompositionUtils.hxx includes/Plot3DDecomposer.hxx \
+ includes/NgonGridDataDecomposer.hxx /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/c++/5/cstring:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/string.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/DecompositionUtils.hxx:
+
+includes/Plot3DDecomposer.hxx:
+
+includes/NgonGridDataDecomposer.hxx:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-PolylineDecomposer.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-PolylineDecomposer.Plo
new file mode 100755
index 000000000..b12d98fc0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-PolylineDecomposer.Plo
@@ -0,0 +1,436 @@
+src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo: \
+ src/cpp/PolylineDecomposer.cpp /usr/include/stdc-predef.h \
+ /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc includes/DecompositionUtils.hxx \
+ includes/PolylineDecomposer.hxx /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/Triangulator.hxx \
+ /usr/include/c++/5/algorithm /usr/include/c++/5/utility \
+ /usr/include/c++/5/bits/stl_relops.h /usr/include/c++/5/bits/stl_algo.h \
+ /usr/include/c++/5/cstdlib /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ /usr/include/c++/5/bits/algorithmfwd.h \
+ /usr/include/c++/5/bits/stl_heap.h /usr/include/c++/5/bits/stl_tempbuf.h \
+ /usr/include/c++/5/bits/stl_construct.h /usr/include/c++/5/limits \
+ /usr/include/c++/5/list /usr/include/c++/5/bits/stl_list.h \
+ /usr/include/c++/5/bits/list.tcc /usr/include/c++/5/vector \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ includes/ColorComputer.hxx includes/DecompositionUtils.hxx \
+ /usr/include/math.h /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+includes/DecompositionUtils.hxx:
+
+includes/PolylineDecomposer.hxx:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/Triangulator.hxx:
+
+/usr/include/c++/5/algorithm:
+
+/usr/include/c++/5/utility:
+
+/usr/include/c++/5/bits/stl_relops.h:
+
+/usr/include/c++/5/bits/stl_algo.h:
+
+/usr/include/c++/5/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/c++/5/bits/algorithmfwd.h:
+
+/usr/include/c++/5/bits/stl_heap.h:
+
+/usr/include/c++/5/bits/stl_tempbuf.h:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/limits:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+includes/ColorComputer.hxx:
+
+includes/DecompositionUtils.hxx:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ScilabView.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ScilabView.Plo
new file mode 100755
index 000000000..fdffbe575
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-ScilabView.Plo
@@ -0,0 +1,459 @@
+src/cpp/libscigraphic_objects_la-ScilabView.lo: src/cpp/ScilabView.cpp \
+ /usr/include/stdc-predef.h /usr/include/c++/5/algorithm \
+ /usr/include/c++/5/utility \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stl_relops.h /usr/include/c++/5/bits/stl_pair.h \
+ /usr/include/c++/5/bits/move.h /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/stl_algo.h /usr/include/c++/5/cstdlib \
+ /usr/include/stdlib.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ /usr/include/c++/5/bits/algorithmfwd.h \
+ /usr/include/c++/5/bits/stl_heap.h /usr/include/c++/5/bits/stl_tempbuf.h \
+ /usr/include/c++/5/bits/stl_construct.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/iostream \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/postypes.h /usr/include/c++/5/cwchar \
+ /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/c++/5/bits/ios_base.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/c++/5/map \
+ /usr/include/c++/5/bits/stl_tree.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/cstring /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h \
+ /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/local_lim.h \
+ /usr/include/linux/limits.h \
+ /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h includes/ScilabView.hxx \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ includes/dynlib_graphic_objects.h src/jni/CallGraphicController.hxx \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/libio.h \
+ /usr/include/_G_config.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ ../../modules/commons/src/jni/GiwsException.hxx includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/createGraphicObject.h \
+ includes/setGraphicObjectProperty.h includes/returnType.h \
+ includes/CurrentObject.h includes/getGraphicObjectProperty.h \
+ includes/graphicObjectProperties.h \
+ ../../modules/jvm/includes/getScilabJavaVM.h \
+ includes/deleteGraphicObject.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/c++/5/algorithm:
+
+/usr/include/c++/5/utility:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stl_relops.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/stl_algo.h:
+
+/usr/include/c++/5/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/c++/5/bits/algorithmfwd.h:
+
+/usr/include/c++/5/bits/stl_heap.h:
+
+/usr/include/c++/5/bits/stl_tempbuf.h:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/cstring:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/limits.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix1_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/x86_64-linux-gnu/bits/posix2_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/xopen_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+includes/dynlib_graphic_objects.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/createGraphicObject.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
+
+../../modules/jvm/includes/getScilabJavaVM.h:
+
+includes/deleteGraphicObject.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Texture.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Texture.Plo
new file mode 100755
index 000000000..68ee71fd9
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Texture.Plo
@@ -0,0 +1,46 @@
+src/cpp/libscigraphic_objects_la-Texture.lo: src/cpp/Texture.cpp \
+ /usr/include/stdc-predef.h includes/Texture.hxx includes/Matplot.h \
+ includes/dynlib_graphic_objects.h /usr/include/c++/5/cstring \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/string.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string3.h
+
+/usr/include/stdc-predef.h:
+
+includes/Texture.hxx:
+
+includes/Matplot.h:
+
+includes/dynlib_graphic_objects.h:
+
+/usr/include/c++/5/cstring:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/string.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Triangulator.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Triangulator.Plo
new file mode 100755
index 000000000..223b6f49b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-Triangulator.Plo
@@ -0,0 +1,391 @@
+src/cpp/libscigraphic_objects_la-Triangulator.lo: \
+ src/cpp/Triangulator.cpp /usr/include/stdc-predef.h \
+ includes/Triangulator.hxx /usr/include/c++/5/algorithm \
+ /usr/include/c++/5/utility \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/stl_relops.h /usr/include/c++/5/bits/stl_pair.h \
+ /usr/include/c++/5/bits/move.h /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/stl_algo.h /usr/include/c++/5/cstdlib \
+ /usr/include/stdlib.h /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ /usr/include/c++/5/bits/algorithmfwd.h \
+ /usr/include/c++/5/bits/stl_heap.h /usr/include/c++/5/bits/stl_tempbuf.h \
+ /usr/include/c++/5/bits/stl_construct.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/limits \
+ /usr/include/c++/5/list /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc \
+ /usr/include/c++/5/iostream /usr/include/c++/5/ostream \
+ /usr/include/c++/5/ios /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/bits/stringfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/c++/5/bits/ios_base.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h
+
+/usr/include/stdc-predef.h:
+
+includes/Triangulator.hxx:
+
+/usr/include/c++/5/algorithm:
+
+/usr/include/c++/5/utility:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/stl_relops.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/stl_algo.h:
+
+/usr/include/c++/5/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/c++/5/bits/algorithmfwd.h:
+
+/usr/include/c++/5/bits/stl_heap.h:
+
+/usr/include/c++/5/bits/stl_tempbuf.h:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/limits:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createGraphicObject.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createGraphicObject.Plo
new file mode 100755
index 000000000..a248db518
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createGraphicObject.Plo
@@ -0,0 +1,417 @@
+src/cpp/libscigraphic_objects_la-createGraphicObject.lo: \
+ src/cpp/createGraphicObject.cpp /usr/include/stdc-predef.h \
+ includes/createGraphicObject.h includes/dynlib_graphic_objects.h \
+ ../../modules/core/includes/BOOL.h \
+ ../../modules/jvm/includes/getScilabJavaVM.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ includes/getGraphicObjectProperty.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/CurrentObject.h includes/setGraphicObjectProperty.h \
+ includes/FigureModel.h includes/AxesModel.h includes/CurrentSubwin.h \
+ src/jni/CallGraphicController.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/c++/5/bits/ios_base.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ ../../modules/commons/src/jni/GiwsException.hxx \
+ src/jni/CallXmlLoader.hxx src/jni/Builder.hxx \
+ includes/DataController.hxx includes/DataModel.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_map.h /usr/include/c++/5/bits/stl_multimap.h \
+ includes/Data3D.hxx includes/DataProperties.hxx \
+ includes/NgonGeneralData.hxx includes/NgonData.hxx \
+ includes/NgonGridData.hxx includes/NgonGridMatplotData.hxx \
+ includes/Matplot.h includes/NgonPolylineData.hxx includes/MeshData.hxx \
+ includes/MeshFecData.hxx includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/createGraphicObject.h:
+
+includes/dynlib_graphic_objects.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/jvm/includes/getScilabJavaVM.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/FigureModel.h:
+
+includes/AxesModel.h:
+
+includes/CurrentSubwin.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
+
+src/jni/CallXmlLoader.hxx:
+
+src/jni/Builder.hxx:
+
+includes/DataController.hxx:
+
+includes/DataModel.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/NgonGridData.hxx:
+
+includes/NgonGridMatplotData.hxx:
+
+includes/Matplot.h:
+
+includes/NgonPolylineData.hxx:
+
+includes/MeshData.hxx:
+
+includes/MeshFecData.hxx:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createObjectData.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createObjectData.Plo
new file mode 100755
index 000000000..703fabfb2
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-createObjectData.Plo
@@ -0,0 +1,140 @@
+src/cpp/libscigraphic_objects_la-createObjectData.lo: \
+ src/cpp/createObjectData.cpp /usr/include/stdc-predef.h \
+ /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/createGraphicObject.h includes/dynlib_graphic_objects.h \
+ ../../modules/core/includes/BOOL.h includes/deleteGraphicObject.h \
+ includes/returnType.h includes/getGraphicObjectProperty.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/CurrentObject.h includes/setGraphicObjectProperty.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/createGraphicObject.h:
+
+includes/dynlib_graphic_objects.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/deleteGraphicObject.h:
+
+includes/returnType.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-dataModel.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-dataModel.Plo
new file mode 100755
index 000000000..123955188
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-dataModel.Plo
@@ -0,0 +1,283 @@
+src/cpp/libscigraphic_objects_la-dataModel.lo: src/cpp/dataModel.cpp \
+ /usr/include/stdc-predef.h includes/DataModel.hxx /usr/include/c++/5/map \
+ /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/memoryfwd.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/ext/alloc_traits.h /usr/include/c++/5/bits/stl_map.h \
+ /usr/include/c++/5/bits/stl_multimap.h \
+ /usr/include/c++/5/bits/range_access.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/char_traits.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/iosfwd \
+ /usr/include/c++/5/cctype /usr/include/ctype.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/basic_string.tcc includes/Data3D.hxx \
+ includes/DataProperties.hxx ../../modules/core/includes/BOOL.h \
+ /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h includes/NgonGeneralData.hxx \
+ includes/NgonData.hxx includes/NgonGridData.hxx \
+ includes/NgonGridMatplotData.hxx includes/Matplot.h \
+ includes/dynlib_graphic_objects.h includes/NgonPolylineData.hxx \
+ includes/MeshData.hxx includes/MeshFecData.hxx \
+ includes/graphicObjectProperties.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h
+
+/usr/include/stdc-predef.h:
+
+includes/DataModel.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/NgonGridData.hxx:
+
+includes/NgonGridMatplotData.hxx:
+
+includes/Matplot.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/NgonPolylineData.hxx:
+
+includes/MeshData.hxx:
+
+includes/MeshFecData.hxx:
+
+includes/graphicObjectProperties.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-deleteGraphicObject.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-deleteGraphicObject.Plo
new file mode 100755
index 000000000..66d58f005
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-deleteGraphicObject.Plo
@@ -0,0 +1,396 @@
+src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo: \
+ src/cpp/deleteGraphicObject.cpp /usr/include/stdc-predef.h \
+ includes/deleteGraphicObject.h includes/dynlib_graphic_objects.h \
+ ../../modules/jvm/includes/getScilabJavaVM.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ src/jni/CallGraphicController.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/commons/src/jni/GiwsException.hxx \
+ includes/DataController.hxx includes/DataModel.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_map.h /usr/include/c++/5/bits/stl_multimap.h \
+ includes/Data3D.hxx includes/DataProperties.hxx \
+ ../../modules/core/includes/BOOL.h includes/NgonGeneralData.hxx \
+ includes/NgonData.hxx includes/NgonGridData.hxx \
+ includes/NgonGridMatplotData.hxx includes/Matplot.h \
+ includes/NgonPolylineData.hxx includes/MeshData.hxx \
+ includes/MeshFecData.hxx includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+includes/deleteGraphicObject.h:
+
+includes/dynlib_graphic_objects.h:
+
+../../modules/jvm/includes/getScilabJavaVM.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
+
+includes/DataController.hxx:
+
+includes/DataModel.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+../../modules/core/includes/BOOL.h:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/NgonGridData.hxx:
+
+includes/NgonGridMatplotData.hxx:
+
+includes/Matplot.h:
+
+includes/NgonPolylineData.hxx:
+
+includes/MeshData.hxx:
+
+includes/MeshFecData.hxx:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getConsoleIdentifier.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getConsoleIdentifier.Plo
new file mode 100755
index 000000000..2767c9fd4
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getConsoleIdentifier.Plo
@@ -0,0 +1,351 @@
+src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo: \
+ src/cpp/getConsoleIdentifier.cpp /usr/include/stdc-predef.h \
+ ../../modules/jvm/includes/getScilabJavaVM.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ includes/getConsoleIdentifier.h includes/dynlib_graphic_objects.h \
+ src/jni/CallGraphicController.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/wchar2.h \
+ /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/commons/src/jni/GiwsException.hxx
+
+/usr/include/stdc-predef.h:
+
+../../modules/jvm/includes/getScilabJavaVM.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+includes/getConsoleIdentifier.h:
+
+includes/dynlib_graphic_objects.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getGraphicObjectProperty.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getGraphicObjectProperty.Plo
new file mode 100755
index 000000000..570102841
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-getGraphicObjectProperty.Plo
@@ -0,0 +1,429 @@
+src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo: \
+ src/cpp/getGraphicObjectProperty.cpp /usr/include/stdc-predef.h \
+ /usr/include/stdlib.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h \
+ ../../modules/jvm/includes/getScilabJavaVM.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ src/jni/CallGraphicController.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/c++/5/bits/ios_base.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc \
+ ../../modules/commons/src/jni/GiwsException.hxx \
+ includes/DataController.hxx includes/DataModel.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_map.h /usr/include/c++/5/bits/stl_multimap.h \
+ includes/Data3D.hxx includes/DataProperties.hxx \
+ includes/NgonGeneralData.hxx includes/NgonData.hxx \
+ includes/NgonGridData.hxx includes/NgonGridMatplotData.hxx \
+ includes/Matplot.h includes/NgonPolylineData.hxx includes/MeshData.hxx \
+ includes/MeshFecData.hxx includes/graphicObjectProperties.h \
+ includes/ScilabView.hxx /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
+
+../../modules/jvm/includes/getScilabJavaVM.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+../../modules/commons/src/jni/GiwsException.hxx:
+
+includes/DataController.hxx:
+
+includes/DataModel.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/NgonGridData.hxx:
+
+includes/NgonGridMatplotData.hxx:
+
+includes/Matplot.h:
+
+includes/NgonPolylineData.hxx:
+
+includes/MeshData.hxx:
+
+includes/MeshFecData.hxx:
+
+includes/graphicObjectProperties.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-pickSurface.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-pickSurface.Plo
new file mode 100755
index 000000000..b5594c6ec
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-pickSurface.Plo
@@ -0,0 +1,161 @@
+src/cpp/libscigraphic_objects_la-pickSurface.lo: src/cpp/pickSurface.cpp \
+ /usr/include/stdc-predef.h /usr/include/stdio.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/getGraphicObjectProperty.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-setGraphicObjectProperty.Plo b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-setGraphicObjectProperty.Plo
new file mode 100755
index 000000000..4b1e3e9f9
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.deps/libscigraphic_objects_la-setGraphicObjectProperty.Plo
@@ -0,0 +1,429 @@
+src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo: \
+ src/cpp/setGraphicObjectProperty.cpp /usr/include/stdc-predef.h \
+ includes/setGraphicObjectProperty.h /usr/include/stdlib.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ ../../modules/core/includes/BOOL.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ includes/graphicObjectProperties.h \
+ ../../modules/jvm/includes/getScilabJavaVM.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ /usr/include/string.h /usr/include/x86_64-linux-gnu/bits/string3.h \
+ src/jni/CallGraphicController.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/c++/5/bits/ios_base.h \
+ /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc \
+ ../../modules/commons/src/jni/GiwsException.hxx \
+ includes/DataController.hxx includes/DataModel.hxx \
+ /usr/include/c++/5/map /usr/include/c++/5/bits/stl_tree.h \
+ /usr/include/c++/5/bits/stl_map.h /usr/include/c++/5/bits/stl_multimap.h \
+ includes/Data3D.hxx includes/DataProperties.hxx \
+ includes/NgonGeneralData.hxx includes/NgonData.hxx \
+ includes/NgonGridData.hxx includes/NgonGridMatplotData.hxx \
+ includes/Matplot.h includes/NgonPolylineData.hxx includes/MeshData.hxx \
+ includes/MeshFecData.hxx includes/graphicObjectProperties.h \
+ includes/ScilabView.hxx /usr/include/c++/5/list \
+ /usr/include/c++/5/bits/stl_list.h /usr/include/c++/5/bits/list.tcc \
+ /usr/include/c++/5/vector /usr/include/c++/5/bits/stl_construct.h \
+ /usr/include/c++/5/bits/stl_uninitialized.h \
+ /usr/include/c++/5/bits/stl_vector.h \
+ /usr/include/c++/5/bits/stl_bvector.h /usr/include/c++/5/bits/vector.tcc
+
+/usr/include/stdc-predef.h:
+
+includes/setGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+includes/graphicObjectProperties.h:
+
+../../modules/jvm/includes/getScilabJavaVM.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+../../modules/commons/src/jni/GiwsException.hxx:
+
+includes/DataController.hxx:
+
+includes/DataModel.hxx:
+
+/usr/include/c++/5/map:
+
+/usr/include/c++/5/bits/stl_tree.h:
+
+/usr/include/c++/5/bits/stl_map.h:
+
+/usr/include/c++/5/bits/stl_multimap.h:
+
+includes/Data3D.hxx:
+
+includes/DataProperties.hxx:
+
+includes/NgonGeneralData.hxx:
+
+includes/NgonData.hxx:
+
+includes/NgonGridData.hxx:
+
+includes/NgonGridMatplotData.hxx:
+
+includes/Matplot.h:
+
+includes/NgonPolylineData.hxx:
+
+includes/MeshData.hxx:
+
+includes/MeshFecData.hxx:
+
+includes/graphicObjectProperties.h:
+
+includes/ScilabView.hxx:
+
+/usr/include/c++/5/list:
+
+/usr/include/c++/5/bits/stl_list.h:
+
+/usr/include/c++/5/bits/list.tcc:
+
+/usr/include/c++/5/vector:
+
+/usr/include/c++/5/bits/stl_construct.h:
+
+/usr/include/c++/5/bits/stl_uninitialized.h:
+
+/usr/include/c++/5/bits/stl_vector.h:
+
+/usr/include/c++/5/bits/stl_bvector.h:
+
+/usr/include/c++/5/bits/vector.tcc:
diff --git a/modules/graphic_objects/src/cpp/.dirstamp b/modules/graphic_objects/src/cpp/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.dirstamp
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-AxesModel.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-AxesModel.o
new file mode 100755
index 000000000..36ee73db6
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-AxesModel.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ColorComputer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ColorComputer.o
new file mode 100755
index 000000000..e4451c0a2
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ColorComputer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentFigure.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentFigure.o
new file mode 100755
index 000000000..0a11d63de
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentFigure.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentObject.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentObject.o
new file mode 100755
index 000000000..50e313099
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentObject.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentSubwin.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentSubwin.o
new file mode 100755
index 000000000..d0d3c5747
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-CurrentSubwin.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Data3D.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Data3D.o
new file mode 100755
index 000000000..20386ca5a
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Data3D.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DataLoader.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DataLoader.o
new file mode 100755
index 000000000..537ab68ff
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DataLoader.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DecompositionUtils.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DecompositionUtils.o
new file mode 100755
index 000000000..abceab62c
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-DecompositionUtils.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DColorComputer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DColorComputer.o
new file mode 100755
index 000000000..4fcbc5706
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DColorComputer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DDecomposer.o
new file mode 100755
index 000000000..8ef821c41
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Fac3DDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureList.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureList.o
new file mode 100755
index 000000000..e54fbb37b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureList.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureModel.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureModel.o
new file mode 100755
index 000000000..aeccf38e9
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-FigureModel.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-HandleManagement.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-HandleManagement.o
new file mode 100755
index 000000000..35f97a9f1
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-HandleManagement.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MatPlotDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MatPlotDecomposer.o
new file mode 100755
index 000000000..084d1de91
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MatPlotDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshData.o
new file mode 100755
index 000000000..8b6d05cc0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecData.o
new file mode 100755
index 000000000..46bf0b65d
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecDataDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecDataDecomposer.o
new file mode 100755
index 000000000..4531ff1ca
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-MeshFecDataDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonData.o
new file mode 100755
index 000000000..58213544e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGeneralData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGeneralData.o
new file mode 100755
index 000000000..32b69e0e0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGeneralData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridData.o
new file mode 100755
index 000000000..7a68340de
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridDataDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridDataDecomposer.o
new file mode 100755
index 000000000..69fd1fc60
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridDataDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.o
new file mode 100755
index 000000000..5cdbaccd5
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotData.o
new file mode 100755
index 000000000..c5ef15ff4
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.o
new file mode 100755
index 000000000..4a193bb74
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonPolylineData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonPolylineData.o
new file mode 100755
index 000000000..36421843d
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NgonPolylineData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NormalGenerator.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NormalGenerator.o
new file mode 100755
index 000000000..2bbe05f8e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-NormalGenerator.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Plot3DDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Plot3DDecomposer.o
new file mode 100755
index 000000000..b65310f0e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Plot3DDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-PolylineDecomposer.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-PolylineDecomposer.o
new file mode 100755
index 000000000..b0e0ff18b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-PolylineDecomposer.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ScilabView.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ScilabView.o
new file mode 100755
index 000000000..c1de15063
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-ScilabView.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Texture.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Texture.o
new file mode 100755
index 000000000..e9866eadd
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Texture.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Triangulator.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Triangulator.o
new file mode 100755
index 000000000..270450fbe
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-Triangulator.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createGraphicObject.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createGraphicObject.o
new file mode 100755
index 000000000..5bf6c1b7f
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createGraphicObject.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createObjectData.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createObjectData.o
new file mode 100755
index 000000000..c5a453815
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-createObjectData.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-dataModel.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-dataModel.o
new file mode 100755
index 000000000..b0b060729
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-dataModel.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-deleteGraphicObject.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-deleteGraphicObject.o
new file mode 100755
index 000000000..ac5a95135
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-deleteGraphicObject.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getConsoleIdentifier.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getConsoleIdentifier.o
new file mode 100755
index 000000000..ab5d689e6
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getConsoleIdentifier.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getGraphicObjectProperty.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getGraphicObjectProperty.o
new file mode 100755
index 000000000..74921b19c
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-getGraphicObjectProperty.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-pickSurface.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-pickSurface.o
new file mode 100755
index 000000000..978a967cf
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-pickSurface.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-setGraphicObjectProperty.o b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-setGraphicObjectProperty.o
new file mode 100755
index 000000000..bd6c6db6e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/.libs/libscigraphic_objects_la-setGraphicObjectProperty.o
Binary files differ
diff --git a/modules/graphic_objects/src/cpp/AxesModel.cpp b/modules/graphic_objects/src/cpp/AxesModel.cpp
new file mode 100755
index 000000000..80222e832
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/AxesModel.cpp
@@ -0,0 +1,37 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include "AxesModel.h"
+}
+
+int getAxesModel(void)
+{
+ return ScilabView::getAxesModel();
+}
+void setAxesModel(int UID)
+{
+ ScilabView::setAxesModel(UID);
+}
+
+BOOL isAxesModel(int UID)
+{
+ if (UID == getAxesModel())
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/modules/graphic_objects/src/cpp/ColorComputer.cpp b/modules/graphic_objects/src/cpp/ColorComputer.cpp
new file mode 100755
index 000000000..5c9628519
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/ColorComputer.cpp
@@ -0,0 +1,208 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ColorComputer.hxx"
+
+extern "C"
+{
+#include <math.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+void ColorComputer::getColor(double s, double smin, double srange, double indexOffset, double* colormap, int colormapSize, float* returnedColor)
+{
+ double value = 0.;
+ int index = 0;
+
+ if (!DecompositionUtils::isANumber(s))
+ {
+ /* Black is output if s is a Nan */
+ returnedColor[0] = MIN_COMPONENT_VALUE;
+ returnedColor[1] = MIN_COMPONENT_VALUE;
+ returnedColor[2] = MIN_COMPONENT_VALUE;
+ }
+ else
+ {
+ value = (s - smin) / (srange);
+ index = (int) ((double)(colormapSize - 1) * value + indexOffset);
+
+ /* Clamp */
+ if (index < 0)
+ {
+ index = 0;
+ }
+ else if (index > colormapSize - 1)
+ {
+ index = colormapSize - 1;
+ }
+
+ returnedColor[0] = (float)colormap[index];
+ returnedColor[1] = (float)colormap[colormapSize + index];
+ returnedColor[2] = (float)colormap[2 * colormapSize + index];
+ }
+}
+
+void ColorComputer::getColor(double s, double smin, double srange, double indexOffset, double* colormap, int minIndex, int maxIndex, int colormapSize, float* returnedColor)
+{
+ double value = 0.;
+ int index = 0;
+
+ if (!DecompositionUtils::isANumber(s))
+ {
+ /* Black is output if s is a Nan */
+ returnedColor[0] = MIN_COMPONENT_VALUE;
+ returnedColor[1] = MIN_COMPONENT_VALUE;
+ returnedColor[2] = MIN_COMPONENT_VALUE;
+ }
+ else
+ {
+ value = (s - smin) / (srange);
+ index = (int) ((double)(maxIndex - minIndex) * value + indexOffset + (double) minIndex);
+
+ /* Clamp */
+ if (index < minIndex)
+ {
+ index = minIndex;
+ }
+ else if (index > maxIndex)
+ {
+ index = maxIndex;
+ }
+
+ returnedColor[0] = (float)colormap[index];
+ returnedColor[1] = (float)colormap[colormapSize + index];
+ returnedColor[2] = (float)colormap[2 * colormapSize + index];
+ }
+}
+
+double ColorComputer::getIndex(double s, double smin, double srange, double indexOffset, int minIndex, int maxIndex)
+{
+ double value = 0.;
+ double index = 0.;
+
+ if (!DecompositionUtils::isANumber(s))
+ {
+ /* Black is output if s is a Nan. */
+ index = BLACK_INDEX;
+ }
+ else
+ {
+ value = (s - smin) / (srange);
+ index = (double)(maxIndex - minIndex) * value + indexOffset + (double) minIndex;
+
+ index = floor(index);
+
+ /* Clamp */
+ if (index < (double) minIndex)
+ {
+ index = (double) minIndex;
+ }
+ else if (index > (double) maxIndex)
+ {
+ index = (double) maxIndex;
+ }
+ }
+
+ return index;
+}
+
+double ColorComputer::getDirectIndex(double s, int colormapSize)
+{
+ double index = 0.;
+
+ if (s <= (double) WHITE_LOWER_INDEX)
+ {
+ /* Lowest index if the color is below the white range's lower index */
+ index = 0.0;
+ }
+ else if (s <= (double) BLACK_LOWER_INDEX)
+ {
+ /* White is output */
+ index = WHITE_INDEX;
+ }
+ else if ((((double) BLACK_LOWER_INDEX < s) && (s < (double) BLACK_UPPER_INDEX)) || !DecompositionUtils::isANumber(s))
+ {
+ /* Black is also output for Nan values */
+ index = BLACK_INDEX;
+ }
+ else
+ {
+ index = floor(s);
+
+ if (index > (double)(colormapSize - 1))
+ {
+ index = (double) (colormapSize - 1);
+ }
+ }
+
+ return index;
+}
+
+double ColorComputer::getClampedDirectIndex(double s, int colormapSize)
+{
+ double index = s;
+
+ /* Black is output if s is a Nan or if it corresponds to the black color */
+ if (!DecompositionUtils::isANumber(s) || ((BLACK_INDEX <= s) && (s < 0.0)))
+ {
+ index = BLACK_INDEX;
+ }
+ else
+ {
+ index = floor(index);
+
+ /* Clamp */
+ if (s < 0.0)
+ {
+ index = 0.0;
+ }
+ else if (s > (double)(colormapSize - 1))
+ {
+ index = (double) (colormapSize - 1);
+ }
+ }
+
+ return index;
+}
+
+void ColorComputer::getClampedDirectColor(double s, double* colormap, int colormapSize, float* returnedColor)
+{
+ int index = 0;
+
+ if (!DecompositionUtils::isANumber(s))
+ {
+ /* Black is output if s is a Nan */
+ returnedColor[0] = MIN_COMPONENT_VALUE;
+ returnedColor[1] = MIN_COMPONENT_VALUE;
+ returnedColor[2] = MIN_COMPONENT_VALUE;
+ }
+ else
+ {
+ /* Clamp */
+ if (s < 0.0)
+ {
+ s = 0.0;
+ }
+ else if (s > (double)(colormapSize - 1))
+ {
+ s = (double) (colormapSize - 1);
+ }
+
+ index = (int) s;
+
+ returnedColor[0] = (float)colormap[index];
+ returnedColor[1] = (float)colormap[colormapSize + index];
+ returnedColor[2] = (float)colormap[2 * colormapSize + index];
+ }
+}
diff --git a/modules/graphic_objects/src/cpp/CurrentFigure.cpp b/modules/graphic_objects/src/cpp/CurrentFigure.cpp
new file mode 100755
index 000000000..b74f682b4
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/CurrentFigure.cpp
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include <string.h>
+
+#include "BOOL.h"
+#include "CurrentFigure.h"
+}
+
+int getCurrentFigure(void)
+{
+ return ScilabView::getCurrentFigure();
+}
+
+void setCurrentFigure(int UID)
+{
+ ScilabView::setCurrentFigure(UID);
+}
+
+BOOL isCurrentFigure(int UID)
+{
+ if (UID == ScilabView::getCurrentFigure())
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/modules/graphic_objects/src/cpp/CurrentObject.cpp b/modules/graphic_objects/src/cpp/CurrentObject.cpp
new file mode 100755
index 000000000..99b38dbcd
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/CurrentObject.cpp
@@ -0,0 +1,63 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include <string.h>
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+
+#include "BOOL.h"
+#include "CurrentObject.h"
+}
+
+
+int getCurrentObject(void)
+{
+ return ScilabView::getCurrentObject();
+}
+
+void setCurrentObject(int UID)
+{
+ ScilabView::setCurrentObject(UID);
+}
+
+BOOL isCurrentObject(int UID)
+{
+ if (UID == ScilabView::getCurrentObject())
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int getParentObject(int iUID)
+{
+ int iParent = 0;
+ int* piParent = &iParent;
+ if (iUID == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(iUID, __GO_PARENT__, jni_int, (void**)&piParent);
+ return iParent;
+}
+
+void setParentObject(int iUID, int iParent)
+{
+ setGraphicObjectProperty(iUID, __GO_PARENT__, &iParent, jni_int, 1);
+ return;
+}
diff --git a/modules/graphic_objects/src/cpp/CurrentSubwin.cpp b/modules/graphic_objects/src/cpp/CurrentSubwin.cpp
new file mode 100755
index 000000000..cfae88753
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/CurrentSubwin.cpp
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include "CurrentSubwin.h"
+}
+
+int getCurrentSubWin(void)
+{
+ return ScilabView::getCurrentSubWin();
+}
+
+void setCurrentSubWin(int UID)
+{
+ ScilabView::setCurrentSubWin(UID);
+}
diff --git a/modules/graphic_objects/src/cpp/Data3D.cpp b/modules/graphic_objects/src/cpp/Data3D.cpp
new file mode 100755
index 000000000..5fdfdcfda
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/Data3D.cpp
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "Data3D.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include "graphicObjectProperties.h"
+}
+
+Data3D::Data3D(void)
+{
+
+}
+
+Data3D::~Data3D(void)
+{
+
+}
+
+int Data3D::getPropertyFromName(int propertyName)
+{
+ return UNKNOWN_DATA_PROPERTY;
+}
+
+int Data3D::setDataProperty(int property, void const* value, int numElements)
+{
+ return 0;
+}
+
+void Data3D::getDataProperty(int property, void **_pvData)
+{
+ if (property == UNKNOWN_DATA_PROPERTY)
+ {
+ *_pvData = NULL;
+ }
+ else
+ {
+ *_pvData = NULL;
+ }
+}
+
diff --git a/modules/graphic_objects/src/cpp/DataLoader.cpp b/modules/graphic_objects/src/cpp/DataLoader.cpp
new file mode 100755
index 000000000..0debb6089
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/DataLoader.cpp
@@ -0,0 +1,454 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ * Copyright (C) 2011-2012 - DIGITEO - Pierre Lando
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <cstring>
+
+#include "DataLoader.hxx"
+
+#include "MatPlotDecomposer.hxx"
+#include "Fac3DDecomposer.hxx"
+#include "NgonGridMatplotData.hxx"
+#include "NgonGridGrayplotDataDecomposer.hxx"
+#include "NgonGridMatplotDataDecomposer.hxx"
+#include "Plot3DDecomposer.hxx"
+#include "PolylineDecomposer.hxx"
+#include "MeshFecDataDecomposer.hxx"
+#include "NormalGenerator.hxx"
+
+extern "C"
+{
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+int getTextureWidth(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::getTextureWidth(id);
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int getTextureHeight(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::getTextureHeight(id);
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int fillTextureData(int id, unsigned char* buffer, int bufferLength)
+{
+ int iType = 0;
+ int *piType = &iType;
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::fillTextureData(id, buffer, bufferLength);
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int fillSubTextureData(int id, unsigned char* buffer, int bufferLength, int x, int y, int width, int height)
+{
+ int iType = 0;
+ int *piType = &iType;
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::fillTextureData(id, buffer, bufferLength, x, y, width, height);
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int getDataSize(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ return Fac3DDecomposer::getDataSize(id);
+ case __GO_FEC__ :
+ return MeshFecDataDecomposer::getDataSize(id);
+ case __GO_GRAYPLOT__ :
+ return NgonGridGrayplotDataDecomposer::getDataSize(id);
+ case __GO_MATPLOT__ :
+ return NgonGridMatplotDataDecomposer::getDataSize(id);
+ case __GO_PLOT3D__ :
+ return Plot3DDecomposer::getDataSize(id);
+ case __GO_POLYLINE__ :
+ return PolylineDecomposer::getDataSize(id);
+ default :
+ return 0;
+ }
+
+}
+
+void fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ Fac3DDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case __GO_FEC__ :
+ MeshFecDataDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case __GO_GRAYPLOT__ :
+ NgonGridGrayplotDataDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case __GO_MATPLOT__ :
+ NgonGridMatplotDataDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case __GO_PLOT3D__ :
+ Plot3DDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case __GO_POLYLINE__ :
+ PolylineDecomposer::fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ }
+}
+
+
+void fillNormals(int id, float* position, float* buffer, int bufferLength, int elementsSize)
+{
+
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ {
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ CalculatePolygonNormalFlat(position, buffer, bufferLength, elementsSize, numVerticesPerGon);
+ }
+ break;
+ case __GO_FEC__ :
+ break;
+ case __GO_GRAYPLOT__ :
+ break;
+ case __GO_MATPLOT__ :
+ break;
+ case __GO_PLOT3D__ :
+ {
+ //CalculateGridNormalFlat(position, buffer, bufferLength, elementsSize);
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+ CalculateGridNormalSmooth(position, buffer, bufferLength, elementsSize, numX, numY);
+ }
+ break;
+ case __GO_POLYLINE__ :
+ break;
+ }
+}
+
+void fillTextureCoordinates(int id, float* BUFF, int bufferLength)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ Fac3DDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
+ break;
+ case __GO_FEC__ :
+ MeshFecDataDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
+ break;
+ case __GO_POLYLINE__ :
+ PolylineDecomposer::fillTextureCoordinates(id, BUFF, bufferLength);
+ break;
+ }
+}
+
+void fillColors(int id, float* BUFF, int bufferLength, int elementsSize)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FEC__ :
+ MeshFecDataDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
+ break;
+ case __GO_GRAYPLOT__ :
+ NgonGridGrayplotDataDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
+ break;
+ case __GO_MATPLOT__ :
+ NgonGridMatplotDataDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
+ break;
+ case __GO_PLOT3D__ :
+ Plot3DDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
+ break;
+ case __GO_POLYLINE__ :
+ PolylineDecomposer::fillColors(id, BUFF, bufferLength, elementsSize);
+ break;
+ }
+}
+
+
+int getIndicesSize(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ return Fac3DDecomposer::getIndicesSize(id);
+ case __GO_FEC__ :
+ return MeshFecDataDecomposer::getIndicesSize(id);
+ case __GO_GRAYPLOT__ :
+ return NgonGridGrayplotDataDecomposer::getIndicesSize(id);
+ case __GO_MATPLOT__ :
+ return NgonGridMatplotDataDecomposer::getIndicesSize(id);
+ case __GO_PLOT3D__ :
+ return Plot3DDecomposer::getIndicesSize(id);
+ case __GO_POLYLINE__ :
+ return PolylineDecomposer::getIndicesSize(id);
+ default :
+ return 0;
+ }
+}
+
+
+int fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ return Fac3DDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+ case __GO_FEC__ :
+ return MeshFecDataDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+ case __GO_GRAYPLOT__ :
+ return NgonGridGrayplotDataDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+ case __GO_MATPLOT__ :
+ return NgonGridMatplotDataDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+ case __GO_PLOT3D__ :
+ return Plot3DDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+ case __GO_POLYLINE__ :
+ return PolylineDecomposer::fillIndices(id, buffer, bufferLength, logMask);
+ default :
+ return 0;
+ }
+}
+
+int getWireIndicesSize(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ return Fac3DDecomposer::getWireIndicesSize(id);
+ case __GO_FEC__ :
+ return MeshFecDataDecomposer::getWireIndicesSize(id);
+ case __GO_PLOT3D__ :
+ return Plot3DDecomposer::getWireIndicesSize(id);
+ case __GO_POLYLINE__ :
+ return PolylineDecomposer::getWireIndicesSize(id);
+ default :
+ return 0;
+ }
+}
+
+int fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ switch (iType)
+ {
+ case __GO_FAC3D__ :
+ return Fac3DDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
+ case __GO_FEC__ :
+ return MeshFecDataDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
+ case __GO_PLOT3D__ :
+ return Plot3DDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
+ case __GO_POLYLINE__ :
+ return PolylineDecomposer::fillWireIndices(id, buffer, bufferLength, logMask);
+ default :
+ return 0;
+ }
+}
+
+int getMarkIndicesSize(int id)
+{
+ return 0;
+}
+
+int fillMarkIndices(int id, int* BUFF, int bufferLength)
+{
+ // TODO.
+ return 0;
+}
+
+JavaDirectBuffer getTextureData(int id)
+{
+ JavaDirectBuffer info;
+ int iType = 0;
+ int *piType = &iType;
+
+ info.address = NULL;
+ info.size = 0;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ if (iType == __GO_MATPLOT__)
+ {
+ void * address = NULL;
+ unsigned int size = 0;
+
+ if (!MatPlotDecomposer::getTextureData(id, &address, &size))
+ {
+ return info;
+ }
+ info.address = address;
+ info.size = size;
+ }
+
+ return info;
+}
+
+int getTextureImageType(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::getTextureImageType(id);
+ }
+
+ return -1;
+}
+
+int getTextureDataType(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::getTextureDataType(id);
+ }
+
+ return -1;
+}
+
+int getTextureGLType(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::getTextureGLType(id);
+ }
+
+ return -1;
+}
+
+void disposeTextureData(int id, unsigned char * buffer)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ if (iType == __GO_MATPLOT__)
+ {
+ MatPlotDecomposer::disposeTextureData(id, buffer);
+ }
+}
+
+int isTextureRowOrder(int id)
+{
+ int iType = 0;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(id, __GO_TYPE__, jni_int, (void**) &piType);
+
+ if (iType == __GO_MATPLOT__)
+ {
+ return MatPlotDecomposer::isTextureRowOrder(id);
+ }
+
+ return 0;
+}
+
+void setABGRExt(int isAvailable)
+{
+ NgonGridMatplotData::setABGRSupported(isAvailable != 0);
+}
diff --git a/modules/graphic_objects/src/cpp/DecompositionUtils.cpp b/modules/graphic_objects/src/cpp/DecompositionUtils.cpp
new file mode 100755
index 000000000..5c0e3c06e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/DecompositionUtils.cpp
@@ -0,0 +1,289 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "DecompositionUtils.hxx"
+
+extern "C"
+{
+#include <math.h>
+#include <float.h>
+#ifdef _MSC_VER
+#define isnan _isnan
+ // isinf(x)
+ // | +%inf -> 1
+ // | -%inf -> -1
+ // | _ -> 0
+#define isinf(x) (_fpclass(x)==_FPCLASS_PINF?1:(_fpclass(x)==_FPCLASS_NINF?-1:0))
+#endif
+}
+
+int DecompositionUtils::isANumber(double x)
+{
+ if (isnan(x))
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+int DecompositionUtils::isFinite(double x)
+{
+ if (isinf(x))
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+int DecompositionUtils::isValid(double x)
+{
+ if (isnan(x) || isinf(x))
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+int DecompositionUtils::isValid(double x, double y, double z)
+{
+ if (isnan(x) || isnan(y) || isnan(z) || isinf(x) || isinf(y) || isinf(z))
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+int DecompositionUtils::isValid(double x, double y)
+{
+ if (isnan(x) || isnan(y) || isinf(x) || isinf(y))
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+double DecompositionUtils::getLog10Value(double value)
+{
+ return log10(value);
+}
+
+int DecompositionUtils::isLogValid(double x)
+{
+ if (x > 0.0)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int DecompositionUtils::isLogValid(double x, double y, double z, int logMask)
+{
+ int valid = 1;
+
+ if (logMask & 0x1)
+ {
+ valid &= (x > 0.0);
+ }
+
+ if (logMask & 0x2)
+ {
+ valid &= (y > 0.0);
+ }
+
+ if (logMask & 0x4)
+ {
+ valid &= (z > 0.0);
+ }
+
+ return valid;
+}
+
+int DecompositionUtils::isLogValid(double x, double y, int logMask)
+{
+ int valid = 1;
+
+ if (logMask & 0x1)
+ {
+ valid &= (x > 0.0);
+ }
+
+ if (logMask & 0x2)
+ {
+ valid &= (y > 0.0);
+ }
+
+ return valid;
+}
+
+double DecompositionUtils::getMaxDoubleValue(void)
+{
+ return DBL_MAX;
+}
+
+double DecompositionUtils::getMinDoubleValue(void)
+{
+ return DBL_MIN;
+}
+
+double DecompositionUtils::getAbsoluteValue(double value)
+{
+ return fabs(value);
+}
+
+double DecompositionUtils::getSquareRoot(double value)
+{
+ return sqrt(value);
+}
+
+/*
+ * Decomposes a rectangle into two adjacent triangles.
+ * The rectangle's vertices are supposed to be specified in
+ * counter-clockwise order, with 0 corresponding to the former's lower-left vertex.
+ * The two output triangles' vertex indices are also specified in
+ * counter-clockwise order.
+ */
+void DecompositionUtils::getDecomposedRectangleTriangleIndices(int* indices)
+{
+ indices[0] = 0;
+ indices[1] = 1;
+ indices[2] = 2;
+ indices[3] = 0;
+ indices[4] = 2;
+ indices[5] = 3;
+}
+
+/* To do: use a Vector3d class to perform vector operations. */
+void DecompositionUtils::getDecomposedQuadTriangleIndices(double vertices[4][3], int* facetVertexIndices, int* triangleVertexIndices)
+{
+ /* The two decompositions' midpoints */
+ double mid0[3];
+ double mid1[3];
+
+ /* The vectors from one midpoint to its opposite vertices */
+ double mo0[3];
+ double mo1[3];
+
+ double nmo0 = 0.;
+ double nmo1 = 0.;
+
+ double dot0 = 0.;
+ double dot1 = 0.;
+
+ double denom = 0.;
+
+ /*
+ * The input vertices are given in counter-clockwise order, from v0 to v3.
+ * Two decompositions are possible: either (v0,v1,v2) and (v0,v2,v3) or (v1,v2,v3) and (v1,v3,v0).
+ * The best one is the one that yields the most coplanar triangles. To estimate this, for each configuration,
+ * we compute the midpoint of the triangles' shared edge, which are respectively mid0 and mid1.
+ * The angles (v1 mid0 v3) and (v2 mid1 v0) give an approximation of the angles between the two triangles' planes
+ * for respectively the first and second condigurations.
+ */
+
+ mid0[0] = 0.5 * (vertices[0][0] + vertices[2][0]);
+ mid0[1] = 0.5 * (vertices[0][1] + vertices[2][1]);
+ mid0[2] = 0.5 * (vertices[0][2] + vertices[2][2]);
+ mid1[0] = 0.5 * (vertices[1][0] + vertices[3][0]);
+ mid1[1] = 0.5 * (vertices[1][1] + vertices[3][1]);
+ mid1[2] = 0.5 * (vertices[1][2] + vertices[3][2]);
+
+ /* 1st decomposition */
+
+ /* mo0 = v1 - mid0 */
+ mo0[0] = vertices[1][0] - mid0[0];
+ mo0[1] = vertices[1][1] - mid0[1];
+ mo0[2] = vertices[1][2] - mid0[2];
+
+ /* mo1 = v3 - mid0 */
+ mo1[0] = vertices[3][0] - mid0[0];
+ mo1[1] = vertices[3][1] - mid0[1];
+ mo1[2] = vertices[3][2] - mid0[2];
+
+ nmo0 = mo0[0] * mo0[0] + mo0[1] * mo0[1] + mo0[2] * mo0[2];
+ nmo1 = mo1[0] * mo1[0] + mo1[1] * mo1[1] + mo1[2] * mo1[2];
+
+ if (nmo0 * nmo1 > 0.0)
+ {
+ denom = DecompositionUtils::getSquareRoot(nmo0 * nmo1);
+ }
+ else
+ {
+ denom = 1.0;
+ }
+
+ dot0 = (mo0[0] * mo1[0] + mo0[1] * mo1[1] + mo0[2] * mo1[2]) / denom;
+
+ /* 2nd decomposition */
+
+ /* mo0 = v2 - mid1 */
+ mo0[0] = vertices[2][0] - mid1[0];
+ mo0[1] = vertices[2][1] - mid1[1];
+ mo0[2] = vertices[2][2] - mid1[2];
+
+ /* mo1 = v0 - mid1 */
+ mo1[0] = vertices[0][0] - mid1[0];
+ mo1[1] = vertices[0][1] - mid1[1];
+ mo1[2] = vertices[0][2] - mid1[2];
+
+ nmo0 = mo0[0] * mo0[0] + mo0[1] * mo0[1] + mo0[2] * mo0[2];
+ nmo1 = mo1[0] * mo1[0] + mo1[1] * mo1[1] + mo1[2] * mo1[2];
+
+ if (nmo0 * nmo1 > 0.0)
+ {
+ denom = getSquareRoot(nmo0 * nmo1);
+ }
+ else
+ {
+ denom = 1.0;
+ }
+
+ dot1 = (mo0[0] * mo1[0] + mo0[1] * mo1[1] + mo0[2] * mo1[2]) / denom;
+
+ /* The lower the dot product, the closer to -1, and the more coplanar the triangles are. */
+ if (dot0 <= dot1)
+ {
+ triangleVertexIndices[0] = facetVertexIndices[0];
+ triangleVertexIndices[1] = facetVertexIndices[1];
+ triangleVertexIndices[2] = facetVertexIndices[2];
+ triangleVertexIndices[3] = facetVertexIndices[0];
+ triangleVertexIndices[4] = facetVertexIndices[2];
+ triangleVertexIndices[5] = facetVertexIndices[3];
+ }
+ else
+ {
+ triangleVertexIndices[0] = facetVertexIndices[1];
+ triangleVertexIndices[1] = facetVertexIndices[2];
+ triangleVertexIndices[2] = facetVertexIndices[3];
+ triangleVertexIndices[3] = facetVertexIndices[1];
+ triangleVertexIndices[4] = facetVertexIndices[3];
+ triangleVertexIndices[5] = facetVertexIndices[0];
+ }
+}
+
diff --git a/modules/graphic_objects/src/cpp/Fac3DColorComputer.cpp b/modules/graphic_objects/src/cpp/Fac3DColorComputer.cpp
new file mode 100755
index 000000000..bff8a45e0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/Fac3DColorComputer.cpp
@@ -0,0 +1,323 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "DecompositionUtils.hxx"
+#include "Fac3DColorComputer.hxx"
+
+extern "C"
+{
+#include <stdlib.h>
+}
+
+Fac3DColorComputer::Fac3DColorComputer(void)
+{
+ colors = NULL;
+ numColors = 0;
+ colorFlag = 0;
+ /* 1: direct mapping */
+ dataMapping = 1;
+ numGons = 0;
+ numVerticesPerGon = 0;
+ numColorsPerFacet = 0;
+ perVertex = 0;
+ minColorValue = 0.0;
+ maxColorValue = 0.0;
+ colorRange = 0.0;
+ usedMinColorValue = 0.0;
+ colorRangeValid = 0;
+}
+
+Fac3DColorComputer::Fac3DColorComputer(double* colors, int numColors, int colorFlag, int dataMapping, int numGons, int numVerticesPerGon)
+{
+ this->colors = colors;
+ this->numColors = numColors;
+ this->colorFlag = colorFlag;
+ this->dataMapping = dataMapping;
+ this->numGons = numGons;
+ this->numVerticesPerGon = numVerticesPerGon;
+
+ if (numColors == numGons * numVerticesPerGon)
+ {
+ perVertex = 1;
+ numColorsPerFacet = numVerticesPerGon;
+ }
+ else
+ {
+ perVertex = 0;
+ numColorsPerFacet = 1;
+ }
+
+ /* Scaled */
+ if (dataMapping == 0)
+ {
+ if (numColors == 0)
+ {
+ colorRangeValid = 0;
+
+ /* Set the actually used color range to [0.0, 1.0] */
+ usedMinColorValue = 0.0;
+ colorRange = 1.0;
+ }
+ else
+ {
+ colorRangeValid = 1;
+ computeMinMaxValues();
+
+ colorRange = maxColorValue - minColorValue;
+ usedMinColorValue = minColorValue;
+
+ /*
+ * The color range is invalid when its minimum and maximum values are equal.
+ * This does not matter when all the color values are either infinite or Nans,
+ * as facets will be considered as invalid anyway.
+ */
+ if (colorRange < DecompositionUtils::getMinDoubleValue())
+ {
+ colorRangeValid = 0;
+
+ /* Set the actually used color range to [0.0, 1.0] */
+ usedMinColorValue = 0.0;
+ colorRange = 1.0;
+ }
+ }
+ }
+
+}
+
+Fac3DColorComputer::~Fac3DColorComputer(void)
+{
+
+}
+
+int Fac3DColorComputer::isInterpolatedShadingUsed(void)
+{
+ int interpolatedShading = 0;
+
+ /*
+ * Interpolated shading is used only when colors are defined per vertex
+ * and color flag is equal to 3. In any other case, flat shading is used.
+ */
+ if (perVertex == 1 && colorFlag == 3)
+ {
+ interpolatedShading = 1;
+ }
+
+ return interpolatedShading;
+}
+
+double Fac3DColorComputer::getOutputFacetColor(int facetIndex, int vertexIndex)
+{
+ /*
+ * Special case for scaled colors: return the color at half
+ * the used color range if it is not value, whatever perVertex's value.
+ */
+ if (dataMapping == 0 && colorRangeValid == 0)
+ {
+ return 0.5 * (colorRange);
+ }
+ else
+ {
+ return getFacetColor(facetIndex, vertexIndex);
+ }
+
+}
+
+/* To do:
+ * -rename getFacetColor to getFacetValue. or getVertexColorIndex
+ * -streamline.
+ */
+double Fac3DColorComputer::getFacetColor(int facetIndex, int vertexIndex)
+{
+ double color = 0.0;
+
+ if (perVertex == 1)
+ {
+ if (colorFlag == 2)
+ {
+ color = computeAverageValue(facetIndex);
+ }
+ else if (colorFlag == 3)
+ {
+ color = colors[facetIndex * numVerticesPerGon + vertexIndex];
+ }
+ else if (colorFlag == 4)
+ {
+ color = colors[facetIndex * numVerticesPerGon];
+ }
+ }
+ else if (perVertex == 0)
+ {
+ color = colors[facetIndex];
+ }
+
+ return color;
+}
+
+/*
+ * To do:
+ * -streamline.
+ */
+int Fac3DColorComputer::isFacetColorValid(int facetIndex)
+{
+ double color = 0.;
+ int valid = 0;
+
+ /* Special case, no colors therefore facets are always valid */
+ if (colorFlag == 0 || colorFlag == 1 || numColors == 0)
+ {
+ return 1;
+ }
+
+ /* Special case for colorFlag == 3 and perVertex color values */
+ if (colorFlag == 3 && perVertex == 1)
+ {
+ valid = 0;
+
+ for (int i = 0; i < numVerticesPerGon; i++)
+ {
+ color = getFacetColor(facetIndex, i);
+
+ if (dataMapping == 1)
+ {
+ /*
+ * The facet is valid if at least one of its vertex colors is not in the interval
+ * [0,1) and is a valid number.
+ */
+ if ((int) color != 0 && DecompositionUtils::isANumber(color))
+ {
+ valid = 1;
+ break;
+ }
+ }
+ else if (dataMapping == 0)
+ {
+ /* If at least one color value is infinite, the facet is considered as invalid. */
+ if (!DecompositionUtils::isFinite(color))
+ {
+ valid = 0;
+ break;
+ }
+
+ /* If at least one value is a number, the facet is valid, provided it has no infinite values. */
+ if (DecompositionUtils::isANumber(color) && valid == 0)
+ {
+ valid = 1;
+ }
+
+ }
+ }
+
+ }
+ else
+ {
+ /* Vertex index set to 0 as all the vertices of a given facet have the same color value */
+ color = getFacetColor(facetIndex, 0);
+
+ if (dataMapping == 1)
+ {
+ /* The facet is valid if its color value is not in the interval [0,1) and is a valid number. */
+ if ((int) color == 0 || DecompositionUtils::isANumber(color) == 0)
+ {
+ valid = 0;
+ }
+ else
+ {
+ valid = 1;
+ }
+ }
+ else if (dataMapping == 0)
+ {
+ /* The facet is valid if its color value is valid. */
+ if (DecompositionUtils::isValid(color))
+ {
+ valid = 1;
+ }
+ else
+ {
+ valid = 0;
+ }
+
+ }
+ }
+
+ return valid;
+}
+
+double Fac3DColorComputer::computeAverageValue(int facetIndex)
+{
+ double averageValue = 0.;
+ int i = 0;
+
+ averageValue = 0.0;
+
+ for (i = 0; i < numVerticesPerGon; i++)
+ {
+ averageValue += colors[numVerticesPerGon * facetIndex + i];
+ }
+
+ averageValue /= (double) numVerticesPerGon;
+
+ return averageValue;
+}
+
+void Fac3DColorComputer::computeMinMaxValues(void)
+{
+ double maxDouble = 0.;
+ double tmpValueMin = 0.;
+ double tmpValueMax = 0.;
+
+ int i = 0;
+
+ maxDouble = DecompositionUtils::getMaxDoubleValue();
+
+ tmpValueMin = maxDouble;
+ tmpValueMax = -maxDouble;
+
+ for (i = 0; i < numGons; i++)
+ {
+ computeFacetMinMax(i, &tmpValueMin, &tmpValueMax);
+ }
+
+ minColorValue = tmpValueMin;
+ maxColorValue = tmpValueMax;
+}
+
+void Fac3DColorComputer::computeFacetMinMax(int facetIndex, double* currentMin, double* currentMax)
+{
+ double value = 0.;
+
+ for (int i = 0; i < numColorsPerFacet; i++)
+ {
+ value = getFacetColor(facetIndex, i);
+
+ if (DecompositionUtils::isValid(value))
+ {
+ if (value < *currentMin)
+ {
+ *currentMin = value;
+ }
+
+ if (value > *currentMax)
+ {
+ *currentMax = value;
+ }
+ }
+ }
+
+}
+
+void Fac3DColorComputer::getColorRangeValue(double* minColorValue, double* colorRange)
+{
+ *minColorValue = usedMinColorValue;
+ *colorRange = this->colorRange;
+}
+
diff --git a/modules/graphic_objects/src/cpp/Fac3DDecomposer.cpp b/modules/graphic_objects/src/cpp/Fac3DDecomposer.cpp
new file mode 100755
index 000000000..bfdafb38b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/Fac3DDecomposer.cpp
@@ -0,0 +1,599 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "DecompositionUtils.hxx"
+#include "ColorComputer.hxx"
+#include "Fac3DColorComputer.hxx"
+#include "Fac3DDecomposer.hxx"
+
+extern "C"
+{
+#include <stdlib.h>
+#include <string.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+int Fac3DDecomposer::getDataSize(int id)
+{
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ return numVerticesPerGon * numGons;
+}
+
+void Fac3DDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ int i = 0;
+
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+
+ int bufferOffset = 0;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_int, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_int, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_int, (void**) &z);
+
+
+ for (i = 0; i < numVerticesPerGon * numGons; i++)
+ {
+ if (coordinateMask & 0x1)
+ {
+ double xi = x[i];
+ if (logMask & 0x1)
+ {
+ xi = DecompositionUtils::getLog10Value(x[i]);
+ }
+ buffer[bufferOffset] = (float)(xi * scale[0] + translation[0]);
+ }
+
+ if (coordinateMask & 0x2)
+ {
+ double yi = y[i];
+ if (logMask & 0x2)
+ {
+ yi = DecompositionUtils::getLog10Value(y[i]);
+ }
+ buffer[bufferOffset + 1] = (float)(yi * scale[1] + translation[1]);
+ }
+
+ if (coordinateMask & 0x4)
+ {
+ double zi = z[i];
+ if (logMask & 0x4)
+ {
+ zi = DecompositionUtils::getLog10Value(z[i]);
+ }
+ buffer[bufferOffset + 2] = (float)(zi * scale[2] + translation[2]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8))
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += 4;
+ }
+
+}
+
+void Fac3DDecomposer::fillTextureCoordinates(int id, float* buffer, int bufferLength)
+{
+ int parentFigure = 0;
+ int* pparentFigure = &parentFigure;
+ int parent = 0;
+ int* pparent = &parent;
+
+ double* colors = NULL;
+ double* colormap = NULL;
+ double* z = NULL;
+
+ double color = 0.;
+
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+ int numColors = 0;
+ int* piNumColors = &numColors;
+
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+
+ int colorFlag = 0;
+ int* piColorFlag = &colorFlag;
+
+ int dataMapping = 0;
+ int* piDataMapping = &dataMapping;
+
+ int perVertex = 0;
+
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_COLORS__, jni_int, (void**) &piNumColors);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COLORS__, jni_double_vector, (void**) &colors);
+
+
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &pparentFigure);
+
+ if (parentFigure == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_COLOR_FLAG__, jni_int, (void**) &piColorFlag);
+ getGraphicObjectProperty(id, __GO_DATA_MAPPING__, jni_int, (void**) &piDataMapping);
+
+ /* Do not fill */
+ if (colorFlag == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ if (numColors == numGons * numVerticesPerGon)
+ {
+ perVertex = 1;
+ }
+ else if (numColors == numGons)
+ {
+ perVertex = 0;
+ }
+
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_int, (void**) &z);
+
+ if (colorFlag == 1)
+ {
+ fillNormalizedZColorsTextureCoordinates(buffer, bufferLength, colormap, colormapSize, z, numGons, numVerticesPerGon);
+ }
+ else if (colorFlag > 1 && numColors == 0)
+ {
+ /*
+ * The color buffer must be filled with the color_mode value.
+ * To do: correctly take into account Nan and infinite values.
+ */
+ int colorMode = 0;
+ int* piColorMode = &colorMode;
+
+ getGraphicObjectProperty(id, __GO_COLOR_MODE__, jni_int, (void**) &piColorMode);
+
+ color = (double) colorMode;
+ color = DecompositionUtils::getAbsoluteValue(color);
+
+ fillConstantColorsTextureCoordinates(buffer, bufferLength, colormap, colormapSize,
+ color, numGons, numVerticesPerGon);
+ }
+ else
+ {
+ fillDataColorsTextureCoordinates(buffer, bufferLength, colormap, colormapSize,
+ colors, colorFlag, perVertex, dataMapping, numGons, numVerticesPerGon);
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+}
+
+void Fac3DDecomposer::fillNormalizedZColorsTextureCoordinates(float* buffer, int bufferLength, double* colormap, int colormapSize,
+ double* z, int numGons, int numVerticesPerGon)
+{
+ double zavg = 0.;
+ double zMin = 0.;
+ double zMax = 0.;
+ double zRange = 0.;
+ double minDoubleValue = 0.;
+ float index = 0.;
+
+ int i = 0;
+ int j = 0;
+ int bufferOffset = 0;
+
+ computeMinMaxValues(z, numGons * numVerticesPerGon, numGons, numVerticesPerGon, ALL_VALUES, &zMin, &zMax);
+
+ minDoubleValue = DecompositionUtils::getMinDoubleValue();
+
+ /* To be verified */
+ if ((zMax - zMin) < minDoubleValue)
+ {
+ zRange = 1.0;
+ }
+ else
+ {
+ zRange = zMax - zMin;
+ }
+
+ for (i = 0; i < numGons; i++)
+ {
+ /* Per-face average */
+ zavg = computeAverageValue(&z[i * numVerticesPerGon], numVerticesPerGon);
+ index = (float)((ColorComputer::getIndex(zavg, zMin, zRange, Z_COLOR_OFFSET, 0, colormapSize - 1) + 2.0 + COLOR_TEXTURE_OFFSET) / (float) (colormapSize + 2));
+
+ for (j = 0; j < numVerticesPerGon; j++)
+ {
+ buffer[bufferOffset++] = index;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 1.0;
+ }
+ }
+
+}
+
+void Fac3DDecomposer::fillConstantColorsTextureCoordinates(float* buffer, int bufferLength, double* colormap, int colormapSize,
+ double colorValue, int numGons, int numVerticesPerGon)
+{
+ int bufferOffset = 0;
+
+ double index = (ColorComputer::getClampedDirectIndex(colorValue - 1.0, colormapSize) + 2.0 + COLOR_TEXTURE_OFFSET) / (float) (colormapSize + 2);
+
+ for (int i = 0; i < numGons * numVerticesPerGon; i++)
+ {
+ buffer[bufferOffset++] = (float)index;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 1.0;
+ }
+
+}
+
+void Fac3DDecomposer::fillDataColorsTextureCoordinates(float* buffer, int bufferLength, double* colormap, int colormapSize,
+ double* colors, int colorFlag, int perVertex, int dataMapping, int numGons, int numVerticesPerGon)
+{
+ double colMin = 0.;
+ double colRange = 0.;
+ double color = 0.;
+ double colorTextureOffset = 0.;
+ double index = 0.;
+
+ int bufferOffset = 0;
+
+ int numColors = 0;
+
+ Fac3DColorComputer colorComputer;
+
+ if (perVertex)
+ {
+ numColors = numGons * numVerticesPerGon;
+ }
+ else
+ {
+ numColors = numGons;
+ }
+
+ colorComputer = Fac3DColorComputer(colors, numColors, colorFlag, dataMapping, numGons, numVerticesPerGon);
+
+ /* 0: colors are scaled */
+ if (dataMapping == 0)
+ {
+ colorComputer.getColorRangeValue(&colMin, &colRange);
+ }
+
+ /*
+ * The color texture offset value is used to center color sub-intervals
+ * on integer index values when interpolated shading is used or to be sure
+ * to fetch the correct color value when flat shading is used.
+ */
+ colorTextureOffset = COLOR_TEXTURE_OFFSET;
+
+ for (int i = 0; i < numGons; i++)
+ {
+ for (int j = 0; j < numVerticesPerGon; j++)
+ {
+ color = colorComputer.getOutputFacetColor(i, j);
+
+ if (dataMapping == 1)
+ {
+ color = DecompositionUtils::getAbsoluteValue(color);
+ index = ColorComputer::getClampedDirectIndex(color - 1.0 , colormapSize);
+ }
+ else if (dataMapping == 0)
+ {
+ index = ColorComputer::getIndex(color, colMin, colRange, COLOR_OFFSET, 0, colormapSize - 1);
+ }
+
+ /* The offset corresponding to the black and white colors must added to the index and the colormap size. */
+ buffer[bufferOffset++] = (float) ((index + colorTextureOffset + 2.0) / (double) (colormapSize + 2));
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 1.0;
+ }
+ }
+}
+
+double Fac3DDecomposer::computeAverageValue(double* values, int numVertices)
+{
+ double averageValue = 0.0;
+
+ for (int i = 0; i < numVertices; i++)
+ {
+ averageValue += values[i];
+ }
+
+ averageValue /= (double) numVertices;
+
+ return averageValue;
+}
+
+void Fac3DDecomposer::computeMinMaxValues(double* values, int numValues, int numGons, int numVerticesPerGon, int minMaxComputation,
+ double* valueMin, double* valueMax)
+{
+ double maxDouble = DecompositionUtils::getMaxDoubleValue();
+ double tmpValueMin = maxDouble;
+ double tmpValueMax = -maxDouble;
+ double value = 0.;
+
+ int numIterations = 0;
+
+ if (minMaxComputation != ALL_VALUES)
+ {
+ numIterations = numGons;
+ }
+ else
+ {
+ numIterations = numValues;
+ }
+
+ for (int i = 0; i < numIterations; i++)
+ {
+ if (minMaxComputation == FIRST_VERTEX_VALUE)
+ {
+ value = values[i * numVerticesPerGon];
+ }
+ else if (minMaxComputation == FACE_AVERAGE)
+ {
+ value = computeAverageValue(&values[i * numVerticesPerGon], numVerticesPerGon);
+ }
+ else
+ {
+ value = values[i];
+ }
+
+ if (DecompositionUtils::isValid(value))
+ {
+ if (value < tmpValueMin)
+ {
+ tmpValueMin = value;
+ }
+
+ if (value > tmpValueMax)
+ {
+ tmpValueMax = value;
+ }
+ }
+ }
+
+ *valueMin = tmpValueMin;
+ *valueMax = tmpValueMax;
+}
+
+int Fac3DDecomposer::getIndicesSize(int id)
+{
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ if (numVerticesPerGon < 2)
+ {
+ return 0;
+ }
+
+ return 3 * (numVerticesPerGon - 2) * numGons;
+}
+
+/*
+ * To do: use a polygon triangulation algorithm, as the fan decomposition used may produce
+ * overlapping triangles for non-convex polygons.
+ */
+int Fac3DDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ double xc = 0.;
+ double yc = 0.;
+ double zc = 0.;
+
+ double* colors = NULL;
+
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+
+ int numColors = 0;
+ int* piNumColors = &numColors;
+
+ int colorFlag = 0;
+ int* piColorFlag = &colorFlag;
+
+ int dataMapping = 0;
+ int* piDataMapping = &dataMapping;
+
+ int bufferOffset = 0;
+ int vertexOffset = 0;
+
+ Fac3DColorComputer colorComputer;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_COLORS__, jni_int, (void**) &piNumColors);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COLORS__, jni_double_vector, (void**) &colors);
+
+ getGraphicObjectProperty(id, __GO_COLOR_FLAG__, jni_int, (void**) &piColorFlag);
+
+ getGraphicObjectProperty(id, __GO_DATA_MAPPING__, jni_int, (void**) &piDataMapping);
+
+ /* At least 3 vertices per N-gon are required to output triangles. */
+ if (numVerticesPerGon < 3)
+ {
+ return 0;
+ }
+
+ colorComputer = Fac3DColorComputer(colors, numColors, colorFlag, dataMapping, numGons, numVerticesPerGon);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ for (int i = 0; i < numGons; i++)
+ {
+ int isValid = 1;
+
+ for (int j = 0; j < numVerticesPerGon; j++)
+ {
+ xc = x[vertexOffset + j];
+ yc = y[vertexOffset + j];
+ zc = z[vertexOffset + j];
+
+ if (!DecompositionUtils::isValid(xc, yc, zc) || !DecompositionUtils::isLogValid(xc, yc, zc, logMask))
+ {
+ isValid = 0;
+ break;
+ }
+ }
+
+ if (isValid == 0 || colorComputer.isFacetColorValid(i) == 0)
+ {
+ vertexOffset += numVerticesPerGon;
+ continue;
+ }
+
+ /* Performs a fan decomposition, vertices are ordered counter-clockwise. */
+ for (int j = 0; j < numVerticesPerGon - 2; j++)
+ {
+ buffer[bufferOffset] = vertexOffset;
+ buffer[bufferOffset + 1] = vertexOffset + j + 2;
+ buffer[bufferOffset + 2] = vertexOffset + j + 1;
+
+ bufferOffset += 3;
+ }
+
+ vertexOffset += numVerticesPerGon;
+ }
+
+ return bufferOffset;
+}
+
+int Fac3DDecomposer::getWireIndicesSize(int id)
+{
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ return 2 * numVerticesPerGon * numGons;
+}
+
+int Fac3DDecomposer::fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ double xc = 0.;
+ double yc = 0.;
+ double zc = 0.;
+
+ int numVerticesPerGon = 0;
+ int* piNumVerticesPerGon = &numVerticesPerGon;
+ int numGons = 0;
+ int* piNumGons = &numGons;
+
+ int bufferOffset = 0;
+ int vertexOffset = 0;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &piNumVerticesPerGon);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &piNumGons);
+
+ /* At least 2 vertices per N-gon are required to output segments. */
+ if (numVerticesPerGon < 2)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ for (int i = 0; i < numGons; i++)
+ {
+ int isValid = 1;
+
+ for (int j = 0; j < numVerticesPerGon; j++)
+ {
+ xc = x[vertexOffset + j];
+ yc = y[vertexOffset + j];
+ zc = z[vertexOffset + j];
+
+ if (!DecompositionUtils::isValid(xc, yc, zc) || !DecompositionUtils::isLogValid(xc, yc, zc, logMask))
+ {
+ isValid = 0;
+ break;
+ }
+ }
+
+ if (isValid == 0)
+ {
+ vertexOffset += numVerticesPerGon;
+ continue;
+ }
+
+ for (int j = 0; j < numVerticesPerGon; j++)
+ {
+ buffer[bufferOffset] = vertexOffset + j;
+ buffer[bufferOffset + 1] = vertexOffset + (j + 1) % numVerticesPerGon;
+
+ bufferOffset += 2;
+ }
+
+ vertexOffset += numVerticesPerGon;
+ }
+
+ return bufferOffset;
+}
+
diff --git a/modules/graphic_objects/src/cpp/FigureList.cpp b/modules/graphic_objects/src/cpp/FigureList.cpp
new file mode 100755
index 000000000..8feaf78ba
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/FigureList.cpp
@@ -0,0 +1,75 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include "FigureList.h"
+#ifdef _MSC_VER
+#include "strdup_windows.h"
+#else
+#include <string.h>
+#endif
+#include "FigureList.h"
+}
+
+int sciGetNbFigure(void)
+{
+ return ScilabView::getNbFigure();
+}
+
+void sciGetFiguresId(int ids[])
+{
+ return ScilabView::getFiguresId(ids);
+}
+
+int getValidDefaultFigureId()
+{
+ return ScilabView::getValidDefaultFigureId();
+}
+
+BOOL sciIsExistingFigure(int id)
+{
+ return (ScilabView::existsFigureId(id) == true ? TRUE : FALSE);
+}
+
+BOOL sciHasFigures()
+{
+ return (ScilabView::isEmptyFigureList() == true ? FALSE : TRUE);
+}
+
+int getFigureFromIndex(int figNum)
+{
+ return ScilabView::getFigureFromIndex(figNum);
+}
+
+void registerToController()
+{
+ ScilabView::registerToController();
+}
+void unregisterToController()
+{
+ ScilabView::unregisterToController();
+}
+
+int search_path(char* _pstPath)
+{
+ return ScilabView::search_path(_pstPath);
+}
+
+char* get_path(int uid)
+{
+ std::string path = ScilabView::get_path(uid);
+ return strdup(path.c_str());
+}
+
diff --git a/modules/graphic_objects/src/cpp/FigureModel.cpp b/modules/graphic_objects/src/cpp/FigureModel.cpp
new file mode 100755
index 000000000..3709937eb
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/FigureModel.cpp
@@ -0,0 +1,38 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <string.h>
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include "FigureModel.h"
+}
+
+int getFigureModel(void)
+{
+ return ScilabView::getFigureModel();
+}
+
+void setFigureModel(int UID)
+{
+ ScilabView::setFigureModel(UID);
+}
+
+BOOL isFigureModel(int UID)
+{
+ if (UID == getFigureModel())
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/modules/graphic_objects/src/cpp/HandleManagement.cpp b/modules/graphic_objects/src/cpp/HandleManagement.cpp
new file mode 100755
index 000000000..60996ad6f
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/HandleManagement.cpp
@@ -0,0 +1,28 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ScilabView.hxx"
+
+extern "C"
+{
+#include "HandleManagement.h"
+}
+
+long getHandle(int UID)
+{
+ return ScilabView::getObjectHandle(UID);
+}
+
+int getObjectFromHandle(long handle)
+{
+ return ScilabView::getObjectFromHandle(handle);
+}
diff --git a/modules/graphic_objects/src/cpp/MatPlotDecomposer.cpp b/modules/graphic_objects/src/cpp/MatPlotDecomposer.cpp
new file mode 100755
index 000000000..2d4e4ad2c
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/MatPlotDecomposer.cpp
@@ -0,0 +1,257 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Pierre Lando
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "DecompositionUtils.hxx"
+#include "MatPlotDecomposer.hxx"
+#include "DataProperties.hxx"
+#include "ColorComputer.hxx"
+#include <iostream>
+#include <cstring>
+
+extern "C" {
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "Matplot.h"
+}
+
+int MatPlotDecomposer::getTextureWidth(int id)
+{
+ int width = 0;
+ int* piWidth = &width;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piWidth);
+
+ return width - 1;
+}
+
+
+int MatPlotDecomposer::getTextureHeight(int id)
+{
+ int height = 0;
+ int* piHeight = &height;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piHeight);
+
+ return height - 1;
+}
+
+
+int MatPlotDecomposer::fillTextureData(int id, unsigned char* buffer, int bufferLength)
+{
+ // Indexed colors
+ void * data = NULL;
+ int parentFigure = 0;
+ int * piParentFigure = &parentFigure;
+ double * colormap = NULL;
+ int colormapSize = 0;
+ int * piColormapSize = &colormapSize;
+ int datatype = -1;
+ int * pidataType = &datatype;
+ const int h = getTextureHeight(id);
+ const int w = getTextureWidth(id);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, &data);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_DATA_TYPE__, jni_int, (void**) &pidataType);
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &piParentFigure);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ switch ((DataType)datatype)
+ {
+ case MATPLOT_HM1_Char :
+ case MATPLOT_Char :
+ {
+ char * index = (char *)data;
+ for (int i = 0 ; i < w * h; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+
+ break;
+ }
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ {
+ unsigned char * index = (unsigned char *)data;
+ for (int i = 0 ; i < w * h; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ int * index = (int *)data;
+ for (int i = 0 ; i < w * h; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ unsigned int * index = (unsigned int *)data;
+ for (int i = 0 ; i < w * h; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+
+ break;
+ }
+ case MATPLOT_Short :
+ {
+ short * index = (short *)data;
+ for (int i = 0 ; i < w * h; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+
+ break;
+ }
+ case MATPLOT_UShort :
+ {
+ unsigned short * index = (unsigned short *)data;
+ for (int i = 0 ; i < w * h; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ double * index = (double *)data;
+ for (int i = 0 ; i < w * h ; i++)
+ {
+ ColorComputer::getDirectByteColor(index[i] - 1, colormap, colormapSize, &buffer[4 * i], false);
+ }
+ break;
+ }
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+
+ return bufferLength;
+}
+
+
+int MatPlotDecomposer::fillTextureData(int id, unsigned char* buffer, int bufferLength, int x, int y, int width, int height)
+{
+ double* value = NULL;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &value);
+ if (width * height * 4 == bufferLength)
+ {
+ int parentFigure = 0;
+ int * piParentFigure = &parentFigure;
+ double* colormap = NULL;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &piParentFigure);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+ int textureHeight = getTextureHeight(id);
+ int k = 0;
+ for (int j = y ; j < y + height ; j++)
+ {
+ for (int i = x ; i < x + width ; i++)
+ {
+ ColorComputer::getDirectByteColor(value[j + i * textureHeight] - 1, colormap, colormapSize, &buffer[k]);
+ buffer[k + 3] = 255;
+ k += 4;
+ }
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+
+ return bufferLength;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int MatPlotDecomposer::getTextureImageType(int id)
+{
+ int type = -1;
+ int * piType = &type;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__, jni_int, (void**) &piType);
+
+ return type;
+}
+
+int MatPlotDecomposer::getTextureDataType(int id)
+{
+ int type = -1;
+ int * piType = &type;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_DATA_TYPE__, jni_int, (void**) &piType);
+
+ return type;
+}
+
+int MatPlotDecomposer::getTextureGLType(int id)
+{
+ int type = -1;
+ int * piType = &type;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_GL_TYPE__, jni_int, (void**) &piType);
+
+ return type;
+}
+
+int MatPlotDecomposer::getTextureData(int id, void ** address, unsigned int * size)
+{
+ int type = getTextureImageType(id);
+ if (type == MATPLOT_INDEX)
+ {
+ // Indexed colors
+ const int h = getTextureHeight(id);
+ const int w = getTextureWidth(id);
+ const int bsize = w * h * sizeof(int);
+ unsigned char * buffer = new unsigned char[bsize];
+ fillTextureData(id, buffer, bsize);
+
+ *address = buffer;
+ *size = bsize;
+
+ return 1;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__, jni_double_vector, address);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__, jni_int, (void **)&size);
+
+ return 1;
+}
+
+void MatPlotDecomposer::disposeTextureData(int id, unsigned char * buffer)
+{
+ if (buffer)
+ {
+ delete[] buffer;
+ }
+}
+
+int MatPlotDecomposer::isTextureRowOrder(int id)
+{
+ int rowOrder;
+ int * piRowOrder = &rowOrder;
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_DATA_ORDER__, jni_int, (void**) &piRowOrder);
+
+ return rowOrder;
+}
+
+int buildMatplotType(DataType datatype, DataOrder dataorder, ImageType imagetype)
+{
+ return ((int)datatype) | ((int)dataorder << 8) | ((int)imagetype << 16);
+}
diff --git a/modules/graphic_objects/src/cpp/MeshData.cpp b/modules/graphic_objects/src/cpp/MeshData.cpp
new file mode 100755
index 000000000..7be7128a0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/MeshData.cpp
@@ -0,0 +1,364 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "MeshData.hxx"
+#include "DataProperties.hxx"
+
+extern "C" {
+#include <string.h>
+#include "BOOL.h"
+
+#include "graphicObjectProperties.h"
+}
+
+MeshData::MeshData(void)
+{
+ vertices = NULL;
+ indices = NULL;
+ values = NULL;
+
+ numberVertices = 0;
+ numberElements = 0;
+ numberVerticesByElem = 3;
+}
+
+/* To be correctly implemented */
+MeshData::MeshData(unsigned int numberVertices, unsigned int numberElements, unsigned int numberVerticesByElem)
+{
+ vertices = new double[numberVerticesByElem * numberVertices];
+ indices = new unsigned int[numberVerticesByElem * numberElements];
+
+ this->numberVertices = numberVertices;
+ this->numberElements = numberElements;
+ this->numberVerticesByElem = numberVerticesByElem;
+}
+
+/* To be correctly implemented */
+MeshData::~MeshData(void)
+{
+ if (numberVertices > 0)
+ {
+ delete [] vertices;
+ delete [] values;
+ }
+
+ if (numberElements > 0)
+ {
+ delete [] indices;
+ }
+
+}
+
+int MeshData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_NUM_VERTICES__ :
+ return NUM_VERTICES;
+ case __GO_DATA_MODEL_NUM_INDICES__ :
+ return NUM_INDICES;
+ case __GO_DATA_MODEL_X__ :
+ return X_COORDINATES;
+ case __GO_DATA_MODEL_Y__ :
+ return Y_COORDINATES;
+ case __GO_DATA_MODEL_Z__ :
+ return Z_COORDINATES;
+ case __GO_DATA_MODEL_COORDINATES__ :
+ return COORDINATES;
+ case __GO_DATA_MODEL_INDICES__ :
+ return INDICES;
+ case __GO_DATA_MODEL_VALUES__ :
+ return VALUES;
+ case __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ :
+ return NUM_VERTICES_BY_ELEM;
+ default :
+ return Data3D::getPropertyFromName(propertyName);
+ }
+
+}
+
+
+int MeshData::setDataProperty(int property, void const* value, int numElements)
+{
+ switch (property)
+ {
+ case NUM_VERTICES :
+ return setNumVertices(*((unsigned int const*) value));
+ case NUM_INDICES :
+ return setNumIndices(*((unsigned int const*) value));
+ case X_COORDINATES :
+ setDataX((double const*) value, numElements);
+ break;
+ case Y_COORDINATES :
+ setDataY((double const*) value, numElements);
+ break;
+ case Z_COORDINATES :
+ setDataZ((double const*) value, numElements);
+ break;
+ case COORDINATES :
+ setVertices((double const*) value, numElements);
+ break;
+ case INDICES :
+ setIndices((unsigned int const*) value, numElements);
+ break;
+ case VALUES :
+ setValues((double const*) value, numElements);
+ break;
+ case NUM_VERTICES_BY_ELEM :
+ numberVerticesByElem = *((unsigned int const*) value);
+ break;
+ default :
+ return Data3D::setDataProperty(property, value, numElements);
+ }
+
+ return 1;
+}
+
+void MeshData::getDataProperty(int property, void **_pvData)
+{
+ switch (property)
+ {
+ case NUM_VERTICES :
+ ((int *)*_pvData)[0] = getNumVertices();
+ break;
+ case NUM_INDICES :
+ ((int *)*_pvData)[0] = getNumIndices();
+ break;
+ case COORDINATES :
+ *_pvData = getVertices();
+ break;
+ case INDICES :
+ *_pvData = getIndices();
+ break;
+ case VALUES :
+ *_pvData = getValues();
+ break;
+ case NUM_VERTICES_BY_ELEM :
+ ((int *) *_pvData)[0] = numberVerticesByElem;
+ break;
+ default :
+ Data3D::getDataProperty(property, _pvData);
+ }
+}
+
+unsigned int MeshData::getNumVertices(void)
+{
+ return numberVertices;
+}
+
+/*
+ * Values are considered as being specified per-vertex for now
+ * To be corrected
+ */
+int MeshData::setNumVertices(unsigned int numVertices)
+{
+ int result = 1;
+
+ if (numVertices == 0 && numberVertices > 0)
+ {
+ numberVertices = 0;
+
+ delete [] vertices;
+ delete [] values;
+
+ return 1;
+ }
+
+ if (numVertices != this->numberVertices)
+ {
+ double* newVertices = NULL;
+ double* newValues = NULL;
+
+ try
+ {
+ newVertices = new double[3 * numVertices];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+
+ try
+ {
+ newValues = new double[numVertices];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+
+ if (result)
+ {
+ if (this->numberVertices > 0)
+ {
+ delete [] vertices;
+ delete [] values;
+ }
+
+ vertices = newVertices;
+ values = newValues;
+
+ this->numberVertices = numVertices;
+
+ resetCoordinates();
+ }
+ else
+ {
+ /* Failed allocation, nothing is set */
+ if (newVertices != NULL)
+ {
+ delete [] newVertices;
+ }
+
+ if (newValues != NULL)
+ {
+ delete [] newValues;
+ }
+ }
+
+ }
+
+ return result;
+}
+
+unsigned int MeshData::getNumIndices(void)
+{
+ return numberElements;
+}
+
+int MeshData::setNumIndices(unsigned int numIndices)
+{
+ int result = 1;
+
+ if (numIndices != this->numberElements)
+ {
+ unsigned int* newIndices = NULL;
+
+ try
+ {
+ newIndices = new unsigned int[numberVerticesByElem * numIndices];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+
+ if (result)
+ {
+ if (this->numberElements > 0)
+ {
+ delete [] indices;
+ }
+
+ indices = newIndices;
+
+ this->numberElements = numIndices;
+ }
+ else
+ {
+ /* Failed allocation, nothing is set */
+ if (newIndices != NULL)
+ {
+ delete [] newIndices;
+ }
+ }
+
+ }
+
+ return result;
+}
+
+double* MeshData::getVertices(void)
+{
+ return vertices;
+}
+
+void MeshData::setVertices(double const* vertices, unsigned int numElements)
+{
+ if (numElements <= numberVertices)
+ {
+ memcpy(this->vertices, vertices, numElements * 3 * sizeof(double));
+ }
+}
+
+unsigned int* MeshData::getIndices(void)
+{
+ return indices;
+}
+
+void MeshData::setIndices(unsigned int const* indices, unsigned int numElements)
+{
+ if (numElements <= numberElements)
+ {
+ memcpy(this->indices, indices, numElements * numberVerticesByElem * sizeof(unsigned int));
+ }
+}
+
+void MeshData::setDataX(double const* data, unsigned int numElements)
+{
+ if (numElements <= numberVertices)
+ {
+ for (unsigned int i = 0 ; i < numElements ; i++)
+ {
+ vertices[3 * i] = data[i];
+ }
+ }
+}
+
+void MeshData::setDataY(double const* data, unsigned int numElements)
+{
+ if (numElements <= numberVertices)
+ {
+ for (unsigned int i = 0 ; i < numElements ; i++)
+ {
+ vertices[3 * i + 1] = data[i];
+ }
+ }
+}
+
+void MeshData::setDataZ(double const* data, unsigned int numElements)
+{
+ if (numElements <= numberVertices)
+ {
+ for (unsigned int i = 0; i < numElements; i++)
+ {
+ vertices[3 * i + 2] = data[i];
+ }
+ }
+}
+
+void MeshData::setValues(double const* data, unsigned int numElements)
+{
+ if (numElements <= numberVertices)
+ {
+ memcpy(this->values, data, numElements * sizeof(double));
+ }
+}
+
+double* MeshData::getValues(void)
+{
+ return values;
+}
+
+unsigned int MeshData::scilabIndexToIndex(unsigned int scilabIndex)
+{
+ return (scilabIndex - 1);
+}
+
+void MeshData::resetCoordinates(void)
+{
+ memset(vertices, 0, numberVertices * 3 * sizeof(double));
+}
+
diff --git a/modules/graphic_objects/src/cpp/MeshFecData.cpp b/modules/graphic_objects/src/cpp/MeshFecData.cpp
new file mode 100755
index 000000000..7a98adec9
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/MeshFecData.cpp
@@ -0,0 +1,212 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "MeshFecData.hxx"
+#include "MeshData.hxx"
+#include "DataProperties.hxx"
+
+extern "C" {
+#include <string.h>
+#include "BOOL.h"
+
+#include "graphicObjectProperties.h"
+}
+
+MeshFecData::MeshFecData(void)
+{
+ vertices = NULL;
+ indices = NULL;
+ values = NULL;
+ fecValues = NULL;
+
+ numberVertices = 0;
+ numberElements = 0;
+ numberVerticesByElem = 3;
+}
+
+MeshFecData::MeshFecData(unsigned int numberVertices, unsigned int numberElements, unsigned int numberVerticesByElem)
+{
+ vertices = new double[numberVerticesByElem * numberVertices];
+ indices = new unsigned int[numberVerticesByElem * numberElements];
+ fecValues = new double[(numberVerticesByElem + 2) * numberElements];
+
+ this->numberVerticesByElem = numberVerticesByElem;
+ this->numberVertices = numberVertices;
+ this->numberElements = numberElements;
+}
+
+MeshFecData::~MeshFecData(void)
+{
+ if (numberVertices > 0)
+ {
+ delete [] vertices;
+ delete [] values;
+ }
+
+ if (numberElements > 0)
+ {
+ delete [] indices;
+ delete [] fecValues;
+ }
+
+ numberVertices = 0;
+ numberElements = 0;
+}
+
+int MeshFecData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_NUM_INDICES__ :
+ return NUM_INDICES;
+ case __GO_DATA_MODEL_FEC_ELEMENTS__ :
+ return FEC_ELEMENTS;
+ default :
+ return MeshData::getPropertyFromName(propertyName);
+ }
+}
+
+
+int MeshFecData::setDataProperty(int property, void const* value, int numElements)
+{
+ if (property == NUM_INDICES)
+ {
+ return setNumIndices(*((unsigned int const*) value));
+ }
+ else if (property == FEC_ELEMENTS)
+ {
+ setFecElements((double const*) value, numElements);
+ }
+ else
+ {
+ return MeshData::setDataProperty(property, value, numElements);
+ }
+
+ return 1;
+}
+
+void MeshFecData::getDataProperty(int property, void **_pvData)
+{
+ if (property == NUM_INDICES)
+ {
+ ((int *) *_pvData)[0] = getNumIndices();
+ }
+ else if (property == FEC_ELEMENTS)
+ {
+ *_pvData = getFecElements();
+ }
+ else
+ {
+ MeshData::getDataProperty(property, _pvData);
+ }
+
+}
+
+unsigned int MeshFecData::getNumIndices(void)
+{
+ return numberElements;
+}
+
+int MeshFecData::setNumIndices(unsigned int numIndices)
+{
+ int result = 1;
+ if (numIndices != this->numberElements)
+ {
+ unsigned int* newIndices = NULL;
+ double* newFecValues = NULL;
+
+ try
+ {
+ newIndices = new unsigned int[numberVerticesByElem * numIndices];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+
+ try
+ {
+ newFecValues = new double[(numberVerticesByElem + 2) * numIndices];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+
+
+ if (result)
+ {
+ if (this->numberElements > 0)
+ {
+ delete [] indices;
+ delete [] fecValues;
+ }
+
+ indices = newIndices;
+ fecValues = newFecValues;
+
+ this->numberElements = numIndices;
+ }
+ else
+ {
+ /* Failed allocation, nothing is set */
+ if (newIndices != NULL)
+ {
+ delete [] newIndices;
+ }
+
+ if (newFecValues != NULL)
+ {
+ delete [] newFecValues;
+ }
+ }
+
+ }
+
+ return result;
+}
+
+void MeshFecData::setFecElements(double const* data, int numElements)
+{
+ if ((unsigned int)numElements > numberElements)
+ {
+ return;
+ }
+
+ for (int i = 0; i < numElements; i++)
+ {
+ for (unsigned j = 0; j < numberVerticesByElem; ++j)
+ {
+ indices[numberVerticesByElem * i + j] = scilabIndexToIndex((unsigned int) data[(j + 1) * numElements + i]);
+ }
+
+ /* Element number */
+ fecValues[i] = data[i];
+
+ /* Element vertices */
+ for (unsigned int j = 1; j <= numberVerticesByElem; ++j)
+ {
+ fecValues[j * numElements + i] = data[j * numElements + i];
+ }
+
+ /* Flag */
+ fecValues[(numberVerticesByElem + 1) * numElements + i] = data[(numberVerticesByElem + 1) * numElements + i];
+ }
+}
+
+double* MeshFecData::getFecElements(void)
+{
+ return fecValues;
+}
+
diff --git a/modules/graphic_objects/src/cpp/MeshFecDataDecomposer.cpp b/modules/graphic_objects/src/cpp/MeshFecDataDecomposer.cpp
new file mode 100755
index 000000000..f482bf6fe
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/MeshFecDataDecomposer.cpp
@@ -0,0 +1,598 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ColorComputer.hxx"
+#include "DecompositionUtils.hxx"
+#include "MeshFecDataDecomposer.hxx"
+
+#include <iostream>
+
+extern "C"
+{
+#include <stdlib.h>
+#include <string.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+int MeshFecDataDecomposer::getDataSize(int id)
+{
+ int numVertices = 0;
+ int* piNumVertices = &numVertices;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+
+ return numVertices;
+}
+
+void MeshFecDataDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double* coordinates = NULL;
+
+ int numVertices = 0;
+ int* piNumVertices = &numVertices;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+
+ for (int i = 0; i < numVertices; i++)
+ {
+ if (coordinateMask & 0x1)
+ {
+ double xi = coordinates[3 * i];
+ if (logMask & 0x1)
+ {
+ xi = DecompositionUtils::getLog10Value(xi);
+ }
+ buffer[elementsSize * i] = (float)(xi * scale[0] + translation[0]);
+ }
+
+ if (coordinateMask & 0x2)
+ {
+ double yi = coordinates[3 * i + 1];
+ if (logMask & 0x2)
+ {
+ yi = DecompositionUtils::getLog10Value(yi);
+ }
+ buffer[elementsSize * i + 1] = (float)(yi * scale[1] + translation[1]);
+ }
+
+ if (coordinateMask & 0x4)
+ {
+ double zi = coordinates[3 * i + 2];
+ if (logMask & 0x4)
+ {
+ zi = DecompositionUtils::getLog10Value(zi);
+ }
+ buffer[elementsSize * i + 2] = (float)(zi * scale[2] + translation[2]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8))
+ {
+ buffer[elementsSize * i + 3] = 1.0;
+ }
+ }
+
+}
+
+void MeshFecDataDecomposer::fillTextureCoordinates(int id, float* buffer, int bufferLength)
+{
+ int parentFigure = 0;
+ int * piParentFigure = &parentFigure;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+ int* colorRange = NULL;
+
+ double colorsNumber = 0.;
+ double scale = 0.;
+ double t = 0.;
+
+ double* values = NULL;
+ double* zBounds = NULL;
+
+ double minValue = 0.;
+ double maxValue = 0.;
+
+ int numVertices = 0;
+ int* piNumVertices = &numVertices;
+
+ int bufferOffset = 0;
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &piParentFigure);
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parentFigure == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_COLOR_RANGE__, jni_int_vector, (void**) &colorRange);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ if (colorRange[0] != 0 || colorRange[1] != 0)
+ {
+ colorsNumber = (double) (1 + colorRange[1] - colorRange[0]);
+ }
+ else
+ {
+ colorsNumber = (double) colormapSize;
+ }
+
+ releaseGraphicObjectProperty(__GO_COLOR_RANGE__, colorRange, jni_int_vector, 0);
+
+ /** To take into account the presence of exterior colors:
+ * - We add 2 to the number of colors.
+ * - We skip the first color.
+ */
+ t = 3. / (2. * (colorsNumber + 2.));
+ scale = (colorsNumber - 1.) / (colorsNumber + 2);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_VALUES__, jni_double_vector, (void**) &values);
+ getGraphicObjectProperty(id, __GO_Z_BOUNDS__, jni_double_vector, (void**) &zBounds);
+
+ /* Z-bounds are not taken into account if either of them is invalid */
+ if ((zBounds[0] != 0.0 || zBounds[1] != 0.0) && (DecompositionUtils::isValid(zBounds[0]) && DecompositionUtils::isValid(zBounds[1])) && (zBounds[0] != zBounds[1]))
+ {
+ minValue = zBounds[0];
+ maxValue = zBounds[1];
+ }
+ else
+ {
+ computeMinMaxValues(values, numVertices, &minValue, &maxValue);
+ }
+
+ releaseGraphicObjectProperty(__GO_Z_BOUNDS__, zBounds, jni_double_vector, 0);
+
+ if (maxValue == minValue)
+ {
+ for (int i = 0; i < numVertices; i++)
+ {
+ buffer[bufferOffset++] = (float)minValue;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 1;
+ }
+ }
+ else
+ {
+ for (int i = 0; i < numVertices; i++)
+ {
+ buffer[bufferOffset++] = (float)(t + scale * (values[i] - minValue) / (maxValue - minValue));
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 0;
+ buffer[bufferOffset++] = 1;
+ }
+ }
+}
+
+void MeshFecDataDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
+{
+ int parent = 0;
+ int parentFigure = 0;
+ int * piParentFigure = &parentFigure;
+
+ double* values = NULL;
+ double* zBounds = NULL;
+ double* colormap = NULL;
+
+ double minValue = 0.;
+ double maxValue = 0.;
+ double valueRange = 0.;
+
+ float minColor[3];
+ float maxColor[3];
+
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+
+ int numVertices = 0;
+ int* piNumVertices = &numVertices;
+
+ int minColorIndex = 0;
+ int maxColorIndex = 0;
+
+ int* colorRange = NULL;
+ int useOutsideColors = 0;
+ int bufferOffset = 0;
+
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &piParentFigure);
+
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_VALUES__, jni_double_vector, (void**) &values);
+
+ getGraphicObjectProperty(id, __GO_Z_BOUNDS__, jni_double_vector, (void**) &zBounds);
+ getGraphicObjectProperty(id, __GO_COLOR_RANGE__, jni_int_vector, (void**) &colorRange);
+
+ if (colorRange[0] != 0 || colorRange[1] != 0)
+ {
+ /* To do: use a scilab index to colormap index conversion function */
+ minColorIndex = colorRange[0] - 1;
+ maxColorIndex = colorRange[1] - 1;
+
+ if (minColorIndex < 0)
+ {
+ minColorIndex = 0;
+ }
+ if (maxColorIndex < 0)
+ {
+ maxColorIndex = 0;
+ }
+
+ if (maxColorIndex > colormapSize - 1)
+ {
+ maxColorIndex = colormapSize - 1;
+ }
+ if (minColorIndex > colormapSize - 1)
+ {
+ minColorIndex = colormapSize - 1;
+ }
+
+ }
+ else
+ {
+ minColorIndex = 0;
+ maxColorIndex = colormapSize - 1;
+ }
+
+ releaseGraphicObjectProperty(__GO_COLOR_RANGE__, colorRange, jni_int_vector, 0);
+
+ computeMinMaxValues(values, numVertices, &minValue, &maxValue);
+
+ /* Z-bounds are not taken into account if either of them is invalid */
+ if ((zBounds[0] != 0.0 || zBounds[1] != 0.0) && (DecompositionUtils::isValid(zBounds[0]) && DecompositionUtils::isValid(zBounds[1])) && (zBounds[0] != zBounds[1]))
+ {
+ int* outsideColors;
+
+ minValue = zBounds[0];
+ maxValue = zBounds[1];
+
+ getGraphicObjectProperty(id, __GO_OUTSIDE_COLOR__, jni_int_vector, (void**) &outsideColors);
+
+ if (outsideColors[0] != 0 || outsideColors[1] != 0)
+ {
+ useOutsideColors = 1;
+
+ ColorComputer::getDirectColor((double) outsideColors[0] - 1.0, colormap, colormapSize, minColor);
+ ColorComputer::getDirectColor((double) outsideColors[1] - 1.0, colormap, colormapSize, maxColor);
+ }
+ }
+
+ releaseGraphicObjectProperty(__GO_Z_BOUNDS__, zBounds, jni_double_vector, 0);
+
+ /* To be verified (when reverse z bounds are specified) */
+ if (DecompositionUtils::getAbsoluteValue(maxValue - minValue) < DecompositionUtils::getMinDoubleValue())
+ {
+ valueRange = 1.0;
+ }
+ else
+ {
+ valueRange = maxValue - minValue;
+ }
+
+ for (int i = 0; i < numVertices; i++)
+ {
+ bufferOffset = elementsSize * i;
+
+ if (useOutsideColors == 1)
+ {
+ if (values[i] < minValue)
+ {
+ buffer[bufferOffset] = minColor[0];
+ buffer[bufferOffset + 1] = minColor[1];
+ buffer[bufferOffset + 2] = minColor[2];
+ }
+ else if (values[i] > maxValue)
+ {
+ buffer[bufferOffset] = maxColor[0];
+ buffer[bufferOffset + 1] = maxColor[1];
+ buffer[bufferOffset + 2] = maxColor[2];
+ }
+ else
+ {
+ /* To do: replace 0.5 by a macro-definition */
+ ColorComputer::getColor(values[i], minValue, valueRange, 0.5, colormap, minColorIndex, maxColorIndex, colormapSize, &buffer[bufferOffset]);
+ }
+ }
+ else
+ {
+ /* To do: replace 0.5 by a macro-definition */
+ ColorComputer::getColor(values[i], minValue, valueRange, 0.5, colormap, minColorIndex, maxColorIndex, colormapSize, &buffer[bufferOffset]);
+ }
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+}
+
+void MeshFecDataDecomposer::computeMinMaxValues(double* values, int numValues, double* valueMin, double* valueMax)
+{
+ double maxDouble = DecompositionUtils::getMaxDoubleValue();
+ double tmpValueMin = maxDouble;
+ double tmpValueMax = -maxDouble;
+ double value = 0.;
+
+ for (int i = 0; i < numValues; i++)
+ {
+ value = values[i];
+
+ if (value < tmpValueMin)
+ {
+ tmpValueMin = value;
+ }
+
+ if (value > tmpValueMax)
+ {
+ tmpValueMax = value;
+ }
+ }
+
+ *valueMin = tmpValueMin;
+ *valueMax = tmpValueMax;
+}
+
+int MeshFecDataDecomposer::getIndicesSize(int id)
+{
+ int numIndices = 0;
+ int* piNumIndices = &numIndices;
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumIndices);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ return 3 * (nVertex - 2) * numIndices;
+}
+
+int MeshFecDataDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* coordinates = NULL;
+ double* values = NULL;
+
+ int numIndices = 0;
+ int* piNumIndices = &numIndices;
+ int numVertices = 0;
+ int* piNumVertices = &numVertices;
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ int* triangleIndices = NULL;
+
+ int v0 = 0;
+ int v1 = 0;
+ int v2 = 0;
+ int bufferOffset = 0;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumIndices);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_VALUES__, jni_double_vector, (void**) &values);
+
+ /* 0 facets */
+ if (numIndices == 0 || numVertices < 3)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_INDICES__, jni_int_vector, (void**) &triangleIndices);
+
+ for (int i = 0; i < numIndices; i++)
+ {
+ v0 = triangleIndices[nVertex * i];
+ for (unsigned int j = 1; j < nVertex - 1; ++j)
+ {
+ v1 = triangleIndices[nVertex * i + j];
+ v2 = triangleIndices[nVertex * i + j + 1];
+
+ if (areFaceIndicesValid(numVertices, v0, v1, v2) &&
+ areFaceVerticesValid(coordinates, v0, v1, v2, logMask) &&
+ areFaceValuesValid(values, v0, v1, v2))
+ {
+ buffer[bufferOffset] = v0;
+ buffer[bufferOffset + 1] = v1;
+ buffer[bufferOffset + 2] = v2;
+ bufferOffset += 3;
+ }
+ }
+ }
+
+ return bufferOffset;
+}
+
+int MeshFecDataDecomposer::areFaceVerticesValid(double* coordinates, int v0, int v1, int v2, int logMask)
+{
+ double vertex0[3];
+ double vertex1[3];
+ double vertex2[3];
+
+ getVertexCoordinates(coordinates, v0, vertex0);
+ getVertexCoordinates(coordinates, v1, vertex1);
+ getVertexCoordinates(coordinates, v2, vertex2);
+
+ if (DecompositionUtils::isValid(vertex0[0], vertex0[1], vertex0[2]) &&
+ DecompositionUtils::isLogValid(vertex0[0], vertex0[1], vertex0[2], logMask) &&
+ DecompositionUtils::isValid(vertex1[0], vertex1[1], vertex1[2]) &&
+ DecompositionUtils::isLogValid(vertex1[0], vertex1[1], vertex1[2], logMask) &&
+ DecompositionUtils::isValid(vertex2[0], vertex2[1], vertex2[2]) &&
+ DecompositionUtils::isLogValid(vertex2[0], vertex2[1], vertex2[2], logMask))
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+int MeshFecDataDecomposer::areSegmentVerticesValid(double* coordinates, int v0, int v1, int logMask)
+{
+ double vertex0[3];
+ double vertex1[3];
+
+ getVertexCoordinates(coordinates, v0, vertex0);
+ getVertexCoordinates(coordinates, v1, vertex1);
+
+ if (DecompositionUtils::isValid(vertex0[0], vertex0[1], vertex0[2]) &&
+ DecompositionUtils::isLogValid(vertex0[0], vertex0[1], vertex0[2], logMask) &&
+ DecompositionUtils::isValid(vertex1[0], vertex1[1], vertex1[2]) &&
+ DecompositionUtils::isLogValid(vertex1[0], vertex1[1], vertex1[2], logMask))
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+int MeshFecDataDecomposer::areFaceValuesValid(double* values, int v0, int v1, int v2)
+{
+ if (DecompositionUtils::isValid(values[v0], values[v1], values[v2]))
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+int MeshFecDataDecomposer::areSegmentValuesValid(double* values, int v0, int v1)
+{
+ if (DecompositionUtils::isValid(values[v0], values[v1]))
+ {
+ return 1;
+ }
+
+ return 0;
+}
+
+int MeshFecDataDecomposer::areFaceIndicesValid(int numVertices, int v0, int v1, int v2)
+{
+ if (v0 < 0 || v0 >= numVertices || v1 < 0 || v1 >= numVertices || v2 < 0 || v2 >= numVertices)
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+int MeshFecDataDecomposer::areSegmentIndicesValid(int numVertices, int v0, int v1)
+{
+ if (v0 < 0 || v0 >= numVertices || v1 < 0 || v1 >= numVertices)
+ {
+ return 0;
+ }
+
+ return 1;
+}
+
+
+void MeshFecDataDecomposer::getVertexCoordinates(double* coordinates, int index, double* vertexCoordinates)
+{
+ vertexCoordinates[0] = coordinates[3 * index];
+ vertexCoordinates[1] = coordinates[3 * index + 1];
+ vertexCoordinates[2] = coordinates[3 * index + 2];
+}
+
+int MeshFecDataDecomposer::getWireIndicesSize(int id)
+{
+ int numTriangles = 0;
+ int* piNumTriangles = &numTriangles;
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumTriangles);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ return 2 * nVertex * numTriangles;
+}
+
+/*
+ * To do: output shared edges once instead of twice (once per adjacent face).
+ */
+int MeshFecDataDecomposer::fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* coordinates = NULL;
+ double* values = NULL;
+
+ int numVertices = 0;
+ int* piNumVertices = &numVertices;
+ int numIndices = 0;
+ int* piNumIndices = &numIndices;
+ int* triangleIndices = NULL;
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ int v0 = 0;
+ int v1 = 0;
+ int v2 = 0;
+ int bufferOffset = 0;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**) &piNumIndices);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**) &piNumVertices);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_VALUES__, jni_double_vector, (void**) &values);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ /* 0 segments */
+ if (numIndices == 0 || numVertices < 3)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_INDICES__, jni_int_vector, (void**) &triangleIndices);
+
+ for (int i = 0; i < numIndices; i++)
+ {
+ for (unsigned int j = 0; j < nVertex - 1; ++j)
+ {
+ v0 = triangleIndices[nVertex * i + j];
+ v1 = triangleIndices[nVertex * i + j + 1];
+ if (areSegmentIndicesValid(numVertices, v0, v1) &&
+ areSegmentVerticesValid(coordinates, v0, v1, logMask) &&
+ areSegmentValuesValid(values, v0, v1))
+ {
+ buffer[bufferOffset] = v0;
+ buffer[bufferOffset + 1] = v1;
+ bufferOffset += 2;
+ }
+ }
+
+ v0 = triangleIndices[nVertex * i + nVertex - 1];
+ v1 = triangleIndices[nVertex * i];
+ if (areSegmentIndicesValid(numVertices, v0, v1) &&
+ areSegmentVerticesValid(coordinates, v0, v1, logMask) &&
+ areSegmentValuesValid(values, v0, v1))
+ {
+ buffer[bufferOffset] = v0;
+ buffer[bufferOffset + 1] = v1;
+ bufferOffset += 2;
+ }
+ }
+
+ return bufferOffset;
+}
+
diff --git a/modules/graphic_objects/src/cpp/NgonData.cpp b/modules/graphic_objects/src/cpp/NgonData.cpp
new file mode 100755
index 000000000..7cfd398cd
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonData.cpp
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "NgonData.hxx"
+#include "DataProperties.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <string.h>
+
+#include "graphicObjectProperties.h"
+
+}
+
+NgonData::NgonData(void)
+{
+ numGons = 0;
+ numVerticesPerGon = 0;
+}
+
+/* To be implemented */
+NgonData::~NgonData(void)
+{
+
+}
+
+int NgonData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_NUM_GONS__ :
+ return NUM_GONS;
+ case __GO_DATA_MODEL_NUM_VERTICES_PER_GON__ :
+ return NUM_VERTICES_PER_GON;
+ default :
+ return Data3D::getPropertyFromName(propertyName);
+ }
+
+}
+
+int NgonData::setDataProperty(int property, void const* value, int numElements)
+{
+
+ if (property == NUM_GONS)
+ {
+ setNumGons(*((int*) value));
+ }
+ else if (property == NUM_VERTICES_PER_GON)
+ {
+ setNumVerticesPerGon(*((int*) value));
+ }
+ else
+ {
+ return Data3D::setDataProperty(property, value, numElements);
+ }
+
+ return 1;
+}
+
+void NgonData::getDataProperty(int property, void **_pvData)
+{
+ if (property == NUM_GONS)
+ {
+ ((int *) *_pvData)[0] = getNumGons();
+ }
+ else if (property == NUM_VERTICES_PER_GON)
+ {
+ ((int *) *_pvData)[0] = getNumVerticesPerGon();
+ }
+ else
+ {
+ Data3D::getDataProperty(property, _pvData);
+ }
+
+}
+
+void NgonData::setNumGons(int numGons)
+{
+ this->numGons = numGons;
+}
+
+int NgonData::getNumGons(void)
+{
+ return numGons;
+}
+
+void NgonData::setNumVerticesPerGon(int numVerticesPerGon)
+{
+ this->numVerticesPerGon = numVerticesPerGon;
+}
+
+int NgonData::getNumVerticesPerGon(void)
+{
+ return numVerticesPerGon;
+}
+
diff --git a/modules/graphic_objects/src/cpp/NgonGeneralData.cpp b/modules/graphic_objects/src/cpp/NgonGeneralData.cpp
new file mode 100755
index 000000000..b8ea011b5
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonGeneralData.cpp
@@ -0,0 +1,304 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <iostream>
+
+#include "NgonGeneralData.hxx"
+#include "DataProperties.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <string.h>
+
+#include "graphicObjectProperties.h"
+}
+
+NgonGeneralData::NgonGeneralData(void)
+{
+ numGons = 0;
+ numVerticesPerGon = 0;
+
+ coordinates = NULL;
+
+ colorValues = NULL;
+ numColors = 0;
+}
+
+NgonGeneralData::~NgonGeneralData(void)
+{
+ if (numGons * numVerticesPerGon > 0)
+ {
+ delete [] coordinates;
+ }
+
+ if (numColors > 0)
+ {
+ delete [] colorValues;
+ }
+}
+
+int NgonGeneralData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ :
+ return NUM_ELEMENTS_ARRAY;
+ case __GO_DATA_MODEL_COORDINATES__ :
+ return COORDINATES;
+ case __GO_DATA_MODEL_X__ :
+ return X_COORDINATES;
+ case __GO_DATA_MODEL_Y__ :
+ return Y_COORDINATES;
+ case __GO_DATA_MODEL_Z__ :
+ return Z_COORDINATES;
+ case __GO_DATA_MODEL_COLORS__ :
+ return COLORS;
+ case __GO_DATA_MODEL_NUM_COLORS__ :
+ return NUM_COLORS;
+ default :
+ return NgonData::getPropertyFromName(propertyName);
+ }
+}
+
+int NgonGeneralData::setDataProperty(int property, void const* value, int numElements)
+{
+ switch (property)
+ {
+ case NUM_ELEMENTS_ARRAY :
+ return setNumElementsArray((int const*) value);
+ case COORDINATES :
+ setData((double const*) value, numElements);
+ break;
+ case X_COORDINATES :
+ setDataX((double const*) value, numElements);
+ break;
+ case Y_COORDINATES :
+ setDataY((double const*) value, numElements);
+ break;
+ case Z_COORDINATES :
+ setDataZ((double const*) value, numElements);
+ break;
+ case COLORS :
+ setColors((double const*) value, numElements);
+ break;
+ default :
+ return NgonData::setDataProperty(property, value, numElements);
+ }
+
+ return 1;
+}
+
+void NgonGeneralData::getDataProperty(int property, void **_pvData)
+{
+ switch (property)
+ {
+ case NUM_ELEMENTS_ARRAY :
+ /* Not implemented yet */
+ // getNumElementsArray();
+ break;
+ case COORDINATES :
+ *_pvData = getData();
+ break;
+ case X_COORDINATES :
+ *_pvData = getDataX();
+ break;
+ case Y_COORDINATES :
+ *_pvData = getDataY();
+ break;
+ case Z_COORDINATES :
+ *_pvData = getDataZ();
+ break;
+ case COLORS :
+ *_pvData = getColors();
+ break;
+ case NUM_COLORS :
+ ((int *) *_pvData)[0] = getNumColors();
+ break;
+ default :
+ NgonData::getDataProperty(property, _pvData);
+ }
+}
+
+double* NgonGeneralData::getData()
+{
+ return coordinates;
+}
+
+double* NgonGeneralData::getDataX(void)
+{
+ return coordinates;
+}
+
+double* NgonGeneralData::getDataY(void)
+{
+ return &coordinates[numGons * numVerticesPerGon];
+}
+
+double* NgonGeneralData::getDataZ(void)
+{
+ return &coordinates[2 * numGons * numVerticesPerGon];
+}
+
+/*
+ * Only partially implemented
+ * Must be made consistent with setNumElementsArray
+ */
+void NgonGeneralData::setData(double const* data, int numElements)
+{
+ if (numElements != numGons * numVerticesPerGon)
+ {
+ delete [] coordinates;
+
+ numVerticesPerGon = numElements / numGons;
+ coordinates = new double[3 * numElements];
+ }
+
+ memcpy(coordinates, data, 3 * numElements * sizeof(double));
+}
+
+void NgonGeneralData::setDataX(double const* data, int numElements)
+{
+ double* xCoordinates = NULL;
+
+ xCoordinates = coordinates;
+ memcpy(xCoordinates, data, numElements * sizeof(double));
+}
+
+void NgonGeneralData::setDataY(double const* data, int numElements)
+{
+ double* yCoordinates;
+
+ yCoordinates = &coordinates[numGons * numVerticesPerGon];
+ memcpy(yCoordinates, data, numElements * sizeof(double));
+}
+
+void NgonGeneralData::setDataZ(double const* data, int numElements)
+{
+ double* zCoordinates = NULL;
+
+ zCoordinates = &coordinates[2 * numGons * numVerticesPerGon];
+ memcpy(zCoordinates, data, numElements * sizeof(double));
+}
+
+int NgonGeneralData::getNumElements(void)
+{
+ return numGons;
+}
+
+int NgonGeneralData::setNumElementsArray(int const* numElementsArray)
+{
+ double* newCoordinates = NULL;
+ double* newColorValues = NULL;
+ int result = 1;
+
+ /* Test whether the number of colors is valid */
+ if ((numElementsArray[2] != numElementsArray[0]*numElementsArray[1]) &&
+ (numElementsArray[2] != numElementsArray[0]) &&
+ (numElementsArray[2] != 0))
+ {
+ return 0;
+ }
+
+ if (numGons * numVerticesPerGon != numElementsArray[0]*numElementsArray[1])
+ {
+ try
+ {
+ newCoordinates = new double[3 * numElementsArray[0]*numElementsArray[1]];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ return 0;
+ }
+
+ result = 1;
+ }
+
+ if (numElementsArray[2] != this->numColors)
+ {
+ if (numElementsArray[2] > 0)
+ {
+ try
+ {
+ newColorValues = new double[numElementsArray[2]];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ }
+
+ if (result == 1)
+ {
+ if (newCoordinates != NULL)
+ {
+ if (numGons * numVerticesPerGon > 0)
+ {
+ delete [] coordinates;
+ }
+
+ coordinates = newCoordinates;
+
+ numGons = numElementsArray[0];
+ numVerticesPerGon = numElementsArray[1];
+ }
+
+ if (newColorValues != NULL || numElementsArray[2] == 0)
+ {
+ if (this->numColors > 0)
+ {
+ delete [] colorValues;
+ }
+
+ colorValues = newColorValues;
+ this->numColors = numElementsArray[2];
+ }
+ }
+ else
+ {
+ if (newCoordinates != NULL)
+ {
+ delete [] newCoordinates;
+ }
+
+ if (newColorValues != NULL)
+ {
+ delete [] newColorValues;
+ }
+ }
+
+ return result;
+}
+
+double* NgonGeneralData::getColors(void)
+{
+ return colorValues;
+}
+
+void NgonGeneralData::setColors(double const* colors, int numElements)
+{
+ if (numElements > numColors)
+ {
+ return;
+ }
+ memcpy(colorValues, colors, numElements * sizeof(double));
+}
+
+int NgonGeneralData::getNumColors(void)
+{
+ return numColors;
+}
+
diff --git a/modules/graphic_objects/src/cpp/NgonGridData.cpp b/modules/graphic_objects/src/cpp/NgonGridData.cpp
new file mode 100755
index 000000000..4085b26ff
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonGridData.cpp
@@ -0,0 +1,387 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "NgonGridData.hxx"
+
+extern "C" {
+#include <string.h>
+#include <stdlib.h>
+
+#include "graphicObjectProperties.h"
+}
+
+NgonGridData::NgonGridData(void)
+{
+ numGons = 0;
+
+ /* Grid: must be set to 4 */
+ numVerticesPerGon = 4;
+
+ xCoordinates = NULL;
+ yCoordinates = NULL;
+ zCoordinates = NULL;
+
+ xSize = 0;
+ ySize = 0;
+
+ xDimensions[0] = 0;
+ xDimensions[1] = 0;
+
+ yDimensions[0] = 0;
+ yDimensions[1] = 0;
+
+ /* Set to 0 as a default */
+ zCoordinatesShift = 0.0;
+}
+
+NgonGridData::~NgonGridData(void)
+{
+ if (xSize > 0)
+ {
+ delete [] xCoordinates;
+ }
+
+ if (ySize > 0)
+ {
+ delete [] yCoordinates;
+ }
+
+ if (xSize > 0 && ySize > 0)
+ {
+ delete [] zCoordinates;
+ }
+}
+
+int NgonGridData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_NUM_X__ :
+ return NUM_X;
+ case __GO_DATA_MODEL_NUM_Y__ :
+ return NUM_Y;
+ case __GO_DATA_MODEL_NUM_Z__ :
+ return NUM_Z;
+ case __GO_DATA_MODEL_X_DIMENSIONS__ :
+ return X_DIMENSIONS;
+ case __GO_DATA_MODEL_Y_DIMENSIONS__ :
+ return Y_DIMENSIONS;
+ case __GO_DATA_MODEL_GRID_SIZE__ :
+ return GRID_SIZE;
+ case __GO_DATA_MODEL_X__ :
+ return X_COORDINATES;
+ case __GO_DATA_MODEL_Y__ :
+ return Y_COORDINATES;
+ case __GO_DATA_MODEL_Z__ :
+ return Z_COORDINATES;
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ :
+ return Z_COORDINATES_SHIFT;
+ default :
+ return NgonData::getPropertyFromName(propertyName);
+ }
+
+}
+
+int NgonGridData::setDataProperty(int property, void const* value, int numElements)
+{
+ switch (property)
+ {
+ case GRID_SIZE :
+ return setGridSize((int const*) value);
+ case X_COORDINATES :
+ setDataX((double const*) value, numElements);
+ break;
+ case Y_COORDINATES :
+ setDataY((double const*) value, numElements);
+ break;
+ case Z_COORDINATES :
+ setDataZ((double const*) value, numElements);
+ break;
+ case Z_COORDINATES_SHIFT :
+ setZCoordinatesShift((double const*) value);
+ break;
+ default :
+ return NgonData::setDataProperty(property, value, numElements);
+ }
+
+ return 1;
+}
+
+void NgonGridData::getDataProperty(int property, void **_pvData)
+{
+ switch (property)
+ {
+ case NUM_X:
+ ((int *) *_pvData)[0] = getNumX();
+ break;
+ case NUM_Y :
+ ((int *) *_pvData)[0] = getNumY();
+ break;
+ case NUM_Z :
+ ((int *) *_pvData)[0] = getNumZ();
+ break;
+ case X_DIMENSIONS :
+ *_pvData = getXDimensions();
+ break;
+ case Y_DIMENSIONS :
+ *_pvData = getYDimensions();
+ break;
+ case X_COORDINATES :
+ *_pvData = getDataX();
+ break;
+ case Y_COORDINATES :
+ *_pvData = getDataY();
+ break;
+ case Z_COORDINATES :
+ *_pvData = getDataZ();
+ break;
+ case Z_COORDINATES_SHIFT :
+ ((double *) *_pvData)[0] = getZCoordinatesShift();
+ break;
+ default :
+ NgonData::getDataProperty(property, _pvData);
+ }
+}
+
+int NgonGridData::setGridSize(int const* gridSize)
+{
+ int newXSize = 0;
+ int newYSize = 0;
+ int xModified = 0;
+ int yModified = 0;
+ int zModified = 0;
+ int result = 0;
+
+ double* newXCoordinates = NULL;
+ double* newYCoordinates = NULL;
+ double* newZCoordinates = NULL;
+
+ result = 1;
+
+ xModified = 0;
+ yModified = 0;
+ zModified = 0;
+
+ if ((gridSize[0] != 1) && (gridSize[1] != 1))
+ {
+ return 0;
+ }
+
+ if ((gridSize[2] != 1) && (gridSize[3] != 1))
+ {
+ return 0;
+ }
+
+ newXSize = gridSize[0] * gridSize[1];
+ newYSize = gridSize[2] * gridSize[3];
+
+
+ if (newXSize != xSize)
+ {
+ xModified = 1;
+
+ try
+ {
+ newXCoordinates = new double[newXSize];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (newYSize != ySize)
+ {
+ yModified = 1;
+
+ try
+ {
+ newYCoordinates = new double[newYSize];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (newXSize * newYSize != xSize * ySize)
+ {
+ zModified = 1;
+
+ try
+ {
+ newZCoordinates = new double[newXSize * newYSize];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (result)
+ {
+ if (xModified)
+ {
+ if (xSize > 0)
+ {
+ delete [] xCoordinates;
+ }
+
+ xCoordinates = newXCoordinates;
+ xSize = newXSize;
+ }
+
+ xDimensions[0] = gridSize[0];
+ xDimensions[1] = gridSize[1];
+
+ if (yModified)
+ {
+ if (ySize > 0)
+ {
+ delete [] yCoordinates;
+ }
+
+ yCoordinates = newYCoordinates;
+ ySize = newYSize;
+ }
+
+ yDimensions[0] = gridSize[2];
+ yDimensions[1] = gridSize[3];
+
+ if (zModified)
+ {
+ if (xSize * ySize > 0)
+ {
+ delete [] zCoordinates;
+ }
+
+ zCoordinates = newZCoordinates;
+
+ numGons = (xSize - 1) * (ySize - 1);
+ }
+
+ }
+ else
+ {
+ /* Failed allocation(s) */
+
+ if (xModified && (newXCoordinates != NULL))
+ {
+ delete [] newXCoordinates;
+ }
+
+ if (yModified && (newYCoordinates != NULL))
+ {
+ delete [] newYCoordinates;
+ }
+
+ if (zModified && (newZCoordinates != NULL))
+ {
+ delete [] newZCoordinates;
+ }
+
+ }
+
+ return result;
+}
+
+int NgonGridData::getNumX(void)
+{
+ return xSize;
+}
+
+int NgonGridData::getNumY(void)
+{
+ return ySize;
+}
+
+int NgonGridData::getNumZ(void)
+{
+ return xSize * ySize;
+}
+
+int* NgonGridData::getXDimensions(void)
+{
+ return xDimensions;
+}
+
+int* NgonGridData::getYDimensions(void)
+{
+ return yDimensions;
+}
+
+void NgonGridData::setDataX(double const* data, int numElements)
+{
+ if (numElements > xSize)
+ {
+ return;
+ }
+
+ for (int i = 0; i < numElements; i++)
+ {
+ xCoordinates[i] = data[i];
+ }
+}
+
+void NgonGridData::setDataY(double const* data, int numElements)
+{
+ if (numElements > ySize)
+ {
+ return;
+ }
+
+ for (int i = 0; i < numElements; i++)
+ {
+ yCoordinates[i] = data[i];
+ }
+}
+
+void NgonGridData::setDataZ(double const* data, int numElements)
+{
+ if (numElements > xSize * ySize)
+ {
+ return;
+ }
+
+ for (int i = 0; i < numElements; i++)
+ {
+ zCoordinates[i] = data[i];
+ }
+}
+
+void NgonGridData::setZCoordinatesShift(double const* data)
+{
+ zCoordinatesShift = *data;
+}
+
+double* NgonGridData::getDataX(void)
+{
+ return xCoordinates;
+}
+
+double* NgonGridData::getDataY(void)
+{
+ return yCoordinates;
+}
+
+double* NgonGridData::getDataZ(void)
+{
+ return zCoordinates;
+}
+
+double NgonGridData::getZCoordinatesShift(void)
+{
+ return zCoordinatesShift;
+}
diff --git a/modules/graphic_objects/src/cpp/NgonGridDataDecomposer.cpp b/modules/graphic_objects/src/cpp/NgonGridDataDecomposer.cpp
new file mode 100755
index 000000000..4f32ff480
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonGridDataDecomposer.cpp
@@ -0,0 +1,701 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ColorComputer.hxx"
+#include "DecompositionUtils.hxx"
+#include "NgonGridDataDecomposer.hxx"
+
+extern "C"
+{
+#include <stdlib.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+NgonGridDataDecomposer* NgonGridDataDecomposer::decomposer = NULL;
+
+int NgonGridDataDecomposer::getDataSize(int id)
+{
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+#if PER_VERTEX_VALUES
+ return numX * numY;
+#else
+ return 4 * (numX - 1) * (numY - 1);
+#endif
+}
+
+void NgonGridDataDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double zShift = 0.;
+ double* pdZShift = &zShift;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ NgonGridDataDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double, (void**) &pdZShift);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ decomposer->fillGridVertices(buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, x, y, &zShift, numX, numY);
+}
+
+void NgonGridDataDecomposer::fillGridVertices(float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask,
+ double* x, double* y, double* z, int numX, int numY)
+{
+ double xi = 0.;
+ double yj = 0.;
+ double zij = 0.;
+
+ int bufferOffset = 0;
+
+#if PER_VERTEX_VALUES
+ for (int j = 0; j < numY; j++)
+ {
+ yj = y[j];
+
+ if (coordinateMask & 0x2)
+ {
+ if (logMask & 0x2)
+ {
+ yj = DecompositionUtils::getLog10Value(yj);
+ }
+ }
+
+ for (int i = 0; i < numX; i++)
+ {
+ xi = x[i];
+ bufferOffset = elementsSize * (numX * j + i);
+
+ if (coordinateMask & 0x1)
+ {
+ if (logMask & 0x1)
+ {
+ xi = DecompositionUtils::getLog10Value(xi);
+ }
+
+ buffer[bufferOffset] = xi * scale[0] + translation[0];
+ }
+
+ if (coordinateMask & 0x2)
+ {
+ buffer[bufferOffset + 1] = yj * scale[1] + translation[1];
+ }
+
+ if (coordinateMask & 0x4)
+ {
+ zij = getZCoordinate(z, numX, numY, i, j, logMask & 0x4);
+
+ buffer[bufferOffset + 2] = zij * scale[2] + translation[2];
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8))
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+ }
+ }
+#else
+
+ double yjp1 = 0.;
+ double xip1 = 0.;
+
+ bufferOffset = 0;
+
+ for (int j = 0; j < numY - 1; j++)
+ {
+ double ycoords[4];
+ int yindices[4];
+
+ yj = y[j];
+ yjp1 = y[j + 1];
+
+ if (coordinateMask & 0x2)
+ {
+ if (logMask & 0x2)
+ {
+ yj = DecompositionUtils::getLog10Value(yj);
+ yjp1 = DecompositionUtils::getLog10Value(yjp1);
+ }
+ }
+
+ ycoords[0] = yj;
+ ycoords[1] = yj;
+ ycoords[2] = yjp1;
+ ycoords[3] = yjp1;
+
+ yindices[0] = j;
+ yindices[1] = j;
+ yindices[2] = j + 1;
+ yindices[3] = j + 1;
+
+ for (int i = 0; i < numX - 1; i++)
+ {
+ double xcoords[4];
+ int xindices[4];
+
+ xi = x[i];
+ xip1 = x[i + 1];
+
+ if (logMask & 0x1)
+ {
+ xi = DecompositionUtils::getLog10Value(xi);
+ xip1 = DecompositionUtils::getLog10Value(xip1);
+ }
+
+ xcoords[0] = xi;
+ xcoords[1] = xip1;
+ xcoords[2] = xi;
+ xcoords[3] = xip1;
+
+ xindices[0] = i;
+ xindices[1] = i + 1;
+ xindices[2] = i;
+ xindices[3] = i + 1;
+
+ /*
+ * If color values are defined per facet, we must duplicate shared vertices in order
+ * to be able to render flat-shading facets, as the renderer uses smooth shading as a default.
+ * Reducing duplication would require being able to enable flat shading at render time.
+ */
+ for (int k = 0; k < 4; k++)
+ {
+ if (coordinateMask & 0x1)
+ {
+ buffer[bufferOffset] = (float)(xcoords[k] * scale[0] + translation[0]);
+ }
+
+ if (coordinateMask & 0x2)
+ {
+ buffer[bufferOffset + 1] = (float)(ycoords[k] * scale[1] + translation[1]);
+ }
+
+ if (coordinateMask & 0x4)
+ {
+ zij = getZCoordinate(z, numX, numY, xindices[k], yindices[k], logMask & 0x4);
+
+ buffer[bufferOffset + 2] = (float)(zij * scale[2] + translation[2]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8))
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+
+ }
+
+ }
+
+#endif
+
+}
+
+void NgonGridDataDecomposer::fillNormalizedZGridColors(float* buffer, int bufferLength, int elementsSize, double* colormap, int colormapSize,
+ double* z, int numX, int numY)
+{
+ double zMin = 0.;
+ double zMax = 0.;
+ double zRange = 0.;
+ double minDoubleValue = 0.;
+
+ int bufferOffset = 0;
+
+ computeMinMaxZValues(z, numX, numY, &zMin, &zMax);
+
+ minDoubleValue = DecompositionUtils::getMinDoubleValue();
+
+ /* To be verified */
+ if ((zMax - zMin) < minDoubleValue)
+ {
+ zRange = 1.0;
+ }
+ else
+ {
+ zRange = zMax - zMin;
+ }
+
+#if PER_VERTEX_VALUES
+ for (int j = 0; j < numY; j++)
+ {
+ for (int i = 0; i < numX; i++)
+ {
+ int currentPointIndex = getPointIndex(numX, numY, i, j);
+
+ ColorComputer::getColor(z[currentPointIndex], zMin, zRange, Z_COLOR_OFFSET, colormap, colormapSize, &buffer[bufferOffset]);
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+ }
+#else
+ for (int j = 0; j < numY - 1; j++)
+ {
+ for (int i = 0; i < numX - 1; i++)
+ {
+ double avgz;
+ float facetColor[3];
+
+ avgz = computeFacetAverageZValue(z, numX, numY, i, j);
+
+ ColorComputer::getColor(avgz, zMin, zRange, Z_COLOR_OFFSET, colormap, colormapSize, facetColor);
+
+ writeFacetColorToBuffer(buffer, bufferOffset, facetColor, elementsSize);
+
+ bufferOffset += 4 * elementsSize;
+ }
+ }
+#endif
+
+}
+
+void NgonGridDataDecomposer::fillDirectGridColors(float* buffer, int bufferLength, int elementsSize, double* colormap, int colormapSize,
+ double* z, int numX, int numY)
+{
+ int currentPointIndex = 0;
+ int bufferOffset = 0;
+
+#if PER_VERTEX_VALUES
+ for (int j = 0; j < numY; j++)
+ {
+ for (int i = 0; i < numX; i++)
+ {
+ currentPointIndex = getPointIndex(numX, numY, i, j);
+
+ ColorComputer::getDirectColor(z[currentPointIndex] - 1.0, colormap, colormapSize, &buffer[bufferOffset]);
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+ }
+#else
+ for (int j = 0; j < numY - 1; j++)
+ {
+ for (int i = 0; i < numX - 1; i++)
+ {
+ float facetColor[3];
+
+ currentPointIndex = getPointIndex(numX, numY, i, j);
+
+ ColorComputer::getDirectColor(z[currentPointIndex] - 1.0, colormap, colormapSize, facetColor);
+
+ writeFacetColorToBuffer(buffer, bufferOffset, facetColor, elementsSize);
+
+ bufferOffset += 4 * elementsSize;
+ }
+ }
+#endif
+
+}
+
+void NgonGridDataDecomposer::getFacetCoordinates(double* x, double* y, double*z, int numX, int numY, int i, int j,
+ double vertices[4][3])
+{
+ vertices[0][0] = x[i];
+ vertices[0][1] = y[j];
+ vertices[0][2] = getZCoordinate(z, numX, numY, i, j);;
+
+ vertices[1][0] = x[i + 1];
+ vertices[1][1] = y[j];
+ vertices[1][2] = getZCoordinate(z, numX, numY, i + 1, j);
+
+ vertices[2][0] = x[i + 1];
+ vertices[2][1] = y[j + 1];
+ vertices[2][2] = getZCoordinate(z, numX, numY, i + 1, j + 1);
+
+ vertices[3][0] = x[i];
+ vertices[3][1] = y[j + 1];
+ vertices[3][2] = getZCoordinate(z, numX, numY, i, j + 1);
+}
+
+double NgonGridDataDecomposer::getZCoordinate(double* z, int numX, int numY, int i, int j)
+{
+ return *z;
+}
+
+double NgonGridDataDecomposer::getZCoordinate(double* z, int numX, int numY, int i, int j, int logUsed)
+{
+ double zij = 0.;
+
+ if (logUsed)
+ {
+ /* If the logarithmic scale is used, add the default offset */
+ zij = *z + DEFAULT_LOG_COORD_Z;
+ }
+ else
+ {
+ zij = *z;
+ }
+
+ return zij;
+}
+
+double NgonGridDataDecomposer::getValue(double* values, int numX, int numY, int i, int j)
+{
+ return values[numX * j + i];
+}
+
+int NgonGridDataDecomposer::getIndicesSize(int id)
+{
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ if (numX == 0 || numY == 0)
+ {
+ return 0;
+ }
+
+ return 6 * (numX - 1) * (numY - 1);
+}
+
+
+int NgonGridDataDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ int numberIndices = 0;
+
+ NgonGridDataDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* 0 indices if 0 points */
+ if (numX == 0 || numY == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ numberIndices = decomposer->fillTriangleIndices(buffer, bufferLength, logMask, x, y, z, z, 1, numX, numY);
+
+ return numberIndices;
+}
+
+/*
+ * To do: merge with Plot3DDecomposer::fillWireIndices, as these functions perform a lot of redundant work.
+ */
+int NgonGridDataDecomposer::fillTriangleIndices(int* buffer, int bufferLength, int logMask, double* x, double* y, double* z, double* values, int perNodeValues, int numX, int numY)
+{
+ int bufferOffset = 0;
+
+ int currentRowValid = 0;
+ int nextRowValid = 0;
+
+ int currentColumnValid = 0;
+ int nextColumnValid = 0;
+
+ int currentEdgeValid = 0;
+ int nextEdgeValid = 0;
+
+ int currentFacetValid = 0;
+
+ int ij = 0;
+ int ip1j = 0;
+ int ip1jp1 = 0;
+ int ijp1 = 0;
+
+ /* 0 indices if less than 2 points along either dimension */
+ if (numX < 2 || numY < 2)
+ {
+ return 0;
+ }
+
+ /* First row */
+ currentRowValid = DecompositionUtils::isValid(y[0]);
+
+ if (logMask & 0x2)
+ {
+ currentRowValid &= DecompositionUtils::isLogValid(y[0]);
+ }
+
+ /* To do: optimize */
+ for (int j = 0; j < numY - 1; j++)
+ {
+ nextRowValid = DecompositionUtils::isValid(y[j + 1]);
+
+ if (logMask & 0x2)
+ {
+ nextRowValid &= DecompositionUtils::isLogValid(y[j + 1]);
+ }
+
+ if (!currentRowValid || !nextRowValid)
+ {
+ currentRowValid = nextRowValid;
+ continue;
+ }
+ else
+ {
+ currentRowValid = nextRowValid;
+ }
+
+ currentColumnValid = DecompositionUtils::isValid(x[0]);
+
+ if (logMask & 0x1)
+ {
+ currentColumnValid &= DecompositionUtils::isLogValid(x[0]);
+ }
+
+ ij = getPointIndex(numX, numY, 0, j);
+ ijp1 = getPointIndex(numX, numY, 0, j + 1);
+
+ currentEdgeValid = isFacetEdgeValid(z, values, perNodeValues, numX, numY, 0, j, logMask & 0x4);
+
+ for (int i = 0; i < numX - 1; i++)
+ {
+ nextColumnValid = DecompositionUtils::isValid(x[i + 1]);
+
+ if (logMask & 0x1)
+ {
+ nextColumnValid &= DecompositionUtils::isLogValid(x[i + 1]);
+ }
+
+ ip1j = getPointIndex(numX, numY, i + 1, j);
+ ip1jp1 = getPointIndex(numX, numY, i + 1, j + 1);
+
+ currentFacetValid = isFacetValid(z, values, perNodeValues, numX, numY, i, j, logMask & 0x4, currentEdgeValid, &nextEdgeValid);
+
+ if (currentColumnValid && nextColumnValid && (currentFacetValid))
+ {
+ int facetVertexIndices[4];
+ int triangleVertexIndices[6];
+ int firstVertexIndex;
+
+#if PER_VERTEX_VALUES
+ facetVertexIndices[0] = ij;
+ facetVertexIndices[1] = ip1j;
+ facetVertexIndices[2] = ip1jp1;
+ facetVertexIndices[3] = ijp1;
+#else
+ firstVertexIndex = getFirstVertexIndex(numX, numY, i, j);
+
+ facetVertexIndices[0] = firstVertexIndex;
+ facetVertexIndices[1] = firstVertexIndex + 1;
+ facetVertexIndices[2] = firstVertexIndex + 3;
+ facetVertexIndices[3] = firstVertexIndex + 2;
+#endif
+
+ getFacetTriangles(x, y, z, numX, numY, i, j, facetVertexIndices, triangleVertexIndices);
+
+ buffer[bufferOffset] = triangleVertexIndices[0];
+ buffer[bufferOffset + 1] = triangleVertexIndices[1];
+ buffer[bufferOffset + 2] = triangleVertexIndices[2];
+ buffer[bufferOffset + 3] = triangleVertexIndices[3];
+ buffer[bufferOffset + 4] = triangleVertexIndices[4];
+ buffer[bufferOffset + 5] = triangleVertexIndices[5];
+
+ bufferOffset += 6;
+ }
+
+ currentColumnValid = nextColumnValid;
+
+ currentEdgeValid = nextEdgeValid;
+
+ ij = ip1j;
+ ijp1 = ip1jp1;
+ }
+ }
+
+ return bufferOffset;
+}
+
+void NgonGridDataDecomposer::getFacetTriangles(double* x, double* y, double* z, int numX, int numY, int i, int j,
+ int* facetVertexIndices, int* triangleVertexIndices)
+{
+ /* Facets are plane: they are all decomposed the same way */
+ triangleVertexIndices[0] = facetVertexIndices[0];
+ triangleVertexIndices[1] = facetVertexIndices[1];
+ triangleVertexIndices[2] = facetVertexIndices[2];
+ triangleVertexIndices[3] = facetVertexIndices[0];
+ triangleVertexIndices[4] = facetVertexIndices[2];
+ triangleVertexIndices[5] = facetVertexIndices[3];
+}
+
+int NgonGridDataDecomposer::isFacetValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed, int currentEdgeValid, int* nextEdgeValid)
+{
+ *nextEdgeValid = isFacetEdgeValid(z, values, perNodeValues, numX, numY, i + 1, j, logUsed);
+
+ if (currentEdgeValid && *nextEdgeValid)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int NgonGridDataDecomposer::isFacetEdgeValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed)
+{
+ double zij = 0.;
+ double zijp1 = 0.;
+
+ int lowerZValid = 0;
+ int upperZValid = 0;
+
+ zij = getZCoordinate(z, numX, numY, i, j);
+ zijp1 = getZCoordinate(z, numX, numY, i, j + 1);
+
+ lowerZValid = DecompositionUtils::isValid(zij);
+ upperZValid = DecompositionUtils::isValid(zijp1);
+
+ if (logUsed)
+ {
+ lowerZValid &= DecompositionUtils::isLogValid(zij);
+ upperZValid &= DecompositionUtils::isLogValid(zijp1);
+ }
+
+ if (lowerZValid && upperZValid)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int NgonGridDataDecomposer::getPointIndex(int numX, int numY, int i, int j)
+{
+ return numX * j + i;
+}
+
+void NgonGridDataDecomposer::computeMinMaxZValues(double* z, int numX, int numY, double* zMin, double* zMax)
+{
+ double maxDouble = 0;
+ double tmpZMin = 0;
+ double tmpZMax = 0;
+ double zi = 0;
+
+ int currentPoint = 0;
+
+ maxDouble = DecompositionUtils::getMaxDoubleValue();
+
+ tmpZMin = maxDouble;
+ tmpZMax = -maxDouble;
+
+ for (int j = 0; j < numY; j++)
+ {
+ for (int i = 0; i < numX; i++)
+ {
+ currentPoint = getPointIndex(numX, numY, i, j);
+ zi = z[currentPoint];
+
+ if (DecompositionUtils::isValid(zi))
+ {
+ if (zi < tmpZMin)
+ {
+ tmpZMin = zi;
+ }
+
+ if (zi > tmpZMax)
+ {
+ tmpZMax = zi;
+ }
+ }
+ }
+ }
+
+ *zMin = tmpZMin;
+ *zMax = tmpZMax;
+}
+
+double NgonGridDataDecomposer::computeFacetAverageZValue(double* z, int numX, int numY, int i, int j)
+{
+ double avgz = 0.;
+ int pointIndex = 0;
+
+ avgz = 0.0;
+ pointIndex = getPointIndex(numX, numY, i, j);
+ avgz += z[pointIndex];
+ pointIndex = getPointIndex(numX, numY, i + 1, j);
+ avgz += z[pointIndex];
+ pointIndex = getPointIndex(numX, numY, i, j + 1);
+ avgz += z[pointIndex];
+ pointIndex = getPointIndex(numX, numY, i + 1, j + 1);
+ avgz += z[pointIndex];
+
+ avgz *= 0.25;
+
+ return avgz;
+}
+
+void NgonGridDataDecomposer::writeFacetColorToBuffer(float* buffer, int bufferOffset, float* color, int elementsSize, bool hasTransparency)
+{
+ for (int k = 0; k < 4; k++)
+ {
+ buffer[bufferOffset] = color[0];
+ buffer[bufferOffset + 1] = color[1];
+ buffer[bufferOffset + 2] = color[2];
+
+ if (elementsSize == 4)
+ {
+ if (hasTransparency)
+ {
+ buffer[bufferOffset + 3] = color[3];
+ }
+ else
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+ }
+
+ bufferOffset += elementsSize;
+ }
+}
+
+int NgonGridDataDecomposer::getFirstVertexIndex(int numX, int numY, int i, int j)
+{
+ return 4 * j * (numX - 1) + 4 * i;
+}
+
diff --git a/modules/graphic_objects/src/cpp/NgonGridGrayplotDataDecomposer.cpp b/modules/graphic_objects/src/cpp/NgonGridGrayplotDataDecomposer.cpp
new file mode 100755
index 000000000..c071a1afd
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonGridGrayplotDataDecomposer.cpp
@@ -0,0 +1,223 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ColorComputer.hxx"
+#include "DecompositionUtils.hxx"
+#include "NgonGridGrayplotDataDecomposer.hxx"
+
+extern "C"
+{
+#include <stdlib.h>
+#include <string.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+NgonGridGrayplotDataDecomposer* NgonGridGrayplotDataDecomposer::decomposer = NULL;
+
+/*
+ * To do: allowing either per-vertex or per-facet colors
+ */
+void NgonGridGrayplotDataDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
+{
+ int parentFigure = 0;
+ int* pparentFigure = &parentFigure;
+ int parent = 0;
+ int* pparent = &parent;
+
+ double* z = NULL;
+ double* colormap = NULL;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+ int dataMapping = 0;
+ int* piDataMapping = &dataMapping;
+
+ NgonGridGrayplotDataDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &pparentFigure);
+
+ if (parentFigure == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ getGraphicObjectProperty(id, __GO_DATA_MAPPING__, jni_int, (void**) &piDataMapping);
+
+ if (dataMapping == 0)
+ {
+ decomposer->fillNormalizedZGridColors(buffer, bufferLength, elementsSize, colormap, colormapSize, z, numX, numY);
+ }
+ else if (dataMapping == 1)
+ {
+ decomposer->fillDirectGridColors(buffer, bufferLength, elementsSize, colormap, colormapSize, z, numX, numY);
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+}
+
+int NgonGridGrayplotDataDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+ double zShift = 0.0;
+ double* pdZShift = &zShift;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+ int dataMapping = 0;
+ int* piDataMapping = &dataMapping;
+
+ int perNodeValues = 1;
+
+ int numberIndices = 0;
+
+ NgonGridGrayplotDataDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* 0 indices if 0 points */
+ if (numX == 0 || numY == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MAPPING__, jni_int, (void**) &piDataMapping);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double, (void**) &pdZShift);
+
+ /*
+ * Data mapping values 0 and 1 respectively correspond to scaled and direct colors, for which per-node
+ * and per-facet values are respectively used.
+ */
+ perNodeValues = !dataMapping;
+
+ numberIndices = decomposer->fillTriangleIndices(buffer, bufferLength, logMask, x, y, &zShift, z, perNodeValues, numX, numY);
+
+ return numberIndices;
+}
+
+int NgonGridGrayplotDataDecomposer::isFacetValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed, int currentEdgeValid, int* nextEdgeValid)
+{
+ *nextEdgeValid = isFacetEdgeValid(z, values, perNodeValues, numX, numY, i + 1, j, logUsed);
+
+ if (!perNodeValues)
+ {
+ /*
+ * Grid values are defined per facet.
+ * In addition to edge validity, which in this case is determined only by z coordinates, the
+ * facet's (i,j) value must also be read in order to determine its overall validity.
+ */
+ double zij = getValue(values, numX, numY, i, j);
+
+ if (DecompositionUtils::isValid(zij) && currentEdgeValid && *nextEdgeValid)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ /*
+ * Grid values are defined per node, and have therefore been already used
+ * to determine edge validity
+ */
+ if (currentEdgeValid && *nextEdgeValid)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+}
+
+/*
+ * To be merged with its parent's isFacetEdgeValid function.
+ */
+int NgonGridGrayplotDataDecomposer::isFacetEdgeValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed)
+{
+ double zij = 0.;
+ double zijp1 = 0.;
+
+ int lowerZValid = 0;
+ int upperZValid = 0;
+
+ /* First, z-coordinate values are tested */
+ zij = getZCoordinate(z, numX, numY, i, j, logUsed);
+ zijp1 = getZCoordinate(z, numX, numY, i, j + 1, logUsed);
+
+ lowerZValid = DecompositionUtils::isValid(zij);
+ upperZValid = DecompositionUtils::isValid(zijp1);
+
+ if (logUsed)
+ {
+ lowerZValid &= DecompositionUtils::isLogValid(zij);
+ upperZValid &= DecompositionUtils::isLogValid(zijp1);
+ }
+
+ /*
+ * If values are defined per node, edge validity must also
+ * take into account grid values at the edge's nodes.
+ */
+ if (perNodeValues)
+ {
+ zij = getValue(values, numX, numY, i, j);
+ zijp1 = getValue(values, numX, numY, i, j + 1);
+
+ lowerZValid &= DecompositionUtils::isValid(zij);
+ upperZValid &= DecompositionUtils::isValid(zijp1);
+ }
+
+ if (lowerZValid && upperZValid)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
diff --git a/modules/graphic_objects/src/cpp/NgonGridMatplotData.cpp b/modules/graphic_objects/src/cpp/NgonGridMatplotData.cpp
new file mode 100755
index 000000000..a650d5532
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonGridMatplotData.cpp
@@ -0,0 +1,688 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "NgonGridMatplotData.hxx"
+#include "Texture.hxx"
+
+#include <climits>
+
+extern "C" {
+#include <string.h>
+#include <stdlib.h>
+
+#include "graphicObjectProperties.h"
+}
+
+const bool NgonGridMatplotData::isLittleEndian = NgonGridMatplotData::initEndian();
+bool NgonGridMatplotData::isABGRSupported = false;
+
+NgonGridMatplotData::NgonGridMatplotData(void)
+{
+ this->data = NULL;
+ this->dataSize = 0;
+ this->scilabData = NULL;
+ this->type = 0;
+ this->imagetype = MATPLOT_NONE;
+}
+
+NgonGridMatplotData::~NgonGridMatplotData(void)
+{
+ disposeTextureData();
+ if (this->scilabData)
+ {
+ delete[] (unsigned char *)this->scilabData;
+ this->scilabData = NULL;
+ }
+}
+
+int NgonGridMatplotData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_GRID_SIZE__ :
+ return GRID_SIZE;
+ case __GO_DATA_MODEL_MATPLOT_BOUNDS__ :
+ return MATPLOT_BOUNDS;
+ case __GO_DATA_MODEL_MATPLOT_TYPE__ :
+ return MATPLOT_TYPE;
+ case __GO_DATA_MODEL_Z__ :
+ return Z_COORDINATES;
+ case __GO_DATA_MODEL_MATPLOT_GL_TYPE__ :
+ return MATPLOT_GL_TYPE;
+ case __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ :
+ return MATPLOT_DATA_INFOS;
+ case __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ :
+ return MATPLOT_DATA_TYPE;
+ case __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ :
+ return MATPLOT_DATA_ORDER;
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ :
+ return MATPLOT_IMAGE_TYPE;
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ :
+ return MATPLOT_IMAGE_DATA;
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ :
+ return MATPLOT_IMAGE_DATASIZE;
+ default :
+ return NgonGridData::getPropertyFromName(propertyName);
+ }
+}
+
+int NgonGridMatplotData::setDataProperty(int property, void const* value, int numElements)
+{
+ switch (property)
+ {
+ case GRID_SIZE :
+ {
+ return setGridSize((int const*) value);
+ }
+ case MATPLOT_BOUNDS :
+ {
+ setBounds((double const*) value);
+ break;
+ }
+ case Z_COORDINATES :
+ {
+ setDataZ((double const*) value, numElements);
+ break;
+ }
+ case MATPLOT_IMAGE_TYPE :
+ {
+ return setImageType(*((int const*) value));
+ }
+ case MATPLOT_DATA_INFOS :
+ {
+ setDataInfos(*((int const*) value));
+ break;
+ }
+ case MATPLOT_DATA_TYPE :
+ {
+ setDataType(*((int const*) value));
+ break;
+ }
+ case MATPLOT_DATA_ORDER :
+ {
+ setDataOrder(*((int const*) value));
+ break;
+ }
+ case MATPLOT_IMAGE_DATA :
+ {
+ setImageData((void const *) value, numElements);
+ break;
+ }
+ default :
+ {
+ return NgonGridData::setDataProperty(property, value, numElements);
+ }
+ }
+
+ return 1;
+}
+
+void NgonGridMatplotData::getDataProperty(int property, void **_pvData)
+{
+ switch (property)
+ {
+ case MATPLOT_BOUNDS :
+ {
+ *_pvData = getBounds();
+ break;
+ }
+ case MATPLOT_TYPE :
+ {
+ ((int *) *_pvData)[0] = getType();
+ break;
+ }
+ case Z_COORDINATES :
+ {
+ *_pvData = getScilabData();
+ break;
+ }
+ case MATPLOT_IMAGE_TYPE :
+ {
+ ((int *) *_pvData)[0] = getImageType();
+ break;
+ }
+ case MATPLOT_GL_TYPE :
+ {
+ ((int *) *_pvData)[0] = getGLType();
+ break;
+ }
+ case MATPLOT_DATA_INFOS :
+ {
+ ((int *) *_pvData)[0] = getDataInfos();
+ break;
+ }
+ case MATPLOT_DATA_TYPE :
+ {
+ ((int *) *_pvData)[0] = getDataType();
+ break;
+ }
+ case MATPLOT_DATA_ORDER :
+ {
+ ((int *) *_pvData)[0] = getDataOrder();
+ break;
+ }
+ case MATPLOT_IMAGE_DATA :
+ {
+ *_pvData = getImageData();
+ break;
+ }
+ case MATPLOT_IMAGE_DATASIZE :
+ {
+ ((unsigned int *) *_pvData)[0] = getImageDataSize();
+ break;
+ }
+ default :
+ {
+ NgonGridData::getDataProperty(property, _pvData);
+ break;
+ }
+ }
+}
+
+/*
+ * To be done: refactoring with NgonGridData, as these two classes'
+ * setGridSize methods are almost identical.
+ */
+int NgonGridMatplotData::setGridSize(int const* gridSize)
+{
+ int newXSize = 0;
+ int newYSize = 0;
+ int xModified = 0;
+ int yModified = 0;
+ int zModified = 0;
+ int result = 0;
+ int formerGridSize = 0;
+
+ double* newXCoordinates = NULL;
+ double* newYCoordinates = NULL;
+ double* newZCoordinates = NULL;
+
+ result = 1;
+
+ xModified = 0;
+ yModified = 0;
+ zModified = 0;
+
+ if ((gridSize[0] != 1) && (gridSize[1] != 1))
+ {
+ return 0;
+ }
+
+ if ((gridSize[2] != 1) && (gridSize[3] != 1))
+ {
+ return 0;
+ }
+
+ newXSize = gridSize[0] * gridSize[1];
+ newYSize = gridSize[2] * gridSize[3];
+
+ if (newXSize != xSize)
+ {
+ xModified = 1;
+
+ try
+ {
+ newXCoordinates = new double[newXSize];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (newYSize != ySize)
+ {
+ yModified = 1;
+
+ try
+ {
+ newYCoordinates = new double[newYSize];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (!result || (!xModified && !yModified))
+ {
+ return result;
+ }
+
+ if (xSize > 0 && ySize > 0)
+ {
+ formerGridSize = (xSize - 1) * (ySize - 1);
+ }
+ else
+ {
+ formerGridSize = 0;
+ }
+
+ if ((newXSize - 1) * (newYSize - 1) != formerGridSize)
+ {
+ zModified = 1;
+
+ try
+ {
+ newZCoordinates = new double[(newXSize - 1) * (newYSize - 1)];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (result)
+ {
+ if (xModified)
+ {
+ if (xSize > 0)
+ {
+ delete [] xCoordinates;
+ }
+
+ xCoordinates = newXCoordinates;
+ xSize = newXSize;
+ }
+
+ xDimensions[0] = gridSize[0];
+ xDimensions[1] = gridSize[1];
+
+ if (yModified)
+ {
+ if (ySize > 0)
+ {
+ delete [] yCoordinates;
+ }
+
+ yCoordinates = newYCoordinates;
+ ySize = newYSize;
+ }
+
+ yDimensions[0] = gridSize[2];
+ yDimensions[1] = gridSize[3];
+
+ if (zModified)
+ {
+ if (formerGridSize > 0)
+ {
+ delete [] zCoordinates;
+ }
+
+ zCoordinates = newZCoordinates;
+
+ numGons = (xSize - 1) * (ySize - 1);
+
+ }
+
+ if (xModified || yModified)
+ {
+ computeCoordinates();
+ }
+
+ }
+ else
+ {
+ /* Failed allocation(s) */
+
+ if (xModified && (newXCoordinates != NULL))
+ {
+ delete [] newXCoordinates;
+ }
+
+ if (yModified && (newYCoordinates != NULL))
+ {
+ delete [] newYCoordinates;
+ }
+
+ if (zModified && (newZCoordinates != NULL))
+ {
+ delete [] newZCoordinates;
+ }
+
+ }
+
+ return result;
+}
+
+void NgonGridMatplotData::setBounds(double const* bounds)
+{
+ if (bounds == NULL)
+ {
+ /* Type 0 object: bounds are computed from element indices by the setGridSize method */
+ type = 0;
+ }
+ else
+ {
+ /* To be done: test whether max > min */
+ boundingRectangle[0] = bounds[0];
+ boundingRectangle[1] = bounds[2];
+ boundingRectangle[2] = bounds[1];
+ boundingRectangle[3] = bounds[3];
+
+ type = 1;
+ }
+}
+
+double* NgonGridMatplotData::getBounds(void)
+{
+ return boundingRectangle;
+}
+
+void NgonGridMatplotData::computeCoordinates(void)
+{
+ if (type == 0)
+ {
+ for (int i = 0; i < xSize; i++)
+ {
+ xCoordinates[i] = 0.5 + (double) i;
+ }
+
+ for (int i = 0; i < ySize; i++)
+ {
+ yCoordinates[i] = 0.5 + (double) i;
+ }
+
+ boundingRectangle[0] = 0.5;
+ boundingRectangle[1] = 0.5 + (double) (xSize - 1);
+ boundingRectangle[2] = 0.5;
+ boundingRectangle[3] = 0.5 + (double) (ySize - 1);
+ }
+ else
+ {
+ double min = boundingRectangle[0];
+ double max = boundingRectangle[1];
+ int numElements = 0;
+
+
+ if (xSize == 1)
+ {
+ numElements = 1;
+ }
+ else
+ {
+ numElements = xSize - 1;
+ }
+
+ for (int i = 0; i < xSize; i++)
+ {
+ xCoordinates[i] = min + (double) i * (max - min) / (double) numElements;
+ }
+
+ min = boundingRectangle[2];
+ max = boundingRectangle[3];
+
+ if (ySize == 1)
+ {
+ numElements = 1;
+ }
+ else
+ {
+ numElements = ySize - 1;
+ }
+
+ for (int i = 0; i < ySize; i++)
+ {
+ yCoordinates[i] = min + (double) i * (max - min) / (double) numElements;
+ }
+ }
+}
+
+void NgonGridMatplotData::setDataZ(double const* data, int numElements)
+{
+ if (numElements > (xSize - 1) * (ySize - 1))
+ {
+ return;
+ }
+
+ for (int i = 0; i < numElements; i++)
+ {
+ zCoordinates[i] = data[i];
+ }
+}
+
+int NgonGridMatplotData::setImageType(int imagetype)
+{
+ const ImageType type = (ImageType)imagetype;
+
+ if (this->imagetype != type)
+ {
+ int grid[4] = {xSize, 1, ySize, 1};
+ if (this->datatype == MATPLOT_UChar || this->datatype == MATPLOT_Char)
+ {
+ if (this->imagetype == MATPLOT_RGB)
+ {
+ grid[2] = (ySize - 1) * 3 + 1;
+ }
+ else if (this->imagetype == MATPLOT_RGBA || this->imagetype == MATPLOT_ARGB)
+ {
+ grid[2] = (ySize - 1) * 4 + 1;
+ }
+
+ if (type == MATPLOT_RGB)
+ {
+ if ((grid[2] - 1) % 3 != 0)
+ {
+ return 0;
+ }
+ grid[2] = (grid[2] - 1) / 3 + 1;
+ }
+ else if (type == MATPLOT_RGBA || type == MATPLOT_ARGB)
+ {
+ if ((grid[2] - 1) % 4 != 0)
+ {
+ return 0;
+ }
+ grid[2] = (grid[2] - 1) / 4 + 1;
+ }
+
+ this->setGridSize(grid);
+ }
+
+ this->imagetype = type;
+
+ if (this->scilabData)
+ {
+ setImageData(this->scilabData, (xSize - 1) * (ySize - 1));
+ }
+ }
+
+ return 1;
+}
+
+int NgonGridMatplotData::getImageType()
+{
+ return (int)this->imagetype;
+}
+
+int NgonGridMatplotData::getGLType()
+{
+ return (int)this->gltype;
+}
+
+int NgonGridMatplotData::getDataType()
+{
+ return (int)this->datatype;
+}
+
+void NgonGridMatplotData::setDataType(int datatype)
+{
+ if (this->datatype != (DataType)datatype)
+ {
+ this->datatype = (DataType)datatype;
+ disposeTextureData();
+ }
+}
+
+int NgonGridMatplotData::getDataOrder()
+{
+ return (int)this->dataorder;
+}
+
+void NgonGridMatplotData::setDataOrder(int dataorder)
+{
+ this->dataorder = (DataOrder)dataorder;
+}
+
+void * NgonGridMatplotData::getImageData()
+{
+ if (this->data)
+ {
+ return this->data;
+ }
+ else if (this->scilabData)
+ {
+ setImageData(this->scilabData, (xSize - 1) * (ySize - 1));
+ return this->data;
+ }
+
+ return NULL;
+}
+
+void * NgonGridMatplotData::getScilabData()
+{
+ return this->scilabData;
+}
+
+unsigned int NgonGridMatplotData::getImageDataSize()
+{
+ return this->dataSize;
+}
+
+void NgonGridMatplotData::setDataInfos(int infos)
+{
+ setDataType(infos & 0xFF);
+ setDataOrder((infos & 0xFF00) >> 8);
+ setImageType((infos & 0xFF0000) >> 16);
+}
+
+int NgonGridMatplotData::getDataInfos()
+{
+ return buildMatplotType(this->datatype, this->dataorder, this->imagetype);
+}
+
+void NgonGridMatplotData::setImageData(void const* data, const int numElements)
+{
+ if (!data)
+ {
+ disposeTextureData();
+ return;
+ }
+
+ unsigned int dataSize = 0;
+ const int N = ySize - 1;
+ const int M = xSize - 1;
+ const int NM = N * M;
+
+ if (numElements > NM)
+ {
+ return;
+ }
+
+ if (data != this->scilabData)
+ {
+ if (scilabData)
+ {
+ delete[] (unsigned char *)scilabData;
+ scilabData = NULL;
+ }
+
+ unsigned int _size;
+
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ _size = numElements * 3;
+ break;
+ case MATPLOT_HM3_Double :
+ _size = numElements * sizeof(double) * 3;
+ break;
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ _size = numElements * 4;
+ break;
+ case MATPLOT_HM4_Double :
+ _size = numElements * sizeof(double) * 4;
+ break;
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_Char :
+ case MATPLOT_UChar :
+ _size = numElements;
+ break;
+ case MATPLOT_Int :
+ case MATPLOT_UInt :
+ _size = numElements * sizeof(int);
+ break;
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ _size = numElements * sizeof(short);
+ break;
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ _size = numElements * sizeof(double);
+ break;
+ }
+ this->scilabData = new unsigned char[_size];
+ // todo: on peut ameliorer ca
+ // pr certains type de donnees (et certains modes) scilabData == data
+ // dc on peut eviter cette copie
+ memcpy(this->scilabData, data, _size);
+ }
+
+ void * dest = this->data;
+ if (this->imagetype == MATPLOT_INDEX)
+ {
+ this->gltype = MATPLOT_GL_RGBA_BYTE;
+ }
+ else if (Texture::getImage(data, numElements, this->datatype, this->imagetype, &(this->data), &(this->dataSize), &(this->gltype)))
+ {
+ if (dest)
+ {
+ delete[] (unsigned char *)dest;
+ }
+ }
+
+ //std::cout << this->imagetype << "::" << this->datatype << "::" << this->dataorder << "::" << this->dataSize << "::" << (void*)this->data << std::endl;
+}
+
+int NgonGridMatplotData::getType(void)
+{
+ return type;
+}
+
+bool NgonGridMatplotData::initEndian()
+{
+ const int num = 1;
+
+ return *(char *)&num == 1;
+}
+
+void NgonGridMatplotData::setABGRSupported(bool _isABGRSupported)
+{
+ isABGRSupported = _isABGRSupported;
+}
+
+void NgonGridMatplotData::disposeTextureData(void)
+{
+ if (this->data)
+ {
+ delete[] (unsigned char *)this->data;
+ this->data = NULL;
+ this->dataSize = 0;
+ }
+}
diff --git a/modules/graphic_objects/src/cpp/NgonGridMatplotDataDecomposer.cpp b/modules/graphic_objects/src/cpp/NgonGridMatplotDataDecomposer.cpp
new file mode 100755
index 000000000..c494285e2
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonGridMatplotDataDecomposer.cpp
@@ -0,0 +1,837 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "ColorComputer.hxx"
+#include "DecompositionUtils.hxx"
+#include "NgonGridDataDecomposer.hxx"
+#include "NgonGridMatplotDataDecomposer.hxx"
+
+#include <iostream>
+
+extern "C"
+{
+#include <stdlib.h>
+#include <string.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+NgonGridMatplotDataDecomposer* NgonGridMatplotDataDecomposer::decomposer = NULL;
+
+void NgonGridMatplotDataDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double* matplotScale = NULL;
+ double* matplotTranslate = NULL;
+ double zShift = 0.;
+ double* pdZShift = &zShift;
+
+ double xTrans[2];
+ double yTrans[2];
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ NgonGridMatplotDataDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_MATPLOT_SCALE__, jni_double_vector, (void**) &matplotScale);
+ getGraphicObjectProperty(id, __GO_MATPLOT_TRANSLATE__, jni_double_vector, (void**) &matplotTranslate);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double, (void**) &pdZShift);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* The position of the lower-left corner and the distance between two adjacent vertices i and i+1 (respectively) along the x-axis */
+ xTrans[0] = matplotTranslate[0];
+ xTrans[1] = matplotScale[0];
+
+ /* The position of the lower-left corner and the distance between two adjacent vertices j and j+1 (respectively) along the y-axis */
+ yTrans[0] = matplotTranslate[1];
+ yTrans[1] = matplotScale[1];
+
+ /*
+ * We pass the scale and translate values (for both the x and y axes) as the x and y coordinate arrays,
+ * because Matplot vertex coordinates are directly computed from these values.
+ */
+ decomposer->fillGridVertices(buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, (double*) xTrans, (double*) yTrans, &zShift, numX, numY);
+
+ releaseGraphicObjectProperty(__GO_MATPLOT_SCALE__, matplotScale, jni_double_vector, 0);
+ releaseGraphicObjectProperty(__GO_MATPLOT_TRANSLATE__, matplotTranslate, jni_double_vector, 0);
+}
+
+/* To do: refactor with its parent class' same method */
+void NgonGridMatplotDataDecomposer::fillGridVertices(float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask,
+ double* x, double* y, double* z, int numX, int numY)
+{
+ double xi = 0.;
+ double yj = 0.;
+ double zij = 0.;
+ double yjp1 = 0.;
+ double xip1 = 0.;
+
+ int bufferOffset = 0;
+
+#if PER_VERTEX_VALUES
+ for (int j = 0; j < numY; j++)
+ {
+ yj = (double) j * y[1] + y[0];
+
+ if (coordinateMask & 0x2)
+ {
+ if (logMask & 0x2)
+ {
+ yj = DecompositionUtils::getLog10Value(yj);
+ }
+ }
+
+ for (int i = 0; i < numX; i++)
+ {
+ xi = (double) i * x[1] + x[0];
+ bufferOffset = elementsSize * (numX * j + i);
+
+ if (coordinateMask & 0x1)
+ {
+ if (logMask & 0x1)
+ {
+ xi = DecompositionUtils::getLog10Value(xi);
+ }
+
+ buffer[bufferOffset] = xi * scale[0] + translation[0];
+ }
+
+ if (coordinateMask & 0x2)
+ {
+ buffer[bufferOffset + 1] = yj * scale[1] + translation[1];
+ }
+
+ if (coordinateMask & 0x4)
+ {
+ zij = getZCoordinate(z, numX, numY, i, j, logMask & 0x4);
+
+ buffer[bufferOffset + 2] = zij * scale[2] + translation[2];
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8))
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+ }
+ }
+#else
+ bufferOffset = 0;
+
+ for (int j = 0; j < numY - 1; j++)
+ {
+ double ycoords[4];
+ int yindices[4];
+
+ yj = (double) j * y[1] + y[0];
+ yjp1 = (double) (j + 1) * y[1] + y[0];
+
+ if (coordinateMask & 0x2)
+ {
+ if (logMask & 0x2)
+ {
+ yj = DecompositionUtils::getLog10Value(yj);
+ yjp1 = DecompositionUtils::getLog10Value(yjp1);
+ }
+ }
+
+ ycoords[0] = yj;
+ ycoords[1] = yj;
+ ycoords[2] = yjp1;
+ ycoords[3] = yjp1;
+
+ yindices[0] = j;
+ yindices[1] = j;
+ yindices[2] = j + 1;
+ yindices[3] = j + 1;
+
+ for (int i = 0; i < numX - 1; i++)
+ {
+ double xcoords[4];
+ int xindices[4];
+
+ xi = (double) i * x[1] + x[0];
+ xip1 = (double) (i + 1) * x[1] + x[0];
+
+ if (logMask & 0x1)
+ {
+ xi = DecompositionUtils::getLog10Value(xi);
+ xip1 = DecompositionUtils::getLog10Value(xip1);
+ }
+
+ xcoords[0] = xi;
+ xcoords[1] = xip1;
+ xcoords[2] = xi;
+ xcoords[3] = xip1;
+
+ xindices[0] = i;
+ xindices[1] = i + 1;
+ xindices[2] = i;
+ xindices[3] = i + 1;
+
+ for (int k = 0; k < 4; k++)
+ {
+ if (coordinateMask & 0x1)
+ {
+ buffer[bufferOffset] = (float)(xcoords[k] * scale[0] + translation[0]);
+ }
+
+ if (coordinateMask & 0x2)
+ {
+ buffer[bufferOffset + 1] = (float)(ycoords[k] * scale[1] + translation[1]);
+ }
+
+ /*if (coordinateMask & 0x4)
+ zij = getZCoordinate(z, numX, numY, xindices[k], yindices[k], logMask & 0x4);
+ buffer[bufferOffset +2] = (float)(zij * scale[2] + translation[2]);
+ }*/
+
+ if (elementsSize == 4 && (coordinateMask & 0x8))
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+ }
+ }
+
+#endif
+}
+
+/*
+ * To do:
+ * -clean-up: replace explicitely computed z indices by getPointIndex calls
+ * -remove the per-vertex color fill code
+ */
+void NgonGridMatplotDataDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
+{
+ int parent = 0;
+ int* pparent = &parent;
+ int parentFigure = 0;
+ int* pparentFigure = &parentFigure;
+
+ void * data = NULL;
+ double* colormap = NULL;
+ double currentZ = 0.;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+ int datatype = -1;
+ int * pidataType = &datatype;
+ int imagetype = 0;
+ int * piImagetype = &imagetype;
+ int gltype = 0;
+ int * piGltype = &gltype;
+
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &pparentFigure);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__, jni_double_vector, &data);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_DATA_TYPE__, jni_int, (void**) &pidataType);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__, jni_int, (void **)&piImagetype);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_MATPLOT_GL_TYPE__, jni_int, (void **)&piGltype);
+
+ /* In order not to access invalid data when reading the last line's last element */
+ if (numX < 2)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+#if PER_VERTEX_VALUES
+ for (int j = 0; j < numY - 1; j++)
+ {
+ for (int i = 0; i < numX - 1; i++)
+ {
+ currentZ = z[i * (numY - 1) + (numY - 2 - j)];
+
+ ColorComputer::getDirectColor((double) currentZ - 1.0, colormap, colormapSize, &buffer[bufferOffset]);
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+
+ /* Last element (same as the above loop's last) */
+ currentZ = z[(numX - 2) * (numY - 1) + (numY - 2 - j)];
+
+ ColorComputer::getDirectColor((double) currentZ - 1.0, colormap, colormapSize, &buffer[bufferOffset]);
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+
+ /* Last line */
+ for (int i = 0; i < numX - 1; i++)
+ {
+ currentZ = z[(numY - 1) * i + 0];
+
+ ColorComputer::getDirectColor((double) currentZ - 1.0, colormap, colormapSize, &buffer[bufferOffset]);
+
+ bufferOffset += elementsSize;
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+ }
+
+ /* Last element (same as the above loop's last) */
+ currentZ = z[(numX - 2) * (numY - 1) + 0];
+
+ ColorComputer::getDirectColor((double) currentZ - 1.0, colormap, colormapSize, &buffer[bufferOffset]);
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+#else
+
+ getRGBAData((ImageType)imagetype, (DataType)datatype, (GLType)gltype, data, buffer, elementsSize, numY - 1, numX - 1, colormap, colormapSize);
+
+ /*for (int j = 0; j < numY-1; j++)
+ {
+ for (int i = 0; i < numX - 1; i++)
+ {
+ float facetColor[3];
+
+ currentZ = z[i * (numY - 1) + (numY - 2 - j)];
+ ColorComputer::getDirectColor((double) currentZ - 1.0, colormap, colormapSize, facetColor);
+ writeFacetColorToBuffer(buffer, bufferOffset, facetColor, elementsSize);
+
+ bufferOffset += 4 * elementsSize;
+ }
+ }*/
+
+#endif
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+}
+
+/*
+ * To do: merge with NgonGridDataDecomposer::fillIndices as these functions perform a lot of work in
+ * a redundant way.
+ */
+int NgonGridMatplotDataDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+ double zShift = 0.0;
+ double* pdZShift = &zShift;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ int numberIndices = 0;
+
+ NgonGridMatplotDataDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* 0 indices if less than 2 points along either dimension */
+ if (numX < 2 || numY < 2)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double, (void**) &pdZShift);
+
+ /*
+ * The per-node value flag is set to 0 as for Matplot objects grid values are specified per-facet.
+ * However, it not used at all when determining facet validity and hence is only informative.
+ */
+ numberIndices = decomposer->fillTriangleIndices(buffer, bufferLength, logMask, x, y, &zShift, z, 0, numX, numY);
+
+ return numberIndices;
+}
+
+int NgonGridMatplotDataDecomposer::isFacetValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed, int currentEdgeValid, int* nextEdgeValid)
+{
+ double zij = 0.;
+ int facetValid = 1;
+
+ /*zij = getZCoordinate(z, numX, numY, i, j, logUsed);
+
+ facetValid = DecompositionUtils::isValid(zij);
+
+ if (logUsed)
+ {
+ facetValid &= DecompositionUtils::isLogValid(zij);
+ }*/
+
+ /* Transposed relative to Grayplot */
+ //facetValid &= DecompositionUtils::isValid(values[getPointIndex(numY-1, numX-1, numY-2-j, i)]);
+
+ /* Edge validity is always 1 since it is not used at all to determine facet validity for Matplot decomposition */
+ *nextEdgeValid = 1;
+
+ return facetValid;
+}
+
+int NgonGridMatplotDataDecomposer::isFacetEdgeValid(double* z, double* values, int perNodeValues, int numX, int numY, int i, int j, int logUsed)
+{
+ /* Always considered valid since not used at all to determine facet validity */
+ return 1;
+}
+
+void NgonGridMatplotDataDecomposer::getRGBAData(ImageType imagetype, DataType datatype, GLType gltype, void * data, float * buffer, int elementsSize, const int nbRow, const int nbCol, double * colormap, const int colormapSize)
+{
+ if (imagetype == MATPLOT_INDEX)
+ {
+ switch (datatype)
+ {
+ case MATPLOT_Char :
+ {
+ fillColorsByIndex((char *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ case MATPLOT_UChar :
+ {
+ fillColorsByIndex((unsigned char *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ fillColorsByIndex((int *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ fillColorsByIndex((unsigned int *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ case MATPLOT_Short :
+ {
+ fillColorsByIndex((short *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ case MATPLOT_UShort :
+ {
+ fillColorsByIndex((unsigned short *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ case MATPLOT_Double :
+ {
+ fillColorsByIndex((double *)data, buffer, elementsSize, nbRow, nbCol, colormap, colormapSize);
+ break;
+ }
+ }
+ }
+ else
+ {
+ float colors[4];
+
+ switch (gltype)
+ {
+ case MATPLOT_GL_RGBA :
+ {
+ unsigned int k = 0;
+ unsigned int * ui = (unsigned int *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ const unsigned int c = ui[nbRow - 1 + i * nbRow - j];
+ colors[0] = ((c >> 24) & 0xFF) / 255.0f;
+ colors[1] = ((c >> 16) & 0xFF) / 255.0f;
+ colors[2] = ((c >> 8) & 0xFF) / 255.0f;
+ colors[3] = (c & 0xFF) / 255.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, true);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGB_FLOAT :
+ {
+ unsigned int k = 0;
+ float * f = (float *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ writeFacetColorToBuffer(buffer, k, &f[3 * (nbRow - 1 + i * nbRow - j)], elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGB :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ const unsigned int ind = 3 * (nbRow - 1 + i * nbRow - j);
+ colors[0] = uc[ind] / 255.0f;
+ colors[1] = uc[ind + 1] / 255.0f;
+ colors[2] = uc[ind + 2] / 255.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGBA_BYTE :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ const unsigned int ind = 4 * (nbRow - 1 + i * nbRow - j);
+ colors[0] = uc[ind] / 255.0f;
+ colors[1] = uc[ind + 1] / 255.0f;
+ colors[2] = uc[ind + 2] / 255.0f;
+ colors[3] = uc[ind + 3] / 255.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, true);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGBA_FLOAT :
+ {
+ unsigned int k = 0;
+ float * f = (float *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ writeFacetColorToBuffer(buffer, k, &f[4 * (nbRow - 1 + i * nbRow - j)], elementsSize, true);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_GRAY :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = uc[nbRow - 1 + i * nbRow - j] / 255.0f;
+ colors[1] = colors[0];
+ colors[2] = colors[0];
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RED :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = uc[nbRow - 1 + i * nbRow - j] / 255.0f;
+ colors[1] = 0;
+ colors[2] = 0;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_GREEN :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = 0;
+ colors[1] = uc[nbRow - 1 + i * nbRow - j] / 255.0f;
+ colors[2] = 0;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_BLUE :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = 0;
+ colors[1] = 0;
+ colors[2] = uc[nbRow - 1 + i * nbRow - j] / 255.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_GRAY_FLOAT :
+ {
+ unsigned int k = 0;
+ float * f = (float *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = f[nbRow - 1 + i * nbRow - j];
+ colors[1] = colors[0];
+ colors[2] = colors[0];
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RED_FLOAT :
+ {
+ unsigned int k = 0;
+ float * f = (float *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = f[nbRow - 1 + i * nbRow - j];
+ colors[1] = 0;
+ colors[2] = 0;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_GREEN_FLOAT :
+ {
+ unsigned int k = 0;
+ float * f = (float *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = 0;
+ colors[1] = f[nbRow - 1 + i * nbRow - j];
+ colors[2] = 0;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_BLUE_FLOAT :
+ {
+ unsigned int k = 0;
+ float * f = (float *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = 0;
+ colors[1] = 0;
+ colors[2] = f[nbRow - 1 + i * nbRow - j];
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGBA_4444 :
+ {
+ unsigned int k = 0;
+ unsigned short * us = (unsigned short *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ const unsigned short c = us[nbRow - 1 + i * nbRow - j];
+ colors[0] = ((c >> 12) & 0xFF) / 15.0f;
+ colors[1] = ((c >> 8) & 0xFF) / 15.0f;
+ colors[2] = ((c >> 4) & 0xFF) / 15.0f;
+ colors[3] = (c & 0xFF) / 15.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, true);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGBA_5551 :
+ {
+ unsigned int k = 0;
+ unsigned short * us = (unsigned short *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ const unsigned short c = us[nbRow - 1 + i * nbRow - j];
+ colors[0] = ((c >> 11) & 0xFF) / 31.0f;
+ colors[1] = ((c >> 6) & 0xFF) / 31.0f;
+ colors[2] = ((c >> 1) & 0xFF) / 31.0f;
+ colors[3] = (float)(c & 0x1);
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, true);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RGB_332 :
+ {
+ unsigned int k = 0;
+ unsigned char * uc = (unsigned char *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ const unsigned char c = uc[nbRow - 1 + i * nbRow - j];
+ colors[0] = ((c >> 5) & 0x7) / 7.0f;
+ colors[1] = ((c >> 2) & 0x7) / 7.0f;
+ colors[2] = (c & 0x3) / 3.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_GRAY_16 :
+ {
+ unsigned int k = 0;
+ unsigned short * us = (unsigned short *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = us[nbRow - 1 + i * nbRow - j] / 65535.0f;
+ colors[1] = colors[0];
+ colors[2] = colors[0];
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_RED_16 :
+ {
+ unsigned int k = 0;
+ unsigned short * us = (unsigned short *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = us[nbRow - 1 + i * nbRow - j] / 65535.0f;
+ colors[1] = 0;
+ colors[2] = 0;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_GREEN_16 :
+ {
+ unsigned int k = 0;
+ unsigned short * us = (unsigned short *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = 0;
+ colors[1] = us[nbRow - 1 + i * nbRow - j] / 65535.0f;
+ colors[2] = 0;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GL_BLUE_16 :
+ {
+ unsigned int k = 0;
+ unsigned short * us = (unsigned short *)data;
+
+ for (int j = 0; j < nbRow; j++)
+ {
+ for (int i = 0; i < nbCol; i++)
+ {
+ colors[0] = 0;
+ colors[1] = 0;
+ colors[2] = us[nbRow - 1 + i * nbRow - j] / 65535.0f;
+ writeFacetColorToBuffer(buffer, k, colors, elementsSize, false);
+ k += 4 * elementsSize;
+ }
+ }
+ break;
+ }
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/cpp/NgonPolylineData.cpp b/modules/graphic_objects/src/cpp/NgonPolylineData.cpp
new file mode 100755
index 000000000..d28fd2d16
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NgonPolylineData.cpp
@@ -0,0 +1,568 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <iostream>
+
+#include "NgonPolylineData.hxx"
+#include "DataProperties.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <string.h>
+
+#include "graphicObjectProperties.h"
+}
+
+NgonPolylineData::NgonPolylineData(void)
+{
+ xShift = NULL;
+ yShift = NULL;
+ zShift = NULL;
+
+ xShiftSet = 0;
+ yShiftSet = 0;
+ zShiftSet = 0;
+
+ coordinatesShift = NULL;
+
+ zCoordinatesSet = 0;
+
+ display_function_data = NULL;
+ display_function_data_size = 0;
+
+}
+
+NgonPolylineData::~NgonPolylineData(void)
+{
+ if (xShiftSet)
+ {
+ delete [] xShift;
+ }
+
+ if (yShiftSet)
+ {
+ delete [] yShift;
+ }
+
+ if (zShiftSet)
+ {
+ delete [] zShift;
+ }
+
+ if (display_function_data)
+ {
+ delete[] display_function_data;
+ }
+}
+
+int NgonPolylineData::getPropertyFromName(int propertyName)
+{
+ switch (propertyName)
+ {
+ case __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ :
+ return NUM_ELEMENTS_ARRAY;
+ case __GO_DATA_MODEL_X_COORDINATES_SHIFT__ :
+ return X_COORDINATES_SHIFT;
+ case __GO_DATA_MODEL_Y_COORDINATES_SHIFT__ :
+ return Y_COORDINATES_SHIFT;
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ :
+ return Z_COORDINATES_SHIFT;
+ case __GO_DATA_MODEL_NUM_ELEMENTS__ :
+ return NUM_ELEMENTS;
+ case __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__ :
+ return X_COORDINATES_SHIFT_SET;
+ case __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__ :
+ return Y_COORDINATES_SHIFT_SET;
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__ :
+ return Z_COORDINATES_SHIFT_SET;
+ case __GO_DATA_MODEL_Z_COORDINATES_SET__ :
+ return Z_COORDINATES_SET;
+ case __GO_DATA_MODEL_DISPLAY_FUNCTION__ :
+ return DISPLAY_FUNCTION_DATA;
+ case __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ :
+ return DISPLAY_FUNCTION_DATA_SIZE;
+ default :
+ return NgonGeneralData::getPropertyFromName(propertyName);
+ }
+
+}
+
+
+int NgonPolylineData::setDataProperty(int property, void const* value, int numElements)
+{
+ switch (property)
+ {
+ case NUM_ELEMENTS_ARRAY :
+ return setNumElementsArray((int const*) value);
+ case X_COORDINATES_SHIFT :
+ return setXCoordinatesShift((double const*) value, numElements);
+ case Y_COORDINATES_SHIFT :
+ return setYCoordinatesShift((double const*) value, numElements);
+ case Z_COORDINATES_SHIFT :
+ return setZCoordinatesShift((double const*) value, numElements);
+ case X_COORDINATES_SHIFT_SET :
+ setXCoordinatesShiftSet(*((int const*) value));
+ break;
+ case Y_COORDINATES_SHIFT_SET :
+ setYCoordinatesShiftSet(*((int const*) value));
+ break;
+ case Z_COORDINATES_SHIFT_SET :
+ setZCoordinatesShiftSet(*((int const*) value));
+ break;
+ case Z_COORDINATES_SET :
+ setZCoordinatesSet(*((int const*) value));
+ break;
+ case DISPLAY_FUNCTION_DATA :
+ setDisplayFunctionData((int const*) value, numElements);
+ break;
+ default :
+ return NgonGeneralData::setDataProperty(property, value, numElements);
+ }
+
+ return 1;
+}
+
+void NgonPolylineData::getDataProperty(int property, void **_pvData)
+{
+ switch (property)
+ {
+ case X_COORDINATES_SHIFT :
+ *_pvData = getXCoordinatesShift();
+ break;
+ case Y_COORDINATES_SHIFT :
+ *_pvData = getYCoordinatesShift();
+ break;
+ case Z_COORDINATES_SHIFT :
+ *_pvData = getZCoordinatesShift();
+ break;
+ case NUM_ELEMENTS :
+ ((int *) *_pvData)[0] = getNumElements();
+ break;
+ case X_COORDINATES_SHIFT_SET :
+ ((int *) *_pvData)[0] = getXCoordinatesShiftSet();
+ break;
+ case Y_COORDINATES_SHIFT_SET :
+ ((int *) *_pvData)[0] = getYCoordinatesShiftSet();
+ break;
+ case Z_COORDINATES_SHIFT_SET :
+ ((int *) *_pvData)[0] = getZCoordinatesShiftSet();
+ break;
+ case Z_COORDINATES_SET :
+ ((int *) *_pvData)[0] = getZCoordinatesSet();
+ break;
+ case DISPLAY_FUNCTION_DATA :
+ *_pvData = getDisplayFunctionData();
+ break;
+ case DISPLAY_FUNCTION_DATA_SIZE :
+ ((int *) *_pvData)[0] = getDisplayFunctionDataSize();
+ break;
+ default :
+ NgonGeneralData::getDataProperty(property, _pvData);
+ }
+}
+
+int NgonPolylineData::getNumElements(void)
+{
+ return numVerticesPerGon;
+}
+
+void NgonPolylineData::setZCoordinatesSet(int zCoordinatesSet)
+{
+ this->zCoordinatesSet = zCoordinatesSet;
+}
+
+int NgonPolylineData::getZCoordinatesSet(void)
+{
+ return this->zCoordinatesSet;
+}
+
+double* NgonPolylineData::getXCoordinatesShift(void)
+{
+ return xShift;
+}
+
+int NgonPolylineData::setXCoordinatesShift(double const* data, int numElements)
+{
+ if (xShiftSet == 0)
+ {
+
+ try
+ {
+ xShift = new double[numVerticesPerGon];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ return 0;
+ }
+
+ xShiftSet = 1;
+ }
+
+ for (int i = 0; i < numVerticesPerGon; i++)
+ {
+ xShift[i] = data[i];
+ }
+
+ return 1;
+}
+
+double* NgonPolylineData::getYCoordinatesShift()
+{
+ return yShift;
+}
+
+int NgonPolylineData::setYCoordinatesShift(double const* data, int numElements)
+{
+ if (yShiftSet == 0)
+ {
+
+ try
+ {
+ yShift = new double[numVerticesPerGon];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ return 0;
+ }
+
+ yShiftSet = 1;
+ }
+
+ for (int i = 0; i < numVerticesPerGon; i++)
+ {
+ yShift[i] = data[i];
+ }
+
+ return 1;
+}
+
+double* NgonPolylineData::getZCoordinatesShift()
+{
+ return zShift;
+}
+
+int NgonPolylineData::getXCoordinatesShiftSet(void)
+{
+ return xShiftSet;
+}
+
+void NgonPolylineData::setXCoordinatesShiftSet(int xShiftSet)
+{
+ if (xShiftSet == 0 && this->xShiftSet == 1)
+ {
+ delete [] xShift;
+ xShift = NULL;
+ }
+
+ this->xShiftSet = xShiftSet;
+}
+
+int NgonPolylineData::getYCoordinatesShiftSet(void)
+{
+ return yShiftSet;
+}
+
+void NgonPolylineData::setYCoordinatesShiftSet(int yShiftSet)
+{
+ if (yShiftSet == 0 && this->yShiftSet == 1)
+ {
+ delete [] yShift;
+ yShift = NULL;
+ }
+
+ this->yShiftSet = yShiftSet;
+}
+
+int NgonPolylineData::getZCoordinatesShiftSet(void)
+{
+ return zShiftSet;
+}
+
+void NgonPolylineData::setZCoordinatesShiftSet(int zShiftSet)
+{
+ if (zShiftSet == 0 && this->zShiftSet == 1)
+ {
+ delete [] zShift;
+ zShift = NULL;
+ }
+
+ this->zShiftSet = zShiftSet;
+}
+
+int NgonPolylineData::setZCoordinatesShift(double const* data, int numElements)
+{
+ if (zShiftSet == 0)
+ {
+
+ try
+ {
+ zShift = new double[numVerticesPerGon];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ return 0;
+ }
+
+ zShiftSet = 1;
+ }
+
+ for (int i = 0; i < numVerticesPerGon; i++)
+ {
+ zShift[i] = data[i];
+ }
+
+ return 1;
+}
+
+int NgonPolylineData::setNumElementsArray(int const* numElementsArray)
+{
+ int newNumElements = 0;
+ int previousNumElements = 0;
+ int result = 1;
+
+ if (numElementsArray[0] != 1)
+ {
+ return 0;
+ }
+
+ newNumElements = numElementsArray[0] * numElementsArray[1];
+ previousNumElements = numGons * numVerticesPerGon;
+
+ if (newNumElements == 0 && previousNumElements > 0)
+ {
+ numVerticesPerGon = 0;
+
+ deleteCoordinatesArrays();
+
+ return 1;
+ }
+
+ if (numGons * numVerticesPerGon != newNumElements)
+ {
+ double* newCoordinates = NULL;
+ double* xShiftNew = NULL;
+ double* yShiftNew = NULL;
+ double* zShiftNew = NULL;
+
+ result = 1;
+
+ try
+ {
+ newCoordinates = new double[3 * newNumElements];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ return 0;
+ }
+
+ if (xShiftSet)
+ {
+ try
+ {
+ xShiftNew = new double[newNumElements];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (yShiftSet)
+ {
+ try
+ {
+ yShiftNew = new double[newNumElements];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (zShiftSet)
+ {
+ try
+ {
+ zShiftNew = new double[newNumElements];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ result = 0;
+ }
+ }
+
+ if (result)
+ {
+ if (numGons * numVerticesPerGon > 0)
+ {
+ delete [] coordinates;
+ }
+
+ /*
+ * Initialize the new coordinates' z values to 0 in case
+ * they are not set afterwards.
+ */
+ for (int i = 0; i < newNumElements; i++)
+ {
+ newCoordinates[2 * newNumElements + i] = 0.0;
+ }
+
+ coordinates = newCoordinates;
+
+ if (xShiftSet)
+ {
+ copyShiftCoordinatesArray(xShiftNew, xShift, newNumElements);
+ delete [] xShift;
+ xShift = xShiftNew;
+ }
+
+ if (yShiftSet)
+ {
+ copyShiftCoordinatesArray(yShiftNew, yShift, newNumElements);
+ delete [] yShift;
+ yShift = yShiftNew;
+ }
+
+ if (zShiftSet)
+ {
+ copyShiftCoordinatesArray(zShiftNew, zShift, newNumElements);
+ delete [] zShift;
+ zShift = zShiftNew;
+ }
+
+ numGons = numElementsArray[0];
+ numVerticesPerGon = numElementsArray[1];
+ }
+ else
+ {
+ /* Delete the temporary arrays and don't set anything */
+ if (newCoordinates != NULL)
+ {
+ delete [] newCoordinates;
+ }
+
+ if (xShiftNew != NULL)
+ {
+ delete [] xShiftNew;
+ }
+
+ if (yShiftNew != NULL)
+ {
+ delete [] yShiftNew;
+ }
+
+ if (zShiftNew != NULL)
+ {
+ delete [] zShiftNew;
+ }
+
+ }
+
+ }
+
+ return result;
+}
+
+void NgonPolylineData::copyShiftCoordinatesArray(double * newShift, double const* oldShift, int numElementsNew)
+{
+ int numElementsCopied = 0;
+
+ if (numElementsNew < numVerticesPerGon)
+ {
+ numElementsCopied = numElementsNew;
+ }
+ else
+ {
+ numElementsCopied = numVerticesPerGon;
+ }
+
+ for (int i = 0; i < numElementsCopied; i++)
+ {
+ newShift[i] = oldShift[i];
+ }
+
+ for (int i = numElementsCopied; i < numElementsNew; i++)
+ {
+ newShift[i] = 0.0;
+ }
+}
+
+void NgonPolylineData::deleteCoordinatesArrays(void)
+{
+ if (coordinates != NULL)
+ {
+ delete [] coordinates;
+ coordinates = NULL;
+ }
+
+ if (xShiftSet)
+ {
+ delete [] xShift;
+ xShift = NULL;
+ xShiftSet = 0;
+ }
+
+ if (yShiftSet)
+ {
+ delete [] yShift;
+ yShift = NULL;
+ yShiftSet = 0;
+ }
+
+ if (zShiftSet)
+ {
+ delete [] zShift;
+ zShift = NULL;
+ zShiftSet = 0;
+ }
+}
+
+int* NgonPolylineData::getDisplayFunctionData()
+{
+ return display_function_data;
+}
+
+int NgonPolylineData::getDisplayFunctionDataSize()
+{
+ return display_function_data_size;
+}
+
+int NgonPolylineData::setDisplayFunctionData(int const* data, int numElements)
+{
+ if (display_function_data != NULL)
+ {
+ delete[] display_function_data;
+ display_function_data = NULL;
+ }
+
+ try
+ {
+ display_function_data_size = numElements;
+ display_function_data = new int[numElements];
+ }
+ catch (const std::exception& e)
+ {
+ e.what();
+ return 0;
+ }
+
+ memcpy(display_function_data, data, display_function_data_size * sizeof(int));
+ return 1;
+} \ No newline at end of file
diff --git a/modules/graphic_objects/src/cpp/NormalGenerator.cpp b/modules/graphic_objects/src/cpp/NormalGenerator.cpp
new file mode 100755
index 000000000..3c9dbc41b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/NormalGenerator.cpp
@@ -0,0 +1,190 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro SOUZA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <math.h>
+#include "NormalGenerator.hxx"
+
+#define PLUS3(a, b, c) (c)[0]=(a)[0]+(b)[0];(c)[1]=(a)[1]+(b)[1];(c)[2]=(a)[2]+(b)[2];
+#define MINUS3(a, b, c) (c)[0]=(a)[0]-(b)[0];(c)[1]=(a)[1]-(b)[1];(c)[2]=(a)[2]-(b)[2];
+#define CROSS3(a, b, c) (c)[0]=(a)[1]*(b)[2] - (a)[2]*b[1];(c)[1]=(a)[2]*(b)[0] - (a)[0]*(b)[2];(c)[2]=(a)[0]*(b)[1] - (a)[1]*(b)[0];
+#define COPY3(a, b) (a)[0]=(b)[0];(a)[1]=(b)[1];(a)[2]=(b)[2];
+
+inline void normalize3(float* v)
+{
+ float inv_norm = 1.0f / sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
+ v[0] *= inv_norm;
+ v[1] *= inv_norm;
+ v[2] *= inv_norm;
+}
+
+bool CalculateGridNormalFlat(float* position, float* buffer, int bufferLength, int elementSize)
+{
+ if (elementSize < 3)
+ {
+ return false;
+ }
+ for (int i = 0; i < bufferLength; i += 4 * elementSize)
+ {
+ float *p1 = &position[i],
+ *p2 = &position[i + elementSize],
+ *p3 = &position[i + 2 * elementSize],
+ *p4 = &position[i + 3 * elementSize];
+
+ float v1[3], v2[3], n1[3], n2[3], n1pn2[3];
+ //v1 = p2-p1
+ MINUS3(p2, p1, v1);
+ MINUS3(p4, p1, v2);
+
+ //n1 = v1 x v2
+ CROSS3(v1, v2, n1);
+
+ MINUS3(p4, p1, v1);
+ MINUS3(p3, p1, v2);
+
+ CROSS3(v1, v2, n2);
+
+ normalize3(n1);
+ normalize3(n2);
+ PLUS3(n1, n2, n1pn2);
+
+ normalize3(n1pn2);
+
+
+ COPY3(&buffer[i], n1pn2);
+ COPY3(&buffer[i + elementSize], n1pn2);
+ COPY3(&buffer[i + 2 * elementSize], n1pn2);
+ COPY3(&buffer[i + 3 * elementSize], n1pn2);
+ }
+ return true;
+}
+
+bool CalculateGridNormalSmooth(float* position, float* buffer, int bufferLength, int elementSize, int numX, int numY)
+{
+ if (elementSize < 3)
+ {
+ return false;
+ }
+ for (int i = 0; i < bufferLength; i += 4 * elementSize)
+ {
+ float *p1 = &position[i],
+ *p2 = &position[i + elementSize],
+ *p3 = &position[i + 2 * elementSize],
+ *p4 = &position[i + 3 * elementSize];
+
+ float v1[3], v2[3], n1[3], n2[3], n1pn2[3];
+ //v1 = p2-p1
+ MINUS3(p2, p1, v1);
+ MINUS3(p4, p1, v2);
+
+ //n1 = v1 x v2
+ CROSS3(v1, v2, n1);
+
+ MINUS3(p4, p1, v1);
+ MINUS3(p3, p1, v2);
+
+ CROSS3(v1, v2, n2);
+
+ normalize3(n1);
+ normalize3(n2);
+ PLUS3(n1, n2, n1pn2);
+
+ normalize3(n1pn2);
+
+
+ COPY3(&buffer[i], n1pn2);
+ COPY3(&buffer[i + elementSize], n1);
+ COPY3(&buffer[i + 2 * elementSize], n2);
+ COPY3(&buffer[i + 3 * elementSize], n1pn2);
+ }
+
+ // average normals in x axis
+ for (int i = 0; i < numX - 1; ++i)
+ {
+ for (int j = 0; j < numY - 2; ++j)
+ {
+ float sum[3];
+ float *p2, *p3, *pj0, *pj1;
+ p2 = getGridNormal(buffer, numX, numY, elementSize, i, j, 2);
+ p3 = getGridNormal(buffer, numX, numY, elementSize, i, j, 3);
+
+ pj0 = getGridNormal(buffer, numX, numY, elementSize, i, j + 1, 0);
+ pj1 = getGridNormal(buffer, numX, numY, elementSize, i, j + 1, 1);
+
+ PLUS3(pj0, p2, sum);
+ COPY3(p2, sum);
+ COPY3(pj0, sum);
+
+ PLUS3(pj1, p3, sum);
+ COPY3(p3, sum);
+ COPY3(pj1, sum);
+ }
+ }
+
+ // average normals in y axis
+ for (int j = 0; j < numY - 1; ++j)
+ {
+ for (int i = 0; i < numX - 2; ++i)
+ {
+ float sum[3];
+ float *p1, *p3, *pi0, *pi2;
+ p1 = getGridNormal(buffer, numX, numY, elementSize, i, j, 1);
+ p3 = getGridNormal(buffer, numX, numY, elementSize, i, j, 3);
+
+ pi0 = getGridNormal(buffer, numX, numY, elementSize, i + 1, j, 0);
+ pi2 = getGridNormal(buffer, numX, numY, elementSize, i + 1, j, 2);
+
+ PLUS3(pi0, p1, sum);
+ COPY3(p1, sum);
+ COPY3(pi0, sum);
+
+ PLUS3(pi2, p3, sum);
+ COPY3(p3, sum);
+ COPY3(pi2, sum);
+ }
+ }
+ return true;
+}
+
+float * getGridNormal(float *buffer, int numX, int numY, int elementSize, int i, int j, int k)
+{
+ //int idx = (numX-1)*j*4*elementSize + i*4*elementSize + k*elementSize;
+ int idx = elementSize * (k + 4 * (j * (numX - 1) + i));
+ return &buffer[idx];
+}
+
+bool CalculatePolygonNormalFlat(float* position, float* buffer, int bufferLength, int elementSize, int polygonVertices)
+{
+ for (int i = 0; i < bufferLength; i += (elementSize * polygonVertices))
+ {
+ float v1[3], v2[3], n[3], sum[] = {0.0f, 0.0f, 0.0f};
+
+ for (int j = 0; j < polygonVertices - 2; ++j)
+ {
+ float *p1 = &position[i],
+ *p2 = &position[i + (j + 2) * elementSize],
+ *p3 = &position[i + (j + 1) * elementSize];
+
+ MINUS3(p2, p1, v1);
+ MINUS3(p3, p1, v2);
+ CROSS3(v1, v2, n);
+ normalize3(n);
+
+ PLUS3(n, sum, sum);
+ }
+ for (int j = 0; j < polygonVertices; ++j)
+ {
+ COPY3(&buffer[i + j * elementSize], sum);
+ }
+ }
+ return true;
+}
+
diff --git a/modules/graphic_objects/src/cpp/Plot3DDecomposer.cpp b/modules/graphic_objects/src/cpp/Plot3DDecomposer.cpp
new file mode 100755
index 000000000..aa4e8a8cc
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/Plot3DDecomposer.cpp
@@ -0,0 +1,487 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <cstring>
+
+#include "ColorComputer.hxx"
+#include "DecompositionUtils.hxx"
+#include "Plot3DDecomposer.hxx"
+
+extern "C"
+{
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+Plot3DDecomposer* Plot3DDecomposer::decomposer = NULL;
+
+void Plot3DDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ Plot3DDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ decomposer->fillGridVertices(buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, x, y, z, numX, numY);
+}
+
+double Plot3DDecomposer::getZCoordinate(double* z, int numX, int numY, int i, int j)
+{
+ double zij = 0.;
+
+ zij = z[numX * j + i];
+
+ return zij;
+}
+
+double Plot3DDecomposer::getZCoordinate(double* z, int numX, int numY, int i, int j, int logUsed)
+{
+ double zij = 0.;
+
+ zij = z[numX * j + i];
+
+ if (logUsed)
+ {
+ zij = DecompositionUtils::getLog10Value(zij);
+ }
+
+ return zij;
+}
+
+void Plot3DDecomposer::getFacetTriangles(double* x, double* y, double* z, int numX, int numY, int i, int j,
+ int* facetVertexIndices, int* triangleVertexIndices)
+{
+ double vertices[4][3];
+
+ /* Gets the facet's vertices: (i,j), (i+1,j), (i+1,j+1), (i,j+1) */
+ getFacetCoordinates(x, y, z, numX, numY, i, j, vertices);
+
+ /* Decomposes the facet into two triangles and outputs their indices */
+ DecompositionUtils::getDecomposedQuadTriangleIndices(vertices, facetVertexIndices, triangleVertexIndices);
+}
+
+/*
+ * To do: compute and return color indices instead of directly looking
+ * up colors from the colormap.
+ */
+void Plot3DDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
+{
+ int parentFigure = 0;
+ int* pparentFigure = &parentFigure;
+ int parent = 0;
+ int* pparent = &parent;
+
+ double* z = NULL;
+ double* colormap = NULL;
+
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+
+ Plot3DDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &pparentFigure);
+
+ if (parentFigure == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ decomposer->fillNormalizedZGridColors(buffer, bufferLength, elementsSize, colormap, colormapSize, z, numX, numY);
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+}
+
+int Plot3DDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ int numberIndices = 0;
+
+ Plot3DDecomposer* decomposer = get();
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* 0 indices if 0 points */
+ if (numX == 0 || numY == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ /* The per-node value flag is set to 1, as grid values amount to z coordinates and are not relevant anyway. */
+ numberIndices = decomposer->fillTriangleIndices(buffer, bufferLength, logMask, x, y, z, z, 1, numX, numY);
+
+ return numberIndices;
+}
+
+int Plot3DDecomposer::getWireIndicesSize(int id)
+{
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ if (numX == 0 || numY == 0)
+ {
+ return 0;
+ }
+
+ return 2 * 2 * (numX - 1) * (numY - 1) + 2 * (numX - 1) + 2 * (numY - 1);
+}
+
+/*
+ * To be optimized:
+ * -a lot of work performed redundantly with NgonGridDataDecomposer::fillIndices, ought to be merged
+ * with it.
+ */
+int Plot3DDecomposer::fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* x = NULL;
+ double* y = NULL;
+ double* z = NULL;
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ int previousRowValid = 0;
+ int currentRowValid = 0;
+ int nextRowValid = 0;
+
+ int previousColumnValid = 0;
+ int currentColumnValid = 0;
+ int nextColumnValid = 0;
+
+ int lowerLeftZValid = 0;
+ int lowerRightZValid = 0;
+ int upperLeftZValid = 0;
+ int upperRightZValid = 0;
+
+ int jm1HorizontalEdgeZValid = 0;
+ int im1VerticalEdgeZValid = 0;
+ int jHorizontalEdgeZValid = 0;
+ int iVerticalEdgeZValid = 0;
+ int jp1HorizontalEdgeZValid = 0;
+ int ip1VerticalEdgeZValid = 0;
+
+ int ij = 0;
+ int ip1j = 0;
+ int ijp1 = 0;
+ int ip1jp1 = 0;
+ int ijm1 = 0;
+ int ip1jm1 = 0;
+
+ int firstVertexIndex = 0;
+
+ int bufferOffset = 0;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* 0 indices if less than 2 points along either dimension */
+ if (numX < 2 || numY < 2)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &x);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &y);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &z);
+
+ /* First row */
+ previousRowValid = 0;
+ currentRowValid = DecompositionUtils::isValid(y[0]);
+
+ if (logMask & 0x2)
+ {
+ currentRowValid &= DecompositionUtils::isLogValid(y[0]);
+ }
+
+ /* Set to 0 as it is not relevant for the first row iteration */
+ jm1HorizontalEdgeZValid = 0;
+
+ /* x-axis and y-axis indices (respectively) */
+ for (int j = 0; j < numY - 1; j++)
+ {
+ nextRowValid = DecompositionUtils::isValid(y[j + 1]);
+
+ if (logMask & 0x2)
+ {
+ nextRowValid &= DecompositionUtils::isLogValid(y[j + 1]);
+ }
+
+ if (!currentRowValid)
+ {
+ previousRowValid = currentRowValid;
+ currentRowValid = nextRowValid;
+ continue;
+ }
+
+ previousColumnValid = 0;
+ currentColumnValid = DecompositionUtils::isValid(x[0]);
+
+ if (logMask & 0x1)
+ {
+ currentColumnValid &= DecompositionUtils::isLogValid(x[0]);
+ }
+
+ ij = getPointIndex(numX, numY, 0, j);
+ ijp1 = getPointIndex(numX, numY, 0, j + 1);
+
+ lowerLeftZValid = DecompositionUtils::isValid(z[ij]);
+ upperLeftZValid = DecompositionUtils::isValid(z[ijp1]);
+
+ if (logMask & 0x4)
+ {
+ lowerLeftZValid &= DecompositionUtils::isLogValid(z[ij]);
+ upperLeftZValid &= DecompositionUtils::isLogValid(z[ijp1]);
+ }
+
+ iVerticalEdgeZValid = lowerLeftZValid && upperLeftZValid;
+
+ /* Set to 0 as not relevant for the first column iteration */
+ im1VerticalEdgeZValid = 0;
+
+ for (int i = 0; i < numX - 1; i++)
+ {
+#if !PER_VERTEX_VALUES
+ firstVertexIndex = getFirstVertexIndex(numX, numY, i, j);
+#endif
+
+ ip1j = getPointIndex(numX, numY, i + 1, j);
+ ip1jp1 = getPointIndex(numX, numY, i + 1, j + 1);
+
+ nextColumnValid = DecompositionUtils::isValid(x[i + 1]);
+
+ if (logMask & 0x1)
+ {
+ nextColumnValid &= DecompositionUtils::isLogValid(x[i + 1]);
+ }
+
+ lowerRightZValid = DecompositionUtils::isValid(z[ip1j]);
+ upperRightZValid = DecompositionUtils::isValid(z[ip1jp1]);
+
+ if (logMask & 0x4)
+ {
+ lowerRightZValid &= DecompositionUtils::isLogValid(z[ip1j]);
+ upperRightZValid &= DecompositionUtils::isLogValid(z[ip1jp1]);
+ }
+
+ if (j > 0)
+ {
+ ijm1 = getPointIndex(numX, numY, i, j - 1);
+ ip1jm1 = getPointIndex(numX, numY, i + 1, j - 1);
+
+ jm1HorizontalEdgeZValid = DecompositionUtils::isValid(z[ijm1]) && DecompositionUtils::isValid(z[ip1jm1]);
+
+ if (logMask & 0x4)
+ {
+ jm1HorizontalEdgeZValid &= (DecompositionUtils::isLogValid(z[ijm1]) && DecompositionUtils::isLogValid(z[ip1jm1]));
+ }
+ }
+
+ jHorizontalEdgeZValid = lowerLeftZValid && lowerRightZValid;
+
+ jp1HorizontalEdgeZValid = upperLeftZValid && upperRightZValid;
+ ip1VerticalEdgeZValid = lowerRightZValid && upperRightZValid;
+
+ /*
+ * Two segments: between points (i,j) and (i+1,j)
+ * and points (i,j) and (i,j+1) .
+ */
+ if ((currentColumnValid && nextColumnValid) && jHorizontalEdgeZValid && ((previousRowValid && jm1HorizontalEdgeZValid) || (nextRowValid && jp1HorizontalEdgeZValid)))
+ {
+#if PER_VERTEX_VALUES
+ buffer[bufferOffset] = ij;
+ buffer[bufferOffset + 1] = ip1j;
+#else
+ buffer[bufferOffset] = firstVertexIndex;
+ buffer[bufferOffset + 1] = firstVertexIndex + 1;
+#endif
+
+ bufferOffset += 2;
+ }
+
+ if (currentColumnValid && nextRowValid && iVerticalEdgeZValid && ((previousColumnValid && im1VerticalEdgeZValid) || (nextColumnValid && ip1VerticalEdgeZValid)))
+ {
+#if PER_VERTEX_VALUES
+ buffer[bufferOffset] = ij;
+ buffer[bufferOffset + 1] = ijp1;
+#else
+ buffer[bufferOffset] = firstVertexIndex;
+ buffer[bufferOffset + 1] = firstVertexIndex + 2;
+#endif
+
+ bufferOffset += 2;
+ }
+
+ previousColumnValid = currentColumnValid;
+ currentColumnValid = nextColumnValid;
+ lowerLeftZValid = lowerRightZValid;
+ upperLeftZValid = upperRightZValid;
+
+ im1VerticalEdgeZValid = iVerticalEdgeZValid;
+ iVerticalEdgeZValid = ip1VerticalEdgeZValid;
+
+ ij = ip1j;
+ ijp1 = ip1jp1;
+ }
+
+ /* Rightmost vertical line */
+ if (currentColumnValid && nextRowValid && iVerticalEdgeZValid && (previousColumnValid && im1VerticalEdgeZValid))
+ {
+#if PER_VERTEX_VALUES
+ buffer[bufferOffset] = ij;
+ buffer[bufferOffset + 1] = ijp1;
+#else
+ firstVertexIndex = getFirstVertexIndex(numX, numY, numX - 2, j);
+
+ buffer[bufferOffset] = firstVertexIndex + 1;
+ buffer[bufferOffset + 1] = firstVertexIndex + 3;
+#endif
+
+ bufferOffset += 2;
+ }
+
+ previousRowValid = currentRowValid;
+ currentRowValid = nextRowValid;
+ }
+
+ /* Topmost horizontal lines */
+ currentRowValid = DecompositionUtils::isValid(y[numY - 1]);
+
+ if (logMask & 0x2)
+ {
+ currentRowValid &= DecompositionUtils::isLogValid(y[numY - 1]);
+ }
+
+ currentColumnValid = DecompositionUtils::isValid(x[0]);
+
+ if (logMask & 0x1)
+ {
+ currentColumnValid = DecompositionUtils::isValid(x[0]);
+ }
+
+ ij = getPointIndex(numX, numY, 0, numY - 1);
+
+ lowerLeftZValid = DecompositionUtils::isValid(z[ij]);
+
+ if (logMask & 0x4)
+ {
+ lowerLeftZValid &= DecompositionUtils::isValid(z[ij]);
+ }
+
+ ij = getPointIndex(numX, numY, 0, numY - 1);
+
+ for (int i = 0; i < numX - 1; i++)
+ {
+ nextColumnValid = DecompositionUtils::isValid(x[i + 1]);
+
+ if (logMask & 0x1)
+ {
+ nextColumnValid &= DecompositionUtils::isLogValid(x[i + 1]);
+ }
+
+ ip1j = getPointIndex(numX, numY, i + 1, numY - 1);
+
+ lowerRightZValid = DecompositionUtils::isValid(z[ip1j]);
+
+ if (logMask & 0x4)
+ {
+ lowerRightZValid &= DecompositionUtils::isLogValid(z[ip1j]);
+ }
+
+ ijm1 = getPointIndex(numX, numY, i, numY - 2);
+ ip1jm1 = getPointIndex(numX, numY, i + 1, numY - 2);
+
+ jm1HorizontalEdgeZValid = DecompositionUtils::isValid(z[ijm1]) && DecompositionUtils::isValid(z[ip1jm1]);
+
+ if (logMask & 0x4)
+ {
+ jm1HorizontalEdgeZValid &= (DecompositionUtils::isLogValid(z[ijm1]) && DecompositionUtils::isLogValid(z[ip1jm1]));
+ }
+
+ jHorizontalEdgeZValid = lowerLeftZValid && lowerRightZValid;
+
+ if (currentRowValid && (currentColumnValid && nextColumnValid) && jHorizontalEdgeZValid && (previousRowValid && jm1HorizontalEdgeZValid))
+ {
+#if PER_VERTEX_VALUES
+ buffer[bufferOffset] = ij;
+ buffer[bufferOffset + 1] = ip1j;
+#else
+ firstVertexIndex = getFirstVertexIndex(numX, numY, i, numY - 2);
+
+ buffer[bufferOffset] = firstVertexIndex + 2;
+ buffer[bufferOffset + 1] = firstVertexIndex + 3;
+#endif
+
+ bufferOffset += 2;
+ }
+
+ currentColumnValid = nextColumnValid;
+ lowerLeftZValid = lowerRightZValid;
+
+ ij = ip1j;
+ }
+
+ return bufferOffset;
+}
+
diff --git a/modules/graphic_objects/src/cpp/PolylineDecomposer.cpp b/modules/graphic_objects/src/cpp/PolylineDecomposer.cpp
new file mode 100755
index 000000000..6a99f921f
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/PolylineDecomposer.cpp
@@ -0,0 +1,1735 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Pierre Lando
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <iostream>
+
+#include "DecompositionUtils.hxx"
+#include "PolylineDecomposer.hxx"
+#include "Triangulator.hxx"
+#include "ColorComputer.hxx"
+
+extern "C"
+{
+#include <math.h>
+#include <string.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+}
+
+int PolylineDecomposer::getDataSize(int id)
+{
+ int nPoints = 0;
+ int *piNPoints = &nPoints;
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+ int closed = 0;
+ int* piClosed = &closed;
+
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ getGraphicObjectProperty(id, __GO_CLOSED__, jni_bool, (void**) &piClosed);
+
+ /* If 0 points, 0 elements */
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ switch (polylineStyle)
+ {
+ case 1 :
+ /* Segments */
+ return nPoints;
+ case 2 :
+ /* Staircase */
+ if (closed)
+ {
+ return 2 * nPoints;
+ }
+ else
+ {
+ return (2 * nPoints) - 1;
+ }
+ case 3 :
+ /* Vertical segments plus segments */
+ return 2 * nPoints;
+ case 4 :
+ /* Segments with arrow heads */
+ {
+ int nArrowVertices;
+ /* The numbers of arrow head vertices and indices are exactly the same */
+ nArrowVertices = PolylineDecomposer::getArrowTriangleIndicesSize(nPoints, closed);
+
+ return nPoints + nArrowVertices;
+ }
+ case 5 :
+ /* Filled patch */
+ return nPoints;
+ case 6 :
+ /* Vertical bars plus segments */
+ return 5 * nPoints;
+ case 7 :
+ /* Horizontal bars plus segments */
+ return 5 * nPoints;
+ default :
+ /* To be done: remaining styles */
+ return 0;
+ }
+}
+
+void PolylineDecomposer::fillVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double* t = NULL;
+ double* xshift = NULL;
+ double* yshift = NULL;
+ double* zshift = NULL;
+
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+
+ int nPoints = 0;
+ int *piNPoints = &nPoints;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &t);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X_COORDINATES_SHIFT__, jni_double_vector, (void**) &xshift);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y_COORDINATES_SHIFT__, jni_double_vector, (void**) &yshift);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double_vector, (void**) &zshift);
+
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+
+ switch (polylineStyle)
+ {
+ case 1 :
+ fillSegmentsDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ case 2 :
+ fillStairDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ case 3 :
+ fillVerticalLinesDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ case 4 :
+ fillSegmentsDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ case 5 :
+ fillSegmentsDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ case 6 :
+ fillVerticalBarsDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ case 7 :
+ fillHorizontalBarsDecompositionVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask, t, nPoints, xshift, yshift, zshift);
+ break;
+ }
+}
+
+void PolylineDecomposer::fillSegmentsDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+
+ int componentIndices[3];
+
+ // TODO Optimize ? (test if s = 1 and t = 0, coordinateMask = 0 ...)
+ for (int i = 0; i < nPoints; i++)
+ {
+ /* Offset of a polyline vertex */
+ int v0 = elementsSize * i;
+
+ componentIndices[0] = i;
+ componentIndices[1] = i;
+ componentIndices[2] = i;
+
+ getAndWriteVertexToBuffer(buffer, v0, coordinates, componentIndices, nPoints, elementsSize,
+ xshift, yshift, zshift, coordinateMask, scale, translation, logMask);
+ }
+
+}
+
+void PolylineDecomposer::getAndWriteVertexToBuffer(float* buffer, int offset, double* coordinates, int* vertexIndices, int nPoints, int elementsSize,
+ double* xshift, double* yshift, double* zshift, int coordinateMask, double* scale, double* translation, int logMask)
+{
+ double coordinate = 0.;
+
+ if (coordinateMask & 0x01)
+ {
+ coordinate = coordinates[vertexIndices[0]];
+
+ if (xshift != NULL)
+ {
+ coordinate += xshift[vertexIndices[0]];
+ }
+
+ if (logMask & 0x01)
+ {
+ coordinate = DecompositionUtils::getLog10Value(coordinate);
+ }
+
+ buffer[offset + 0] = (float)(coordinate * scale[0] + translation[0]);
+ }
+
+ if (coordinateMask & 0x02)
+ {
+ coordinate = coordinates[vertexIndices[1] + nPoints];
+
+ if (yshift != NULL)
+ {
+ coordinate += yshift[vertexIndices[1]];
+ }
+
+ if (logMask & 0x02)
+ {
+ coordinate = DecompositionUtils::getLog10Value(coordinate);
+ }
+
+ buffer[offset + 1] = (float)(coordinate * scale[1] + translation[1]);
+ }
+
+ if (coordinateMask & 0x04)
+ {
+ coordinate = coordinates[vertexIndices[2] + 2 * nPoints];
+
+ if (zshift != NULL)
+ {
+ coordinate += zshift[vertexIndices[2]];
+ }
+
+ if (logMask & 0x04)
+ {
+ coordinate = DecompositionUtils::getLog10Value(coordinate);
+ }
+
+ buffer[offset + 2] = (float)(coordinate * scale[2] + translation[2]);
+ }
+
+ if ((elementsSize == 4) && (coordinateMask & 0x08))
+ {
+ buffer[offset + 3] = 1.0;
+ }
+
+}
+
+void PolylineDecomposer::fillStairDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+ int closed = 0;
+ int* piClosed = &closed;
+
+ /* Offsets of the left and right vertices (respectively) */
+ int v0 = 0;
+ int v1 = 0;
+
+ int componentIndices[3];
+
+ if (nPoints == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_CLOSED__, jni_bool, (void**) &piClosed);
+
+ for (int i = 0; i < nPoints - 1; i++)
+ {
+ v0 = elementsSize * 2 * i;
+ v1 = elementsSize * (2 * i + 1);
+
+ componentIndices[0] = i;
+ componentIndices[1] = i;
+ componentIndices[2] = i;
+
+ getAndWriteVertexToBuffer(buffer, v0, coordinates, componentIndices, nPoints, elementsSize, xshift, yshift, zshift, coordinateMask, scale, translation, logMask);
+
+ componentIndices[0] = i + 1;
+ componentIndices[1] = i;
+ componentIndices[2] = i;
+
+ /* To be optimized: the y and z components are fetched and transformed twice */
+ getAndWriteVertexToBuffer(buffer, v1, coordinates, componentIndices, nPoints, elementsSize, xshift, yshift, zshift, coordinateMask, scale, translation, logMask);
+ }
+
+ /* Last point */
+ v0 = elementsSize * 2 * (nPoints - 1);
+
+ componentIndices[0] = nPoints - 1;
+ componentIndices[1] = nPoints - 1;
+ componentIndices[2] = nPoints - 1;
+
+ getAndWriteVertexToBuffer(buffer, v0, coordinates, componentIndices, nPoints, elementsSize, xshift, yshift, zshift, coordinateMask, scale, translation, logMask);
+
+ /*
+ * One additional vertex if closed
+ * Its x-coordinate is equal to the one of the polyline's first point
+ * whereas its y and z coordinates are equal to those of the last point.
+ */
+ if (closed)
+ {
+ v0 = elementsSize * (2 * nPoints - 1);
+
+ componentIndices[0] = 0;
+ componentIndices[1] = nPoints - 1;
+ componentIndices[2] = nPoints - 1;
+
+ getAndWriteVertexToBuffer(buffer, v0, coordinates, componentIndices, nPoints, elementsSize, xshift, yshift, zshift, coordinateMask, scale, translation, logMask);
+ }
+
+}
+
+void PolylineDecomposer::fillVerticalLinesDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+ for (int i = 0; i < nPoints; i++)
+ {
+ /* Offsets of the lower and upper vertices (respectively) */
+ int v0 = 0;
+ int v1 = 0;
+
+ /* Coordinates of the lower and upper vertices (respectively) */
+ double coord0 = 0.;
+ double coord1 = 0.;
+
+ v0 = elementsSize * 2 * i;
+ v1 = elementsSize * (2 * i + 1);
+
+ /* Lower and upper endpoints x coordinates */
+ if (coordinateMask & 0x01)
+ {
+ coord0 = coordinates[i];
+ coord1 = coordinates[i];
+
+ if (xshift != NULL)
+ {
+ coord0 += xshift[i];
+ coord1 += xshift[i];
+ }
+
+ if (logMask & 0x01)
+ {
+ coord0 = DecompositionUtils::getLog10Value(coord0);
+ coord1 = DecompositionUtils::getLog10Value(coord1);
+ }
+
+ buffer[v0 + 0] = (float)(coord0 * scale[0] + translation[0]);
+ buffer[v1 + 0] = (float)(coord1 * scale[0] + translation[0]);
+ }
+
+ /* Lower and upper endpoints y coordinates */
+ if (coordinateMask & 0x02)
+ {
+ coord0 = 0.0;
+ coord1 = coordinates[i + nPoints];
+
+ if (yshift != NULL)
+ {
+ /*
+ * Only the upper vertex's y coordinate is shifted,
+ * the lower vertex's one remains unchanged.
+ */
+ coord1 += yshift[i];
+ }
+
+ if (logMask & 0x02)
+ {
+ /* The lower endpoint's y coordinate is unchanged (it amounts to log10(1), which is 0) */
+ coord1 = DecompositionUtils::getLog10Value(coord1);
+ }
+
+ buffer[v0 + 1] = (float)(coord0 * scale[1] + translation[1]);
+ buffer[v1 + 1] = (float)(coord1 * scale[1] + translation[1]);
+ }
+
+ /* Lower and upper endpoints z coordinates */
+ if (coordinateMask & 0x04)
+ {
+ coord0 = coordinates[2 * nPoints + i];
+ coord1 = coordinates[2 * nPoints + i];
+
+ if (zshift != NULL)
+ {
+ coord0 += zshift[i];
+ coord1 += zshift[i];
+ }
+
+ if (logMask & 0x04)
+ {
+ coord0 = DecompositionUtils::getLog10Value(coord0);
+ coord1 = DecompositionUtils::getLog10Value(coord1);
+ }
+
+ buffer[v0 + 2] = (float)(coord0 * scale[2] + translation[2]);
+ buffer[v1 + 2] = (float)(coord1 * scale[2] + translation[2]);
+ }
+
+ if ((elementsSize == 4) && (coordinateMask & 0x08))
+ {
+ buffer[v0 + 3] = 1.0;
+ buffer[v1 + 3] = 1.0;
+ }
+
+ }
+
+}
+
+void PolylineDecomposer::writeBarVerticesToBuffer(float* buffer, int* offsets, int componentOffset, double* coordinates, double shift, int shiftUsed,
+ double scale, double translation, int logUsed)
+{
+ if (shiftUsed)
+ {
+ coordinates[0] += shift;
+ coordinates[1] += shift;
+ coordinates[2] += shift;
+ coordinates[3] += shift;
+
+ coordinates[4] += shift;
+ }
+
+ if (logUsed)
+ {
+ coordinates[0] = DecompositionUtils::getLog10Value(coordinates[0]);
+ coordinates[1] = DecompositionUtils::getLog10Value(coordinates[1]);
+ coordinates[2] = DecompositionUtils::getLog10Value(coordinates[2]);
+ coordinates[3] = DecompositionUtils::getLog10Value(coordinates[3]);
+
+ coordinates[4] = DecompositionUtils::getLog10Value(coordinates[4]);
+ }
+
+ buffer[offsets[0] + componentOffset] = (float)(coordinates[0] * scale + translation);
+ buffer[offsets[1] + componentOffset] = (float)(coordinates[1] * scale + translation);
+ buffer[offsets[2] + componentOffset] = (float)(coordinates[2] * scale + translation);
+ buffer[offsets[3] + componentOffset] = (float)(coordinates[3] * scale + translation);
+
+ buffer[offsets[4] + componentOffset] = (float)(coordinates[4] * scale + translation);
+}
+
+void PolylineDecomposer::fillVerticalBarsDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+ double barWidth = 0.0;
+ double* pdBarWidth = &barWidth;
+
+ int shiftUsed[3];
+ int *piShiftUsed = NULL;
+
+ /*
+ * Offsets of the lower-left, lower-right, upper-right and upper-left bar vertices (respectively)
+ * and of the polyline vertex proper
+ */
+ int offsets[5];
+
+ /*
+ * {x,y or z}-component values of a bar's 4 vertices (same ordering as the offsets)
+ * and of the polyline vertex proper.
+ */
+ double coords[5];
+
+ double shift = 0.;
+
+
+ getGraphicObjectProperty(id, __GO_BAR_WIDTH__, jni_double, (void**) &pdBarWidth);
+
+ piShiftUsed = &shiftUsed[0];
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__, jni_double_vector, (void**) &piShiftUsed);
+ piShiftUsed = &shiftUsed[1];
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__, jni_double_vector, (void**) &piShiftUsed);
+ piShiftUsed = &shiftUsed[2];
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__, jni_double_vector, (void**) &piShiftUsed);
+
+
+ for (int i = 0; i < nPoints; i++)
+ {
+ offsets[0] = elementsSize * 4 * i;
+ offsets[1] = elementsSize * (4 * i + 1);
+ offsets[2] = elementsSize * (4 * i + 2);
+ offsets[3] = elementsSize * (4 * i + 3);
+
+ offsets[4] = elementsSize * (4 * nPoints + i);
+
+ if (coordinateMask & 0x01)
+ {
+ coords[0] = coordinates[i] - 0.5 * barWidth;
+ coords[1] = coordinates[i] + 0.5 * barWidth;
+ coords[2] = coordinates[i] + 0.5 * barWidth;
+ coords[3] = coordinates[i] - 0.5 * barWidth;
+
+ coords[4] = coordinates[i];
+
+ if (shiftUsed[0])
+ {
+ shift = xshift[i];
+ }
+
+ writeBarVerticesToBuffer(buffer, offsets, 0, coords, shift, shiftUsed[0], scale[0], translation[0], logMask & 0x01);
+ }
+
+ if (coordinateMask & 0x02)
+ {
+ coords[0] = 0.0;
+ coords[1] = 0.0;
+ coords[2] = coordinates[i + nPoints];
+ coords[3] = coordinates[i + nPoints];
+
+ coords[4] = coordinates[i + nPoints];
+
+ if (shiftUsed[1])
+ {
+ shift = yshift[i];
+ }
+
+ if (logMask & 0x02)
+ {
+ /*
+ * The two lower endpoints' y coordinates must be set to 1
+ * since writeBarVerticesToBuffer applies the logarithmic transformation.
+ */
+ coords[0] = 1.0;
+ coords[1] = 1.0;
+ }
+
+ writeBarVerticesToBuffer(buffer, offsets, 1, coords, shift, shiftUsed[1], scale[1], translation[1], logMask & 0x02);
+ }
+
+ if (coordinateMask & 0x04)
+ {
+ coords[0] = coordinates[i + 2 * nPoints];
+ coords[1] = coordinates[i + 2 * nPoints];
+ coords[2] = coordinates[i + 2 * nPoints];
+ coords[3] = coordinates[i + 2 * nPoints];
+
+ coords[4] = coordinates[i + 2 * nPoints];
+
+ if (shiftUsed[2])
+ {
+ shift = zshift[i];
+ }
+
+ writeBarVerticesToBuffer(buffer, offsets, 2, coords, shift, shiftUsed[2], scale[2], translation[2], logMask & 0x04);
+ }
+
+ if ((elementsSize == 4) && (coordinateMask & 0x08))
+ {
+ buffer[offsets[0] + 3] = 1.0;
+ buffer[offsets[1] + 3] = 1.0;
+ buffer[offsets[2] + 3] = 1.0;
+ buffer[offsets[3] + 3] = 1.0;
+
+ buffer[offsets[4] + 3] = 1.0;
+ }
+
+ }
+
+}
+
+/*
+ * To do: -refactor with fillVerticalBarsDecompositionVertices as these two functions are very similar, possibly by implementing
+ a PolylineBarDecomposer class.
+*/
+void PolylineDecomposer::fillHorizontalBarsDecompositionVertices(int id, float* buffer, int bufferLength, int elementsSize, int coordinateMask, double* scale, double* translation,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+ double barWidth = 0.0;
+ double* pdBarWidth = &barWidth;
+
+ int shiftUsed[3];
+ int *piShiftUsed = NULL;
+
+ /*
+ * Offsets of the lower-left, lower-right, upper-right and upper-left bar vertices (respectively)
+ * and of the polyline vertex proper
+ */
+ int offsets[5];
+
+ /*
+ * {x,y or z}-component values of a bar's 4 vertices (same ordering as the offsets)
+ * and of the polyline vertex proper.
+ */
+ double coords[5];
+
+ double shift = 0.;
+
+
+ getGraphicObjectProperty(id, __GO_BAR_WIDTH__, jni_double, (void**) &pdBarWidth);
+
+ piShiftUsed = &shiftUsed[0];
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__, jni_double_vector, (void**) &piShiftUsed);
+ piShiftUsed = &shiftUsed[1];
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__, jni_double_vector, (void**) &piShiftUsed);
+ piShiftUsed = &shiftUsed[2];
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__, jni_double_vector, (void**) &piShiftUsed);
+
+ for (int i = 0; i < nPoints; i++)
+ {
+ offsets[0] = elementsSize * 4 * i;
+ offsets[1] = elementsSize * (4 * i + 1);
+ offsets[2] = elementsSize * (4 * i + 2);
+ offsets[3] = elementsSize * (4 * i + 3);
+
+ offsets[4] = elementsSize * (4 * nPoints + i);
+
+ /* The actual x coordinates correspond to the polyline's y coordinates. */
+ if (coordinateMask & 0x01)
+ {
+ coords[0] = 0.0;
+ coords[1] = 0.0;
+ coords[2] = coordinates[i + nPoints];
+ coords[3] = coordinates[i + nPoints];
+
+ coords[4] = coordinates[i];
+
+ if (shiftUsed[1])
+ {
+ shift = yshift[i];
+ }
+
+ writeBarVerticesToBuffer(buffer, offsets, 0, coords, shift, shiftUsed[1], scale[0], translation[0], logMask & 0x01);
+ }
+
+ /* The actual y coordinates correspond to the polyline's x coordinates. */
+ if (coordinateMask & 0x02)
+ {
+ coords[0] = coordinates[i] - 0.5 * barWidth;
+ coords[1] = coordinates[i] + 0.5 * barWidth;
+ coords[2] = coordinates[i] + 0.5 * barWidth;
+ coords[3] = coordinates[i] - 0.5 * barWidth;
+
+ coords[4] = coordinates[i + nPoints];
+
+ if (shiftUsed[0])
+ {
+ shift = xshift[i];
+ }
+
+ if (logMask & 0x02)
+ {
+ /*
+ * The two lower endpoints' y coordinates must be set to 1
+ * since writeBarVerticesToBuffer applies the logarithmic transformation.
+ */
+ coords[0] = 1.0;
+ coords[1] = 1.0;
+ }
+
+ writeBarVerticesToBuffer(buffer, offsets, 1, coords, shift, shiftUsed[0], scale[1], translation[1], logMask & 0x02);
+ }
+
+ if (coordinateMask & 0x04)
+ {
+ coords[0] = coordinates[i + 2 * nPoints];
+ coords[1] = coordinates[i + 2 * nPoints];
+ coords[2] = coordinates[i + 2 * nPoints];
+ coords[3] = coordinates[i + 2 * nPoints];
+
+ coords[4] = coordinates[i + 2 * nPoints];
+
+ if (shiftUsed[2])
+ {
+ shift = zshift[i];
+ }
+
+ writeBarVerticesToBuffer(buffer, offsets, 2, coords, shift, shiftUsed[2], scale[2], translation[2], logMask & 0x04);
+ }
+
+ if ((elementsSize == 4) && (coordinateMask & 0x08))
+ {
+ buffer[offsets[0] + 3] = 1.0;
+ buffer[offsets[1] + 3] = 1.0;
+ buffer[offsets[2] + 3] = 1.0;
+ buffer[offsets[3] + 3] = 1.0;
+
+ buffer[offsets[4] + 3] = 1.0;
+ }
+
+ }
+
+}
+
+/*
+ * To do:
+ * -implement for the other relevant polyline style values.
+ * -fix the no colors written problem (related to polyline C build functions, see below).
+ */
+void PolylineDecomposer::fillColors(int id, float* buffer, int bufferLength, int elementsSize)
+{
+ int parent = 0;
+ int* pparent = &parent;
+ int parentFigure = 0;
+ int* pparentFigure = &parentFigure;
+
+ int interpColorMode = 0;
+ int* piInterpColorMode = &interpColorMode;
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+ int nPoints = 0;
+ int *piNPoints = &nPoints;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+ int bufferOffset = 0;
+ int* interpColorVector = NULL;
+
+ double* colormap = NULL;
+
+ getGraphicObjectProperty(id, __GO_INTERP_COLOR_MODE__, jni_bool, (void**) &piInterpColorMode);
+
+ if (interpColorMode == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+
+ if (polylineStyle != 1)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &pparentFigure);
+
+ /*
+ * In some cases, the polyline's parent figure may be unitialized, when this point is reached from the
+ * filled polygons build C functions (xfpolys, with several polygons and a color vector for each one).
+ * This check prevents from crashing when getting the colormap. However, it results in incorrectly
+ * black-filled polygons, as no colors are written.
+ * As the sequentially built polygons are inserted within a Compound object, the latter object may be
+ * still unattached to a Figure as its Polyline children are rendered. This occurs about once in 5 to 10,
+ * hence possibly caused by a race condition.
+ * To be fixed.
+ */
+ if (parentFigure == 0)
+ {
+ return;
+ }
+
+ /*
+ * The interpolated color vector is a 3- or 4-element vector.
+ * However, if nPoints is greater than 4, we choose to output
+ * 4 colors (this behaviour is kept for compatibility, see fillTriangleIndices).
+ */
+ if (nPoints < 3)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_INTERP_COLOR_VECTOR__, jni_int_vector, (void**) &interpColorVector);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ if (nPoints > 4)
+ {
+ nPoints = 4;
+ }
+
+ for (int i = 0; i < nPoints; i++)
+ {
+ ColorComputer::getDirectColor((double) interpColorVector[i] - 1.0, colormap, colormapSize, &buffer[bufferOffset]);
+
+ if (elementsSize == 4)
+ {
+ buffer[bufferOffset + 3] = 1.0;
+ }
+
+ bufferOffset += elementsSize;
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+ releaseGraphicObjectProperty(__GO_INTERP_COLOR_VECTOR__, interpColorVector, jni_int_vector, 0);
+}
+
+void PolylineDecomposer::fillTextureCoordinates(int id, float* buffer, int bufferLength)
+{
+ int parent = 0;
+ int* pparent = &parent;
+ int parentFigure = 0;
+ int* pparentFigure = &parentFigure;
+
+ int interpColorMode = 0;
+ int* piInterpColorMode = &interpColorMode;
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+ int nPoints = 0;
+ int *piNPoints = &nPoints;
+ int colormapSize = 0;
+ int* piColormapSize = &colormapSize;
+ int bufferOffset = 0;
+ int* interpColorVector = NULL;
+
+ double* colormap = NULL;
+
+ getGraphicObjectProperty(id, __GO_INTERP_COLOR_MODE__, jni_bool, (void**) &piInterpColorMode);
+
+ if (interpColorMode == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+
+ if (polylineStyle != 1)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ parent = getParentObject(id);
+
+ /* Temporary: to avoid getting a null parent_figure property when the object is built */
+ if (parent == 0)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_PARENT_FIGURE__, jni_int, (void**) &pparentFigure);
+
+ /*
+ * In some cases, the polyline's parent figure may be unitialized, when this point is reached from the
+ * filled polygons build C functions (xfpolys, with several polygons and a color vector for each one).
+ * This check prevents from crashing when getting the colormap. However, it results in incorrectly
+ * black-filled polygons, as no colors are written.
+ * As the sequentially built polygons are inserted within a Compound object, the latter object may be
+ * still unattached to a Figure as its Polyline children are rendered. This occurs about once in 5 to 10,
+ * hence possibly caused by a race condition.
+ * To be fixed.
+ */
+ if (parentFigure == 0)
+ {
+ return;
+ }
+
+ /*
+ * The interpolated color vector is a 3- or 4-element vector.
+ * However, if nPoints is greater than 4, we choose to output
+ * 4 colors (this behaviour is kept for compatibility, see fillTriangleIndices).
+ */
+ if (nPoints < 3)
+ {
+ return;
+ }
+
+ getGraphicObjectProperty(id, __GO_INTERP_COLOR_VECTOR__, jni_int_vector, (void**) &interpColorVector);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP__, jni_double_vector, (void**) &colormap);
+ getGraphicObjectProperty(parentFigure, __GO_COLORMAP_SIZE__, jni_int, (void**) &piColormapSize);
+
+ if (nPoints > 4)
+ {
+ nPoints = 4;
+ }
+
+ for (int i = 0; i < nPoints; i++)
+ {
+ double index = (ColorComputer::getDirectIndex((double) interpColorVector[i] - 1.0, colormapSize) + 2.0 + COLOR_TEXTURE_OFFSET) / (double) (colormapSize + 2);
+
+ buffer[bufferOffset] = (float)index;
+ buffer[bufferOffset + 1] = 0.0;
+ buffer[bufferOffset + 2] = 0.0;
+ buffer[bufferOffset + 3] = 1.0;
+
+ bufferOffset += 4;
+ }
+
+ releaseGraphicObjectProperty(__GO_COLORMAP__, colormap, jni_double_vector, colormapSize);
+ releaseGraphicObjectProperty(__GO_INTERP_COLOR_VECTOR__, interpColorVector, jni_int_vector, 0);
+}
+
+/*
+ * To do: see fillIndices
+ * -take into account polyline_style.
+ */
+int PolylineDecomposer::getIndicesSize(int id)
+{
+ int nPoints = 0;
+ int *piNPoints = &nPoints;
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+ int closed = 0;
+ int* piClosed = &closed;
+
+ int nIndices = 0;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+ getGraphicObjectProperty(id, __GO_CLOSED__, jni_bool, (void**) &piClosed);
+
+ /* No facets if 0 points */
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ /* Segments */
+ if (polylineStyle == 1)
+ {
+ if (nPoints < 3)
+ {
+ return 0;
+ }
+
+ /* Maximum number of triangles output by the triangulator */
+ nIndices = 3 * (nPoints - 2);
+ }
+ /* Arrowed segments */
+ else if (polylineStyle == 4)
+ {
+ nIndices = PolylineDecomposer::getArrowTriangleIndicesSize(nPoints, closed);
+ }
+ /* Filled patch */
+ else if (polylineStyle == 5)
+ {
+ if (nPoints < 3)
+ {
+ return 0;
+ }
+
+ /* Maximum number of triangles output by the triangulator */
+ nIndices = 3 * (nPoints - 2);
+ }
+ /* Vertical bars plus segments */
+ else if (polylineStyle == 6)
+ {
+ nIndices = PolylineDecomposer::getBarsDecompositionTriangleIndicesSize(nPoints);
+ }
+ /* Horizontal bars plus segments */
+ else if (polylineStyle == 7)
+ {
+ nIndices = PolylineDecomposer::getBarsDecompositionTriangleIndicesSize(nPoints);
+ }
+
+ return nIndices;
+}
+
+int PolylineDecomposer::getArrowTriangleIndicesSize(int nPoints, int closed)
+{
+ int nIndices = 0;
+
+ if (nPoints < 2)
+ {
+ nIndices = 0;
+ }
+ else
+ {
+ nIndices = 3 * (nPoints - 1);
+
+ if (closed)
+ {
+ nIndices += 3;
+ }
+ }
+
+ return nIndices;
+}
+
+int PolylineDecomposer::getBarsDecompositionTriangleIndicesSize(int nPoints)
+{
+ return 2 * 3 * nPoints;
+}
+
+/*
+ * To do:
+ * -take into account the polyline style property (note: vertical bars -style 6- are filled
+ * whatever fill_mode's value), by implementing the relevant functions (see fillTriangleIndices),
+ * as the curve must be filled if fill_mode set to on, whatever its polyline style value.
+ */
+int PolylineDecomposer::fillIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* coordinates = NULL;
+ double* xshift = NULL;
+ double* yshift = NULL;
+ double* zshift = NULL;
+
+ int nPoints = 0;
+ int* piNPoints = &nPoints;
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+ int fillMode = 0;
+ int* piFillMode = &fillMode;
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X_COORDINATES_SHIFT__, jni_double_vector, (void**) &xshift);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y_COORDINATES_SHIFT__, jni_double_vector, (void**) &yshift);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double_vector, (void**) &zshift);
+
+ getGraphicObjectProperty(id, __GO_FILL_MODE__, jni_bool, (void**) &piFillMode);
+
+ /* 0 triangles if 0 points */
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ switch (polylineStyle)
+ {
+ case 1 :
+ return fillTriangleIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, fillMode, polylineStyle);
+ case 4 :
+ return fillArrowTriangleIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift);
+ case 5 :
+ /* Set fill mode to on, since patches are always filled whatever fill mode's value */
+ return fillTriangleIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, 1, polylineStyle);
+ case 6 :
+ return fillBarsDecompositionTriangleIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift);
+ case 7 :
+ return fillBarsDecompositionTriangleIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift);
+ }
+
+ return 0;
+}
+
+int PolylineDecomposer::fillTriangleIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int fillMode, int polylineStyle)
+{
+ double coords[4][3];
+
+ int interpColorMode = 0;
+ int* piInterpColorMode = &interpColorMode;
+ int triangulate = 0;
+
+ int isValid = 0;
+ int tmpValid = 0;
+ int nIndices = 0;
+
+ /* At least 3 points needed */
+ if (nPoints < 3)
+ {
+ return 0;
+ }
+
+ if (fillMode == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_INTERP_COLOR_MODE__, jni_bool, (void**) &piInterpColorMode);
+
+ /*
+ * Do not triangulate if the interpolated color mode is set to 'on' and the polyline style is filled patch (5).
+ * The quadrilateral facet decomposition function is used instead, if nPoints == 4,
+ * for compatibility reasons, although triangulation could be used.
+ */
+ if (interpColorMode && polylineStyle != 5)
+ {
+ triangulate = 0;
+ }
+ else if (nPoints > 3)
+ {
+ /* Perform triangulation only if more than 3 points */
+ triangulate = 1;
+ }
+
+ if (triangulate)
+ {
+ Triangulator triangulator;
+ int numTriangles;
+ int* indices;
+
+ isValid = 1;
+
+ for (int i = 0; i < nPoints; i++)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, i, &coords[0][0], &coords[0][1], &coords[0][2]);
+
+ tmpValid = DecompositionUtils::isValid(coords[0][0], coords[0][1], coords[0][2]);
+
+ if (logMask)
+ {
+ tmpValid &= DecompositionUtils::isLogValid(coords[0][0], coords[0][1], coords[0][2], logMask);
+
+ if (logMask & 0x01)
+ {
+ coords[0][0] = DecompositionUtils::getLog10Value(coords[0][0]);
+ }
+
+ if (logMask & 0x02)
+ {
+ coords[0][1] = DecompositionUtils::getLog10Value(coords[0][1]);
+ }
+
+ if (logMask & 0x04)
+ {
+ coords[0][2] = DecompositionUtils::getLog10Value(coords[0][2]);
+ }
+ }
+
+ isValid &= tmpValid;
+
+ if (!isValid)
+ {
+ break;
+ }
+
+ triangulator.addPoint(coords[0][0], coords[0][1], coords[0][2]);
+ }
+
+ if (!isValid)
+ {
+ return 0;
+ }
+
+ /* Triangulate */
+ triangulator.initialize();
+ triangulator.triangulate();
+
+ numTriangles = triangulator.getNumberTriangles();
+ indices = triangulator.getIndices();
+
+ for (int i = 0; i < numTriangles; i++)
+ {
+ buffer[3 * i] = indices[3 * i];
+ buffer[3 * i + 1] = indices[3 * i + 1];
+ buffer[3 * i + 2] = indices[3 * i + 2];
+ nIndices += 3;
+ }
+
+ triangulator.clear();
+
+ return nIndices;
+ }
+ else
+ {
+ /* Do not triangulate: either the interpolation color mode is set to on or it is not and there are only 3 points. */
+
+ /* 3 points: only one triangle output */
+ if (nPoints == 3)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 0, &coords[0][0], &coords[0][1], &coords[0][2]);
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 1, &coords[1][0], &coords[1][1], &coords[1][2]);
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 2, &coords[2][0], &coords[2][1], &coords[2][2]);
+
+ tmpValid = DecompositionUtils::isValid(coords[0][0], coords[0][1], coords[0][2]);
+ tmpValid &= DecompositionUtils::isValid(coords[1][0], coords[1][1], coords[1][2]);
+ tmpValid &= DecompositionUtils::isValid(coords[2][0], coords[2][1], coords[2][2]);
+
+ isValid = tmpValid;
+
+ if (logMask)
+ {
+ tmpValid = DecompositionUtils::isLogValid(coords[0][0], coords[0][1], coords[0][2], logMask);
+ tmpValid &= DecompositionUtils::isLogValid(coords[1][0], coords[1][1], coords[1][2], logMask);
+ tmpValid &= DecompositionUtils::isLogValid(coords[2][0], coords[2][1], coords[2][2], logMask);
+ isValid &= tmpValid;
+ }
+
+ if (isValid)
+ {
+ buffer[0] = 0;
+ buffer[1] = 1;
+ buffer[2] = 2;
+
+ nIndices += 3;
+ }
+ }
+ else if (nPoints >= 4)
+ {
+ /*
+ * 4 points: the quadrilateral facet decomposition algorithm is used.
+ * If the Polyline has more than 4 points, we still output two triangles
+ * corresponding to the first 4 points. This behaviour is kept for compatibility.
+ * Possible correction: do not output indices if there are more than 4 points and
+ * the interpolation color mode is set to on.
+ */
+ int facetVertexIndices[4] = {0, 1, 2, 3};
+
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 0, &coords[0][0], &coords[0][1], &coords[0][2]);
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 1, &coords[1][0], &coords[1][1], &coords[1][2]);
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 2, &coords[2][0], &coords[2][1], &coords[2][2]);
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 3, &coords[3][0], &coords[3][1], &coords[3][2]);
+
+ tmpValid = DecompositionUtils::isValid(coords[0][0], coords[0][1], coords[0][2]);
+ tmpValid &= DecompositionUtils::isValid(coords[1][0], coords[1][1], coords[1][2]);
+ tmpValid &= DecompositionUtils::isValid(coords[2][0], coords[2][1], coords[2][2]);
+ tmpValid &= DecompositionUtils::isValid(coords[3][0], coords[3][1], coords[3][2]);
+
+ isValid = tmpValid;
+
+ if (logMask)
+ {
+ tmpValid = DecompositionUtils::isLogValid(coords[0][0], coords[0][1], coords[0][2], logMask);
+ tmpValid &= DecompositionUtils::isLogValid(coords[1][0], coords[1][1], coords[1][2], logMask);
+ tmpValid &= DecompositionUtils::isLogValid(coords[2][0], coords[2][1], coords[2][2], logMask);
+ tmpValid &= DecompositionUtils::isLogValid(coords[3][0], coords[3][1], coords[3][2], logMask);
+ isValid &= tmpValid;
+ }
+
+ if (isValid)
+ {
+ DecompositionUtils::getDecomposedQuadTriangleIndices(coords, facetVertexIndices, buffer);
+ nIndices += 6;
+ }
+ }
+
+ }
+
+ return nIndices;
+}
+
+int PolylineDecomposer::fillArrowTriangleIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+ int closed = 0;
+ int* piClosed = &closed;
+
+ int currentValid = 0;
+ int nextValid = 0;
+
+ int firstArrowVertex = 0;
+ int nArrows = 0;
+
+ int offset = 0;
+ int numberValidIndices = 0;
+
+ /* At least 2 points needed to form segments */
+ if (nPoints < 2)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_CLOSED__, jni_bool, (void**) &piClosed);
+
+ /* If closed, an additional segment is present */
+ if (closed)
+ {
+ nArrows = nPoints;
+ }
+ else
+ {
+ nArrows = nPoints - 1;
+ }
+
+ /*
+ * Arrow head vertices are stored consecutively after all the line vertices.
+ * Hence the offset to the first arrow vertex.
+ */
+ firstArrowVertex = nPoints;
+
+ for (int i = 0; i < nArrows; i++)
+ {
+ /* Indices of the tip, left and right vertices */
+ int n = 3 * i;
+ buffer[n] = firstArrowVertex + n;
+ buffer[n + 1] = buffer[n] + 1;
+ buffer[n + 2] = buffer[n] + 2;
+ }
+
+ return 3 * nArrows;
+}
+
+/*
+ * Only bars are filled at the present moment, the curve is not.
+ * See fillTriangleIndices for more information.
+ */
+int PolylineDecomposer::fillBarsDecompositionTriangleIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift)
+{
+ double barWidth = 0.0;
+ double* pdBarWidth = &barWidth;
+ double coordsi[3];
+
+ int triangleIndices[6];
+ int offset = 0;
+ int numberValidIndices = 0;
+
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_BAR_WIDTH__, jni_double, (void**) &pdBarWidth);
+
+ /* 0 indices if the bar width is invalid, as it is the same for all bars. */
+ if (!DecompositionUtils::isValid(barWidth))
+ {
+ return 0;
+ }
+
+ /*
+ * Gets the indices corresponding to a rectangle decomposed into 2 triangles.
+ * All the bars are decomposed the same way.
+ */
+ DecompositionUtils::getDecomposedRectangleTriangleIndices(triangleIndices);
+
+ /* Bars */
+ for (int i = 0; i < nPoints; i++)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, i, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ if (DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]))
+ {
+ if (logMask && !DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask))
+ {
+ continue;
+ }
+
+ buffer[6 * offset] = 4 * i + triangleIndices[0];
+ buffer[6 * offset + 1] = 4 * i + triangleIndices[1];
+ buffer[6 * offset + 2] = 4 * i + triangleIndices[2];
+ buffer[6 * offset + 3] = 4 * i + triangleIndices[3];
+ buffer[6 * offset + 4] = 4 * i + triangleIndices[4];
+ buffer[6 * offset + 5] = 4 * i + triangleIndices[5];
+
+ numberValidIndices += 6;
+ offset++;
+ }
+
+ }
+
+ return numberValidIndices;
+}
+
+int PolylineDecomposer::getWireIndicesSize(int id)
+{
+ int nPoints = 0;
+ int *piNPoints = &nPoints;
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+
+ int lineMode = 0;
+ int* piLineMode = &lineMode;
+
+ int closed = 0;
+ int* piClosed = &closed;
+
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ getGraphicObjectProperty(id, __GO_LINE_MODE__, jni_bool, (void**) &piLineMode);
+ getGraphicObjectProperty(id, __GO_CLOSED__, jni_bool, (void**) &piClosed);
+
+ /* No segments if 0 points */
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ switch (polylineStyle)
+ {
+ case 1:
+ /* Segments */
+ return getSegmentsDecompositionSegmentIndicesSize(nPoints, lineMode, closed);
+ case 2 :
+ /* Staircase */
+ return getStairDecompositionSegmentIndicesSize(nPoints, lineMode, closed);
+ case 3 :
+ /* Vertical segments plus segments */
+ return getVerticalLinesDecompositionSegmentIndicesSize(nPoints, lineMode);
+ case 4 :
+ /* Segments with arrow heads */
+ return getSegmentsDecompositionSegmentIndicesSize(nPoints, lineMode, closed);
+ case 5 :
+ /* Filled patch */
+ return getSegmentsDecompositionSegmentIndicesSize(nPoints, lineMode, closed);
+ case 6 :
+ /* Vertical bars plus segments */
+ return getBarsDecompositionSegmentIndicesSize(nPoints, lineMode);
+ case 7 :
+ /* Horizontal bars plus segments */
+ return getBarsDecompositionSegmentIndicesSize(nPoints, lineMode);
+ }
+
+ return 0;
+}
+
+int PolylineDecomposer::getSegmentsDecompositionSegmentIndicesSize(int nPoints, int lineMode, int closed)
+{
+ if (nPoints < 2)
+ {
+ return 0;
+ }
+
+ if (lineMode)
+ {
+ if (closed)
+ {
+ return nPoints + 1;
+ }
+ else
+ {
+ return nPoints;
+ }
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int PolylineDecomposer::getStairDecompositionSegmentIndicesSize(int nPoints, int lineMode, int closed)
+{
+ if (nPoints < 2)
+ {
+ return 0;
+ }
+
+ if (lineMode)
+ {
+ if (closed)
+ {
+ return 2 * nPoints + 1;
+ }
+ else
+ {
+ return 2 * nPoints - 1;
+ }
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int PolylineDecomposer::getVerticalLinesDecompositionSegmentIndicesSize(int nPoints, int lineMode)
+{
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ if (lineMode)
+ {
+ return 2 * (nPoints) + 2 * (nPoints - 1);
+ }
+ else
+ {
+ return 2 * (nPoints);
+ }
+}
+
+int PolylineDecomposer::getBarsDecompositionSegmentIndicesSize(int nPoints, int lineMode)
+{
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ if (lineMode)
+ {
+ return 2 * 4 * (nPoints) + 2 * (nPoints - 1);
+ }
+ else
+ {
+ return 2 * 4 * (nPoints);
+ }
+}
+
+int PolylineDecomposer::fillWireIndices(int id, int* buffer, int bufferLength, int logMask)
+{
+ double* coordinates = NULL;
+ double* xshift = NULL;
+ double* yshift = NULL;
+ double* zshift = NULL;
+
+ int polylineStyle = 0;
+ int* piPolylineStyle = &polylineStyle;
+ int nPoints = 0;
+ int* piNPoints = &nPoints;
+ int closed = 0;
+ int* piClosed = &closed;
+ int lineMode = 0;
+ int* piLineMode = &lineMode;
+
+ getGraphicObjectProperty(id, __GO_POLYLINE_STYLE__, jni_int, (void**) &piPolylineStyle);
+
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**) &coordinates);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**) &piNPoints);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_X_COORDINATES_SHIFT__, jni_double_vector, (void**) &xshift);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Y_COORDINATES_SHIFT__, jni_double_vector, (void**) &yshift);
+ getGraphicObjectProperty(id, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double_vector, (void**) &zshift);
+
+ getGraphicObjectProperty(id, __GO_LINE_MODE__, jni_bool, (void**) &piLineMode);
+ getGraphicObjectProperty(id, __GO_CLOSED__, jni_bool, (void**) &piClosed);
+
+ switch (polylineStyle)
+ {
+ case 1 :
+ return fillSegmentsDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode, closed);
+ case 2 :
+ return fillStairDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode, closed);
+ case 3 :
+ return fillVerticalLinesDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode);
+ case 4 :
+ return fillSegmentsDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode, closed);
+ case 5 :
+ return fillSegmentsDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode, closed);
+ case 6 :
+ return fillBarsDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode);
+ case 7 :
+ return fillBarsDecompositionSegmentIndices(id, buffer, bufferLength, logMask, coordinates, nPoints, xshift, yshift, zshift, lineMode);
+ }
+
+ return 0;
+}
+
+int PolylineDecomposer::fillSegmentsDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode, int closed)
+{
+ /* If less than 2 points, no segments */
+ if (nPoints < 2)
+ {
+ return 0;
+ }
+
+ if (lineMode == 0)
+ {
+ return 0;
+ }
+
+ for (int i = 0; i < nPoints; i++)
+ {
+ buffer[i] = i;
+ }
+
+ if (closed)
+ {
+ buffer[nPoints] = 0;
+ }
+
+ return closed ? (nPoints + 1) : nPoints;
+}
+
+int PolylineDecomposer::fillStairDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode, int closed)
+{
+ int currentValid = 0;
+ int middleVertexValid = 0;
+ int nextValid = 0;
+
+ int offset = 0;
+ int numberValidIndices = 0;
+
+ /* If less than 2 points, no segments */
+ if (nPoints < 2)
+ {
+ return 0;
+ }
+
+ if (lineMode == 0)
+ {
+ return 0;
+ }
+
+ for (int i = 0; i < 2 * nPoints - 1; i++)
+ {
+ buffer[i] = i;
+ }
+
+ if (closed)
+ {
+ buffer[2 * nPoints - 1] = 2 * nPoints - 1;
+ buffer[2 * nPoints] = 0;
+ }
+
+ return closed ? (2 * nPoints + 1) : (2 * nPoints - 1);
+}
+
+int PolylineDecomposer::fillVerticalLinesDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode)
+{
+ double coordsi[3];
+
+ int offset = 0;
+ int numberValidIndices = 0;
+
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ /* Vertical lines */
+ for (int i = 0; i < nPoints; i++)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, i, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ if (DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]))
+ {
+ if (logMask && !DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask))
+ {
+ continue;
+ }
+
+ buffer[2 * offset] = 2 * i;
+ buffer[2 * offset + 1] = 2 * i + 1;
+
+ numberValidIndices += 2;
+ offset++;
+ }
+
+ }
+
+ if (lineMode)
+ {
+ int currentValid;
+ int nextValid;
+
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 0, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ currentValid = DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]);
+
+ if (logMask)
+ {
+ currentValid &= DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask);
+ }
+
+ for (int i = 0; i < nPoints - 1; i++)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, i + 1, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ nextValid = DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]);
+
+ if (logMask)
+ {
+ nextValid &= DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask);
+ }
+
+ if (currentValid && nextValid)
+ {
+ buffer[2 * offset] = 2 * i + 1;
+ buffer[2 * offset + 1] = 2 * (i + 1) + 1;
+
+ numberValidIndices += 2;
+ offset++;
+ }
+
+ currentValid = nextValid;
+ }
+ }
+
+ return numberValidIndices;
+}
+
+
+int PolylineDecomposer::fillBarsDecompositionSegmentIndices(int id, int* buffer, int bufferLength,
+ int logMask, double* coordinates, int nPoints, double* xshift, double* yshift, double* zshift, int lineMode)
+{
+ double barWidth = 0.0;
+ double* pdBarWidth = &barWidth;
+ double coordsi[3];
+
+ int barWidthValid = 0;
+ int offset = 0;
+ int numberValidIndices = 0;
+
+ if (nPoints == 0)
+ {
+ return 0;
+ }
+
+ getGraphicObjectProperty(id, __GO_BAR_WIDTH__, jni_double, (void**) &pdBarWidth);
+
+ barWidthValid = DecompositionUtils::isValid(barWidth);
+
+ /* 0 bar segment indices if the bar width is invalid, as it is the same for all bars. */
+ if (barWidthValid)
+ {
+ /* Bars */
+ for (int i = 0; i < nPoints; i++)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, i, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ if (DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]))
+ {
+ if (logMask && !DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask))
+ {
+ continue;
+ }
+
+ buffer[8 * offset] = 4 * i;
+ buffer[8 * offset + 1] = 4 * i + 1;
+ buffer[8 * offset + 2] = 4 * i + 1;
+ buffer[8 * offset + 3] = 4 * i + 2;
+ buffer[8 * offset + 4] = 4 * i + 2;
+ buffer[8 * offset + 5] = 4 * i + 3;
+ buffer[8 * offset + 6] = 4 * i + 3;
+ buffer[8 * offset + 7] = 4 * i;
+
+ numberValidIndices += 8;
+ offset++;
+ }
+
+ }
+
+ }
+
+ /* Lines */
+ if (lineMode)
+ {
+ int loffset = 0;
+
+ int currentValid;
+ int nextValid;
+
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, 0, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ currentValid = DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]);
+
+ if (logMask)
+ {
+ currentValid &= DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask);
+ }
+
+ for (int i = 0; i < nPoints - 1; i++)
+ {
+ getShiftedPolylinePoint(coordinates, xshift, yshift, zshift, nPoints, i + 1, &coordsi[0], &coordsi[1], &coordsi[2]);
+
+ nextValid = DecompositionUtils::isValid(coordsi[0], coordsi[1], coordsi[2]);
+
+ if (logMask)
+ {
+ nextValid &= DecompositionUtils::isLogValid(coordsi[0], coordsi[1], coordsi[2], logMask);
+ }
+
+ if (currentValid && nextValid)
+ {
+ buffer[8 * offset + 2 * loffset] = 4 * nPoints + i;
+ buffer[8 * offset + 2 * loffset + 1] = 4 * nPoints + i + 1;
+
+ numberValidIndices += 2;
+ loffset++;
+ }
+
+ currentValid = nextValid;
+ }
+ }
+
+ return numberValidIndices;
+}
+
+void PolylineDecomposer::getShiftedPolylinePoint(double* coordinates, double* xshift, double* yshift, double* zshift, int nPoints, int index,
+ double* x, double* y, double* z)
+{
+ *x = coordinates[index];
+
+ if (xshift != NULL)
+ {
+ *x += xshift[index];
+ }
+
+ *y = coordinates[index + nPoints];
+
+ if (yshift != NULL)
+ {
+ *y += yshift[index];
+ }
+
+ *z = coordinates[index + 2 * nPoints];
+
+ if (zshift != NULL)
+ {
+ *z += zshift[index];
+ }
+}
diff --git a/modules/graphic_objects/src/cpp/ScilabView.cpp b/modules/graphic_objects/src/cpp/ScilabView.cpp
new file mode 100755
index 000000000..97a6452f5
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/ScilabView.cpp
@@ -0,0 +1,716 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include <algorithm>
+#include <iostream>
+#include <map>
+#include <list>
+#include <cstring>
+#include <limits.h>
+
+#include "ScilabView.hxx"
+#include "CallGraphicController.hxx"
+
+extern "C"
+{
+#include "CurrentObject.h"
+#include "createGraphicObject.h"
+#include "setGraphicObjectProperty.h"
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "getScilabJavaVM.h"
+#include "deleteGraphicObject.h"
+#include "MALLOC.h"
+}
+
+/**
+ * C Wrapping functions
+ * \{
+ */
+void ScilabNativeView__createObject(int iUID)
+{
+ ScilabView::createObject(iUID);
+}
+
+void ScilabNativeView__deleteObject(int iUID)
+{
+ ScilabView::deleteObject(iUID);
+}
+
+void ScilabNativeView__updateObject(int iUID, int iProperty)
+{
+ ScilabView::updateObject(iUID, iProperty);
+}
+
+void ScilabNativeView__setCurrentFigure(int iUID)
+{
+ ScilabView::setCurrentFigure(iUID);
+}
+
+void ScilabNativeView__setCurrentSubWin(int iUID)
+{
+ ScilabView::setCurrentSubWin(iUID);
+}
+
+void ScilabNativeView__setCurrentObject(int iUID)
+{
+ ScilabView::setCurrentObject(iUID);
+}
+
+int ScilabNativeView__getValidDefaultFigureId()
+{
+ return ScilabView::getValidDefaultFigureId();
+}
+
+int ScilabNativeView__getFigureFromIndex(int figNum)
+{
+ return ScilabView::getFigureFromIndex(figNum);
+}
+
+/**
+ * \}
+ */
+
+int ScilabView::getValidDefaultFigureId()
+{
+ if (m_figureList.empty())
+ {
+ return 0;
+ }
+ else
+ {
+ int max = INT_MIN;
+ for (__figureList_iterator it = m_figureList.begin(); it != m_figureList.end(); ++it)
+ {
+ if (it->second > max)
+ {
+ max = it->second;
+ }
+ }
+
+ return max + 1;
+ }
+}
+
+bool ScilabView::isEmptyFigureList()
+{
+ return m_figureList.empty();
+}
+
+int ScilabView::getFigureFromIndex(int figNum)
+{
+ __figureList_iterator it;
+
+ for (it = m_figureList.begin(); it != m_figureList.end(); ++it)
+ {
+ if (it->second == figNum)
+ {
+ return it->first;
+ }
+ }
+ return 0;
+}
+
+bool ScilabView::existsFigureId(int id)
+{
+ __figureList_iterator it;
+
+ for (it = m_figureList.begin(); it != m_figureList.end(); ++it)
+ {
+ if (it->second == id)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+void ScilabView::getFiguresId(int ids[])
+{
+ //__figureList_iterator it;
+ //int i = (int)(m_figureList.size() - 1);
+
+ //for (it = m_figureList.begin(); it != m_figureList.end(); ++it, --i)
+ //{
+ // //std::cerr << "[ScilabView] DEBUG " << it->first << " <-> " << it->second << std::endl;
+ // ids[i] = it->second;
+ //}
+
+ __figureList_reverse_iterator it;
+ int i = (int)(m_figureList.size() - 1);
+
+ for (it = m_figureList.rbegin(); it != m_figureList.rend(); ++it, --i)
+ {
+ //std::cerr << "[ScilabView] DEBUG " << it->first << " <-> " << it->second << std::endl;
+ ids[i] = it->second;
+ }
+}
+
+int ScilabView::getNbFigure(void)
+{
+ return (int)m_figureList.size();
+}
+
+void ScilabView::createObject(int iUID)
+{
+ //std::cerr << "[ScilabView] ++ createObject UID=" << iUID << std::endl;
+ int iType = -1;
+ int *piType = &iType;
+
+ getGraphicObjectProperty(iUID, __GO_TYPE__, jni_int, (void **)&piType);
+ if (iType != -1 && iType == __GO_FIGURE__)
+ {
+ m_figureList[iUID] = -1;
+ setCurrentFigure(iUID);
+ }
+
+ // Register object handle.
+ getObjectHandle(iUID);
+
+ PathItem* item = new PathItem();
+ item->uid = iUID;
+
+ m_pathList[iUID] = item;
+
+ m_userdata[iUID]; //create an empty vector<int>
+
+ //get existing information from current object
+ updateObject(iUID, __GO_PARENT__);
+ updateObject(iUID, __GO_CHILDREN__);
+ updateObject(iUID, __GO_TAG__);
+}
+
+void ScilabView::deleteObject(int iUID)
+{
+ //std::cerr << "[ScilabView] -- deleteObject UID=" << iUID << std::endl;
+ int iType = -1;
+ int *piType = &iType;
+ int iParentUID = 0;
+
+ /*
+ ** If deleting a figure, remove from figure list.
+ */
+ m_figureList.erase(iUID);
+
+ /*
+ ** If deleting current figure find another current one,
+ ** if there is no more figure : NULL
+ */
+ if (m_currentFigure == iUID) // Deleting current figure
+ {
+ int iAxesUID = 0;
+ int* piAxesUID = &iAxesUID;
+
+ if (getNbFigure() != 0)
+ {
+ m_currentFigure = m_figureList.begin()->first;
+ getGraphicObjectProperty(m_currentFigure, __GO_SELECTED_CHILD__, jni_int, (void**)&piAxesUID);
+ setCurrentSubWin(iAxesUID);
+ }
+ else
+ {
+ setCurrentFigure(0);
+ setCurrentSubWin(0);
+ }
+ }
+
+ /*
+ ** If deleting current entity, set parent as new current.
+ */
+ if (m_currentObject == iUID) // Deleting current object
+ {
+ iParentUID = getParentObject(iUID);
+ setCurrentObject(iParentUID);
+ }
+
+ // Remove the corresponding handle.
+ __handleList_iterator it = m_handleList.find(iUID);
+ if (it != m_handleList.end())
+ {
+ m_uidList.erase(it->second);
+ m_handleList.erase(it);
+ }
+
+ deleteDataObject(iUID);
+
+ m_pathList.erase(iUID);
+ m_userdata.erase(iUID);
+}
+
+void ScilabView::updateObject(int iUID, int iProperty)
+{
+ //std::cerr << "[ScilabView] == updateObject UID=" << iUID << " PROPERTY=" << pstProperty << std::endl;
+
+ /*
+ ** Take care of update if the value update is ID and object type is a Figure I manage.
+ */
+ switch (iProperty)
+ {
+ case __GO_ID__ :
+ {
+ if (m_figureList.find(iUID) != m_figureList.end())
+ {
+ int iNewId = 0;
+ int *piNewId = &iNewId;
+
+ getGraphicObjectProperty(iUID, __GO_ID__, jni_int, (void **)&piNewId);
+
+ m_figureList[iUID] = iNewId;
+ //std::cerr << "### [ScilabView] updateMap UID=" << iUID << " id=" << iNewId << std::endl;
+ }
+ break;
+ }
+ case __GO_CHILDREN__ :
+ {
+ int childrenCount = 0;
+ int* pChildrenCount = &childrenCount;
+ getGraphicObjectProperty(iUID, __GO_CHILDREN_COUNT__, jni_int, (void**)&pChildrenCount);
+
+ __pathList_iterator it = m_pathList.find(iUID);
+ if (it != m_pathList.end())
+ {
+ //update existing item
+
+ PathItem* item = (*it).second;
+ //reset children
+ item->children.clear();
+ if (childrenCount != 0)
+ {
+ int* children = NULL;
+ getGraphicObjectProperty(iUID, __GO_CHILDREN__, jni_int_vector, (void**)&children);
+ item->children.assign(children, children + childrenCount);
+ }
+ }
+ break;
+ }
+ case __GO_PARENT__ :
+ {
+ int iParent = 0;
+ int* piParent = &iParent;
+ getGraphicObjectProperty(iUID, __GO_PARENT__, jni_int, (void**)&piParent);
+
+ __pathList_iterator it = m_pathList.find(iUID);
+
+ if (it != m_pathList.end())
+ {
+ //update existing item
+
+ PathItem* item = (*it).second;
+ item->parent = iParent;
+ }
+ break;
+ }
+ case __GO_TAG__ :
+ {
+ int iType = 0;
+ int* piType = &iType;
+ getGraphicObjectProperty(iUID, __GO_TYPE__, jni_int, (void**)&piType);
+
+ char* tag = NULL;
+ getGraphicObjectProperty(iUID, __GO_TAG__, jni_string, (void**)&tag);
+
+ if (tag[0] != 0 && iType == __GO_FIGURE__)
+ {
+ //not empty string
+
+ //add figure in list of path starter
+ m_pathFigList[tag] = iUID;
+ }
+
+ __pathList_iterator it = m_pathList.find(iUID);
+
+ if (it != m_pathList.end())
+ {
+ //update existing item
+
+ PathItem* item = (*it).second;
+ item->tag = tag;
+ free(tag);
+ }
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+/*
+** Register ScilabView to Controller.
+** Must be done after Graphics models are created.
+*/
+void ScilabView::registerToController(void)
+{
+ org_scilab_modules_graphic_objects::CallGraphicController::registerScilabView(getScilabJavaVM());
+ m_figureList.get_allocator().allocate(4096);
+ m_handleList.get_allocator().allocate(4096);
+ m_uidList.get_allocator().allocate(4096);
+}
+
+/*
+** Reove ScilabView from Controller.
+*/
+void ScilabView::unregisterToController(void)
+{
+ org_scilab_modules_graphic_objects::CallGraphicController::unregisterScilabView(getScilabJavaVM());
+}
+
+/*
+** Set Current Figure UID
+*/
+void ScilabView::setCurrentFigure(int UID)
+{
+ m_currentFigure = UID;
+}
+
+/*
+** Get Current Figure UID
+*/
+int ScilabView::getCurrentFigure()
+{
+ //std::cerr << "[ScilaView] currentFigure = " << (m_currentFigure == 0 ? "NULL !!" : m_currentFigure) << std::endl;
+ return m_currentFigure;
+}
+
+/*
+** Set Current Object UID
+*/
+void ScilabView::setCurrentObject(int UID)
+{
+ m_currentObject = UID;
+}
+
+/*
+** Get Current Figure UID
+*/
+int ScilabView::getCurrentObject()
+{
+ //std::cerr << "[ScilaView] currentObject = " << m_currentObject << std::endl;
+ return m_currentObject;
+}
+
+/*
+** Set Current SubWin UID
+*/
+void ScilabView::setCurrentSubWin(int UID)
+{
+ m_currentSubWin = UID;
+}
+
+/*
+** Get Current Figure UID
+*/
+int ScilabView::getCurrentSubWin()
+{
+ //std::cerr << "[ScilaView] currentSubWin = " << m_currentSubWin << std::endl;
+ return m_currentSubWin;
+}
+
+/*
+** Scilab only can store long as handle
+*/
+long ScilabView::getObjectHandle(int UID)
+{
+ /*
+ * if (UID != NULL)
+ * {
+ * std::cerr << "UID = " << UID << std::endl;
+ * }
+ * else
+ * {
+ * std::cerr << "UID is null :-S" << std::endl;
+ * }
+ * __handleList_iterator it2;
+ * std::cerr << "[DEBUG] +++ handleMap +++" << std::endl;
+ * for (it2 = m_handleList.begin() ; it2 != m_handleList.end() ; ++it2)
+ * {
+ * std::cerr << "UID " << it2->first << " <-> handle " << it2->second << std::endl;
+ * }
+ * std::cerr << "[DEBUG] +++ handleMap +++" << std::endl;
+ */
+ __handleList_iterator it = m_handleList.find(UID);
+
+ if (it != m_handleList.end())
+ {
+ return it->second;
+ }
+
+ // increase maximum value
+ // register new handle and return it.
+ m_topHandleValue++;
+ m_handleList[UID] = m_topHandleValue;
+ m_uidList[m_topHandleValue] = UID;
+
+ return m_topHandleValue;
+}
+
+int ScilabView::getObjectFromHandle(long handle)
+{
+ __uidList_iterator it = m_uidList.find(handle);
+ if (it == m_uidList.end())
+ {
+ return 0;
+ }
+
+ return it->second;
+}
+
+int ScilabView::getFigureModel(void)
+{
+ //std::cerr << "[ScilabView] getFigureModel = " << (m_figureModel == 0 ? "!! NULL !!" : m_figureModel) << std::endl;
+ return m_figureModel;
+}
+
+void ScilabView::setFigureModel(int UID)
+{
+ m_figureModel = UID;
+}
+
+int ScilabView::getAxesModel(void)
+{
+ //std::cerr << "[ScilabView] getAxesModel = " << (m_axesModel == 0 ? "!! NULL !!" : m_axesModel) << std::endl;
+ return m_axesModel;
+}
+
+void ScilabView::setAxesModel(int UID)
+{
+ m_axesModel = UID;
+}
+
+PathItem* ScilabView::getItem(int uid)
+{
+ __pathList_iterator it = m_pathList.find(uid);
+ if (it != m_pathList.end())
+ {
+ return it->second;
+ }
+
+ return NULL;
+}
+
+PathItem* ScilabView::getItem(std::string _pstTag)
+{
+ std::list<int> ignored;
+ return getItem(_pstTag, ignored);
+}
+
+PathItem* ScilabView::getItem(std::string _pstTag, std::list<int>& _ignoredList)
+{
+ __pathList_iterator it = m_pathList.begin();
+ for (; it != m_pathList.end(); it++)
+ {
+ PathItem * item = it->second;
+ if (item->tag == _pstTag)
+ {
+ if (std::find(_ignoredList.begin(), _ignoredList.end(), item->uid) == _ignoredList.end())
+ {
+ return item;
+ }
+ }
+ }
+ return NULL;
+}
+
+PathItem* ScilabView::getFigureItem(std::string _pstTag)
+{
+
+ __pathFigList_iterator it = m_pathFigList.find(_pstTag);
+ if (it != m_pathFigList.end())
+ {
+ return getItem(it->second);
+ }
+
+ return NULL;
+}
+
+int ScilabView::search_path(char* _pstPath)
+{
+ //copy string to protect it against strtok
+ char* pstPath = strdup(_pstPath);
+ std::list<int> ignoredList;
+ PathItem* path = NULL;
+ char* pstSubPath = strtok(pstPath, "/");
+ bool bDeep = false;
+ while (pstSubPath != NULL)
+ {
+ if (pstSubPath[0] == 0)
+ {
+ //"" ?
+ break;
+ }
+
+ if (pstSubPath[0] != '*')
+ {
+ //search in direct children
+ if (path == NULL)
+ {
+ path = ScilabView::getFigureItem(pstSubPath);
+ if (path == NULL)
+ {
+ path = ScilabView::getItem(pstSubPath, ignoredList);
+ if (path == NULL)
+ {
+ break;
+ }
+ }
+
+ //if figure is in ignore list, reeturn not found
+ if (std::find(ignoredList.begin(), ignoredList.end(), path->uid) != ignoredList.end())
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ PathItem* newPath = search_children(path, pstSubPath, bDeep, ignoredList);
+ if (newPath == NULL)
+ {
+ //flag handle to ignore and restart parsing
+ ignoredList.push_back(path->uid);
+ pstPath = strdup(_pstPath);
+ pstSubPath = strtok(pstPath, "/");
+ path = NULL;
+ continue;
+ }
+ else
+ {
+ path = newPath;
+ }
+
+ bDeep = false;
+ }
+ }
+ else
+ {
+ //search in all path children
+ bDeep = true;
+ }
+
+ pstSubPath = strtok(NULL, "/");
+ }
+
+ if (path == NULL)
+ {
+ return 0;
+ }
+
+ return path->uid;
+}
+
+PathItem* ScilabView::search_children(PathItem* _path, std::string _subPath, bool _bDeep, std::list<int>& _ignoredList)
+{
+ PathItem::__child_iterator it = _path->children.begin();
+ for (; it != _path->children.end() ; it++)
+ {
+ PathItem* child = ScilabView::getItem(*it);
+ if (child->tag == _subPath)
+ {
+ bool ignored = false;
+ //check if this handle is not in ignoredList
+ if (std::find(_ignoredList.begin(), _ignoredList.end(), child->uid) == _ignoredList.end())
+ {
+ return child;
+ }
+ }
+ else if (_bDeep)
+ {
+ PathItem *item = search_children(child, _subPath, _bDeep, _ignoredList);
+ if (item)
+ {
+ return item;
+ }
+ }
+ }
+
+ return NULL;
+}
+
+std::string ScilabView::get_path(int uid)
+{
+ PathItem* item = getItem(uid);
+ if (item->tag == "")
+ {
+ //impossible to create a useful path from object without tag
+ return "";
+ }
+
+ std::string path = item->tag;
+
+ while (item->parent != 0)
+ {
+ item = getItem(item->parent);
+ if (item->tag == "")
+ {
+ if (path[0] == '*')
+ {
+ //we have already */ just continue
+ continue;
+ }
+ else
+ {
+ //add */ instead of /
+ path = "*/" + path;
+ }
+ }
+ else
+ {
+ path = item->tag + "/" + path;
+ }
+ }
+
+ if (path[0] == '*')
+ {
+ //path must start by mane
+ return "";
+ }
+
+ return path;
+}
+
+void ScilabView::setUserdata(int _id, int* _data, int _datasize)
+{
+ m_userdata[_id] = std::vector<int>(_data, _data + _datasize);
+}
+
+int ScilabView::getUserdataSize(int _id)
+{
+ return (int)m_userdata[_id].size();
+}
+
+int* ScilabView::getUserdata(int _id)
+{
+ std::vector<int> &vect = m_userdata[_id];
+ int size = (int)vect.size();
+
+ if (size != 0)
+ {
+ return &(vect[0]);
+ }
+
+ //empty userdata must be == NULL
+ return NULL;
+}
+
+/*
+** Allocate static class variable.
+*/
+ScilabView::__figureList ScilabView::m_figureList = *new __figureList();
+ScilabView::__handleList ScilabView::m_handleList = *new __handleList();
+ScilabView::__uidList ScilabView::m_uidList = *new __uidList();
+long ScilabView::m_topHandleValue = 0;
+int ScilabView::m_currentFigure;
+int ScilabView::m_currentObject;
+int ScilabView::m_currentSubWin;
+int ScilabView::m_figureModel;
+int ScilabView::m_axesModel;
+ScilabView::__pathList ScilabView::m_pathList = *new __pathList();
+ScilabView::__pathFigList ScilabView::m_pathFigList = *new __pathFigList();
+ScilabView::__userdata ScilabView::m_userdata = *new __userdata();
diff --git a/modules/graphic_objects/src/cpp/Texture.cpp b/modules/graphic_objects/src/cpp/Texture.cpp
new file mode 100755
index 000000000..c88ecff9c
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/Texture.cpp
@@ -0,0 +1,1520 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "Texture.hxx"
+#include <cstring>
+
+float Texture::GrayR[256];
+float Texture::GrayG[256];
+float Texture::GrayB[256];
+unsigned char Texture::RGB8R[256];
+unsigned char Texture::RGB8G[256];
+unsigned char Texture::RGB8B[256];
+unsigned char Texture::R12[256];
+const bool Texture::isGrayTableInit = Texture::initGrayTables();
+const bool Texture::isRGB8TableInit = Texture::initRGB8Tables();
+const bool Texture::isR12TableInit = Texture::initR12Table();
+
+#define _DOUBLE_TO_UCHAR_(x) ((x) < 0 ? 0 : ((x) > 1 ? 0xFF : ((unsigned char)((x) * 0xFF))))
+
+bool Texture::getImage(void const * data, const int numElements, const DataType datatype, const ImageType imagetype, void ** dest, unsigned int * dataSize, GLType * gltype)
+{
+ unsigned int size = 0;
+ bool ret = false;
+
+ switch (imagetype)
+ {
+ case MATPLOT_RGB :
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ size = numElements * sizeof(int);
+ break;
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ size = numElements * sizeof(float) * 3;
+ break;
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ size = numElements * 3;
+ break;
+ case MATPLOT_Int :
+ case MATPLOT_UInt :
+ size = numElements * sizeof(int);
+ break;
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ size = numElements * sizeof(short);
+ break;
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ size = numElements * sizeof(int);
+ break;
+ }
+ break;
+ case MATPLOT_RGBA :
+ case MATPLOT_ARGB :
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ size = numElements * sizeof(int);
+ break;
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ size = numElements * sizeof(float) * 4;
+ break;
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ size = numElements * 4;
+ break;
+ case MATPLOT_Int :
+ case MATPLOT_UInt :
+ size = numElements * sizeof(int);
+ break;
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ size = numElements * sizeof(short);
+ break;
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ size = numElements * sizeof(int);
+ break;
+ }
+ break;
+ case MATPLOT_GRAY :
+ case MATPLOT_RED :
+ case MATPLOT_GREEN :
+ case MATPLOT_BLUE :
+ if (datatype == MATPLOT_Short || datatype == MATPLOT_UShort)
+ {
+ size = numElements * sizeof(short);
+ }
+ else if (datatype == MATPLOT_HM3_Double || datatype == MATPLOT_HM4_Double || datatype == MATPLOT_Double)
+ {
+ size = numElements * sizeof(float);
+ }
+ else
+ {
+ size = numElements;
+ }
+ break;
+ case MATPLOT_INDEX :
+ switch (datatype)
+ {
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ size = numElements;
+ break;
+ case MATPLOT_Int :
+ case MATPLOT_UInt :
+ size = numElements * sizeof(int);
+ break;
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ size = numElements * sizeof(short);
+ break;
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ size = numElements * sizeof(double);
+ break;
+ }
+ break;
+ case MATPLOT_RGB_332 :
+ size = numElements;
+ break;
+ case MATPLOT_RGB_444 :
+ case MATPLOT_RGB_555 :
+ case MATPLOT_RGBA_4444 :
+ case MATPLOT_RGBA_5551 :
+ size = numElements * sizeof(short);
+ break;
+ }
+
+ if (size != *dataSize)
+ {
+ ret = true;
+ *dataSize = size;
+ *dest = new unsigned char[size];
+ }
+
+ switch (imagetype)
+ {
+ case MATPLOT_RGB :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = R[i];
+ ucdata[k + 1] = G[i];
+ ucdata[k + 2] = B[i];
+ k += 3;
+ }
+ *gltype = MATPLOT_GL_RGB;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ float * fdata = (float *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[k] = (float)R[i];
+ fdata[k + 1] = (float)G[i];
+ fdata[k + 2] = (float)B[i];
+ k += 3;
+ }
+
+ *gltype = MATPLOT_GL_RGB_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_Char :
+ case MATPLOT_UChar :
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGB;
+ break;
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (ui[i] >> 16) & 0xFF;
+ ucdata[k + 1] = (ui[i] >> 8) & 0xFF;
+ ucdata[k + 2] = ui[i] & 0xFF;
+ k += 3;
+ }
+
+ *gltype = MATPLOT_GL_RGB;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (ui[i] >> 24) & 0xFF;
+ ucdata[k + 1] = (ui[i] >> 16) & 0xFF;
+ ucdata[k + 2] = (ui[i] >> 8) & 0xFF;
+ k += 3;
+ }
+
+ *gltype = MATPLOT_GL_RGB;
+ break;
+ }
+ case MATPLOT_Short :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UShort :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (((unsigned int)d[i]) >> 16) & 0xFF;
+ ucdata[k + 1] = (((unsigned int)d[i]) >> 8) & 0xFF;
+ ucdata[k + 2] = ((unsigned int)d[i]) & 0xFF;
+ k += 3;
+ }
+ *gltype = MATPLOT_GL_RGB;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_RGBA :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = R[i];
+ ucdata[k + 1] = G[i];
+ ucdata[k + 2] = B[i];
+ ucdata[k + 3] = 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ const unsigned char * A = B + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = R[i];
+ ucdata[k + 1] = G[i];
+ ucdata[k + 2] = B[i];
+ ucdata[k + 3] = A[i];
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ float * fdata = (float *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[k] = (float)R[i];
+ fdata[k + 1] = (float)G[i];
+ fdata[k + 2] = (float)B[i];
+ fdata[k + 3] = 1.0f;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_FLOAT;
+ break;
+ }
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ const double * A = B + numElements;
+ float * fdata = (float *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[k] = (float)R[i];
+ fdata[k + 1] = (float)G[i];
+ fdata[k + 2] = (float)B[i];
+ fdata[k + 3] = (float)A[i];
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (ui[i] >> 16) & 0xFF;
+ ucdata[k + 1] = (ui[i] >> 8) & 0xFF;
+ ucdata[k + 2] = ui[i] & 0xFF;
+ ucdata[k + 3] = 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (ui[i] >> 24) & 0xFF;
+ ucdata[k + 1] = (ui[i] >> 16) & 0xFF;
+ ucdata[k + 2] = (ui[i] >> 8) & 0xFF;
+ ucdata[k + 3] = ui[i] & 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_Short :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UShort :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (((unsigned int)d[i]) >> 24) & 0xFF;
+ ucdata[k + 1] = (((unsigned int)d[i]) >> 16) & 0xFF;
+ ucdata[k + 2] = (((unsigned int)d[i]) >> 8) & 0xFF;
+ ucdata[k + 3] = ((unsigned int)d[i]) & 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ }
+ }
+ break;
+ }
+ case MATPLOT_ARGB :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = R[i];
+ ucdata[k + 1] = G[i];
+ ucdata[k + 2] = B[i];
+ ucdata[k + 3] = 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * A = (const unsigned char *)data;
+ const unsigned char * R = A + numElements;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = R[i];
+ ucdata[k + 1] = G[i];
+ ucdata[k + 2] = B[i];
+ ucdata[k + 3] = A[i];
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ float * fdata = (float *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[k] = (float)R[i];
+ fdata[k + 1] = (float)G[i];
+ fdata[k + 2] = (float)B[i];
+ fdata[k + 3] = 1.0f;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_FLOAT;
+ break;
+ }
+ case MATPLOT_HM4_Double :
+ {
+ const double * A = (const double *)data;
+ const double * R = A + numElements;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ float * fdata = (float *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[k] = (float)R[i];
+ fdata[k + 1] = (float)G[i];
+ fdata[k + 2] = (float)B[i];
+ fdata[k + 3] = (float)A[i];
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ const unsigned char * uc = (const unsigned char *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < size; i += 4)
+ {
+ ucdata[i] = uc[i + 1];
+ ucdata[i + 1] = uc[i + 2];
+ ucdata[i + 2] = uc[i + 3];
+ ucdata[i + 3] = uc[i];
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (ui[i] >> 16) & 0xFF;
+ ucdata[k + 1] = (ui[i] >> 8) & 0xFF;
+ ucdata[k + 2] = ui[i] & 0xFF;
+ ucdata[k + 3] = 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (ui[i] >> 16) & 0xFF;
+ ucdata[k + 1] = (ui[i] >> 8) & 0xFF;
+ ucdata[k + 2] = ui[i] & 0xFF;
+ ucdata[k + 3] = (ui[i] >> 24) & 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_Short :
+ {
+ const unsigned short * us = (const unsigned short *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (us[i] >> 12) | (us[i] << 4);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UShort :
+ {
+ const unsigned short * us = (const unsigned short *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (us[i] >> 15) | (us[i] << 1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ unsigned int k = 0;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[k] = (((unsigned int)d[i]) >> 16) & 0xFF;
+ ucdata[k + 1] = (((unsigned int)d[i]) >> 8) & 0xFF;
+ ucdata[k + 2] = ((unsigned int)d[i]) & 0xFF;
+ ucdata[k + 3] = (((unsigned int)d[i]) >> 24) & 0xFF;
+ k += 4;
+ }
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GRAY :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) (GrayR[R[i]] + GrayG[G[i]] + GrayB[B[i]]);
+ }
+ *gltype = MATPLOT_GL_GRAY;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float) (0.299 * R[i] + 0.587 * G[i] + 0.114 * B[i]);
+ }
+ *gltype = MATPLOT_GL_GRAY_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_GRAY;
+ break;
+ }
+ case MATPLOT_UShort :
+ case MATPLOT_Short :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_GRAY_16;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) (GrayR[(ui[i] >> 24) & 0xFF] + GrayG[(ui[i] >> 16) & 0xFF] + GrayB[(ui[i] >> 8) & 0xFF]);
+ }
+ *gltype = MATPLOT_GL_GRAY;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) (GrayR[(ui[i] >> 16) & 0xFF] + GrayG[(ui[i] >> 8) & 0xFF] + GrayB[ui[i] & 0xFF]);
+ }
+ *gltype = MATPLOT_GL_GRAY;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float)d[i];
+ }
+ *gltype = MATPLOT_GL_GRAY_FLOAT;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_INDEX :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_BYTE;
+ break;
+ }
+ case MATPLOT_RED :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ memcpy(*dest, data, numElements);
+ *gltype = MATPLOT_GL_RED;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float)d[i];
+ }
+ *gltype = MATPLOT_GL_RED_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RED;
+ break;
+ }
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RED_16;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) ((ui[i] >> 16) & 0xFF);
+ }
+ *gltype = MATPLOT_GL_RED;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) ((ui[i] >> 24) & 0xFF);
+ }
+ *gltype = MATPLOT_GL_RED;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_GREEN :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ memcpy(*dest, (unsigned char *)data + numElements, numElements);
+ *gltype = MATPLOT_GL_GREEN;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * d = (const double *)data + numElements;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float)d[i];
+ }
+ *gltype = MATPLOT_GL_GREEN_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_GREEN;
+ break;
+ }
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_GREEN_16;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) ((ui[i] >> 8) & 0xFF);
+ }
+ *gltype = MATPLOT_GL_GREEN;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) ((ui[i] >> 16) & 0xFF);
+ }
+ *gltype = MATPLOT_GL_GREEN;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float)d[i];
+ }
+ *gltype = MATPLOT_GL_GREEN_FLOAT;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_BLUE :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ memcpy(*dest, (unsigned char *)data + 2 * numElements, numElements);
+ *gltype = MATPLOT_GL_BLUE;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * d = (const double *)data + 2 * numElements;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float)d[i];
+ }
+ *gltype = MATPLOT_GL_BLUE_FLOAT;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_BLUE;
+ break;
+ }
+ case MATPLOT_Short :
+ case MATPLOT_UShort :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_BLUE_16;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) (ui[i] & 0xFF);
+ }
+ *gltype = MATPLOT_GL_BLUE;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char) ((ui[i] >> 8) & 0xFF);
+ }
+ *gltype = MATPLOT_GL_BLUE;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ float * fdata = (float *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ fdata[i] = (float)d[i];
+ }
+ *gltype = MATPLOT_GL_BLUE_FLOAT;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_RGB_332 :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char)(RGB8R[R[i]] | RGB8G[G[i]] | RGB8B[B[i]]);
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ unsigned char * ucdata = (unsigned char *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char)(RGB8R[_DOUBLE_TO_UCHAR_(R[i])] | RGB8G[_DOUBLE_TO_UCHAR_(G[i])] | RGB8B[_DOUBLE_TO_UCHAR_(B[i])]);
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char)(RGB8R[(ui[i] & 0xFF0000) >> 16] | RGB8G[(ui[i] & 0xFF00) >> 8] | RGB8B[ui[i] & 0xFF]);
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char)(RGB8R[(ui[i] & 0xFF000000) >> 24] | RGB8G[(ui[i] & 0xFF0000) >> 16] | RGB8B[(ui[i] & 0xFF00) >> 8]);
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_Short :
+ {
+ const unsigned short * us = (const unsigned short *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char)(((us[i] & 0xE00) >> 4) | ((us[i] & 0xE0) >> 3) | ((us[i] & 0xC) >> 2));
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_UShort :
+ {
+ const unsigned short * us = (const unsigned short *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ ucdata[i] = (unsigned char)(((us[i] & 0xE000) >> 8) | ((us[i] & 0xE00) >> 7) | ((us[i] & 0xC0) >> 6));
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned char * ucdata = (unsigned char *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ const unsigned int ui = (unsigned int)d[i];
+ ucdata[i] = (unsigned char)(RGB8R[(ui & 0xFF000000) >> 24] | RGB8G[(ui & 0xFF0000) >> 16] | RGB8B[(ui & 0xFF00) >> 8]);
+ }
+ *gltype = MATPLOT_GL_RGB_332;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_RGB_444 :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[R[i]] << 12) | (R12[G[i]] << 8) | (R12[B[i]] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[_DOUBLE_TO_UCHAR_(R[i])] << 12) | (R12[_DOUBLE_TO_UCHAR_(G[i])] << 8) | (R12[_DOUBLE_TO_UCHAR_(B[i])] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[(ui[i] & 0xFF0000) >> 16] << 12) | (R12[(ui[i] & 0xFF00) >> 8] << 8) | (R12[ui[i] & 0xFF] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[(ui[i] & 0xFF000000) >> 24] << 12) | (R12[(ui[i] & 0xFF0000) >> 16] << 8) | (R12[(ui[i] & 0xFF00) >> 8] << 4) | (R12[ui[i] & 0xFF]));
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UShort :
+ case MATPLOT_Short :
+ {
+ const unsigned short * us = (const unsigned short *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (us[i] << 4) | 0xF;
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ const unsigned int ui = (unsigned int)d[i];
+ usdata[i] = (unsigned short)((R12[(ui & 0xFF0000) >> 16] << 12) | (R12[(ui & 0xFF00) >> 8] << 8) | (R12[ui & 0xFF] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_RGB_555 :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((R[i] & 0xF8) << 8) | ((G[i] & 0xF8) << 3) | ((B[i] & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((_DOUBLE_TO_UCHAR_(R[i]) & 0xF8) << 8) | ((_DOUBLE_TO_UCHAR_(G[i]) & 0xF8) << 3) | ((_DOUBLE_TO_UCHAR_(B[i]) & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((ui[i] & 0xF80000) >> 8) | ((ui[i] & 0xF800) >> 5) | ((ui[i] & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((ui[i] & 0xF8000000) >> 16) | ((ui[i] & 0xF80000) >> 13) | ((ui[i] & 0xF800) >> 10) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_UShort :
+ case MATPLOT_Short :
+ {
+ const unsigned short * ui = (const unsigned short *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (ui[i] << 1) | 0x1;
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ const unsigned int ui = (unsigned int)d[i];
+ usdata[i] = (unsigned short)(((ui & 0xF80000) >> 13) | ((ui & 0xF800) >> 5) | ((ui & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_RGBA_4444 :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[R[i]] << 12) | (R12[G[i]] << 8) | (R12[B[i]] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ const unsigned char * A = B + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[R[i]] << 12) | (R12[G[i]] << 8) | (R12[B[i]] << 4) | R12[A[i]]);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[_DOUBLE_TO_UCHAR_(R[i])] << 12) | (R12[_DOUBLE_TO_UCHAR_(G[i])] << 8) | (R12[_DOUBLE_TO_UCHAR_(B[i])] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ const double * A = B + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[_DOUBLE_TO_UCHAR_(R[i])] << 12) | (R12[_DOUBLE_TO_UCHAR_(G[i])] << 8) | (R12[_DOUBLE_TO_UCHAR_(B[i])] << 4) | R12[_DOUBLE_TO_UCHAR_(A[i])]);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[(ui[i] & 0xFF0000) >> 16] << 12) | (R12[(ui[i] & 0xFF00) >> 8] << 8) | (R12[ui[i] & 0xFF] << 4) | 0xF);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)((R12[(ui[i] & 0xFF000000) >> 24] << 12) | (R12[(ui[i] & 0xFF0000) >> 16] << 8) | (R12[(ui[i] & 0xFF00) >> 8] << 4) | R12[ui[i] & 0xFF]);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_UShort :
+ case MATPLOT_Short :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ const unsigned int ui = (unsigned int)d[i];
+ usdata[i] = (unsigned short)((R12[(ui & 0xFF000000) >> 24] << 12) | (R12[(ui & 0xFF0000) >> 16] << 8) | (R12[(ui & 0xFF) >> 8] << 4) | R12[ui & 0xFF]);
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ }
+ break;
+ }
+ case MATPLOT_RGBA_5551 :
+ {
+ switch (datatype)
+ {
+ case MATPLOT_HM3_Char :
+ case MATPLOT_HM3_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((R[i] & 0xF8) << 8) | ((G[i] & 0xF8) << 3) | ((B[i] & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM4_Char :
+ case MATPLOT_HM4_UChar :
+ {
+ const unsigned char * R = (const unsigned char *)data;
+ const unsigned char * G = R + numElements;
+ const unsigned char * B = G + numElements;
+ const unsigned char * A = B + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((R[i] & 0xF8) << 8) | ((G[i] & 0xF8) << 3) | ((B[i] & 0xF8) >> 2) | ((A[i] & 0x1)));
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM3_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((_DOUBLE_TO_UCHAR_(R[i]) & 0xF8) << 8) | ((_DOUBLE_TO_UCHAR_(G[i]) & 0xF8) << 3) | ((_DOUBLE_TO_UCHAR_(B[i]) & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM4_Double :
+ {
+ const double * R = (const double *)data;
+ const double * G = R + numElements;
+ const double * B = G + numElements;
+ const double * A = B + numElements;
+ unsigned short * usdata = (unsigned short *) * dest;
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((_DOUBLE_TO_UCHAR_(R[i]) & 0xF8) << 8) | ((_DOUBLE_TO_UCHAR_(G[i]) & 0xF8) << 3) | ((_DOUBLE_TO_UCHAR_(B[i]) & 0xF8) >> 2) | (_DOUBLE_TO_UCHAR_(A[i]) & 0x1));
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Char :
+ case MATPLOT_HM1_UChar :
+ case MATPLOT_UChar :
+ case MATPLOT_Char :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_Int :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((ui[i] & 0xF80000) >> 13) | ((ui[i] & 0xF800) >> 5) | ((ui[i] & 0xF8) >> 2) | 0x1);
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_UInt :
+ {
+ const unsigned int * ui = (const unsigned int *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ usdata[i] = (unsigned short)(((ui[i] & 0xF8000000) >> 21) | ((ui[i] & 0xF80000) >> 13) | ((ui[i] & 0xF800) >> 10) | ((ui[i] & 0xFF) >> 7));
+ }
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_UShort :
+ case MATPLOT_Short :
+ {
+ memcpy(*dest, data, size);
+ *gltype = MATPLOT_GL_RGBA_5551;
+ break;
+ }
+ case MATPLOT_HM1_Double :
+ case MATPLOT_Double :
+ {
+ const double * d = (const double *)data;
+ unsigned short * usdata = (unsigned short *) * dest;
+
+ for (int i = 0; i < numElements; i++)
+ {
+ const unsigned int ui = (unsigned int)d[i];
+ usdata[i] = (unsigned short)(((ui & 0xF8000000) >> 21) | ((ui & 0xF80000) >> 13) | ((ui & 0xF800) >> 10) | ((ui & 0xFF) >> 7));
+ }
+ *gltype = MATPLOT_GL_RGBA_4444;
+ break;
+ }
+ }
+ break;
+ }
+ }
+
+ return ret;
+}
+
+
+bool Texture::initGrayTables()
+{
+ for (int c = 0; c < 256; c++)
+ {
+ GrayR[c] = 0.299f * (float)c;
+ GrayG[c] = 0.587f * (float)c;
+ GrayB[c] = 0.114f * (float)c;
+ }
+
+ return true;
+}
+
+bool Texture::initRGB8Tables()
+{
+ for (int c = 0; c < 256; c++)
+ {
+ RGB8R[c] = (c / 36) << 5;
+ RGB8G[c] = (c / 36) << 2;
+ RGB8B[c] = c / 81;
+ }
+
+ return true;
+}
+
+bool Texture::initR12Table()
+{
+ for (int c = 0; c < 256; c++)
+ {
+ R12[c] = c / 17;
+ }
+
+ return true;
+}
diff --git a/modules/graphic_objects/src/cpp/Triangulator.cpp b/modules/graphic_objects/src/cpp/Triangulator.cpp
new file mode 100755
index 000000000..9c8bea879
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/Triangulator.cpp
@@ -0,0 +1,818 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel Juliachs
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "Triangulator.hxx"
+
+#include <math.h>
+
+void Triangulator::determineSmallestAxis(void)
+{
+ double minval = 0.;
+
+ Vector3d min = inputPoints[0];
+ Vector3d max = min;
+
+ for (int i = 1 ; i < numPoints; i++)
+ {
+ if (inputPoints[i].x < min.x)
+ {
+ min.x = inputPoints[i].x;
+ }
+ if (inputPoints[i].y < min.y)
+ {
+ min.y = inputPoints[i].y;
+ }
+ if (inputPoints[i].z < min.z)
+ {
+ min.z = inputPoints[i].z;
+ }
+
+ if (inputPoints[i].x > max.x)
+ {
+ max.x = inputPoints[i].x;
+ }
+ if (inputPoints[i].y > max.y)
+ {
+ max.y = inputPoints[i].y;
+ }
+ if (inputPoints[i].z > max.z)
+ {
+ max.z = inputPoints[i].z;
+ }
+ }
+
+ max = minus(max, min);
+
+ if (max.x < max.y)
+ {
+ minval = max.x;
+ smallestAxis = 0;
+ largestAxes[0] = 1;
+ largestAxes[1] = 2;
+ }
+ else
+ {
+ minval = max.y;
+ smallestAxis = 1;
+ largestAxes[0] = 0;
+ largestAxes[1] = 2;
+ }
+
+ if (max.z < minval)
+ {
+ smallestAxis = 2;
+ largestAxes[0] = 0;
+ largestAxes[1] = 1;
+ }
+}
+
+void Triangulator::fillPoints(void)
+{
+ Vector3d point;
+
+ for (int i = 0; i < numPoints; i++)
+ {
+ if (smallestAxis == 0)
+ {
+ /* Smallest axis: X */
+ point.x = inputPoints[i].y;
+ point.y = inputPoints[i].z;
+ }
+ else if (smallestAxis == 1)
+ {
+ /* Smallest axis: Y */
+ point.x = inputPoints[i].x;
+ point.y = inputPoints[i].z;
+ }
+ else
+ {
+ /* Smallest axis: Z (2) */
+ point.x = inputPoints[i].x;
+ point.y = inputPoints[i].y;
+ }
+
+ point.z = 0.0;
+
+ points.push_back(point);
+ }
+}
+
+double Triangulator::computeArea(void)
+{
+ double area = 0.0;
+
+ for (int i = 0; i < numPoints; i++)
+ {
+ int ip1 = (i + 1) % numPoints;
+
+ area += ((points[i].x * points[ip1].y) - (points[i].y * points[ip1].x));
+ }
+
+ area *= 0.5;
+
+ return area;
+}
+
+void Triangulator::fillVertexIndices(void)
+{
+ if (flipped)
+ {
+ for (int i = numPoints - 1; i >= 0; i--)
+ {
+ vertexIndices.push_back(i);
+ }
+ }
+ else
+ {
+ for (int i = 0; i < numPoints; i++)
+ {
+ vertexIndices.push_back(i);
+ }
+ }
+}
+
+void Triangulator::removeColinearVertices(void)
+{
+ double dp = 0.;
+ std::list<int>::iterator vi, vim1, vip1;
+
+ std::vector<Vector3d> sievedPoints;
+ std::list<int> tmpVertexIndices;
+
+ int numColinear = 0;
+ int index = 0;
+
+ for (vi = vertexIndices.begin(); vi != vertexIndices.end(); vi++)
+ {
+ getAdjacentVertices(vi, vim1, vip1);
+
+ dp = computeDotProduct(*vim1, *vi, *vip1);
+
+ if ((!compareVertices(points[*vim1], points[*vi]) && !compareVertices(points[*vi], points[*vip1])) &&
+ fabs(dp) < TOLERANCE)
+ {
+ numColinear++;
+ }
+ else
+ {
+ sievedPoints.push_back(points[*vi]);
+ actualVertexIndices.push_back(*vi);
+ }
+
+ index++;
+ }
+
+ points.clear();
+
+ if (flipped)
+ {
+ /* Reverse the actual vertex indices list */
+ std::vector<int> tmpList;
+
+ for (size_t i = 0; i < actualVertexIndices.size(); i++)
+ {
+ tmpList.push_back(actualVertexIndices[actualVertexIndices.size() - i - 1]);
+ }
+
+ actualVertexIndices.clear();
+
+ for (size_t i = 0; i < tmpList.size(); i++)
+ {
+ actualVertexIndices.push_back(tmpList[i]);
+ }
+
+ tmpList.clear();
+ }
+
+ if (flipped)
+ {
+ for (size_t i = 0; i < sievedPoints.size(); i++)
+ {
+ points.push_back(sievedPoints[sievedPoints.size() - i - 1]);
+ }
+ }
+ else
+ {
+ for (size_t i = 0; i < sievedPoints.size(); i++)
+ {
+ points.push_back(sievedPoints[i]);
+ }
+ }
+
+ /* Must be updated */
+ numPoints = (int)points.size();
+
+ sievedPoints.clear();
+
+ numColinearVertices = numColinear;
+}
+
+void Triangulator::removeDuplicateVertices(void)
+{
+ int numDuplicateVertices = 0;
+ std::vector<int> duplicateFlagArray;
+
+ std::vector<Vector3d> sievedPoints;
+ std::vector<int> tmpActualVertexIndices;
+
+ sievedPoints.clear();
+ tmpActualVertexIndices.clear();
+
+ duplicateFlagArray.resize(points.size());
+
+ for (size_t i = 0; i < points.size(); i++)
+ {
+ int ic = ((int)i + 1) % (int)points.size();
+ int icm1 = (int)i;
+
+ Vector3d vi = points[icm1];
+ Vector3d vip1 = points[ic];
+
+ if (compareVertices(vi, vip1))
+ {
+ numDuplicateVertices++;
+ duplicateFlagArray[ic] = 1;
+ }
+ else
+ {
+ duplicateFlagArray[ic] = 0;
+ }
+ }
+
+ for (size_t i = 0; i < points.size(); i++)
+ {
+ if (duplicateFlagArray[i] == 0)
+ {
+ /* Keep as it is not a duplicate */
+ sievedPoints.push_back(points[i]);
+ tmpActualVertexIndices.push_back(actualVertexIndices[i]);
+ }
+ }
+
+ actualVertexIndices.clear();
+ points.clear();
+
+ /* Copy the two new lists */
+ for (size_t i = 0; i < tmpActualVertexIndices.size(); i++)
+ {
+ actualVertexIndices.push_back(tmpActualVertexIndices[i]);
+ }
+
+ for (size_t i = 0; i < sievedPoints.size(); i++)
+ {
+ points.push_back(sievedPoints[i]);
+ }
+
+ /* Must be updated */
+ numPoints = (int)points.size();
+
+ duplicateFlagArray.clear();
+ sievedPoints.clear();
+ tmpActualVertexIndices.clear();
+}
+
+void Triangulator::fillConvexVerticesList(void)
+{
+ std::list<int>::iterator vi;
+
+ flagList.resize(vertexIndices.size());
+
+ for (vi = vertexIndices.begin(); vi != vertexIndices.end(); vi++)
+ {
+ if (isConvex(vi))
+ {
+ convexList.push_back(*vi);
+ flagList[*vi] = true;
+ }
+ else
+ {
+ reflexList.push_back(*vi);
+ flagList[*vi] = false;
+ }
+ }
+}
+
+void Triangulator::fillEarList(void)
+{
+ std::list<int>::iterator vi;
+ bool res = false;
+
+ for (vi = vertexIndices.begin(); vi != vertexIndices.end(); vi++)
+ {
+ if (flagList[*vi])
+ {
+ res = isAnEar(vi);
+
+ if (res)
+ {
+ earList.push_back(*vi);
+ }
+ }
+ }
+}
+
+void Triangulator::getAdjacentVertices(std::list<int>::iterator vi, std::list<int>::iterator& vim1, std::list<int>::iterator& vip1)
+{
+ if (*vi == vertexIndices.front())
+ {
+ vim1 = vertexIndices.end();
+ vim1--;
+ }
+ else
+ {
+ vim1 = vi;
+ vim1--;
+ }
+
+ if (*vi == vertexIndices.back())
+ {
+ vip1 = vertexIndices.begin();
+ }
+ else
+ {
+ vip1 = vi;
+ vip1++;
+ }
+}
+
+bool Triangulator::isConvex(std::list<int>::iterator vertex)
+{
+ double dp = 0.0;
+ std::list<int>::iterator pred, succ;
+
+ getAdjacentVertices(vertex, pred, succ);
+
+ dp = computeDotProduct(*pred, *vertex, *succ);
+
+ if (dp >= 0.0)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool Triangulator::isAnEar(std::list<int>::iterator vertex)
+{
+ bool isEar = true;
+ std::list<int>::iterator pred, succ;
+ std::list<int>::iterator vi;
+
+ Vector3d v0, v1, v2;
+
+ getAdjacentVertices(vertex, pred, succ);
+
+ v0 = points[*pred];
+ v1 = points[*vertex];
+ v2 = points[*succ];
+
+ for (vi = reflexList.begin(); vi != reflexList.end(); vi++)
+ {
+ if (*vi == *pred || *vi == *vertex || *vi == *succ)
+ {
+ continue;
+ }
+ else
+ {
+ bool res;
+
+ res = pointInTriangle(v0, v1, v2, points[*vi]);
+
+ if (res)
+ {
+ isEar = false;
+ break;
+ }
+ }
+
+ }
+
+ numEarTests++;
+
+ return isEar;
+}
+
+/* To do: streamline */
+void Triangulator::updateVertex(std::list<int>::iterator vertex)
+{
+ bool res = false;
+
+ if (flagList[*vertex])
+ {
+ /*
+ * Convex vertex: remove it from the ear list if not an ear any more,
+ * else add it if not already present.
+ */
+ res = isAnEar(vertex);
+
+ if (!res)
+ {
+ earList.remove(*vertex);
+ numDelEars++;
+ }
+ else
+ {
+ std::list<int>::iterator foundEar;
+
+ foundEar = find(earList.begin(), earList.end(), *vertex);
+
+ if (foundEar == earList.end())
+ {
+ earList.push_front(*vertex);
+ numAddEars++;
+ }
+ }
+ }
+ else
+ {
+ /*
+ * Non-convex vertex: may become convex, so its flag must be updated, as well
+ * as the reflex vertex list.
+ * Also determine whether it has become an ear and update the ear list accordingly.
+ */
+ if (isConvex(vertex))
+ {
+ flagList[*vertex] = true;
+ }
+
+ if (flagList[*vertex])
+ {
+ res = isAnEar(vertex);
+
+ if (res)
+ {
+ std::list<int>::iterator foundEar;
+
+ foundEar = find(earList.begin(), earList.end(), *vertex);
+
+ if (foundEar == earList.end())
+ {
+ earList.push_front(*vertex);
+ numAddEars++;
+ }
+ }
+
+ reflexList.remove(*vertex);
+ }
+ }
+}
+
+double Triangulator::computeDotProduct(int im1, int i, int ip1)
+{
+ double dp = 0.;
+ Vector3d eim1p;
+
+ Vector3d eim1 = minus(points[i], points[im1]);
+ Vector3d ei = minus(points[ip1], points[i]);
+
+ /* Normalize */
+ eim1 = normalize(eim1);
+ ei = normalize(ei);
+
+ /* Ought to use cross product */
+ eim1p = perpendicularVector(eim1);
+
+ dp = dot(eim1p, ei);
+
+ return dp;
+}
+
+bool Triangulator::pointInTriangle(Vector3d A, Vector3d B, Vector3d C, Vector3d P)
+{
+ double dot00 = 0., dot01 = 0., dot02 = 0., dot11 = 0., dot12 = 0.;
+ double invDenom = 0.;
+ double u = 0., v = 0.;
+
+ Vector3d v0, v1, v2;
+
+ /* Compute vectors */
+ v0 = minus(C, A);
+ v1 = minus(B, A);
+ v2 = minus(P, A);
+
+ /* Compute dot products */
+ dot00 = dot(v0, v0);
+ dot01 = dot(v0, v1);
+ dot02 = dot(v0, v2);
+ dot11 = dot(v1, v1);
+ dot12 = dot(v1, v2);
+
+ /* Compute barycentric coordinates */
+ invDenom = 1 / (dot00 * dot11 - dot01 * dot01);
+ u = (dot11 * dot02 - dot01 * dot12) * invDenom;
+ v = (dot00 * dot12 - dot01 * dot02) * invDenom;
+
+ /* Check if point is in triangle */
+ return (u >= 0) && (v >= 0) && (u + v < 1);
+}
+
+Vector3d Triangulator::minus(Vector3d v0, Vector3d v1)
+{
+ Vector3d res;
+
+ res.x = v0.x - v1.x;
+ res.y = v0.y - v1.y;
+ res.z = v0.z - v1.z;
+
+ return res;
+}
+
+double Triangulator::dot(Vector3d v0, Vector3d v1)
+{
+ return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;
+}
+
+Vector3d Triangulator::normalize(Vector3d v)
+{
+ double n = sqrt(v.x * v.x + v.y * v.y);
+
+ if (n < EPSILON)
+ {
+ n = 1.0;
+ }
+
+ v.x /= n;
+ v.y /= n;
+
+ return v;
+}
+
+Vector3d Triangulator::perpendicularVector(Vector3d v)
+{
+ Vector3d perp;
+ perp.x = -v.y;
+ perp.y = v.x;
+ perp.z = 0.0;
+
+ return perp;
+}
+
+bool Triangulator::compareVertices(Vector3d v0, Vector3d v1)
+{
+ if (areEqual(v0.x, v1.x) && areEqual(v0.y, v1.y))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool Triangulator::areEqual(double x0, double x1)
+{
+ double maxAbs = fabs(x0) > fabs(x1) ? fabs(x0) : fabs(x1);
+
+ if (fabs(x0 - x1) <= EPSILON)
+ {
+ return true;
+ }
+ else if (fabs(x0 - x1) <= EPSILON * maxAbs)
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+Triangulator::Triangulator(void)
+{
+ numPoints = 0;
+ numInitPoints = 0;
+ flipped = false;
+ numAddEars = 0;
+ numDelEars = 0;
+ numSteps = 0;
+ numEarTests = 0;
+ numColinearVertices = 0;
+
+ xmin = ymin = zmin = std::numeric_limits<double>::max();
+ xmax = ymax = zmax = std::numeric_limits<double>::min();
+
+ inputPoints.clear();
+ points.clear();
+ vertexIndices.clear();
+ actualVertexIndices.clear();
+ earList.clear();
+ convexList.clear();
+ reflexList.clear();
+ flagList.clear();
+ triangleIndices.clear();
+}
+
+void Triangulator::initialize(void)
+{
+ const double xscale = xmax - xmin;
+ const double yscale = ymax - ymin;
+ const double zscale = zmax - zmin;
+ // we scale-translate the point in the cube [0,1]^3 to avoid error with floating point operations
+ for (std::vector<Vector3d>::iterator i = inputPoints.begin(), e = inputPoints.end(); i != e; ++i)
+ {
+ if (xscale)
+ {
+ i->x = (i->x - xmin) / xscale;
+ }
+ else
+ {
+ i->x = 1;
+ }
+ if (yscale)
+ {
+ i->y = (i->y - ymin) / yscale;
+ }
+ else
+ {
+ i->y = 1;
+ }
+ if (zscale)
+ {
+ i->z = (i->z - zmin) / zscale;
+ }
+ else
+ {
+ i->z = 1;
+ }
+ }
+
+ double area = 0.;
+
+ numPoints = (int)inputPoints.size();
+
+ determineSmallestAxis();
+ fillPoints();
+ area = computeArea();
+
+ if (area < 0.0)
+ {
+ flipped = true;
+ }
+ else
+ {
+ flipped = false;
+ }
+
+ fillVertexIndices();
+
+ numInitPoints = numPoints;
+
+ /*
+ * An additional colinear vertices removal pass should be performed
+ * after the duplicate removal pass, as some adjacent edges may become colinear.
+ */
+ removeColinearVertices();
+ removeDuplicateVertices();
+
+ /* Vertex indices must be re-filled */
+ vertexIndices.clear();
+ fillVertexIndices();
+
+ fillConvexVerticesList();
+ fillEarList();
+}
+
+void Triangulator::addPoint(double x, double y, double z)
+{
+ Vector3d point(x, y, z);
+
+ if (x < xmin)
+ {
+ xmin = x;
+ }
+ if (x > xmax)
+ {
+ xmax = x;
+ }
+
+ if (y < ymin)
+ {
+ ymin = y;
+ }
+ if (y > ymax)
+ {
+ ymax = y;
+ }
+
+ if (z < zmin)
+ {
+ zmin = z;
+ }
+ if (z > zmax)
+ {
+ zmax = z;
+ }
+
+ /*point.x = x;
+ point.y = y;
+ point.z = z;*/
+
+ inputPoints.push_back(point);
+}
+
+void Triangulator::triangulate(void)
+{
+ int triIndex = 0;
+ std::list<int>::iterator it;
+ std::list<int>::iterator vertex, pred, succ;
+
+ numSteps = 0;
+
+ while (vertexIndices.size() >= 3 && earList.size() > 0)
+ {
+ int v0 = 0, v1 = 0, v2 = 0;
+ int v0actual = 0, v1actual = 0, v2actual = 0;
+ int vertexIndex = 0;
+
+ it = earList.begin();
+
+ /* If not found, we should break out of the loop. To be checked. */
+ vertex = find(vertexIndices.begin(), vertexIndices.end(), *it);
+ vertexIndex = *vertex;
+
+ getAdjacentVertices(vertex, pred, succ);
+
+ /* Remove */
+ vertexIndices.remove(*vertex);
+ earList.pop_front();
+
+ numDelEars++;
+
+
+ triIndex = *pred;
+ v0 = triIndex;
+ v1 = vertexIndex;
+ triIndex = *succ;
+ v2 = triIndex;
+
+ v0actual = actualVertexIndices[v0];
+ v1actual = actualVertexIndices[v1];
+ v2actual = actualVertexIndices[v2];
+
+ triangleIndices.push_back(v0actual);
+ triangleIndices.push_back(v1actual);
+ triangleIndices.push_back(v2actual);
+
+ /* Update the predecessor vertex */
+ updateVertex(pred);
+
+ /* Update the successor vertex */
+ updateVertex(succ);
+
+ numSteps++;
+ }
+}
+
+int Triangulator::getNumberTriangles(void)
+{
+ return (int)(triangleIndices.size() / 3);
+}
+
+int* Triangulator::getIndices(void)
+{
+ return &triangleIndices[0];
+}
+
+int Triangulator::getNumberSteps(void)
+{
+ return numSteps;
+}
+
+int Triangulator::getNumberEarTests(void)
+{
+ return numEarTests;
+}
+
+void Triangulator::clear(void)
+{
+ inputPoints.clear();
+ points.clear();
+ numPoints = 0;
+ numInitPoints = 0;
+
+ vertexIndices.clear();
+ actualVertexIndices.clear();
+ earList.clear();
+ convexList.clear();
+ reflexList.clear();
+ flagList.clear();
+ triangleIndices.clear();
+
+ numAddEars = 0;
+ numDelEars = 0;
+ numSteps = 0;
+ numEarTests = 0;
+ numColinearVertices = 0;
+}
+
diff --git a/modules/graphic_objects/src/cpp/createGraphicObject.cpp b/modules/graphic_objects/src/cpp/createGraphicObject.cpp
new file mode 100755
index 000000000..f03007ab6
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/createGraphicObject.cpp
@@ -0,0 +1,303 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+extern "C"
+{
+#include "createGraphicObject.h"
+#include "getScilabJavaVM.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "FigureModel.h"
+#include "AxesModel.h"
+#include "CurrentSubwin.h"
+}
+
+#include "CallGraphicController.hxx"
+#include "CallXmlLoader.hxx"
+#include "Builder.hxx"
+#include "DataController.hxx"
+
+using namespace org_scilab_modules_graphic_objects_builder;
+using namespace org_scilab_modules_graphic_objects;
+
+int createGraphicObject(int _iType)
+{
+ return CallGraphicController::askGraphicObject(getScilabJavaVM(), _iType);
+}
+
+int cloneGraphicObject(int _sId)
+{
+ return CallGraphicController::cloneGraphicObject(getScilabJavaVM(), _sId);
+}
+
+int createDataObject(int _sId, int _iType)
+{
+ return DataController::createDataObject(_sId, _iType);
+}
+
+void buildFigureMenuBar(int _sFigureId)
+{
+ CallGraphicController::buildFigureMenuBar(getScilabJavaVM(), _sFigureId);
+}
+
+int createRect(int iParentsubwinUID, double x, double y, double height, double width, int foreground, int background, int isfilled, int isline)
+{
+ return Builder::createRect(getScilabJavaVM(), iParentsubwinUID, x, y, height, width, foreground, background, isfilled, isline);
+}
+
+int cloneGraphicContext(int sourceIdentifier, int destIdentifier)
+{
+ return Builder::cloneGraphicContext(getScilabJavaVM(), sourceIdentifier, destIdentifier);
+}
+
+int cloneFontContext(int sourceIdentifier, int destIdentifier)
+{
+ return Builder::cloneFontContext(getScilabJavaVM(), sourceIdentifier, destIdentifier);
+}
+
+int createHiddenLabel(int parent)
+{
+ return Builder::createHiddenLabel(getScilabJavaVM(), parent);
+}
+
+BOOL isAxesRedrawing(int subWin)
+{
+ return booltoBOOL(Builder::isAxesRedrawing(getScilabJavaVM(), subWin));
+}
+
+int createLabel(int parent, int type)
+{
+ return Builder::createLabel(getScilabJavaVM(), parent, type);
+}
+
+int createNewFigureWithAxes()
+{
+ int iUserDataSize = 0;
+ int* piUserDataSize = &iUserDataSize;
+ int id = 0;
+ int on = 1;
+ int off = 0;
+
+ id = Builder::createNewFigureWithAxes(getScilabJavaVM());
+
+ //clone user_data is needed
+ getGraphicObjectProperty(getFigureModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
+ if (iUserDataSize != 0)
+ {
+ int* pUserData = NULL;
+ getGraphicObjectProperty(getFigureModel(), __GO_USER_DATA__, jni_int_vector, (void**)&pUserData);
+ setGraphicObjectProperty(id, __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
+ }
+
+ //clone gda user_data is needed
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
+ if (iUserDataSize != 0)
+ {
+ int* pUserData = NULL;
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA__, jni_int_vector, (void**)&pUserData);
+ setGraphicObjectProperty(getCurrentSubWin(), __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
+ }
+
+ setGraphicObjectProperty(id, __GO_MENUBAR_VISIBLE__, (void*)&off, jni_bool, 1);
+ setGraphicObjectProperty(id, __GO_TOOLBAR_VISIBLE__, (void*)&off, jni_bool, 1);
+ setGraphicObjectProperty(id, __GO_INFOBAR_VISIBLE__, (void*)&off, jni_bool, 1);
+
+ setGraphicObjectProperty(id, __GO_MENUBAR_VISIBLE__, (void*)&on, jni_bool, 1);
+ setGraphicObjectProperty(id, __GO_TOOLBAR_VISIBLE__, (void*)&on, jni_bool, 1);
+ setGraphicObjectProperty(id, __GO_INFOBAR_VISIBLE__, (void*)&on, jni_bool, 1);
+
+ return id;
+}
+
+int createFigure(int iDockable, int iMenubarType, int iToolbarType, int iDefaultAxes, int iVisible)
+{
+ int id = 0;
+ int iUserDataSize = 0;
+ int* piUserDataSize = &iUserDataSize;
+
+ id = Builder::createFigure(getScilabJavaVM(), iDockable != 0, iMenubarType, iToolbarType, iDefaultAxes != 0, iVisible != 0);
+
+ //clone gdf user_data is needed
+ getGraphicObjectProperty(getFigureModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
+ if (iUserDataSize != 0)
+ {
+ int* pUserData = NULL;
+ getGraphicObjectProperty(getFigureModel(), __GO_USER_DATA__, jni_int_vector, (void**)&pUserData);
+ setGraphicObjectProperty(id, __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
+ }
+
+ //clone gda user_data is needed
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
+ if (iUserDataSize != 0)
+ {
+ int* pUserData = NULL;
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA__, jni_int_vector, (void**)&pUserData);
+ setGraphicObjectProperty(getCurrentSubWin(), __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
+ }
+
+ return id;
+}
+
+void cloneMenus(int model, int newParent)
+{
+ Builder::cloneMenus(getScilabJavaVM(), model, newParent);
+}
+
+int cloneAxesModel(int parent)
+{
+ int id = Builder::cloneAxesModel(getScilabJavaVM(), parent);
+ int iUserDataSize = 0;
+ int* piUserDataSize = &iUserDataSize;
+
+ //clone user_data is needed
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
+ if (iUserDataSize != 0)
+ {
+ int* pUserData = NULL;
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA__, jni_int_vector, (void**)&pUserData);
+ setGraphicObjectProperty(id, __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
+ }
+
+ return id;
+}
+
+int createSubWin(int parent)
+{
+ int id = 0;
+ int iUserDataSize = 0;
+ int* piUserDataSize = &iUserDataSize;
+
+ id = Builder::createSubWin(getScilabJavaVM(), parent);
+
+ //clone user_data is needed
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA_SIZE__, jni_int, (void**)&piUserDataSize);
+ if (iUserDataSize != 0)
+ {
+ int* pUserData = NULL;
+ getGraphicObjectProperty(getAxesModel(), __GO_USER_DATA__, jni_int_vector, (void**)&pUserData);
+ setGraphicObjectProperty(id, __GO_USER_DATA__, pUserData, jni_int_vector, iUserDataSize);
+ }
+
+ return id;
+}
+
+int createText(int iParentsubwinUID, char** text, int nbRow, int nbCol, double x, double y, BOOL autoSize, double* userSize, int centerPos, int *foreground, int *background, BOOL isboxed, BOOL isline, BOOL isfilled, int align)
+{
+ return Builder::createText(getScilabJavaVM(), iParentsubwinUID, text, nbRow * nbCol, nbRow, nbCol, x, y, autoSize == TRUE,
+ userSize, userSize == NULL ? 0 : 2,
+ centerPos,
+ foreground != NULL ? *foreground : 0, foreground != NULL,
+ background != NULL ? *background : 0, background != NULL,
+ isboxed == TRUE, isline == TRUE, isfilled == TRUE, align);
+}
+
+int createArc(int parent, double x, double y, double h, double w, double start, double end, int* foreground, int* background, BOOL filled, BOOL line)
+{
+ return Builder::createArc(getScilabJavaVM(), parent, x, y, h, w, start, end,
+ foreground != NULL ? *foreground : 0, foreground != NULL,
+ background != NULL ? *background : 0, background != NULL,
+ filled == TRUE, line == TRUE);
+}
+
+int createAxis(int parent, int dir, int tics, double* vx, int nx, double* vy, int ny, int subint, char* format, int fontSize, int textColor, int ticsColor, BOOL seg)
+{
+ return Builder::createAxis(getScilabJavaVM(), parent, dir, tics, vx, nx, vy, ny, subint, format, fontSize, textColor, ticsColor, seg == TRUE);
+}
+
+int createCompound(int parent, int* children, int childrenCount)
+{
+ return Builder::createCompound(getScilabJavaVM(), parent, children, childrenCount);
+}
+
+int createCompoundSeq(int parent, int childrenCount)
+{
+ return Builder::createCompoundSeq(getScilabJavaVM(), parent, childrenCount);
+}
+
+int createFec(int parent, double* zminmax, int zminmaxsize, int* colminmax, int colminmaxSize, int* colout, int coloutSize, BOOL with_mesh)
+{
+ return Builder::createFec(getScilabJavaVM(), parent, zminmax, zminmaxsize, colminmax, colminmaxSize, colout, coloutSize, with_mesh == TRUE);
+}
+
+int createGrayplot(int parent, int type, double* pvecx, int pvecxSize, int n1, int n2)
+{
+ return Builder::createGrayplot(getScilabJavaVM(), parent, type, pvecx, pvecxSize, n1, n2);
+}
+
+int createPolyline(int parent, BOOL closed, int plot, int* foreground, int* background, int backgroundSize,
+ int* mark_style, int* mark_foreground, int* mark_background, BOOL isline, BOOL isfilled, BOOL ismark, BOOL isinterp)
+{
+ bool isForeground = foreground != NULL;
+ bool isMarkStyle = mark_style != NULL;
+ bool isMarkForeground = mark_foreground != NULL;
+ bool isMarkBackground = mark_background != NULL;
+
+ return Builder::createPolyline(getScilabJavaVM(), parent, closed == TRUE, plot,
+ isForeground ? *foreground : 0, isForeground,
+ background, backgroundSize,
+ isMarkStyle ? *mark_style : 0, isMarkStyle,
+ isMarkForeground ? *mark_foreground : 0, isMarkForeground,
+ isMarkBackground ? *mark_background : 0, isMarkBackground,
+ isline == TRUE, isfilled == TRUE, ismark == TRUE, isinterp == TRUE);
+}
+
+int createLegend(int parent, char** text, int iTextSize, int* handles, int iHandlesSize)
+{
+ return Builder::createLegend(getScilabJavaVM(), parent, text, iTextSize, handles, iHandlesSize);
+}
+
+int createSegs(int parent, double* vx, int vxSize, double* vy, int vySize, double* vz, int vzSize, int* style, int styleSize, double arsize)
+{
+ return Builder::createSegs(getScilabJavaVM(), parent, vx, vxSize, vy, vySize, vz, vzSize, vzSize != 0, style, styleSize, arsize);
+}
+
+int createChamp(int parent, double* vx, int vxSize, double* vy, int vySize, double* vfx, int vfxSize, double* vfy, int vfySize, double arsize, BOOL typeofchamp)
+{
+ return Builder::createChamp(getScilabJavaVM(), parent, vx, vxSize, vy, vySize, vfx, vfxSize, vfy, vfySize, arsize, typeofchamp == TRUE);
+}
+
+int createSurface(int parent, int typeof3d, int colorFlag, int colorMode)
+{
+ return Builder::createSurface(getScilabJavaVM(), parent, typeof3d, colorFlag, colorMode);
+}
+
+void initSubWinTo3d(int subwin, char* legend, int* flag, double alpha, double theta,
+ double* ebox, double* x, int xSize, double* y, int ySize, double* z, int zSize)
+{
+ Builder::initSubWinTo3d(getScilabJavaVM(), subwin, legend, legend != NULL, flag, 3, alpha, theta,
+ ebox, 6, x, xSize, y, ySize, z, zSize);
+}
+
+int createLight(int parent, int type, BOOL visible, double* pos, double* dir, double* ambient, double* diffuse, double* specular)
+{
+ return Builder::createLight(getScilabJavaVM(), parent, type, visible == TRUE,
+ pos, pos == NULL ? 0 : 3,
+ dir, dir == NULL ? 0 : 3,
+ ambient, ambient == NULL ? 0 : 3,
+ diffuse, diffuse == NULL ? 0 : 3,
+ specular, specular == NULL ? 0 : 3);
+}
+
+int xmlload(char* xmlfile)
+{
+ return CallXmlLoader::Load(getScilabJavaVM(), xmlfile);
+}
+
+int xmldomload(char* xmlfile)
+{
+ return CallXmlLoader::DomLoad(getScilabJavaVM(), xmlfile);
+}
+
+char* xmlsave(int id, char* xmlfile, BOOL isReverse)
+{
+ return CallXmlLoader::Save(getScilabJavaVM(), id, xmlfile, isReverse == 1);
+}
diff --git a/modules/graphic_objects/src/cpp/createObjectData.cpp b/modules/graphic_objects/src/cpp/createObjectData.cpp
new file mode 100755
index 000000000..c200dd221
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/createObjectData.cpp
@@ -0,0 +1,99 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2012 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+#include <stdio.h>
+#include <string.h>
+
+extern "C"
+{
+#include "createGraphicObject.h"
+#include "deleteGraphicObject.h"
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+
+ int createObject3dData(int obj, int newObj, int type);
+
+}
+/*
+ * Create the data object for the newObj
+ * and copy the data from obj to newObj.
+ */
+int createObject3dData(int obj, int newObj, int type)
+{
+ double *pvecx, *pvecy, *pvecz;
+ int dataObj = 0;
+ int numElementsArray[3];
+ BOOL result;
+ int *ptr;
+
+ dataObj = createDataObject(newObj, type);
+
+ if (dataObj == 0)
+ {
+ return 0;
+ }
+
+
+ if (type == __GO_PLOT3D__ || type == __GO_GRAYPLOT__)
+ {
+ ptr = &numElementsArray[0];
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_NUM_X__, jni_int, (void**)&ptr);
+ ptr = &numElementsArray[1];
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**)&ptr);
+ ptr = &numElementsArray[2];
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_NUM_Z__, jni_int, (void**)&ptr);
+
+ int grid[] = {1, numElementsArray[0], 1, numElementsArray[1]};
+ result = setGraphicObjectProperty(newObj, __GO_DATA_MODEL_GRID_SIZE__, grid, jni_int_vector, 4);
+ }
+ else if (type == __GO_FAC3D__)
+ {
+ int ng = 0, nvg = 0;
+ int *png = &ng, *pnvg = &nvg;
+ int numColors;
+ int *pNumColors = &numColors;
+ double *Colors;
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &png);
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pnvg);
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_NUM_COLORS__, jni_int, (void**)&pNumColors);
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_COLORS__, jni_double_vector, (void**)&Colors);
+
+ numElementsArray[0] = numElementsArray[1] = numElementsArray[2] = ng * nvg;
+
+ int elements[] = {ng, nvg, numColors};
+ result = setGraphicObjectProperty(newObj, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &elements, jni_int_vector, 3);
+ setGraphicObjectProperty(newObj, __GO_DATA_MODEL_COLORS__, Colors, jni_double_vector, numColors);
+ }
+ else
+ {
+ return 0;
+ }
+
+
+ if (result == 0)
+ {
+ deleteDataObject(dataObj);
+ return 0;
+ }
+
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&pvecx);
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_Y__, jni_double_vector, (void**)&pvecy);
+ getGraphicObjectProperty(obj, __GO_DATA_MODEL_Z__, jni_double_vector, (void**)&pvecz);
+
+ setGraphicObjectProperty(newObj, __GO_DATA_MODEL_X__, pvecx, jni_double_vector, numElementsArray[0]);
+ setGraphicObjectProperty(newObj, __GO_DATA_MODEL_Y__, pvecy, jni_double_vector, numElementsArray[1]);
+ setGraphicObjectProperty(newObj, __GO_DATA_MODEL_Z__, pvecz, jni_double_vector, numElementsArray[2]);
+
+ return dataObj;
+}
diff --git a/modules/graphic_objects/src/cpp/dataModel.cpp b/modules/graphic_objects/src/cpp/dataModel.cpp
new file mode 100755
index 000000000..55317ad04
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/dataModel.cpp
@@ -0,0 +1,125 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+#include "DataModel.hxx"
+
+extern "C" {
+#include "BOOL.h"
+
+#include <string.h>
+}
+
+DataModel *DataModel::m_me = NULL;
+
+BOOL DataModel::setGraphicObjectProperty(int iUID, int _iName, void const* _dblValue, int numElements)
+{
+ Data3D* dataObject = NULL;
+ int property = 0;
+ int returnValue = 0;
+
+ dataObject = (*m_dataMap)[iUID];
+ if (dataObject == NULL)
+ {
+ return FALSE;
+ }
+
+ property = dataObject->getPropertyFromName(_iName);
+
+ if (property == UNKNOWN_DATA_PROPERTY)
+ {
+ return FALSE;
+ }
+
+ returnValue = dataObject->setDataProperty(property, _dblValue, numElements);
+
+ return (BOOL) returnValue;
+}
+
+void DataModel::getGraphicObjectProperty(int iUID, int _iName, void **_pvData)
+{
+ Data3D* dataObject = NULL;
+ int property = 0;
+
+ dataObject = (*m_dataMap)[iUID];
+
+ if (dataObject == NULL)
+ {
+ *_pvData = NULL;
+ return;
+ }
+
+ property = dataObject->getPropertyFromName(_iName);
+ if (property == UNKNOWN_DATA_PROPERTY)
+ {
+ *_pvData = NULL;
+ return;
+ }
+
+ dataObject->getDataProperty(property, _pvData);
+}
+
+int DataModel::createDataObject(int iUID, int _iType)
+{
+ Data3D* newObject = NULL;
+
+ /*
+ * To be implemented as the Java graphicObject class' similar function
+ * (getTypeFromName) in order to avoid strcmp calls.
+ */
+
+ switch (_iType)
+ {
+ case __GO_GRAYPLOT__ :
+ newObject = new NgonGridData();
+ break;
+ case __GO_MATPLOT__ :
+ newObject = new NgonGridMatplotData();
+ break;
+ case __GO_FAC3D__ :
+ newObject = new NgonGeneralData();
+ break;
+ case __GO_PLOT3D__ :
+ newObject = new NgonGridData();
+ break;
+ case __GO_POLYLINE__ :
+ newObject = new NgonPolylineData();
+ break;
+ case __GO_FEC__ :
+ newObject = new MeshFecData();
+ break;
+ default :
+ return 0;
+ }
+
+ (*m_dataMap)[iUID] = newObject;
+
+ return iUID;
+}
+
+void DataModel::deleteDataObject(int iUID)
+{
+ std::map<int, Data3D*>::iterator it = m_dataMap->find(iUID);
+ if (it != m_dataMap->end() && it->second != NULL)
+ {
+ delete it->second;
+ m_dataMap->erase(it);
+ }
+
+ /*Data3D* newObject = (*m_dataMap)[std::string(_pstID)];
+ if (newObject != NULL)
+ {
+ delete newObject;
+ }
+
+ m_dataMap->erase(std::string(_pstID));*/
+}
+
diff --git a/modules/graphic_objects/src/cpp/deleteGraphicObject.cpp b/modules/graphic_objects/src/cpp/deleteGraphicObject.cpp
new file mode 100755
index 000000000..6c7f8991f
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/deleteGraphicObject.cpp
@@ -0,0 +1,33 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+extern "C"
+{
+#include "deleteGraphicObject.h"
+#include "getScilabJavaVM.h"
+}
+
+#include "CallGraphicController.hxx"
+#include "DataController.hxx"
+
+using namespace org_scilab_modules_graphic_objects;
+
+void deleteGraphicObject(int iUID)
+{
+ CallGraphicController::removeRelationShipAndDelete(getScilabJavaVM(), iUID);
+}
+
+void deleteDataObject(int iUID)
+{
+ DataController::deleteDataObject(iUID);
+}
+
diff --git a/modules/graphic_objects/src/cpp/getConsoleIdentifier.cpp b/modules/graphic_objects/src/cpp/getConsoleIdentifier.cpp
new file mode 100755
index 000000000..a7042714e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/getConsoleIdentifier.cpp
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+extern "C"
+{
+#include "getScilabJavaVM.h"
+#include "getConsoleIdentifier.h"
+}
+
+#include "CallGraphicController.hxx"
+
+using namespace org_scilab_modules_graphic_objects;
+
+int getConsoleIdentifier()
+{
+ return CallGraphicController::getConsoleIdentifier(getScilabJavaVM());
+}
diff --git a/modules/graphic_objects/src/cpp/getGraphicObjectProperty.cpp b/modules/graphic_objects/src/cpp/getGraphicObjectProperty.cpp
new file mode 100755
index 000000000..da730e600
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/getGraphicObjectProperty.cpp
@@ -0,0 +1,292 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+extern "C"
+{
+#include <stdlib.h>
+#include <string.h>
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "getScilabJavaVM.h"
+#include <stdio.h>
+}
+
+#include "CallGraphicController.hxx"
+#include "DataController.hxx"
+#include "ScilabView.hxx"
+
+using namespace org_scilab_modules_graphic_objects;
+
+void getGraphicObjectProperty(int iUID, int _iName, _ReturnType_ _returnType, void **_pvData)
+{
+ // do not perform anything if the id is undefined
+ if (iUID == 0)
+ {
+ return;
+ }
+
+ switch (_iName)
+ {
+ case __GO_USER_DATA__ :
+ {
+ *_pvData = ScilabView::getUserdata(iUID);
+ break;
+ }
+ case __GO_USER_DATA_SIZE__ :
+ {
+ ((int *)*_pvData)[0] = ScilabView::getUserdataSize(iUID);
+ break;
+ }
+
+ /* All the Data model properties have the DATA_MODEL prefix */
+ case __GO_DATA_MODEL__ :
+ case __GO_DATA_MODEL_COORDINATES__ :
+ case __GO_DATA_MODEL_X__ :
+ case __GO_DATA_MODEL_Y__ :
+ case __GO_DATA_MODEL_Z__ :
+ case __GO_DATA_MODEL_X_COORDINATES_SHIFT__ :
+ case __GO_DATA_MODEL_Y_COORDINATES_SHIFT__ :
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ :
+ case __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__ :
+ case __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__ :
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__ :
+ case __GO_DATA_MODEL_NUM_ELEMENTS__ :
+ case __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ :
+ case __GO_DATA_MODEL_NUM_VERTICES_PER_GON__ :
+ case __GO_DATA_MODEL_NUM_GONS__ :
+ case __GO_DATA_MODEL_Z_COORDINATES_SET__ :
+ case __GO_DATA_MODEL_COLORS__ :
+ case __GO_DATA_MODEL_NUM_COLORS__ :
+ case __GO_DATA_MODEL_NUM_VERTICES__ :
+ case __GO_DATA_MODEL_NUM_INDICES__ :
+ case __GO_DATA_MODEL_INDICES__ :
+ case __GO_DATA_MODEL_VALUES__ :
+ case __GO_DATA_MODEL_FEC_ELEMENTS__ :
+ case __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ :
+ case __GO_DATA_MODEL_NUM_X__ :
+ case __GO_DATA_MODEL_NUM_Y__ :
+ case __GO_DATA_MODEL_NUM_Z__ :
+ case __GO_DATA_MODEL_GRID_SIZE__ :
+ case __GO_DATA_MODEL_X_DIMENSIONS__ :
+ case __GO_DATA_MODEL_Y_DIMENSIONS__ :
+ case __GO_DATA_MODEL_MATPLOT_BOUNDS__ :
+ case __GO_DATA_MODEL_MATPLOT_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ :
+ case __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ :
+ case __GO_DATA_MODEL_MATPLOT_GL_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ :
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ :
+ case __GO_DATA_MODEL_DISPLAY_FUNCTION__ :
+ case __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ :
+ {
+ DataController::getGraphicObjectProperty(iUID, _iName, _pvData);
+ break;
+ }
+ default : //property in Java Model
+ {
+ try
+ {
+ switch (_returnType)
+ {
+ case jni_string:
+ {
+ *(_pvData) = CallGraphicController::getGraphicObjectPropertyAsString(getScilabJavaVM(), iUID, _iName);
+ return;
+ }
+ case jni_string_vector:
+ {
+ *_pvData = CallGraphicController::getGraphicObjectPropertyAsStringVector(getScilabJavaVM(), iUID, _iName);
+ return;
+ }
+ case jni_double:
+ {
+ double * ret = CallGraphicController::getGraphicObjectPropertyAsDoubleVector(getScilabJavaVM(), iUID, _iName);
+ if (ret == NULL)
+ {
+ *_pvData = NULL;
+ }
+ else
+ {
+ ((double *)*_pvData)[0] = *ret;
+ delete[] ret;
+ }
+
+ return;
+ }
+ case jni_double_vector:
+ {
+ *_pvData = CallGraphicController::getGraphicObjectPropertyAsDoubleVector(getScilabJavaVM(), iUID, _iName);
+ return;
+ }
+ case jni_bool:
+ {
+ int * ret = CallGraphicController::getGraphicObjectPropertyAsBooleanVector(getScilabJavaVM(), iUID, _iName);
+ if (ret == NULL)
+ {
+ *_pvData = NULL;
+ }
+ else
+ {
+ ((int *)*_pvData)[0] = *ret;
+ delete[] ret;
+ }
+
+ return;
+ }
+ case jni_bool_vector:
+ {
+ *_pvData = CallGraphicController::getGraphicObjectPropertyAsBooleanVector(getScilabJavaVM(), iUID, _iName);
+ return;
+ }
+ case jni_int:
+ {
+ int * ret = CallGraphicController::getGraphicObjectPropertyAsIntegerVector(getScilabJavaVM(), iUID, _iName);
+ if (ret == NULL)
+ {
+ *_pvData = NULL;
+ }
+ else
+ {
+ ((int *)*_pvData)[0] = *ret;
+ delete[] ret;
+ }
+
+ return;
+ }
+ case jni_int_vector:
+ {
+ *_pvData = CallGraphicController::getGraphicObjectPropertyAsIntegerVector(getScilabJavaVM(), iUID, _iName);
+ return;
+ }
+ default:
+ *_pvData = NULL;
+ return;
+ }
+ }
+ catch (std::exception &e)
+ {
+ e.what();
+ // If we have an exception, return null to scilab to manage error.
+ *_pvData = NULL;
+ return;
+ }
+ }
+ }
+
+ return;
+}
+
+
+void releaseGraphicObjectProperty(int _iName, void * _pvData, enum _ReturnType_ _returnType, int numElements)
+{
+
+ /* All the Data model properties have the DATA_MODEL prefix */
+ if (_iName == __GO_DATA_MODEL__
+ || _iName == __GO_DATA_MODEL_COORDINATES__
+ || _iName == __GO_DATA_MODEL_X__
+ || _iName == __GO_DATA_MODEL_Y__
+ || _iName == __GO_DATA_MODEL_Z__
+ || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT__
+ || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT__
+ || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT__
+ || _iName == __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__
+ || _iName == __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__
+ || _iName == __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__
+ || _iName == __GO_DATA_MODEL_NUM_ELEMENTS__
+ || _iName == __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__
+ || _iName == __GO_DATA_MODEL_NUM_VERTICES_PER_GON__
+ || _iName == __GO_DATA_MODEL_NUM_GONS__
+ || _iName == __GO_DATA_MODEL_Z_COORDINATES_SET__
+ || _iName == __GO_DATA_MODEL_COLORS__
+ || _iName == __GO_DATA_MODEL_NUM_COLORS__
+ || _iName == __GO_DATA_MODEL_NUM_VERTICES__
+ || _iName == __GO_DATA_MODEL_NUM_INDICES__
+ || _iName == __GO_DATA_MODEL_INDICES__
+ || _iName == __GO_DATA_MODEL_VALUES__
+ || _iName == __GO_DATA_MODEL_FEC_ELEMENTS__
+ || _iName == __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__
+ || _iName == __GO_DATA_MODEL_NUM_X__
+ || _iName == __GO_DATA_MODEL_NUM_Y__
+ || _iName == __GO_DATA_MODEL_NUM_Z__
+ || _iName == __GO_DATA_MODEL_GRID_SIZE__
+ || _iName == __GO_DATA_MODEL_X_DIMENSIONS__
+ || _iName == __GO_DATA_MODEL_Y_DIMENSIONS__
+ || _iName == __GO_DATA_MODEL_MATPLOT_BOUNDS__
+ || _iName == __GO_DATA_MODEL_MATPLOT_TYPE__
+ || _iName == __GO_DATA_MODEL_MATPLOT_DATA_INFOS__
+ || _iName == __GO_DATA_MODEL_MATPLOT_DATA_TYPE__
+ || _iName == __GO_DATA_MODEL_MATPLOT_DATA_ORDER__
+ || _iName == __GO_DATA_MODEL_MATPLOT_GL_TYPE__
+ || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__
+ || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__
+ || _iName == __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__
+ )
+ {
+ // passed by reference, do not free them
+ return;
+ }
+
+ switch (_returnType)
+ {
+ case jni_string:
+ {
+ delete[] (char*) _pvData;
+ return;
+ }
+ case jni_string_vector:
+ {
+ char** data = (char**) _pvData;
+ for (int i = 0; i < numElements; ++i)
+ {
+ delete[] data[i];
+ }
+ delete[] data;
+ return;
+ }
+ case jni_double:
+ {
+ // passed by value
+ return;
+ }
+ case jni_double_vector:
+ {
+ delete[] (double*) _pvData;
+ return;
+ }
+ case jni_bool:
+ {
+ // passed by value
+ return;
+ }
+ case jni_bool_vector:
+ {
+ delete[] (int*) _pvData;
+ return;
+ }
+ case jni_int:
+ {
+ // passed by value
+ return;
+ }
+ case jni_int_vector:
+ {
+ delete[] (int*) _pvData;
+ return;
+ }
+ default:
+ return;
+ }
+
+}
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-AxesModel.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-AxesModel.lo
new file mode 100755
index 000000000..ba71048df
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-AxesModel.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-AxesModel.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-AxesModel.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-ColorComputer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-ColorComputer.lo
new file mode 100755
index 000000000..04d0aa8db
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-ColorComputer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-ColorComputer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-ColorComputer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentFigure.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentFigure.lo
new file mode 100755
index 000000000..927ab19d1
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentFigure.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-CurrentFigure.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-CurrentFigure.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentObject.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentObject.lo
new file mode 100755
index 000000000..8a507deea
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentObject.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-CurrentObject.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-CurrentObject.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentSubwin.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentSubwin.lo
new file mode 100755
index 000000000..d054acbf8
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-CurrentSubwin.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-CurrentSubwin.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-CurrentSubwin.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Data3D.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Data3D.lo
new file mode 100755
index 000000000..7212564b8
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Data3D.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-Data3D.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Data3D.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-DataLoader.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-DataLoader.lo
new file mode 100755
index 000000000..a039fed44
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-DataLoader.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-DataLoader.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-DataLoader.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-DecompositionUtils.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-DecompositionUtils.lo
new file mode 100755
index 000000000..80a3d994e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-DecompositionUtils.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-DecompositionUtils.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-DecompositionUtils.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo
new file mode 100755
index 000000000..e9d8c0618
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-Fac3DColorComputer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Fac3DColorComputer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo
new file mode 100755
index 000000000..2ba85ef6b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-Fac3DDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Fac3DDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureList.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureList.lo
new file mode 100755
index 000000000..1ecdbfe16
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureList.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-FigureList.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-FigureList.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureModel.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureModel.lo
new file mode 100755
index 000000000..d3a59f82b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-FigureModel.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-FigureModel.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-FigureModel.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-HandleManagement.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-HandleManagement.lo
new file mode 100755
index 000000000..4cfc2f47f
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-HandleManagement.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-HandleManagement.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-HandleManagement.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo
new file mode 100755
index 000000000..8a5d75b9b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-MatPlotDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-MatPlotDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshData.lo
new file mode 100755
index 000000000..28c78973d
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-MeshData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-MeshData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecData.lo
new file mode 100755
index 000000000..3f8b92684
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-MeshFecData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-MeshFecData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo
new file mode 100755
index 000000000..a7c121ec7
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-MeshFecDataDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-MeshFecDataDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonData.lo
new file mode 100755
index 000000000..e4932b580
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGeneralData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGeneralData.lo
new file mode 100755
index 000000000..155e68245
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGeneralData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonGeneralData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonGeneralData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridData.lo
new file mode 100755
index 000000000..814f9a033
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonGridData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonGridData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo
new file mode 100755
index 000000000..242e46ef6
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonGridDataDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonGridDataDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo
new file mode 100755
index 000000000..70a870e00
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonGridGrayplotDataDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo
new file mode 100755
index 000000000..c97585e55
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonGridMatplotData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonGridMatplotData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo
new file mode 100755
index 000000000..0964d1d74
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonGridMatplotDataDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonPolylineData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonPolylineData.lo
new file mode 100755
index 000000000..fccdc033b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NgonPolylineData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NgonPolylineData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NgonPolylineData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NormalGenerator.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NormalGenerator.lo
new file mode 100755
index 000000000..00b8996c5
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-NormalGenerator.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-NormalGenerator.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-NormalGenerator.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo
new file mode 100755
index 000000000..09f35bdd2
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-Plot3DDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Plot3DDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo
new file mode 100755
index 000000000..897395b50
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-PolylineDecomposer.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-PolylineDecomposer.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-ScilabView.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-ScilabView.lo
new file mode 100755
index 000000000..c3c53b3e6
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-ScilabView.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-ScilabView.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-ScilabView.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Texture.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Texture.lo
new file mode 100755
index 000000000..64055a65b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Texture.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-Texture.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Texture.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Triangulator.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Triangulator.lo
new file mode 100755
index 000000000..7f5de8a88
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-Triangulator.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-Triangulator.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Triangulator.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-createGraphicObject.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-createGraphicObject.lo
new file mode 100755
index 000000000..db6845aae
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-createGraphicObject.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-createGraphicObject.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-createGraphicObject.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-createObjectData.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-createObjectData.lo
new file mode 100755
index 000000000..d9457b6f2
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-createObjectData.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-createObjectData.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-createObjectData.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-dataModel.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-dataModel.lo
new file mode 100755
index 000000000..03ae3d2c0
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-dataModel.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-dataModel.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-dataModel.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo
new file mode 100755
index 000000000..207d7e76f
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-deleteGraphicObject.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-deleteGraphicObject.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo
new file mode 100755
index 000000000..8ab1cdfca
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-getConsoleIdentifier.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-getConsoleIdentifier.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo
new file mode 100755
index 000000000..173342237
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-getGraphicObjectProperty.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-getGraphicObjectProperty.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-pickSurface.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-pickSurface.lo
new file mode 100755
index 000000000..53ee0c699
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-pickSurface.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-pickSurface.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-pickSurface.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo
new file mode 100755
index 000000000..5c2e8637e
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo
@@ -0,0 +1,12 @@
+# src/cpp/libscigraphic_objects_la-setGraphicObjectProperty.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-setGraphicObjectProperty.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/cpp/pickSurface.cpp b/modules/graphic_objects/src/cpp/pickSurface.cpp
new file mode 100755
index 000000000..e1150a820
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/pickSurface.cpp
@@ -0,0 +1,347 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2012 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+extern "C"
+{
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+
+#include "getGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+
+ double pickSurface(int uid, double x, double y, double z, double dx, double dy, double dz, double mx, double my, double mz, double mw);
+
+}
+
+#define EPS 1e-8
+
+class Vec3
+{
+public:
+ double x, y, z;
+
+ Vec3(): x(0), y(0), z(0) {}
+ Vec3(double _x, double _y, double _z): x(_x), y(_y), z(_z) {}
+
+ Vec3 operator - (Vec3 v)
+ {
+ return Vec3( x - v.x, y - v.y, z - v.z );
+ }
+
+ Vec3 operator + (Vec3 v)
+ {
+ return Vec3( x + v.x, y + v.y, z + v.z );
+ }
+
+ Vec3 operator * (double s)
+ {
+ return Vec3( x * s, y * s, z * s );
+ }
+
+ Vec3 operator / (double s)
+ {
+ return Vec3( x / s, y / s, z / s );
+ }
+
+ double dot(Vec3 v)
+ {
+ return x * v.x + y * v.y + z * v.z;
+ }
+
+ Vec3 cross(Vec3 v)
+ {
+ return Vec3(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x);
+ }
+
+ Vec3& normalize()
+ {
+ double d = sqrt(this->dot(*this));
+ if (d < EPS)
+ {
+ x = y = z = 0;
+ }
+ else
+ {
+ x /= d;
+ y /= d;
+ z /= d;
+ }
+ return *this;
+ }
+
+ Vec3 getNormalized()
+ {
+ Vec3 n = Vec3(x, y, z);
+ return n.normalize();
+ }
+
+ void print()
+ {
+ printf("\nv = %.8f, %.8f, %.8f", x, y, z);
+ }
+};
+
+int test_tri(Vec3 V1, Vec3 V2, Vec3 V3, Vec3 Dir, Vec3 P0, Vec3 &ret);
+void QuadTestAndSaveZ(double *bounds, Vec3 P0, Vec3 P1, Vec3 P2, Vec3 P3, Vec3 direction, Vec3 point,
+ double mx, double my, double mz, double mw, double &retZ);
+
+/*
+ * Given a ray (point(x, y,z) + direction(dx, dy, dz))
+ * check if the ray intersects any triangle from the given surface.
+ * returns the projected Z from the intersection point (p) (p.x*mx + p.y*my + p.z*mz + mw;)
+ * or 2.0 if there isn't intersection (projected z vary between -1.0 - 1.0).
+ */
+
+double pickSurface(int uid, double x, double y, double z, double dx, double dy, double dz, double mx, double my, double mz, double mw)
+{
+ double* X = NULL;
+ double* Y = NULL;
+ double* Z = NULL;
+
+ int type;
+ int * pType = &type;
+ double lastZ = 2.0;
+
+ Vec3 direction = Vec3(dx, dy, dz);
+ Vec3 point = Vec3(x, y, z);
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &X);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &Y);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &Z);
+
+
+
+ int axes_uid = 0;
+ int * paxes_uid = &axes_uid;
+ int zoom_enabled = 0;
+ int *ptr = &zoom_enabled;
+ double *bounds;
+ getGraphicObjectProperty(uid, __GO_PARENT_AXES__, jni_int, (void**) &paxes_uid);
+ getGraphicObjectProperty(axes_uid, __GO_ZOOM_ENABLED__, jni_bool, (void**) &ptr);
+
+ if (zoom_enabled)
+ {
+ getGraphicObjectProperty(axes_uid, __GO_ZOOM_BOX__, jni_double_vector, (void**) &bounds);
+ }
+ else
+ {
+ getGraphicObjectProperty(axes_uid, __GO_DATA_BOUNDS__, jni_double_vector, (void**) &bounds);
+ }
+
+
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+ if (type == __GO_PLOT3D__)
+ {
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* for each quad in the mesh separate it in 2 triangles
+ * and use test_tri function to test intersection from
+ * mouse click ray
+ * A point (x, y, z) at (n,m) is given by
+ * (X[n], Y[m], Z[n][m]) where X, Y are vectors and Z a matrix.
+ */
+ for (int i = 0; i < (numX - 1); ++i)
+ {
+ for (int j = 0; j < (numY - 1); ++j)
+ {
+ Vec3 P0 = Vec3(X[i], Y[j], Z[i + j * numX]);
+ Vec3 P1 = Vec3(X[i + 1], Y[j], Z[(i + 1) + j * numX]);
+ Vec3 P2 = Vec3(X[i + 1], Y[j + 1], Z[(i + 1) + (j + 1) * numX]);
+ Vec3 P3 = Vec3(X[i], Y[j + 1], Z[i + (j + 1) * numX]);
+
+ QuadTestAndSaveZ(bounds, P0, P1, P2, P3, direction, point, mx, my, mz, mw, lastZ);
+ }
+ }
+ }
+ else if (type == __GO_FAC3D__)
+ {
+ int ng = 0, nvg = 0;
+ int *png = &ng, *pnvg = &nvg;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &png);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pnvg);
+
+ if (nvg != 4)
+ {
+ return 2.0;
+ }
+
+ /*
+ * Fac3d data model is made by gons
+ * each gon should be a quad
+ * ordered in the vector
+ * X = [ p1, p2, p3, p4, p1, p2, p3, p4, ...]
+ * Y = [ p1, p2, p3, p4, p1, p2, p3, p4, ...]
+ * Z = [ p1, p2, p3, p4, p1, p2, p3, p4, ...]
+ * where a point is given by (x, y, z)
+ */
+ for (int i = 0; i < ng * nvg; i += nvg)
+ {
+ Vec3 P0 = Vec3(X[i], Y[i], Z[i]);
+ Vec3 P1 = Vec3(X[i + 1], Y[i + 1], Z[i + 1]);
+ Vec3 P2 = Vec3(X[i + 2], Y[i + 2], Z[i + 2]);
+ Vec3 P3 = Vec3(X[i + 3], Y[i + 3], Z[i + 3]);
+
+ QuadTestAndSaveZ(bounds, P0, P1, P2, P3, direction, point, mx, my, mz, mw, lastZ);
+ }
+ }
+ if (type == __GO_GRAYPLOT__)
+ {
+
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ /* Gray plot is a plane with Z = 0 and bounds = {x[0], x[n-1], y[0], y[m-1]}
+ * where n = size of vector x and m = size of vector y
+ */
+
+ Vec3 P0 = Vec3(X[0], Y[0], 0);
+ Vec3 P1 = Vec3(X[numX - 1], Y[0], 0);
+ Vec3 P2 = Vec3(X[numX - 1], Y[numY - 1], 0);
+ Vec3 P3 = Vec3(X[0], Y[numY - 1], 0);
+
+ QuadTestAndSaveZ(bounds, P0, P1, P2, P3, direction, point, mx, my, mz, mw, lastZ);
+ }
+ if (type == __GO_MATPLOT__)
+ {
+ double* scale = NULL;
+ double* translate = NULL;
+ double zShift = 0.;
+ double* pdZShift = &zShift;
+ double mbounds[4];
+ int numX = 0;
+ int* piNumX = &numX;
+ int numY = 0;
+ int* piNumY = &numY;
+
+ getGraphicObjectProperty(uid, __GO_MATPLOT_SCALE__, jni_double_vector, (void**) &scale);
+ getGraphicObjectProperty(uid, __GO_MATPLOT_TRANSLATE__, jni_double_vector, (void**) &translate);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double, (void**) &pdZShift);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &piNumX);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &piNumY);
+
+ mbounds[0] = translate[0];
+ mbounds[1] = translate[1];
+ mbounds[2] = mbounds[0] + (numX - 1) * scale[0];
+ mbounds[3] = mbounds[1] + (numY - 1) * scale[1];
+
+ Vec3 P0 = Vec3(mbounds[0], mbounds[1], zShift);
+ Vec3 P1 = Vec3(mbounds[2], mbounds[1], zShift);
+ Vec3 P2 = Vec3(mbounds[2], mbounds[3], zShift);
+ Vec3 P3 = Vec3(mbounds[0], mbounds[3], zShift);
+
+ QuadTestAndSaveZ(bounds, P0, P1, P2, P3, direction, point, mx, my, mz, mw, lastZ);
+ }
+ return lastZ;
+
+}
+
+/*
+ * Test if the ray intersects the given triangle (V1, V2, V3)
+ * Fast, minimum storage ray/triangle intersection
+ * algorithm propose by Tomas Möller and Ben Trumbore.
+ * Calculate barycentric cordinates (u, v) and test if
+ * 0 <= u <= 1 && 0 <= v <= 1 && (u + v) <= 1, then the
+ * intersection point is inside the triangle.
+ */
+int test_tri(Vec3 V1, Vec3 V2, Vec3 V3, Vec3 Dir, Vec3 P0, Vec3 &ret)
+{
+ Vec3 Edge1, Edge2, tVec, pVec, qVec;
+ double det, inv_det, t, u, v;
+
+ Edge1 = V2 - V1;
+ Edge2 = V3 - V1;
+
+ pVec = Dir.cross(Edge2);
+ det = Edge1.dot(pVec);
+
+ if (det > -EPS && det < EPS)
+ {
+ return 0;
+ }
+
+ inv_det = 1 / det;
+
+ tVec = P0 - V1;
+ u = tVec.dot(pVec) * inv_det;
+
+ if (u < 0.0 || u > 1.0)
+ {
+ return 0;
+ }
+
+ qVec = tVec.cross(Edge1);
+ v = Dir.dot(qVec) * inv_det;
+
+ if (v < 0.0 || (u + v) > 1.0)
+ {
+ return 0;
+ }
+
+ t = Edge2.dot(qVec) * inv_det;
+ ret = P0 + Dir * t;
+
+
+ return 1;
+}
+
+bool isInViewBox(double * bounds, Vec3 point)
+{
+ return (bounds[0] <= point.x && bounds[1] >= point.x &&
+ bounds[2] <= point.y && bounds[3] >= point.y &&
+ bounds[4] <= point.z && bounds[5] >= point.z);
+}
+
+void QuadTestAndSaveZ(double *bounds, Vec3 P0, Vec3 P1, Vec3 P2, Vec3 P3, Vec3 direction, Vec3 point,
+ double mx, double my, double mz, double mw, double &retZ)
+{
+ Vec3 ret;
+
+ /*test first triangle*/
+ if (test_tri(P0, P1, P2, direction, point, ret) == 1)
+ {
+ /*the intersection point can be outside the view box(invisible)*/
+ if (isInViewBox(bounds, ret))
+ {
+ /* ray intersects the triangle, then we project only the Z cordinate
+ * and store the nearest projected Z.
+ */
+ double curZ = ret.x * mx + ret.y * my + ret.z * mz + mw;
+ retZ = retZ < curZ ? retZ : curZ;
+ }
+ }
+ /*test second triangle*/
+ if (test_tri(P0, P2, P3, direction, point, ret) == 1)
+ {
+ if (isInViewBox(bounds, ret))
+ {
+ double curZ = ret.x * mx + ret.y * my + ret.z * mz + mw;
+ retZ = retZ < curZ ? retZ : curZ;
+ }
+ }
+}
+
+
+
+
diff --git a/modules/graphic_objects/src/cpp/setGraphicObjectProperty.cpp b/modules/graphic_objects/src/cpp/setGraphicObjectProperty.cpp
new file mode 100755
index 000000000..ea6fdbd1b
--- /dev/null
+++ b/modules/graphic_objects/src/cpp/setGraphicObjectProperty.cpp
@@ -0,0 +1,163 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+extern "C"
+{
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "getScilabJavaVM.h"
+
+#include <stdio.h>
+#include <string.h>
+}
+
+#include "CallGraphicController.hxx"
+#include "DataController.hxx"
+#include "ScilabView.hxx"
+
+using namespace org_scilab_modules_graphic_objects;
+
+void setGraphicObjectRelationship(int _parentId, int _childId)
+{
+ // do not perform anything if the id is undefined
+ if (_parentId == 0 || _childId == 0)
+ {
+ return;
+ }
+
+ CallGraphicController::setGraphicObjectRelationship(getScilabJavaVM(), _parentId, _childId);
+}
+
+BOOL setGraphicObjectProperty(int _iID, int _iName, void const* _pvValue, _ReturnType_ _valueType, int numElements)
+{
+ return setGraphicObjectPropertyAndWarn(_iID, _iName, _pvValue, _valueType, numElements, 1);
+}
+
+BOOL setGraphicObjectPropertyAndNoWarn(int _iID, int _iName, void const* _pvValue, _ReturnType_ _valueType, int numElements)
+{
+ return setGraphicObjectPropertyAndWarn(_iID, _iName, _pvValue, _valueType, numElements, 0);
+}
+
+BOOL setGraphicObjectPropertyAndWarn(int _iID, int _iName, void const* _pvValue, _ReturnType_ _valueType, int numElements, int warnJava)
+{
+ bool result = false;
+
+ double doubleValue = 0.;
+ int intValue = 0;
+ BOOL boolValue = FALSE;
+
+ // do not perform anything if the id is undefined
+ if (_iID == 0)
+ {
+ return FALSE;
+ }
+
+ switch (_iName)
+ {
+ case __GO_USER_DATA__ :
+ {
+ ScilabView::setUserdata(_iID, (int*) _pvValue, numElements);
+ return TRUE;
+ }
+ case __GO_DATA_MODEL__ :
+ case __GO_DATA_MODEL_COORDINATES__ :
+ case __GO_DATA_MODEL_X__ :
+ case __GO_DATA_MODEL_Y__ :
+ case __GO_DATA_MODEL_Z__ :
+ case __GO_DATA_MODEL_X_COORDINATES_SHIFT__ :
+ case __GO_DATA_MODEL_Y_COORDINATES_SHIFT__ :
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ :
+ case __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__ :
+ case __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__ :
+ case __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__ :
+ case __GO_DATA_MODEL_NUM_ELEMENTS__ :
+ case __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ :
+ case __GO_DATA_MODEL_NUM_VERTICES_PER_GON__ :
+ case __GO_DATA_MODEL_NUM_GONS__ :
+ case __GO_DATA_MODEL_Z_COORDINATES_SET__ :
+ case __GO_DATA_MODEL_COLORS__ :
+ case __GO_DATA_MODEL_NUM_COLORS__ :
+ case __GO_DATA_MODEL_NUM_VERTICES__ :
+ case __GO_DATA_MODEL_NUM_INDICES__ :
+ case __GO_DATA_MODEL_INDICES__ :
+ case __GO_DATA_MODEL_VALUES__ :
+ case __GO_DATA_MODEL_FEC_ELEMENTS__ :
+ case __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ :
+ case __GO_DATA_MODEL_NUM_X__ :
+ case __GO_DATA_MODEL_NUM_Y__ :
+ case __GO_DATA_MODEL_NUM_Z__ :
+ case __GO_DATA_MODEL_GRID_SIZE__ :
+ case __GO_DATA_MODEL_X_DIMENSIONS__ :
+ case __GO_DATA_MODEL_Y_DIMENSIONS__ :
+ case __GO_DATA_MODEL_MATPLOT_BOUNDS__ :
+ case __GO_DATA_MODEL_MATPLOT_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ :
+ case __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ :
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ :
+ case __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ :
+ case __GO_DATA_MODEL_DISPLAY_FUNCTION__ :
+ {
+ BOOL bFalse = FALSE;
+ BOOL bTrue = TRUE;
+ BOOL res;
+ setGraphicObjectProperty(_iID, __GO_VALID__, &bFalse, jni_bool, 1);
+ res = DataController::setGraphicObjectProperty(_iID, _iName, _pvValue, numElements);
+ setGraphicObjectProperty(_iID, __GO_VALID__, &bTrue, jni_bool, 1);
+ if ((res || _iName == __GO_DATA_MODEL__) && warnJava)
+ {
+ ///printf("debug property value=%d\n",_iName);
+ CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, __GO_DATA_MODEL__, _iID);
+ }
+ return res;
+ }
+ default :
+ {
+ switch (_valueType)
+ {
+ case jni_string :
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (char *)_pvValue);
+ break;
+
+ case jni_string_vector :
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (char**)_pvValue, numElements);
+ break;
+ case jni_double :
+ doubleValue = *(double*)_pvValue;
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (double)doubleValue);
+ break;
+ case jni_double_vector :
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (double*)_pvValue, numElements);
+ break;
+ case jni_int :
+ intValue = *(int*)_pvValue;
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (int)intValue);
+ break;
+ case jni_int_vector :
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (int*)_pvValue, numElements);
+ break;
+ case jni_bool :
+ boolValue = *(BOOL*)_pvValue;
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, BOOLtobool(boolValue));
+ break;
+ case jni_bool_vector :
+ result = CallGraphicController::setGraphicObjectProperty(getScilabJavaVM(), _iID, _iName, (bool*)_pvValue, numElements);
+ break;
+ default :
+ /* Do Nothing */
+ break;
+ }
+ }
+ }
+ return booltoBOOL(result);
+}
+
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallGraphicController.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallGraphicController.java
new file mode 100755
index 000000000..4101995fe
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallGraphicController.java
@@ -0,0 +1,195 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicView.ScilabView;
+import org.scilab.modules.graphic_objects.utils.MenuBarBuilder;
+
+/**
+ * This is a static class to access all controller capabilities
+ * from C/C++ code through JNI
+ * See SCI/modules/graphic_objects/src/jni/graphic_objects.giws.xml for other details.
+ **/
+public final class CallGraphicController {
+
+ public static void setGraphicObjectRelationship(int parentId, int childId) {
+ GraphicController.getController().setGraphicObjectRelationship(parentId, childId);
+ }
+
+ public static void removeRelationShipAndDelete(int parentId) {
+ GraphicController.getController().removeRelationShipAndDelete(parentId);
+ }
+
+ public static int cloneGraphicObject(int id) {
+ return GraphicController.getController().cloneObject(id);
+ }
+
+ public static int askGraphicObject(int typeName) {
+ return GraphicController.getController().askObject(GraphicObject.getTypeFromName(typeName));
+ }
+
+ public static void deleteGraphicObject(int id) {
+ GraphicController.getController().deleteObject(id);
+ }
+
+ private static boolean setGraphicObjectProperty(int id, int propertyName, Object value) {
+ return GraphicController.getController().setProperty(id, propertyName, value);
+ }
+
+ private static Object getGraphicObjectProperty(int id, int propertyName) {
+ return GraphicController.getController().getProperty(id, propertyName);
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, String value) {
+ return setGraphicObjectProperty(id, propertyName, (Object) value);
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, String[] value) {
+ return setGraphicObjectProperty(id, propertyName, (Object) value);
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, double value) {
+ return setGraphicObjectProperty(id, propertyName, (Object) new Double(value));
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, double[] value) {
+ Double[] array = new Double[value.length];
+
+ for (int i = 0; i < value.length; i++) {
+ array[i] = value[i];
+ }
+
+ return setGraphicObjectProperty(id, propertyName, (Object) array);
+ }
+
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, int value) {
+ return setGraphicObjectProperty(id, propertyName, (Object) new Integer(value));
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, int[] value) {
+ Integer[] array = new Integer[value.length];
+
+ for (int i = 0; i < value.length; i++) {
+ array[i] = value[i];
+ }
+
+ return setGraphicObjectProperty(id, propertyName, (Object) array);
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, boolean value) {
+ return setGraphicObjectProperty(id, propertyName, (Object) new Boolean(value));
+ }
+
+ public static boolean setGraphicObjectProperty(int id, int propertyName, boolean[] value) {
+ Boolean[] array = new Boolean[value.length];
+
+ for (int i = 0; i < value.length; i++) {
+ array[i] = value[i];
+ }
+
+ return setGraphicObjectProperty(id, propertyName, (Object) array);
+ }
+
+ public static String getGraphicObjectPropertyAsString(int id, int propertyName) {
+ return (String) getGraphicObjectProperty(id, propertyName);
+ }
+
+ public static String[] getGraphicObjectPropertyAsStringVector(int id, int propertyName) {
+ return (String[]) getGraphicObjectProperty(id, propertyName);
+ }
+
+ public static double[] getGraphicObjectPropertyAsDoubleVector(int id, int propertyName) {
+ Object ret = getGraphicObjectProperty(id, propertyName);
+ double[] result = null;
+
+ if (ret == null) {
+ return null;
+ }
+
+ if (ret instanceof Double[]) {
+ Double[] tmp = (Double[]) ret;
+ result = new double[tmp.length];
+
+ for (int i = 0; i < result.length; i++) {
+ result[i] = tmp[i];
+ }
+ } else if (ret instanceof Double) {
+ result = new double[] { (Double) ret};
+ }
+
+ return result;
+ }
+
+ public static int[] getGraphicObjectPropertyAsIntegerVector(int id, int propertyName) {
+ Object ret = getGraphicObjectProperty(id, propertyName);
+ int[] result = null;
+
+ if (ret == null) {
+ return null;
+ }
+
+ if (ret instanceof Integer[]) {
+ Integer[] tmp = (Integer[]) ret;
+ result = new int[tmp.length];
+
+ for (int i = 0; i < result.length; i++) {
+ result[i] = tmp[i] == null ? 0 : tmp[i];
+ }
+ } else if (ret instanceof Integer) {
+ result = new int[] { (Integer) ret};
+ }
+
+ return result;
+ }
+
+ public static int[] getGraphicObjectPropertyAsBooleanVector(int id, int propertyName) {
+ Object ret = getGraphicObjectProperty(id, propertyName);
+ int[] result = null;
+
+ if (ret == null) {
+ return null;
+ }
+
+ if (ret instanceof Boolean[]) {
+ Boolean[] tmp = (Boolean[]) getGraphicObjectProperty(id, propertyName);
+ result = new int[tmp.length];
+ for (int i = 0; i < result.length; i++) {
+ result[i] = tmp[i] ? 1 : 0;
+ }
+ } else if (ret instanceof Boolean) {
+ result = new int[] { ((Boolean) ret) ? 1 : 0};
+ }
+
+ return result;
+ }
+
+ public static void registerScilabView() {
+ GraphicController.getController().register(ScilabView.getScilabView());
+ }
+
+ public static void unregisterScilabView() {
+ GraphicController.getController().unregister(ScilabView.getScilabView());
+ }
+
+ public static int getConsoleIdentifier() {
+ return Console.getConsole().getIdentifier();
+ }
+
+ public static void buildFigureMenuBar(int figureId) {
+ MenuBarBuilder.buildFigureMenuBar(figureId);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallXmlLoader.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallXmlLoader.java
new file mode 100755
index 000000000..d53e53ad0
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/CallXmlLoader.java
@@ -0,0 +1,23 @@
+package org.scilab.modules.graphic_objects;
+
+import org.scilab.modules.graphic_objects.xmlloader.XMLDomLoader;
+import org.scilab.modules.graphic_objects.xmlloader.XmlLoader;
+import org.scilab.modules.graphic_objects.xmlloader.XmlSaver;
+import org.xml.sax.SAXException;
+
+public class CallXmlLoader {
+
+ public static int Load(String filename) throws SAXException {
+ XmlLoader loader = new XmlLoader(filename);
+ return loader.parse();
+ }
+
+ public static int DomLoad(String filename) throws SAXException {
+ XMLDomLoader loader = new XMLDomLoader(filename);
+ return loader.parse();
+ }
+
+ public static String Save(int figure, String filename, boolean reverseChildren) {
+ return XmlSaver.save(figure, filename, reverseChildren);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoader.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoader.java
new file mode 100755
index 000000000..85e5c1ad8
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoader.java
@@ -0,0 +1,131 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class DataLoader {
+ public static int getTextureWidth(int id) {
+ return DataLoaderJNI.getTextureWidth(id);
+ }
+
+ public static int getTextureHeight(int id) {
+ return DataLoaderJNI.getTextureHeight(id);
+ }
+
+ public static int fillTextureData(int id, java.nio.ByteBuffer buffer, int bufferLength) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ return DataLoaderJNI.fillTextureData(id, buffer, bufferLength);
+ }
+ }
+
+ public static int fillSubTextureData(int id, java.nio.ByteBuffer buffer, int bufferLength, int x, int y, int width, int height) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ return DataLoaderJNI.fillSubTextureData(id, buffer, bufferLength, x, y, width, height);
+ }
+ }
+
+ public static int getDataSize(int id) {
+ return DataLoaderJNI.getDataSize(id);
+ }
+
+ public static void fillVertices(int id, java.nio.FloatBuffer buffer, int bufferLength, int elementsSize, int coordinateMask, double[] scale, double[] translation, int logMask) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ DataLoaderJNI.fillVertices(id, buffer, bufferLength, elementsSize, coordinateMask, scale, translation, logMask);
+ }
+ }
+
+ public static void fillNormals(int id, java.nio.FloatBuffer position, java.nio.FloatBuffer buffer, int bufferLength, int elementsSize) {
+ assert position.isDirect() : "Buffer must be allocated direct.";
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ DataLoaderJNI.fillNormals(id, position, buffer, bufferLength, elementsSize);
+ }
+ }
+
+ public static void fillColors(int id, java.nio.FloatBuffer buffer, int bufferLength, int elementsSize) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ DataLoaderJNI.fillColors(id, buffer, bufferLength, elementsSize);
+ }
+ }
+
+ public static void fillTextureCoordinates(int id, java.nio.FloatBuffer buffer, int bufferLength) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ DataLoaderJNI.fillTextureCoordinates(id, buffer, bufferLength);
+ }
+ }
+
+ public static int getIndicesSize(int id) {
+ return DataLoaderJNI.getIndicesSize(id);
+ }
+
+ public static int fillIndices(int id, java.nio.IntBuffer buffer, int bufferLength, int logMask) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ return DataLoaderJNI.fillIndices(id, buffer, bufferLength, logMask);
+ }
+ }
+
+ public static int getWireIndicesSize(int id) {
+ return DataLoaderJNI.getWireIndicesSize(id);
+ }
+
+ public static int fillWireIndices(int id, java.nio.IntBuffer buffer, int bufferLength, int logMask) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ return DataLoaderJNI.fillWireIndices(id, buffer, bufferLength, logMask);
+ }
+ }
+
+ public static int getMarkIndicesSize(int id) {
+ return DataLoaderJNI.getMarkIndicesSize(id);
+ }
+
+ public static int fillMarkIndices(int id, java.nio.IntBuffer buffer, int bufferLength) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ return DataLoaderJNI.fillMarkIndices(id, buffer, bufferLength);
+ }
+ }
+
+ public static java.nio.ByteBuffer getTextureData(int id) {
+ return DataLoaderJNI.getTextureData(id);
+ }
+
+ public static int getTextureImageType(int id) {
+ return DataLoaderJNI.getTextureImageType(id);
+ }
+
+ public static int getTextureDataType(int id) {
+ return DataLoaderJNI.getTextureDataType(id);
+ }
+
+ public static int getTextureGLType(int id) {
+ return DataLoaderJNI.getTextureGLType(id);
+ }
+
+ public static void disposeTextureData(int id, java.nio.ByteBuffer buffer) {
+ assert buffer.isDirect() : "Buffer must be allocated direct.";
+ {
+ DataLoaderJNI.disposeTextureData(id, buffer);
+ }
+ }
+
+ public static int isTextureRowOrder(int id) {
+ return DataLoaderJNI.isTextureRowOrder(id);
+ }
+
+ public static void setABGRExt(int isAvailable) {
+ DataLoaderJNI.setABGRExt(isAvailable);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoaderJNI.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoaderJNI.java
new file mode 100755
index 000000000..2c12aca42
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/DataLoaderJNI.java
@@ -0,0 +1,44 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class DataLoaderJNI {
+
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+
+ public final static native int getTextureWidth(int jarg1);
+ public final static native int getTextureHeight(int jarg1);
+ public final static native int fillTextureData(int jarg1, java.nio.ByteBuffer jarg2, int jarg3);
+ public final static native int fillSubTextureData(int jarg1, java.nio.ByteBuffer jarg2, int jarg3, int jarg4, int jarg5, int jarg6, int jarg7);
+ public final static native int getDataSize(int jarg1);
+ public final static native void fillVertices(int jarg1, java.nio.FloatBuffer jarg2, int jarg3, int jarg4, int jarg5, double[] jarg6, double[] jarg7, int jarg8);
+ public final static native void fillNormals(int jarg1, java.nio.FloatBuffer jarg2, java.nio.FloatBuffer jarg3, int jarg4, int jarg5);
+ public final static native void fillColors(int jarg1, java.nio.FloatBuffer jarg2, int jarg3, int jarg4);
+ public final static native void fillTextureCoordinates(int jarg1, java.nio.FloatBuffer jarg2, int jarg3);
+ public final static native int getIndicesSize(int jarg1);
+ public final static native int fillIndices(int jarg1, java.nio.IntBuffer jarg2, int jarg3, int jarg4);
+ public final static native int getWireIndicesSize(int jarg1);
+ public final static native int fillWireIndices(int jarg1, java.nio.IntBuffer jarg2, int jarg3, int jarg4);
+ public final static native int getMarkIndicesSize(int jarg1);
+ public final static native int fillMarkIndices(int jarg1, java.nio.IntBuffer jarg2, int jarg3);
+ public final static native java.nio.ByteBuffer getTextureData(int jarg1);
+ public final static native int getTextureImageType(int jarg1);
+ public final static native int getTextureDataType(int jarg1);
+ public final static native int getTextureGLType(int jarg1);
+ public final static native void disposeTextureData(int jarg1, java.nio.ByteBuffer jarg2);
+ public final static native int isTextureRowOrder(int jarg1);
+ public final static native void setABGRExt(int jarg1);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/JavaObjectLoader.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/JavaObjectLoader.java
new file mode 100755
index 000000000..ce89b65b7
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/JavaObjectLoader.java
@@ -0,0 +1,191 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects;
+
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.arc.ArcDecomposer;
+import org.scilab.modules.graphic_objects.vectfield.ChampDecomposer;
+import org.scilab.modules.graphic_objects.rectangle.RectangleDecomposer;
+import org.scilab.modules.graphic_objects.vectfield.SegsDecomposer;
+
+/**
+ * Class JavaObjectLoader
+ * A set of methods used to load the data of purely Java-based objects.
+ * @author Manuel JULIACHS
+ */
+public class JavaObjectLoader {
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param the id of the given object.
+ * @return the number of data elements.
+ */
+ public static int getDataSize(Integer id) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+ switch (type) {
+ case GraphicObjectProperties.__GO_ARC__ :
+ return ArcDecomposer.getDataSize();
+ case GraphicObjectProperties.__GO_CHAMP__ :
+ return ChampDecomposer.getDataSize(id);
+ case GraphicObjectProperties.__GO_RECTANGLE__ :
+ return RectangleDecomposer.getDataSize();
+ case GraphicObjectProperties.__GO_SEGS__ :
+ return SegsDecomposer.getDataSize(id);
+ default :
+ return 0;
+ }
+ }
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param the id of the given object.
+ * @param the buffer to fill.
+ * @param the number of coordinates taken by one element in the buffer.
+ * @param the bit mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param the conversion scale factor to apply to data.
+ * @param the conversion translation value to apply to data.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ */
+ public static void fillVertices(Integer id, FloatBuffer buffer, int elementsSize,
+ int coordinateMask, double[] scale, double[] translation, int logMask) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ switch (type) {
+ case GraphicObjectProperties.__GO_ARC__ :
+ ArcDecomposer.fillVertices(buffer, id, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case GraphicObjectProperties.__GO_CHAMP__ :
+ ChampDecomposer.fillVertices(buffer, id, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case GraphicObjectProperties.__GO_RECTANGLE__ :
+ RectangleDecomposer.fillVertices(buffer, id, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ case GraphicObjectProperties.__GO_SEGS__ :
+ SegsDecomposer.fillVertices(buffer, id, elementsSize, coordinateMask, scale, translation, logMask);
+ break;
+ }
+ }
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * Does nothing at the moment (no color-outputting Java objects implemented so far).
+ * @param the id of the given object.
+ * @param the buffer to fill.
+ * @param the number of components taken by one element in the buffer (3 or 4).
+ */
+ public static void fillColors(Integer id, FloatBuffer buffer, int elementsSize) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == GraphicObjectProperties.__GO_CHAMP__) {
+ ChampDecomposer.fillColors(buffer, id, elementsSize);
+ } else if (type == GraphicObjectProperties.__GO_SEGS__) {
+ SegsDecomposer.fillColors(buffer, id, elementsSize);
+ }
+ }
+
+ /**
+ * Returns the number of indices for the given object.
+ * @param the id of the given object.
+ * @return the object's number of indices.
+ */
+ public static int getIndicesSize(Integer id) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ switch (type) {
+ case GraphicObjectProperties.__GO_ARC__ :
+ return ArcDecomposer.getIndicesSize();
+ case GraphicObjectProperties.__GO_CHAMP__ :
+ return ChampDecomposer.getIndicesSize(id);
+ case GraphicObjectProperties.__GO_RECTANGLE__ :
+ return RectangleDecomposer.getIndicesSize();
+ case GraphicObjectProperties.__GO_SEGS__ :
+ return SegsDecomposer.getIndicesSize(id);
+ default :
+ return 0;
+ }
+ }
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param the id of the given object.
+ * @param the buffer to fill.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillIndices(Integer id, IntBuffer buffer, int logMask) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ switch (type) {
+ case GraphicObjectProperties.__GO_ARC__ :
+ return ArcDecomposer.fillIndices(buffer, id, logMask);
+ case GraphicObjectProperties.__GO_CHAMP__ :
+ return ChampDecomposer.fillIndices(buffer, id, logMask);
+ case GraphicObjectProperties.__GO_RECTANGLE__ :
+ return RectangleDecomposer.fillIndices(buffer, id, logMask);
+ case GraphicObjectProperties.__GO_SEGS__ :
+ return SegsDecomposer.fillIndices(buffer, id, logMask);
+ default :
+ return 0;
+ }
+ }
+
+ /**
+ * Returns the number of wireframe indices of the given object.
+ * @param the id of the given object.
+ * @return the object's number of indices.
+ */
+ public static int getWireIndicesSize(Integer id) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ switch (type) {
+ case GraphicObjectProperties.__GO_ARC__ :
+ return ArcDecomposer.getWireIndicesSize();
+ case GraphicObjectProperties.__GO_CHAMP__ :
+ return ChampDecomposer.getWireIndicesSize(id);
+ case GraphicObjectProperties.__GO_RECTANGLE__ :
+ return RectangleDecomposer.getWireIndicesSize();
+ case GraphicObjectProperties.__GO_SEGS__ :
+ return SegsDecomposer.getWireIndicesSize(id);
+ default :
+ return 0;
+ }
+ }
+
+ /**
+ * Fills the given buffer with wireframe index data of the given object.
+ * @param the id of the given object.
+ * @param the buffer to fill.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillWireIndices(Integer id, IntBuffer buffer, int logMask) {
+ int type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ switch (type) {
+ case GraphicObjectProperties.__GO_ARC__ :
+ return ArcDecomposer.fillWireIndices(buffer, id, logMask);
+ case GraphicObjectProperties.__GO_CHAMP__ :
+ return ChampDecomposer.fillWireIndices(buffer, id, logMask);
+ case GraphicObjectProperties.__GO_RECTANGLE__ :
+ return RectangleDecomposer.fillWireIndices(buffer, id, logMask);
+ case GraphicObjectProperties.__GO_SEGS__ :
+ return SegsDecomposer.fillWireIndices(buffer, id, logMask);
+ default :
+ return 0;
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/MainDataLoader.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/MainDataLoader.java
new file mode 100755
index 000000000..da7ac9b4e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/MainDataLoader.java
@@ -0,0 +1,344 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects;
+
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+
+import java.nio.ByteBuffer;
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Class MainDataLoader
+ * A utility class used to switch to the appropriate data loading class
+ * depending on the type of the object whose data is loaded. A class is used
+ * for purely Java-based objects and another one is used to load the data
+ * of data model (i.e. C++-based) objects.
+ * @author Manuel JULIACHS
+ */
+public class MainDataLoader {
+
+ /**
+ * The names of Java-based objects.
+ */
+ private static final Set<Integer> JAVA_OBJECTS = new HashSet<Integer>(Arrays.asList(
+ GraphicObjectProperties.__GO_ARC__,
+ GraphicObjectProperties.__GO_CHAMP__,
+ GraphicObjectProperties.__GO_RECTANGLE__,
+ GraphicObjectProperties.__GO_SEGS__
+ ));
+
+ /**
+ * Returns the data width for the given object.
+ * @param id of the given object.
+ * @return the data width.
+ */
+ public static int getTextureWidth(Integer id) {
+ return DataLoader.getTextureWidth(id);
+ }
+
+ /**
+ * Returns the data height for the given object.
+ * @param id of the given object.
+ * @return the data height.
+ */
+ public static int getTextureHeight(Integer id) {
+ return DataLoader.getTextureHeight(id);
+ }
+
+ /**
+ * Returns the data for the given object.
+ * @param id of the given object.
+ * @return the data.
+ */
+ public static ByteBuffer getTextureData(Integer id) {
+ return DataLoader.getTextureData(id);
+ }
+
+ /**
+ * Returns the data for the given object.
+ * @param id of the given object.
+ * @return the data.
+ */
+ public static boolean isTextureRowOrder(Integer id) {
+ return DataLoader.isTextureRowOrder(id) != 0;
+ }
+
+ /**
+ * Returns the data for the given object.
+ * @param id of the given object.
+ * @return the data.
+ */
+ public static void disposeTextureData(Integer id, ByteBuffer buffer) {
+ DataLoader.disposeTextureData(id, buffer);
+ }
+
+ /**
+ * Returns the image type of the texture data.
+ * 0 for RGB, 1 for RGBA, 2 for GRAY.
+ * @param id of the given object.
+ * @return the image type.
+ */
+ public static int getTextureImageType(Integer id) {
+ return DataLoader.getTextureImageType(id);
+ }
+
+ /**
+ * Returns the image type of the texture data.
+ * 0 for RGB, 1 for RGBA, 2 for GRAY.
+ * @param id of the given object.
+ * @return the image type.
+ */
+ public static int getTextureDataType(Integer id) {
+ return DataLoader.getTextureDataType(id);
+ }
+
+ /**
+ * Returns the image type of the texture data.
+ * 0 for RGB, 1 for RGBA, 2 for GRAY.
+ * @param id of the given object.
+ * @return the image type.
+ */
+ public static int getTextureGLType(Integer id) {
+ return DataLoader.getTextureGLType(id);
+ }
+
+ public static void fillTextureCoordinates(Integer id, FloatBuffer buffer, int bufferLength) {
+ DataLoader.fillTextureCoordinates(id, buffer, bufferLength);
+ }
+
+ public static void fillTextureData(Integer id, ByteBuffer buffer, int bufferLength) {
+ DataLoader.fillTextureData(id, buffer, bufferLength);
+ }
+
+ public static void fillTextureData(Integer identifier, ByteBuffer buffer, int bufferLength, int x, int y, int width, int height) {
+ DataLoader.fillSubTextureData(identifier, buffer, bufferLength, x, y, width, height);
+ }
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param id id of the given object.
+ * @return the number of data elements.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static int getDataSize(Integer id) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ return JavaObjectLoader.getDataSize(id);
+ } else {
+ return DataLoader.getDataSize(id);
+ }
+ }
+
+ /**
+ * Fills the given buffer with vertex data from the given object.
+ * @param id id of the given object.
+ * @param buffer buffer to fill.
+ * @param elementsSize number of coordinates taken by one element in the buffer.
+ * @param coordinateMask bit mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param scale conversion scale factor to apply to data.
+ * @param translation conversion translation value to apply to data.
+ * @param logMask bit mask specifying whether logarithmic coordinates are used.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static void fillVertices(Integer id, FloatBuffer buffer, int elementsSize,
+ int coordinateMask, double[] scale, double[] translation, int logMask) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ JavaObjectLoader.fillVertices(id, buffer, elementsSize, coordinateMask, scale, translation, logMask);
+ } else {
+ DataLoader.fillVertices(id, buffer, buffer.capacity(), elementsSize, coordinateMask, scale, translation, logMask);
+ }
+ }
+
+ /**
+ * Fills the given buffer with normal data from the given object.
+ * @param id id of the given object.
+ * @param position buffer with vertex position data.
+ * @param buffer buffer to fill.
+ * @param elementsSize number of coordinates taken by one element in the buffer.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static void fillNormals(Integer id, FloatBuffer position, FloatBuffer buffer, int elementsSize) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+ DataLoader.fillNormals(id, position, buffer, buffer.capacity(), elementsSize);
+ }
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param id id of the given object.
+ * @param buffer buffer to fill.
+ * @param elementsSize number of components taken by one element in the buffer (3 or 4).
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static void fillColors(Integer id, FloatBuffer buffer, int elementsSize) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ JavaObjectLoader.fillColors(id, buffer, elementsSize);
+ } else {
+ DataLoader.fillColors(id, buffer, buffer.capacity(), elementsSize);
+ }
+ }
+
+ /**
+ * Returns the number of indices for the given object.
+ * @param id id of the given object.
+ * @return the object's number of indices.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static int getIndicesSize(Integer id) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ return JavaObjectLoader.getIndicesSize(id);
+ } else {
+ return DataLoader.getIndicesSize(id);
+ }
+ }
+
+ /**
+ * Fills the given buffer with indices data of the given object.
+ * @param id id of the given object.
+ * @param buffer buffer to fill.
+ * @param logMask bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static int fillIndices(Integer id, IntBuffer buffer, int logMask) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ return JavaObjectLoader.fillIndices(id, buffer, logMask);
+ } else {
+ return DataLoader.fillIndices(id, buffer, buffer.capacity(), logMask);
+ }
+ }
+
+ /**
+ * Returns the number of wire-frame indices of the given object.
+ * @param id id of the given object.
+ * @return the object's number of indices.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static int getWireIndicesSize(Integer id) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ return JavaObjectLoader.getWireIndicesSize(id);
+ } else {
+ return DataLoader.getWireIndicesSize(id);
+ }
+ }
+
+ /**
+ * Fills the given buffer with wire-frame index data of the given object.
+ * @param id id of the given object.
+ * @param buffer buffer to fill.
+ * @param logMask bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ * @throws ObjectRemovedException if the object no longer exist.
+ */
+ public static int fillWireIndices(Integer id, IntBuffer buffer, int logMask) throws ObjectRemovedException {
+ Integer type = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_TYPE__);
+
+ if (type == null) {
+ throw (new ObjectRemovedException(id));
+ }
+
+ if (JAVA_OBJECTS.contains(type)) {
+ return JavaObjectLoader.fillWireIndices(id, buffer, logMask);
+ } else {
+ return DataLoader.fillWireIndices(id, buffer, buffer.capacity(), logMask);
+ }
+ }
+
+ /**
+ * Returns the number of mark indices of the given object.
+ * To implement.
+ * @param id id of the given object.
+ * @return the number of mark indices.
+ */
+ public static int getMarkIndicesSize(String id) {
+ return 0;
+ }
+
+ /**
+ * Fills the given buffer with mark index data of the given object.
+ * To implement.
+ * @param id id of the given object.
+ * @param buffer buffer to fill.
+ * @return the number of indices actually written.
+ */
+ public static int fillMarkIndices(String id, IntBuffer buffer) {
+ return 0;
+ }
+
+ public static int getLogMask(Integer id) {
+ try {
+ GraphicObject object = GraphicController.getController().getObjectFromId(id);
+ Integer parentAxesId = object.getParentAxes();
+ Axes axes = (Axes) GraphicController.getController().getObjectFromId(parentAxesId);
+ int mask = 0;
+ if (axes.getXAxisLogFlag()) {
+ mask += 1;
+ }
+ if (axes.getYAxisLogFlag()) {
+ mask += 2;
+ }
+ if (axes.getZAxisLogFlag()) {
+ mask += 4;
+ }
+ return mask;
+ } catch (Exception ignored) {
+ return 0;
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectData.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectData.java
new file mode 100755
index 000000000..fa03ad5d5
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectData.java
@@ -0,0 +1,48 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class ObjectData {
+ public static Object getChampX(int uid) {
+ return ObjectDataJNI.getChampX(uid);
+ }
+
+ public static Object getChampY(int uid) {
+ return ObjectDataJNI.getChampY(uid);
+ }
+
+ public static Object getArrows(int uid) {
+ return ObjectDataJNI.getArrows(uid);
+ }
+
+ public static Object getSegsData(int uid) {
+ return ObjectDataJNI.getSegsData(uid);
+ }
+
+ public static Object getFecElements(int uid) {
+ return ObjectDataJNI.getFecElements(uid);
+ }
+
+ public static Object getFecData(int uid) {
+ return ObjectDataJNI.getFecData(uid);
+ }
+
+ public static Object getArcUpperLeftPoint(int uid) {
+ return ObjectDataJNI.getArcUpperLeftPoint(uid);
+ }
+
+ public static Object getArcData(int uid) {
+ return ObjectDataJNI.getArcData(uid);
+ }
+
+ public static int getFecNumVerticesByElement(int uid) {
+ return ObjectDataJNI.getFecNumVerticesByElement(uid);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectDataJNI.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectDataJNI.java
new file mode 100755
index 000000000..e4c7e5192
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectDataJNI.java
@@ -0,0 +1,31 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class ObjectDataJNI {
+
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+
+ public final static native Object getChampX(int jarg1);
+ public final static native Object getChampY(int jarg1);
+ public final static native Object getArrows(int jarg1);
+ public final static native Object getSegsData(int jarg1);
+ public final static native Object getFecElements(int jarg1);
+ public final static native Object getFecData(int jarg1);
+ public final static native Object getArcUpperLeftPoint(int jarg1);
+ public final static native Object getArcData(int jarg1);
+ public final static native int getFecNumVerticesByElement(int jarg1);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectRemovedException.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectRemovedException.java
new file mode 100755
index 000000000..53bfd7603
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ObjectRemovedException.java
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - ScilabEnterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects;
+
+public class ObjectRemovedException extends Exception {
+ private static final long serialVersionUID = -5447310699942928356L;
+
+ private Integer objectId;
+
+ public ObjectRemovedException(Integer objectId) {
+ this.objectId = objectId;
+ }
+
+ public String getMessage() {
+ return "ObjectRemoved Exception: Object " + objectId.toString() + "has been deleted from model";
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineData.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineData.java
new file mode 100755
index 000000000..00fb05c6e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineData.java
@@ -0,0 +1,76 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.10
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class PolylineData {
+ public static Object getDataX(int uid) {
+ return PolylineDataJNI.getDataX(uid);
+ }
+
+ public static Object getDataY(int uid) {
+ return PolylineDataJNI.getDataY(uid);
+ }
+
+ public static Object getDataZ(int uid) {
+ return PolylineDataJNI.getDataZ(uid);
+ }
+
+ public static Object getShiftX(int uid) {
+ return PolylineDataJNI.getShiftX(uid);
+ }
+
+ public static Object getShiftY(int uid) {
+ return PolylineDataJNI.getShiftY(uid);
+ }
+
+ public static Object getShiftZ(int uid) {
+ return PolylineDataJNI.getShiftZ(uid);
+ }
+
+ public static int isZCoordSet(int uid) {
+ return PolylineDataJNI.isZCoordSet(uid);
+ }
+
+ public static int isXShiftSet(int uid) {
+ return PolylineDataJNI.isXShiftSet(uid);
+ }
+
+ public static int isYShiftSet(int uid) {
+ return PolylineDataJNI.isYShiftSet(uid);
+ }
+
+ public static int isZShiftSet(int uid) {
+ return PolylineDataJNI.isZShiftSet(uid);
+ }
+
+ public static int createPolylineData(int uidFrom, int uidTo) {
+ return PolylineDataJNI.createPolylineData(uidFrom, uidTo);
+ }
+
+ public static int translatePolyline(int uid, double x, double y, double z, int flagX, int flagY, int flagZ) {
+ return PolylineDataJNI.translatePolyline(uid, x, y, z, flagX, flagY, flagZ);
+ }
+
+ public static int translatePoint(int uid, int index, double x, double y, double z, int flagX, int flagY, int flagZ) {
+ return PolylineDataJNI.translatePoint(uid, index, x, y, z, flagX, flagY, flagZ);
+ }
+
+ public static int setPointValue(int uid, int index, double x, double y, double z) {
+ return PolylineDataJNI.setPointValue(uid, index, x, y, z);
+ }
+
+ public static int insertPoint(int uid, int index, double x, double y, double z) {
+ return PolylineDataJNI.insertPoint(uid, index, x, y, z);
+ }
+
+ public static int removePoint(int uid, int index) {
+ return PolylineDataJNI.removePoint(uid, index);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineDataJNI.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineDataJNI.java
new file mode 100755
index 000000000..5ce15c314
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/PolylineDataJNI.java
@@ -0,0 +1,38 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.10
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class PolylineDataJNI {
+
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+
+ public final static native Object getDataX(int jarg1);
+ public final static native Object getDataY(int jarg1);
+ public final static native Object getDataZ(int jarg1);
+ public final static native Object getShiftX(int jarg1);
+ public final static native Object getShiftY(int jarg1);
+ public final static native Object getShiftZ(int jarg1);
+ public final static native int isZCoordSet(int jarg1);
+ public final static native int isXShiftSet(int jarg1);
+ public final static native int isYShiftSet(int jarg1);
+ public final static native int isZShiftSet(int jarg1);
+ public final static native int createPolylineData(int jarg1, int jarg2);
+ public final static native int translatePolyline(int jarg1, double jarg2, double jarg3, double jarg4, int jarg5, int jarg6, int jarg7);
+ public final static native int translatePoint(int jarg1, int jarg2, double jarg3, double jarg4, double jarg5, int jarg6, int jarg7, int jarg8);
+ public final static native int setPointValue(int jarg1, int jarg2, double jarg3, double jarg4, double jarg5);
+ public final static native int insertPoint(int jarg1, int jarg2, double jarg3, double jarg4, double jarg5);
+ public final static native int removePoint(int jarg1, int jarg2);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeView.java
new file mode 100755
index 000000000..f012956a5
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeView.java
@@ -0,0 +1,44 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.11
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class ScilabNativeView {
+ public static void ScilabNativeView__createObject(int id) {
+ ScilabNativeViewJNI.ScilabNativeView__createObject(id);
+ }
+
+ public static void ScilabNativeView__deleteObject(int id) {
+ ScilabNativeViewJNI.ScilabNativeView__deleteObject(id);
+ }
+
+ public static void ScilabNativeView__updateObject(int id, int iProperty) {
+ ScilabNativeViewJNI.ScilabNativeView__updateObject(id, iProperty);
+ }
+
+ public static void ScilabNativeView__setCurrentFigure(int id) {
+ ScilabNativeViewJNI.ScilabNativeView__setCurrentFigure(id);
+ }
+
+ public static void ScilabNativeView__setCurrentSubWin(int id) {
+ ScilabNativeViewJNI.ScilabNativeView__setCurrentSubWin(id);
+ }
+
+ public static void ScilabNativeView__setCurrentObject(int id) {
+ ScilabNativeViewJNI.ScilabNativeView__setCurrentObject(id);
+ }
+
+ public static int ScilabNativeView__getValidDefaultFigureId() {
+ return ScilabNativeViewJNI.ScilabNativeView__getValidDefaultFigureId();
+ }
+
+ public static int ScilabNativeView__getFigureFromIndex(int figNum) {
+ return ScilabNativeViewJNI.ScilabNativeView__getFigureFromIndex(figNum);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.java
new file mode 100755
index 000000000..740f7b2be
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/ScilabNativeViewJNI.java
@@ -0,0 +1,30 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.11
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class ScilabNativeViewJNI {
+
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+
+ public final static native void ScilabNativeView__createObject(int jarg1);
+ public final static native void ScilabNativeView__deleteObject(int jarg1);
+ public final static native void ScilabNativeView__updateObject(int jarg1, int jarg2);
+ public final static native void ScilabNativeView__setCurrentFigure(int jarg1);
+ public final static native void ScilabNativeView__setCurrentSubWin(int jarg1);
+ public final static native void ScilabNativeView__setCurrentObject(int jarg1);
+ public final static native int ScilabNativeView__getValidDefaultFigureId();
+ public final static native int ScilabNativeView__getFigureFromIndex(int jarg1);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceData.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceData.java
new file mode 100755
index 000000000..84a13e43e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceData.java
@@ -0,0 +1,32 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class SurfaceData {
+ public static Object getSurfDataX(int uid) {
+ return SurfaceDataJNI.getSurfDataX(uid);
+ }
+
+ public static Object getSurfDataY(int uid) {
+ return SurfaceDataJNI.getSurfDataY(uid);
+ }
+
+ public static Object getSurfDataZ(int uid) {
+ return SurfaceDataJNI.getSurfDataZ(uid);
+ }
+
+ public static int createObject3dData(int obj, int newObj, int type) {
+ return SurfaceDataJNI.createObject3dData(obj, newObj, type);
+ }
+
+ public static double pickSurface(int uid, double x, double y, double z, double dx, double dy, double dz, double mx, double my, double mz, double mw) {
+ return SurfaceDataJNI.pickSurface(uid, x, y, z, dx, dy, dz, mx, my, mz, mw);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceDataJNI.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceDataJNI.java
new file mode 100755
index 000000000..98449a029
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/SurfaceDataJNI.java
@@ -0,0 +1,27 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * Do not make changes to this file unless you know what you are doing--modify
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+package org.scilab.modules.graphic_objects;
+
+public class SurfaceDataJNI {
+
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+
+ public final static native Object getSurfDataX(int jarg1);
+ public final static native Object getSurfDataY(int jarg1);
+ public final static native Object getSurfDataZ(int jarg1);
+ public final static native int createObject3dData(int jarg1, int jarg2, int jarg3);
+ public final static native double pickSurface(int jarg1, double jarg2, double jarg3, double jarg4, double jarg5, double jarg6, double jarg7, double jarg8, double jarg9, double jarg10, double jarg11);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/Arc.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/Arc.java
new file mode 100755
index 000000000..e3e249a77
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/Arc.java
@@ -0,0 +1,292 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.arc;
+
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Arc class
+ * @author Manuel JULIACHS
+ */
+public class Arc extends ClippableContouredObject {
+ /** Arc properties names */
+ public enum ArcProperty { UPPERLEFTPOINT, WIDTH, HEIGHT, STARTANGLE, ENDANGLE, ARCDRAWINGMETHOD };
+
+ /** Arc drawing method */
+ public enum ArcDrawingMethod { NURBS, LINES;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the arc drawing method enum
+ */
+ public static ArcDrawingMethod intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return ArcDrawingMethod.NURBS;
+ case 1:
+ return ArcDrawingMethod.LINES;
+ default:
+ return null;
+ }
+ }
+ }
+
+ /** Bounding box upper-left point (x,y,z) coordinates */
+ private double[] upperLeftPoint;
+
+ /** Bounding box width */
+ private double width;
+
+ /** Bounding box height */
+ private double height;
+
+ /** Start angle */
+ private double startAngle;
+
+ /** End angle */
+ private double endAngle;
+
+ /** Specifies which drawing method to use */
+ private ArcDrawingMethod arcDrawingMethod;
+
+ /**
+ * Constructor
+ */
+ public Arc() {
+ super();
+ arcDrawingMethod = ArcDrawingMethod.LINES;
+ upperLeftPoint = new double[] {0, 0, 0};
+ width = 0.0;
+ height = 0.0;
+ startAngle = 0.0;
+ endAngle = 0.0;
+ }
+
+ public Arc clone() {
+ Arc copy = (Arc) super.clone();
+ copy.upperLeftPoint = new double[] {0, 0, 0};
+ return copy;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_UPPER_LEFT_POINT__ :
+ return ArcProperty.UPPERLEFTPOINT;
+ case __GO_WIDTH__ :
+ return ArcProperty.WIDTH;
+ case __GO_HEIGHT__ :
+ return ArcProperty.HEIGHT;
+ case __GO_START_ANGLE__ :
+ return ArcProperty.STARTANGLE;
+ case __GO_END_ANGLE__ :
+ return ArcProperty.ENDANGLE;
+ case __GO_ARC_DRAWING_METHOD__ :
+ return ArcProperty.ARCDRAWINGMETHOD;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ArcProperty.UPPERLEFTPOINT) {
+ return getUpperLeftPoint();
+ } else if (property == ArcProperty.WIDTH) {
+ return getWidth();
+ } else if (property == ArcProperty.HEIGHT) {
+ return getHeight();
+ } else if (property == ArcProperty.STARTANGLE) {
+ return getStartAngle();
+ } else if (property == ArcProperty.ENDANGLE) {
+ return getEndAngle();
+ } else if (property == ArcProperty.ARCDRAWINGMETHOD) {
+ return getArcDrawingMethod();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ArcProperty.UPPERLEFTPOINT) {
+ setUpperLeftPoint((Double[]) value);
+ } else if (property == ArcProperty.WIDTH) {
+ setWidth((Double) value);
+ } else if (property == ArcProperty.HEIGHT) {
+ setHeight((Double) value);
+ } else if (property == ArcProperty.STARTANGLE) {
+ setStartAngle((Double) value);
+ } else if (property == ArcProperty.ENDANGLE) {
+ setEndAngle((Double) value);
+ } else if (property == ArcProperty.ARCDRAWINGMETHOD) {
+ setArcDrawingMethod((Integer) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Set the parent axes
+ * @param axes the parent axes to set
+ */
+ /*
+ public void setParent(Axes axes) {
+ super.setParent(axes);
+ }
+ */
+
+ /**
+ * @return the arcDrawingMethod
+ */
+ public Integer getArcDrawingMethod() {
+ return getArcDrawingMethodAsEnum().ordinal();
+ }
+
+ /**
+ * @return the arcDrawingMethod
+ */
+ public ArcDrawingMethod getArcDrawingMethodAsEnum() {
+ return arcDrawingMethod;
+ }
+
+ /**
+ * @param arcDrawingMethod the arcDrawingMethod to set
+ */
+ public UpdateStatus setArcDrawingMethod(Integer arcDrawingMethod) {
+ setArcDrawingMethodAsEnum(ArcDrawingMethod.intToEnum(arcDrawingMethod));
+ return UpdateStatus.Success;
+
+ }
+
+ /**
+ * @param arcDrawingMethod the arcDrawingMethod to set
+ */
+ public UpdateStatus setArcDrawingMethodAsEnum(ArcDrawingMethod arcDrawingMethod) {
+ this.arcDrawingMethod = arcDrawingMethod;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the endAngle
+ */
+ public Double getEndAngle() {
+ return endAngle;
+ }
+
+ /**
+ * @param endAngle the endAngle to set
+ */
+ public UpdateStatus setEndAngle(Double endAngle) {
+ this.endAngle = endAngle;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the height
+ */
+ public Double getHeight() {
+ return height;
+ }
+
+ /**
+ * @param height the height to set
+ */
+ public UpdateStatus setHeight(Double height) {
+ this.height = height;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the startAngle
+ */
+ public Double getStartAngle() {
+ return startAngle;
+ }
+
+ /**
+ * @param startAngle the startAngle to set
+ */
+ public UpdateStatus setStartAngle(Double startAngle) {
+ this.startAngle = startAngle;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the upperLeftPoint
+ */
+ public Double[] getUpperLeftPoint() {
+ Double[] returnedPoint = new Double[3];
+
+ returnedPoint[0] = upperLeftPoint[0];
+ returnedPoint[1] = upperLeftPoint[1];
+ returnedPoint[2] = upperLeftPoint[2];
+
+ return returnedPoint;
+ }
+
+ /**
+ * @param upperLeftPoint the upperLeftPoint to set
+ */
+ public UpdateStatus setUpperLeftPoint(Double[] upperLeftPoint) {
+ this.upperLeftPoint[0] = upperLeftPoint[0];
+ this.upperLeftPoint[1] = upperLeftPoint[1];
+ this.upperLeftPoint[2] = upperLeftPoint[2];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the width
+ */
+ public Double getWidth() {
+ return width;
+ }
+
+ /**
+ * @param width the width to set
+ */
+ public UpdateStatus setWidth(Double width) {
+ this.width = width;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_ARC__;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/ArcDecomposer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/ArcDecomposer.java
new file mode 100755
index 000000000..2d748c401
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/arc/ArcDecomposer.java
@@ -0,0 +1,282 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.arc;
+
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.utils.Utils;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Class ArcDecomposer
+ *
+ * A set of static methods decomposing an arc into a set of triangles (when filled)
+ * and a set of line segments. Decomposition uses a fixed number of sectors, NB_SECTORS+2
+ * vertices are output, the first vertex (at index 0) being the arc's center, whereas vertices
+ * 1 and NB_SECTORS+1 respectively correspond to the arc's first (theta=START_ANGLE)
+ * and last (theta=START_ANGLE+END_ANGLE) vertices.
+ *
+ * To do: implement the Nurbs drawing mode.
+ *
+ * @author Manuel JULIACHS
+ */
+public class ArcDecomposer {
+
+ /** The number of sectors */
+ private static final int NB_SECTORS = 64;
+
+ /**
+ * @return the number of data elements.
+ */
+ public static int getDataSize() {
+ return (NB_SECTORS + 2);
+ }
+
+ /**
+ * @return the number of triangle indices.
+ */
+ public static int getIndicesSize() {
+ return 3 * NB_SECTORS;
+ }
+
+ /**
+ * @return the number of line segment indices.
+ */
+ public static int getWireIndicesSize() {
+ return 2 * NB_SECTORS;
+ }
+
+ /**
+ * Fills the input buffer with vertex data from the given object.
+ * @param the buffer to fill.
+ * @param the given object id.
+ * @param the number of coordinates taken by one element in the buffer.
+ * @param the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param the conversion scale factor to apply to data.
+ * @param the conversion translation value to apply to data.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ */
+ public static void fillVertices(FloatBuffer buffer, Integer id, int elementsSize,
+ int coordinateMask, double[] scale, double[] translation, int logMask) {
+
+ double [] center;
+ double [] currentPoint;
+ double semiMajorAxis;
+ double semiMinorAxis;
+
+ float [] coords;
+
+ int offset = 0;
+
+ coords = new float[3];
+
+ Double [] leftUpperPoint = (Double []) GraphicController.getController().getProperty(id, __GO_UPPER_LEFT_POINT__);
+ Double width = (Double) GraphicController.getController().getProperty(id, __GO_WIDTH__);
+ Double height = (Double) GraphicController.getController().getProperty(id, __GO_HEIGHT__);
+
+ /* Radians */
+ Double startAngle = (Double) GraphicController.getController().getProperty(id, __GO_START_ANGLE__);
+ Double endAngle = (Double) GraphicController.getController().getProperty(id, __GO_END_ANGLE__);
+
+ center = new double[3];
+ currentPoint = new double[3];
+
+ semiMajorAxis = width / 2.0;
+ semiMinorAxis = height / 2.0;
+
+ center[0] = leftUpperPoint[0] + semiMajorAxis;
+ center[1] = leftUpperPoint[1] - semiMinorAxis;
+ center[2] = leftUpperPoint[2];
+
+ /* First vertex: center */
+ if ((coordinateMask & 0x1) != 0) {
+ currentPoint[0] = center[0];
+
+ if ((logMask & 0x1) != 0) {
+ currentPoint[0] = Math.log10(currentPoint[0]);
+ }
+
+ coords[0] = (float) (currentPoint[0] * scale[0] + translation[0]);
+ buffer.put(offset, coords[0]);
+ }
+
+ if ((coordinateMask & 0x2) != 0) {
+ currentPoint[1] = center[1];
+
+ if ((logMask & 0x2) != 0) {
+ currentPoint[1] = Math.log10(currentPoint[1]);
+ }
+
+ coords[1] = (float) (currentPoint[1] * scale[1] + translation[1]);
+ buffer.put(offset + 1, coords[1]);
+ }
+
+ if ((coordinateMask & 0x4) != 0) {
+ currentPoint[2] = center[2];
+
+ if ((logMask & 0x4) != 0) {
+ currentPoint[2] = Math.log10(currentPoint[2]);
+ }
+
+ coords[2] = (float) (currentPoint[2] * scale[2] + translation[2]);
+ buffer.put(offset + 2, coords[2]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8) != 0) {
+ buffer.put(offset + 3, 1.0f);
+ }
+
+ offset += elementsSize;
+
+ if (endAngle > 2 * Math.PI) {
+ endAngle = 2 * Math.PI;
+ } else if (endAngle < -2 * Math.PI) {
+ endAngle = -2 * Math.PI;
+ }
+
+ startAngle = startAngle % (2.0 * Math.PI);
+
+
+ /* Arc vertices */
+ for (int i = 0; i < NB_SECTORS + 1; i++) {
+ double theta = startAngle + endAngle * (double) i / (double) NB_SECTORS;
+
+ if ((coordinateMask & 0x1) != 0) {
+ currentPoint[0] = center[0] + semiMajorAxis * Math.cos(theta);
+
+ if ((logMask & 0x1) != 0) {
+ currentPoint[0] = Math.log10(currentPoint[0]);
+ }
+
+ coords[0] = (float) (currentPoint[0] * scale[0] + translation[0]);
+ buffer.put(offset, coords[0]);
+ }
+
+ if ((coordinateMask & 0x2) != 0) {
+ currentPoint[1] = center[1] + semiMinorAxis * Math.sin(theta);
+
+ if ((logMask & 0x2) != 0) {
+ currentPoint[1] = Math.log10(currentPoint[1]);
+ }
+
+ coords[1] = (float) (currentPoint[1] * scale[1] + translation[1]);
+ buffer.put(offset + 1, coords[1]);
+ }
+
+ if ((coordinateMask & 0x4) != 0) {
+ currentPoint[2] = center[2];
+
+ if ((logMask & 0x4) != 0) {
+ currentPoint[2] = Math.log10(currentPoint[2]);
+ }
+
+ coords[2] = (float) (currentPoint[2] * scale[2] + translation[2]);
+ buffer.put(offset + 2, coords[2]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8) != 0) {
+ buffer.put(offset + 3, 1.0f);
+ }
+
+ offset += elementsSize;
+ }
+ }
+
+ /**
+ * Fills the input buffer with triangle index data from the given object.
+ * @param the buffer to fill.
+ * @param the given object id.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid;
+
+ valid = isValid(id, logMask);
+
+ if (valid) {
+ for (int i = 0; i < NB_SECTORS; i++) {
+ buffer.put(0);
+ buffer.put(i + 1);
+ buffer.put(i + 2);
+ }
+
+ return 3 * NB_SECTORS;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Fills the input buffer with segment index data from the given object.
+ * @param the buffer to fill.
+ * @param the given object id.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillWireIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid;
+
+ valid = isValid(id, logMask);
+
+ if (valid) {
+ for (int i = 0; i < NB_SECTORS; i++) {
+ buffer.put(i + 1);
+ buffer.put(i + 2);
+ }
+
+ return 2 * NB_SECTORS;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Determines whether an Arc is valid or not, depending on its data values.
+ * @param the Arc id.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return true if the Arc is valid, false if it is not.
+ */
+ private static boolean isValid(Integer id, int logMask) {
+ boolean valid = false;
+
+ Double [] leftUpperPoint = (Double []) GraphicController.getController().getProperty(id, __GO_UPPER_LEFT_POINT__);
+ Double width = (Double) GraphicController.getController().getProperty(id, __GO_WIDTH__);
+ Double height = (Double) GraphicController.getController().getProperty(id, __GO_HEIGHT__);
+ Double startAngle = (Double) GraphicController.getController().getProperty(id, __GO_START_ANGLE__);
+ Double endAngle = (Double) GraphicController.getController().getProperty(id, __GO_END_ANGLE__);
+
+ if (Utils.isValid(leftUpperPoint[0], leftUpperPoint[1], leftUpperPoint[2])
+ && Utils.isValid(width) && Utils.isValid(height)
+ && Utils.isValid(startAngle) && Utils.isValid(endAngle)) {
+ valid = true;
+ }
+
+ /*
+ * Test log validity using the minimum x and y coordinates,
+ * as width and height can be less than 0 .
+ */
+ if (logMask != 0) {
+ double [] minPoint = new double[2];
+
+ minPoint[0] = Math.min(leftUpperPoint[0], leftUpperPoint[0] + width);
+ minPoint[1] = Math.min(leftUpperPoint[1], leftUpperPoint[1] - height);
+
+ valid = valid && Utils.isLogValid(minPoint[0], minPoint[1], leftUpperPoint[2], logMask);
+ }
+
+ return valid;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Axes.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Axes.java
new file mode 100755
index 000000000..a6f583342
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Axes.java
@@ -0,0 +1,2797 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ * Copyright (C) 2013 - 2015 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axes;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARC_DRAWING_METHOD__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AUTO_CLEAR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AUTO_MARGINS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AUTO_SCALE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AUTO_SUBTICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXES_BOUNDS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BACKGROUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BOX_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLIP_BOX_SET__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLIP_BOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLIP_STATE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CUBE_SCALING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATA_BOUNDS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FILLED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FIRST_PLOT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_FRACTIONAL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_HIDDEN_AXIS_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_HIDDEN_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ISOVIEW__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARGINS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_BACKGROUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_FOREGROUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_SIZE_UNIT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_REAL_DATA_BOUNDS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ROTATION_ANGLES_3D__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ROTATION_ANGLES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TITLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VIEW__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_AUTO_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_FORMAT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_GRID_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_GRID_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_GRID_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_LOCATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_LOG_FLAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_NUMBER_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_REVERSE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_ST_FACTORS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_SUBTICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_TICKS_LABELS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_TICKS_LOCATIONS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_AXIS_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_TIGHT_LIMITS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_AUTO_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_FORMAT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_GRID_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_GRID_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_GRID_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_LOCATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_LOG_FLAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_NUMBER_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_REVERSE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_ST_FACTORS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_SUBTICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_TICKS_LABELS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_TICKS_LOCATIONS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_AXIS_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_TIGHT_LIMITS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ZOOM_BOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ZOOM_ENABLED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_AUTO_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_FORMAT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_GRID_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_GRID_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_GRID_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_LOCATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_LOG_FLAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_NUMBER_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_REVERSE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_ST_FACTORS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_SUBTICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_TICKS_LABELS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_TICKS_LOCATIONS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_AXIS_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_TIGHT_LIMITS__;
+
+import java.util.ArrayList;
+
+import org.scilab.modules.graphic_objects.arc.Arc.ArcDrawingMethod;
+import org.scilab.modules.graphic_objects.arc.Arc.ArcProperty;
+import org.scilab.modules.graphic_objects.axes.AxisProperty.AxisLocation;
+import org.scilab.modules.graphic_objects.axes.Box.BoxType;
+import org.scilab.modules.graphic_objects.axes.Camera.ViewType;
+import org.scilab.modules.graphic_objects.contouredObject.Line;
+import org.scilab.modules.graphic_objects.contouredObject.Line.LinePropertyType;
+import org.scilab.modules.graphic_objects.contouredObject.Line.LineType;
+import org.scilab.modules.graphic_objects.contouredObject.Mark;
+import org.scilab.modules.graphic_objects.contouredObject.Mark.MarkPropertyType;
+import org.scilab.modules.graphic_objects.contouredObject.Mark.MarkSizeUnitType;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClipStateType;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClippablePropertyType;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.textObject.FormattedText;
+
+/**
+ * Axes class
+ * @author Manuel JULIACHS
+ */
+public class Axes extends GraphicObject {
+
+ private static final double BOUNDS_PARAMETER = 5;
+
+ /** Axes properties names */
+ private enum AxesProperty {
+ XAXISVISIBLE, XAXISFORMAT, XAXISSTFACTORS, XAXISREVERSE, XAXISGRIDCOLOR, XAXISGRIDTHICKNESS, XAXISGRIDSTYLE, XAXISLABEL, XAXISLOCATION, XAXISLOGFLAG,
+ XAXISTICKS, XAXISAUTOTICKS, XAXISNUMBERTICKS, XAXISTICKSLOCATIONS, XAXISTICKSLABELS, XAXISSUBTICKS,
+ YAXISVISIBLE, YAXISFORMAT, YAXISSTFACTORS, YAXISREVERSE, YAXISGRIDCOLOR, YAXISGRIDTHICKNESS, YAXISGRIDSTYLE, YAXISLABEL, YAXISLOCATION, YAXISLOGFLAG,
+ YAXISTICKS, YAXISAUTOTICKS, YAXISNUMBERTICKS, YAXISTICKSLOCATIONS, YAXISTICKSLABELS, YAXISSUBTICKS,
+ ZAXISVISIBLE, ZAXISFORMAT, ZAXISSTFACTORS, ZAXISREVERSE, ZAXISGRIDCOLOR, ZAXISGRIDTHICKNESS, ZAXISGRIDSTYLE, ZAXISLABEL, ZAXISLOCATION, ZAXISLOGFLAG,
+ ZAXISTICKS, ZAXISAUTOTICKS, ZAXISNUMBERTICKS, ZAXISTICKSLOCATIONS, ZAXISTICKSLABELS, ZAXISSUBTICKS,
+ AUTOSUBTICKS,
+ FONT_STYLE, FONT_SIZE, FONT_COLOR, FONT_FRACTIONAL,
+ GRIDPOSITION, TITLE, AUTOCLEAR, FILLED, BACKGROUND,
+ MARGINS, AUTO_MARGINS, AXESBOUNDS,
+ HIDDENCOLOR
+ };
+
+ /** Specifies the grid position relative to the graphics entities */
+ public static enum GridPosition { BACKGROUND, FOREGROUND;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the grid position enum
+ */
+ public static GridPosition intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return GridPosition.BACKGROUND;
+ case 1:
+ return GridPosition.FOREGROUND;
+ default:
+ return null;
+ }
+ }
+ };
+
+
+ /** 3-element array (properties of the X, Y and Z axes) */
+ private AxisProperty[] axes;
+
+ /**
+ * Specifies whether subticks are automatically computed or not
+ * Used as an internal state only
+ * Note: shared by the three axes to be compatible with the
+ * former flagNax internal state (autoSubticks is equivalent to !flagNax)
+ * This should eventually become a per-axis property (as the auto ticks flag).
+ */
+ private boolean autoSubticks;
+
+ /** Grid position */
+ private GridPosition gridPosition;
+
+ /** Title label known by its UID. */
+ private Integer title;
+
+ /** Specifies whether the Axes subwindow is cleared when a new plot command is performed */
+ private boolean autoClear;
+
+ /** Specifies whether the Axes background is filled or not */
+ private boolean filled;
+
+ /** Axes background color and child objects default background color */
+ private int background;
+
+ /** Camera */
+ private Camera camera;
+
+ /** Box: properties related to the data bounds */
+ private Box box;
+
+ /** Margins enclosing the drawing area (left, right, top, bottom) */
+ private double[] margins;
+ private boolean auto_margins;
+
+ /**
+ * Axes bounds relative to their parent figure's
+ * drawing area (upper-left corner x and y, width, height)
+ */
+ private double[] axesBounds;
+
+ /** Default hidden surfaces color */
+ private int hiddenColor;
+
+ /** Default Line properties */
+ private Line line;
+
+ /** Default Mark properties */
+ private Mark mark;
+
+ /** Default Arc drawing method */
+ private ArcDrawingMethod arcDrawingMethod;
+
+ /** Default ClippableProperty */
+ private ClippableProperty clipProperty;
+
+
+ /** Constructor */
+ public Axes() {
+ super();
+ axes = new AxisProperty[3];
+ axes[0] = new AxisProperty();
+ axes[1] = new AxisProperty();
+ axes[2] = new AxisProperty();
+ gridPosition = GridPosition.FOREGROUND;
+ title = 0;
+ autoClear = false;
+ filled = false;
+ camera = new Camera();
+ box = new Box();
+ margins = new double[4];
+ auto_margins = true;
+ axesBounds = new double[4];
+
+ line = new Line();
+ mark = new Mark();
+ arcDrawingMethod = ArcDrawingMethod.LINES;
+ clipProperty = new ClippableProperty();
+ }
+
+ public Axes clone() {
+ Axes copy = (Axes) super.clone();
+
+ AxisProperty [] newAxes = new AxisProperty[3];
+
+ for (int i = 0; i < axes.length; i++) {
+ newAxes[i] = new AxisProperty(axes[i]);
+ }
+
+ copy.axes = newAxes;
+ copy.title = 0;
+ copy.camera = new Camera(this.camera);
+ copy.box = new Box(this.box);
+
+ double [] newMargins = new double[4];
+ for (int i = 0; i < this.margins.length; i++) {
+ newMargins[i] = this.margins[i];
+ }
+
+ copy.margins = newMargins;
+ copy.auto_margins = auto_margins;
+
+ double [] newAxesBounds = new double[4];
+ for (int i = 0; i < this.axesBounds.length; i++) {
+ newAxesBounds[i] = this.axesBounds[i];
+ }
+
+ copy.axesBounds = newAxesBounds;
+ copy.line = new Line(this.line);
+ copy.mark = new Mark(this.mark);
+ copy.clipProperty = new ClippableProperty(this.clipProperty);
+ copy.setValid(true);
+
+ return copy;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_X_AXIS_VISIBLE__ :
+ return AxesProperty.XAXISVISIBLE;
+ case __GO_X_AXIS_REVERSE__ :
+ return AxesProperty.XAXISREVERSE;
+ case __GO_X_AXIS_GRID_COLOR__ :
+ return AxesProperty.XAXISGRIDCOLOR;
+ case __GO_X_AXIS_GRID_THICKNESS__ :
+ return AxesProperty.XAXISGRIDTHICKNESS;
+ case __GO_X_AXIS_GRID_STYLE__ :
+ return AxesProperty.XAXISGRIDSTYLE;
+ case __GO_X_AXIS_LABEL__ :
+ return AxesProperty.XAXISLABEL;
+ case __GO_X_AXIS_LOCATION__ :
+ return AxesProperty.XAXISLOCATION;
+ case __GO_X_AXIS_LOG_FLAG__ :
+ return AxesProperty.XAXISLOGFLAG;
+ case __GO_X_AXIS_TICKS__ :
+ return AxesProperty.XAXISTICKS;
+ case __GO_X_AXIS_FORMAT__ :
+ return AxesProperty.XAXISFORMAT;
+ case __GO_X_AXIS_ST_FACTORS__ :
+ return AxesProperty.XAXISSTFACTORS;
+ case __GO_X_AXIS_AUTO_TICKS__ :
+ return AxesProperty.XAXISAUTOTICKS;
+ case __GO_X_AXIS_NUMBER_TICKS__ :
+ return AxesProperty.XAXISNUMBERTICKS;
+ case __GO_X_AXIS_TICKS_LOCATIONS__:
+ return AxesProperty.XAXISTICKSLOCATIONS;
+ case __GO_X_AXIS_TICKS_LABELS__ :
+ return AxesProperty.XAXISTICKSLABELS;
+ case __GO_X_AXIS_SUBTICKS__ :
+ return AxesProperty.XAXISSUBTICKS;
+ case __GO_Y_AXIS_VISIBLE__ :
+ return AxesProperty.YAXISVISIBLE;
+ case __GO_Y_AXIS_REVERSE__ :
+ return AxesProperty.YAXISREVERSE;
+ case __GO_Y_AXIS_GRID_COLOR__ :
+ return AxesProperty.YAXISGRIDCOLOR;
+ case __GO_Y_AXIS_GRID_THICKNESS__ :
+ return AxesProperty.YAXISGRIDTHICKNESS;
+ case __GO_Y_AXIS_GRID_STYLE__ :
+ return AxesProperty.YAXISGRIDSTYLE;
+ case __GO_Y_AXIS_LABEL__ :
+ return AxesProperty.YAXISLABEL;
+ case __GO_Y_AXIS_LOCATION__ :
+ return AxesProperty.YAXISLOCATION;
+ case __GO_Y_AXIS_LOG_FLAG__ :
+ return AxesProperty.YAXISLOGFLAG;
+ case __GO_Y_AXIS_TICKS__ :
+ return AxesProperty.YAXISTICKS;
+ case __GO_Y_AXIS_FORMAT__ :
+ return AxesProperty.YAXISFORMAT;
+ case __GO_Y_AXIS_ST_FACTORS__ :
+ return AxesProperty.YAXISSTFACTORS;
+ case __GO_Y_AXIS_AUTO_TICKS__ :
+ return AxesProperty.YAXISAUTOTICKS;
+ case __GO_Y_AXIS_NUMBER_TICKS__ :
+ return AxesProperty.YAXISNUMBERTICKS;
+ case __GO_Y_AXIS_TICKS_LOCATIONS__ :
+ return AxesProperty.YAXISTICKSLOCATIONS;
+ case __GO_Y_AXIS_TICKS_LABELS__ :
+ return AxesProperty.YAXISTICKSLABELS;
+ case __GO_Y_AXIS_SUBTICKS__ :
+ return AxesProperty.YAXISSUBTICKS;
+ case __GO_Z_AXIS_VISIBLE__ :
+ return AxesProperty.ZAXISVISIBLE;
+ case __GO_Z_AXIS_REVERSE__ :
+ return AxesProperty.ZAXISREVERSE;
+ case __GO_Z_AXIS_GRID_COLOR__ :
+ return AxesProperty.ZAXISGRIDCOLOR;
+ case __GO_Z_AXIS_GRID_THICKNESS__ :
+ return AxesProperty.ZAXISGRIDTHICKNESS;
+ case __GO_Z_AXIS_GRID_STYLE__ :
+ return AxesProperty.ZAXISGRIDSTYLE;
+ case __GO_Z_AXIS_LABEL__ :
+ return AxesProperty.ZAXISLABEL;
+ case __GO_Z_AXIS_LOCATION__ :
+ return AxesProperty.ZAXISLOCATION;
+ case __GO_Z_AXIS_LOG_FLAG__ :
+ return AxesProperty.ZAXISLOGFLAG;
+ case __GO_Z_AXIS_TICKS__ :
+ return AxesProperty.ZAXISTICKS;
+ case __GO_Z_AXIS_FORMAT__ :
+ return AxesProperty.ZAXISFORMAT;
+ case __GO_Z_AXIS_ST_FACTORS__ :
+ return AxesProperty.ZAXISSTFACTORS;
+ case __GO_Z_AXIS_AUTO_TICKS__ :
+ return AxesProperty.ZAXISAUTOTICKS;
+ case __GO_Z_AXIS_NUMBER_TICKS__ :
+ return AxesProperty.ZAXISNUMBERTICKS;
+ case __GO_Z_AXIS_TICKS_LOCATIONS__ :
+ return AxesProperty.ZAXISTICKSLOCATIONS;
+ case __GO_Z_AXIS_TICKS_LABELS__ :
+ return AxesProperty.ZAXISTICKSLABELS;
+ case __GO_Z_AXIS_SUBTICKS__ :
+ return AxesProperty.ZAXISSUBTICKS;
+ case __GO_AUTO_SUBTICKS__ :
+ return AxesProperty.AUTOSUBTICKS;
+ case __GO_FONT_STYLE__ :
+ return AxesProperty.FONT_STYLE;
+ case __GO_FONT_SIZE__ :
+ return AxesProperty.FONT_SIZE;
+ case __GO_FONT_COLOR__ :
+ return AxesProperty.FONT_COLOR;
+ case __GO_FONT_FRACTIONAL__ :
+ return AxesProperty.FONT_FRACTIONAL;
+ case __GO_GRID_POSITION__ :
+ return AxesProperty.GRIDPOSITION;
+ case __GO_TITLE__ :
+ return AxesProperty.TITLE;
+ case __GO_AUTO_CLEAR__ :
+ return AxesProperty.AUTOCLEAR;
+ case __GO_FILLED__ :
+ return AxesProperty.FILLED;
+ case __GO_BACKGROUND__ :
+ return AxesProperty.BACKGROUND;
+ case __GO_VIEW__ :
+ return Camera.CameraProperty.VIEW;
+ case __GO_ISOVIEW__ :
+ return Camera.CameraProperty.ISOVIEW;
+ case __GO_CUBE_SCALING__ :
+ return Camera.CameraProperty.CUBESCALING;
+ case __GO_ROTATION_ANGLES__ :
+ return Camera.CameraProperty.ROTATIONANGLES;
+ case __GO_ROTATION_ANGLES_3D__ :
+ return Camera.CameraProperty.ROTATIONANGLES3D;
+ case __GO_BOX_TYPE__ :
+ return Box.BoxProperty.BOX;
+ case __GO_HIDDEN_AXIS_COLOR__ :
+ return Box.BoxProperty.HIDDENAXISCOLOR;
+ case __GO_X_TIGHT_LIMITS__ :
+ return Box.BoxProperty.XTIGHTLIMITS;
+ case __GO_Y_TIGHT_LIMITS__ :
+ return Box.BoxProperty.YTIGHTLIMITS;
+ case __GO_Z_TIGHT_LIMITS__ :
+ return Box.BoxProperty.ZTIGHTLIMITS;
+ case __GO_DATA_BOUNDS__ :
+ return Box.BoxProperty.DATABOUNDS;
+ case __GO_REAL_DATA_BOUNDS__ :
+ return Box.BoxProperty.REALDATABOUNDS;
+ case __GO_ZOOM_ENABLED__ :
+ return Box.BoxProperty.ZOOMENABLED;
+ case __GO_ZOOM_BOX__ :
+ return Box.BoxProperty.ZOOMBOX;
+ case __GO_AUTO_SCALE__ :
+ return Box.BoxProperty.AUTOSCALE;
+ case __GO_FIRST_PLOT__ :
+ return Box.BoxProperty.FIRSTPLOT;
+ case __GO_MARGINS__ :
+ return AxesProperty.MARGINS;
+ case __GO_AUTO_MARGINS__ :
+ return AxesProperty.AUTO_MARGINS;
+ case __GO_AXES_BOUNDS__ :
+ return AxesProperty.AXESBOUNDS;
+ case __GO_HIDDEN_COLOR__ :
+ return AxesProperty.HIDDENCOLOR;
+ case __GO_LINE_MODE__ :
+ return LinePropertyType.MODE;
+ case __GO_LINE_STYLE__ :
+ return LinePropertyType.LINESTYLE;
+ case __GO_LINE_THICKNESS__ :
+ return LinePropertyType.THICKNESS;
+ case __GO_LINE_COLOR__ :
+ return LinePropertyType.COLOR;
+ case __GO_MARK_MODE__ :
+ return MarkPropertyType.MODE;
+ case __GO_MARK_STYLE__ :
+ return MarkPropertyType.STYLE;
+ case __GO_MARK_SIZE_UNIT__ :
+ return MarkPropertyType.SIZEUNIT;
+ case __GO_MARK_SIZE__ :
+ return MarkPropertyType.SIZE;
+ case __GO_MARK_FOREGROUND__ :
+ return MarkPropertyType.FOREGROUND;
+ case __GO_MARK_BACKGROUND__ :
+ return MarkPropertyType.BACKGROUND;
+ case __GO_CLIP_STATE__ :
+ return ClippablePropertyType.CLIPSTATE;
+ case __GO_CLIP_BOX__ :
+ return ClippablePropertyType.CLIPBOX;
+ case __GO_CLIP_BOX_SET__ :
+ return ClippablePropertyType.CLIPBOXSET;
+ case __GO_ARC_DRAWING_METHOD__ :
+ return ArcProperty.ARCDRAWINGMETHOD;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property instanceof AxesProperty) {
+ AxesProperty ap = (AxesProperty) property;
+ switch (ap) {
+ case XAXISVISIBLE:
+ return getXAxisVisible();
+ case XAXISREVERSE:
+ return getXAxisReverse();
+ case XAXISGRIDCOLOR:
+ return getXAxisGridColor();
+ case XAXISGRIDTHICKNESS:
+ return getXAxisGridThickness();
+ case XAXISGRIDSTYLE:
+ return getXAxisGridStyle();
+ case XAXISLABEL:
+ return getXAxisLabel();
+ case XAXISLOCATION:
+ return getXAxisLocation();
+ case XAXISLOGFLAG:
+ return getXAxisLogFlag();
+ case XAXISTICKS:
+ return getXAxisTicks();
+ case XAXISFORMAT:
+ return getXAxisFormat();
+ case XAXISSTFACTORS:
+ return getXAxisSTFactors();
+ case XAXISAUTOTICKS:
+ return getXAxisAutoTicks();
+ case XAXISNUMBERTICKS:
+ return getXAxisNumberTicks();
+ case XAXISTICKSLOCATIONS:
+ return getXAxisTicksLocations();
+ case XAXISTICKSLABELS:
+ return getXAxisTicksLabels();
+ case XAXISSUBTICKS:
+ return getXAxisSubticks();
+ case YAXISVISIBLE:
+ return getYAxisVisible();
+ case YAXISREVERSE:
+ return getYAxisReverse();
+ case YAXISGRIDCOLOR:
+ return getYAxisGridColor();
+ case YAXISGRIDTHICKNESS:
+ return getYAxisGridThickness();
+ case YAXISGRIDSTYLE:
+ return getYAxisGridStyle();
+ case YAXISLABEL:
+ return getYAxisLabel();
+ case YAXISLOCATION:
+ return getYAxisLocation();
+ case YAXISLOGFLAG:
+ return getYAxisLogFlag();
+ case YAXISTICKS:
+ return getYAxisTicks();
+ case YAXISFORMAT:
+ return getYAxisFormat();
+ case YAXISSTFACTORS:
+ return getYAxisSTFactors();
+ case YAXISAUTOTICKS:
+ return getYAxisAutoTicks();
+ case YAXISNUMBERTICKS:
+ return getYAxisNumberTicks();
+ case YAXISTICKSLOCATIONS:
+ return getYAxisTicksLocations();
+ case YAXISTICKSLABELS:
+ return getYAxisTicksLabels();
+ case YAXISSUBTICKS:
+ return getYAxisSubticks();
+ case ZAXISVISIBLE:
+ return getZAxisVisible();
+ case ZAXISREVERSE:
+ return getZAxisReverse();
+ case ZAXISGRIDCOLOR:
+ return getZAxisGridColor();
+ case ZAXISGRIDTHICKNESS:
+ return getZAxisGridThickness();
+ case ZAXISGRIDSTYLE:
+ return getZAxisGridStyle();
+ case ZAXISLABEL:
+ return getZAxisLabel();
+ case ZAXISLOCATION:
+ return getZAxisLocation();
+ case ZAXISLOGFLAG:
+ return getZAxisLogFlag();
+ case ZAXISTICKS:
+ return getZAxisTicks();
+ case ZAXISFORMAT:
+ return getZAxisFormat();
+ case ZAXISSTFACTORS:
+ return getZAxisSTFactors();
+ case ZAXISAUTOTICKS:
+ return getZAxisAutoTicks();
+ case ZAXISNUMBERTICKS:
+ return getZAxisNumberTicks();
+ case ZAXISTICKSLOCATIONS:
+ return getZAxisTicksLocations();
+ case ZAXISTICKSLABELS:
+ return getZAxisTicksLabels();
+ case ZAXISSUBTICKS:
+ return getZAxisSubticks();
+ case AUTOSUBTICKS:
+ return getAutoSubticks();
+ case FONT_STYLE:
+ return getFontStyle();
+ case FONT_SIZE:
+ return getFontSize();
+ case FONT_COLOR:
+ return getFontColor();
+ case FONT_FRACTIONAL:
+ return getFontFractional();
+ case GRIDPOSITION:
+ return getGridPosition();
+ case TITLE:
+ return getTitle();
+ case AUTOCLEAR:
+ return getAutoClear();
+ case FILLED:
+ return getFilled();
+ case BACKGROUND:
+ return getBackground();
+ case MARGINS:
+ return getMargins();
+ case AUTO_MARGINS:
+ return getAutoMargins();
+ case AXESBOUNDS:
+ return getAxesBounds();
+ case HIDDENCOLOR:
+ return getHiddenColor();
+ }
+ } else if (property instanceof Camera.CameraProperty) {
+ Camera.CameraProperty cp = (Camera.CameraProperty) property;
+ switch (cp) {
+ case VIEW:
+ return getView();
+ case ISOVIEW:
+ return getIsoview();
+ case CUBESCALING:
+ return getCubeScaling();
+ case ROTATIONANGLES:
+ return getRotationAngles();
+ case ROTATIONANGLES3D:
+ return getRotationAngles3d();
+ }
+ } else if (property instanceof Box.BoxProperty) {
+ Box.BoxProperty bp = (Box.BoxProperty) property;
+ switch (bp) {
+ case BOX:
+ return getBoxType();
+ case HIDDENAXISCOLOR:
+ return getHiddenAxisColor();
+ case XTIGHTLIMITS:
+ return getXTightLimits();
+ case YTIGHTLIMITS:
+ return getYTightLimits();
+ case ZTIGHTLIMITS:
+ return getZTightLimits();
+ case DATABOUNDS:
+ return getDataBounds();
+ case REALDATABOUNDS:
+ return getRealDataBounds();
+ case ZOOMENABLED:
+ return getZoomEnabled();
+ case ZOOMBOX:
+ return getZoomBox();
+ case AUTOSCALE:
+ return getAutoScale();
+ case FIRSTPLOT:
+ return getFirstPlot();
+ }
+ } else if (property instanceof LinePropertyType) {
+ LinePropertyType lp = (LinePropertyType) property;
+ switch (lp) {
+ case MODE:
+ return getLineMode();
+ case LINESTYLE:
+ return getLineStyle();
+ case THICKNESS:
+ return getLineThickness();
+ case COLOR:
+ return getLineColor();
+ }
+ } else if (property instanceof MarkPropertyType) {
+ MarkPropertyType mp = (MarkPropertyType) property;
+ switch (mp) {
+ case MODE:
+ return getMarkMode();
+ case STYLE:
+ return getMarkStyle();
+ case SIZE:
+ return getMarkSize();
+ case SIZEUNIT:
+ return getMarkSizeUnit();
+ case FOREGROUND:
+ return getMarkForeground();
+ case BACKGROUND:
+ return getMarkBackground();
+ }
+ } else if (property instanceof ClippablePropertyType) {
+ ClippablePropertyType cp = (ClippablePropertyType) property;
+ switch (cp) {
+ case CLIPSTATE:
+ return getClipState();
+ case CLIPBOX:
+ return getClipBox();
+ case CLIPBOXSET:
+ return getClipBoxSet();
+ }
+ } else if (property == ArcProperty.ARCDRAWINGMETHOD) {
+ return getArcDrawingMethod();
+ }
+
+ return super.getProperty(property);
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property instanceof AxesProperty) {
+ AxesProperty ap = (AxesProperty) property;
+ switch (ap) {
+ case XAXISVISIBLE:
+ return setXAxisVisible((Boolean) value);
+ case XAXISREVERSE:
+ return setXAxisReverse((Boolean) value);
+ case XAXISGRIDCOLOR:
+ return setXAxisGridColor((Integer) value);
+ case XAXISGRIDTHICKNESS:
+ return setXAxisGridThickness((Double) value);
+ case XAXISGRIDSTYLE:
+ return setXAxisGridStyle((Integer) value);
+ case XAXISLABEL:
+ return setXAxisLabel((Integer) value);
+ case XAXISLOCATION:
+ return setXAxisLocation((Integer) value);
+ case XAXISLOGFLAG:
+ return setXAxisLogFlag((Boolean) value);
+ case XAXISTICKS:
+ return setXAxisTicks((TicksProperty) value);
+ case XAXISFORMAT:
+ return setXAxisFormat((String) value);
+ case XAXISSTFACTORS:
+ return setXAxisSTFactors((Double[]) value);
+ case XAXISAUTOTICKS:
+ return setXAxisAutoTicks((Boolean) value);
+ case XAXISTICKSLOCATIONS:
+ return setXAxisTicksLocations((Double[]) value);
+ case XAXISTICKSLABELS:
+ return setXAxisTicksLabels((String[]) value);
+ case XAXISSUBTICKS:
+ return setXAxisSubticks((Integer) value);
+ case YAXISVISIBLE:
+ return setYAxisVisible((Boolean) value);
+ case YAXISREVERSE:
+ return setYAxisReverse((Boolean) value);
+ case YAXISGRIDCOLOR:
+ return setYAxisGridColor((Integer) value);
+ case YAXISGRIDTHICKNESS:
+ return setYAxisGridThickness((Double) value);
+ case YAXISGRIDSTYLE:
+ return setYAxisGridStyle((Integer) value);
+ case YAXISLABEL:
+ return setYAxisLabel((Integer) value);
+ case YAXISLOCATION:
+ return setYAxisLocation((Integer) value);
+ case YAXISLOGFLAG:
+ return setYAxisLogFlag((Boolean) value);
+ case YAXISTICKS:
+ return setYAxisTicks((TicksProperty) value);
+ case YAXISFORMAT:
+ return setYAxisFormat((String) value);
+ case YAXISSTFACTORS:
+ return setYAxisSTFactors((Double[]) value);
+ case YAXISAUTOTICKS:
+ return setYAxisAutoTicks((Boolean) value);
+ case YAXISTICKSLOCATIONS:
+ return setYAxisTicksLocations((Double[]) value);
+ case YAXISTICKSLABELS:
+ return setYAxisTicksLabels((String[]) value);
+ case YAXISSUBTICKS:
+ return setYAxisSubticks((Integer) value);
+ case ZAXISVISIBLE:
+ return setZAxisVisible((Boolean) value);
+ case ZAXISREVERSE:
+ return setZAxisReverse((Boolean) value);
+ case ZAXISGRIDCOLOR:
+ return setZAxisGridColor((Integer) value);
+ case ZAXISGRIDTHICKNESS:
+ return setZAxisGridThickness((Double) value);
+ case ZAXISGRIDSTYLE:
+ return setZAxisGridStyle((Integer) value);
+ case ZAXISLABEL:
+ return setZAxisLabel((Integer) value);
+ case ZAXISLOCATION:
+ return setZAxisLocation((Integer) value);
+ case ZAXISLOGFLAG:
+ return setZAxisLogFlag((Boolean) value);
+ case ZAXISTICKS:
+ return setZAxisTicks((TicksProperty) value);
+ case ZAXISFORMAT:
+ return setZAxisFormat((String) value);
+ case ZAXISSTFACTORS:
+ return setZAxisSTFactors((Double[]) value);
+ case ZAXISAUTOTICKS:
+ return setZAxisAutoTicks((Boolean) value);
+ case ZAXISTICKSLOCATIONS:
+ return setZAxisTicksLocations((Double[]) value);
+ case ZAXISTICKSLABELS:
+ return setZAxisTicksLabels((String[]) value);
+ case ZAXISSUBTICKS:
+ return setZAxisSubticks((Integer) value);
+ case AUTOSUBTICKS:
+ return setAutoSubticks((Boolean) value);
+ case FONT_STYLE:
+ return setFontStyle((Integer) value);
+ case FONT_SIZE:
+ return setFontSize((Double) value);
+ case FONT_COLOR:
+ return setFontColor((Integer) value);
+ case FONT_FRACTIONAL:
+ return setFontFractional((Boolean) value);
+ case GRIDPOSITION:
+ return setGridPosition((Integer) value);
+ case TITLE:
+ return setTitle((Integer) value);
+ case AUTOCLEAR:
+ return setAutoClear((Boolean) value);
+ case FILLED:
+ return setFilled((Boolean) value);
+ case BACKGROUND:
+ return setBackground((Integer) value);
+ case MARGINS:
+ return setMargins((Double[]) value);
+ case AUTO_MARGINS:
+ return setAutoMargins((Boolean) value);
+ case AXESBOUNDS:
+ return setAxesBounds((Double[]) value);
+ case HIDDENCOLOR:
+ return setHiddenColor((Integer) value);
+ }
+ } else if (property instanceof Camera.CameraProperty) {
+ Camera.CameraProperty cp = (Camera.CameraProperty) property;
+ switch (cp) {
+ case VIEW:
+ return setView((Integer) value);
+ case ISOVIEW:
+ return setIsoview((Boolean) value);
+ case CUBESCALING:
+ return setCubeScaling((Boolean) value);
+ case ROTATIONANGLES:
+ return setRotationAngles((Double[]) value);
+ case ROTATIONANGLES3D:
+ return setRotationAngles3d((Double[]) value);
+ }
+ } else if (property instanceof Box.BoxProperty) {
+ Box.BoxProperty bp = (Box.BoxProperty) property;
+ switch (bp) {
+ case BOX:
+ return setBoxType((Integer) value);
+ case HIDDENAXISCOLOR:
+ return setHiddenAxisColor((Integer) value);
+ case XTIGHTLIMITS:
+ return setXTightLimits((Boolean) value);
+ case YTIGHTLIMITS:
+ return setYTightLimits((Boolean) value);
+ case ZTIGHTLIMITS:
+ return setZTightLimits((Boolean) value);
+ case DATABOUNDS:
+ return setDataBounds((Double[]) value);
+ case REALDATABOUNDS:
+ return setRealDataBounds((Double[]) value);
+ case ZOOMENABLED:
+ return setZoomEnabled((Boolean) value);
+ case ZOOMBOX:
+ return setZoomBox((Double[]) value);
+ case AUTOSCALE:
+ return setAutoScale((Boolean) value);
+ case FIRSTPLOT:
+ return setFirstPlot((Boolean) value);
+ }
+ } else if (property instanceof LinePropertyType) {
+ LinePropertyType lp = (LinePropertyType) property;
+ switch (lp) {
+ case MODE:
+ return setLineMode((Boolean) value);
+ case LINESTYLE:
+ return setLineStyle((Integer) value);
+ case THICKNESS:
+ return setLineThickness((Double) value);
+ case COLOR:
+ return setLineColor((Integer) value);
+ }
+ } else if (property instanceof MarkPropertyType) {
+ MarkPropertyType mp = (MarkPropertyType) property;
+ switch (mp) {
+ case MODE:
+ return setMarkMode((Boolean) value);
+ case STYLE:
+ return setMarkStyle((Integer) value);
+ case SIZE:
+ return setMarkSize((Integer) value);
+ case SIZEUNIT:
+ return setMarkSizeUnit((Integer) value);
+ case FOREGROUND:
+ return setMarkForeground((Integer) value);
+ case BACKGROUND:
+ return setMarkBackground((Integer) value);
+ }
+ } else if (property instanceof ClippablePropertyType) {
+ ClippablePropertyType cp = (ClippablePropertyType) property;
+ switch (cp) {
+ case CLIPSTATE:
+ return setClipState((Integer) value);
+ case CLIPBOX:
+ return setClipBox((Double[]) value);
+ case CLIPBOXSET:
+ return setClipBoxSet((Boolean) value);
+ }
+ } else if (property == ArcProperty.ARCDRAWINGMETHOD) {
+ return setArcDrawingMethod((Integer) value);
+ }
+
+ return super.setProperty(property, value);
+ }
+
+ /**
+ * @return the autoClear
+ */
+ public Boolean getAutoClear() {
+ return autoClear;
+ }
+
+ /**
+ * @param autoClear the autoClear to set
+ */
+ public UpdateStatus setAutoClear(Boolean autoClear) {
+ if (autoClear != this.autoClear) {
+ this.autoClear = autoClear;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the axes
+ */
+ public AxisProperty[] getAxes() {
+ return axes;
+ }
+
+ /**
+ * @param axes the axes to set
+ */
+ public UpdateStatus setAxes(AxisProperty[] axes) {
+ this.axes = axes;
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the x axis
+ */
+ public AxisProperty getXAxis() {
+ return axes[0];
+ }
+
+ /**
+ * @param xAxis the x axis to set
+ */
+ public UpdateStatus setXAxis(AxisProperty xAxis) {
+ axes[0] = xAxis;
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the x axis visible
+ */
+ public Boolean getXAxisVisible() {
+ return axes[0].getVisible();
+ }
+
+ /**
+ * @param visible the x axis visible to set
+ */
+ public UpdateStatus setXAxisVisible(Boolean visible) {
+ return axes[0].setVisible(visible);
+ }
+
+ /**
+ * @return the x axis format
+ */
+ public String getXAxisFormat() {
+ return axes[0].getFormat();
+ }
+
+ /**
+ * @param format the x axis format to set
+ */
+ public UpdateStatus setXAxisFormat(String format) {
+ return axes[0].setFormat(format);
+ }
+
+ /**
+ * @return the x axis scale-translate factors
+ */
+ public Double[] getXAxisSTFactors() {
+ return axes[0].getSTFactors();
+ }
+
+ /**
+ * @param factors the x axis scale-translate factors
+ */
+ public UpdateStatus setXAxisSTFactors(Double[] factors) {
+ return axes[0].setSTFactors(factors);
+ }
+
+ /**
+ * @return the x axis reverse
+ */
+ public Boolean getXAxisReverse() {
+ return axes[0].getReverse();
+ }
+
+ /**
+ * @param reverse the x axis reverse to set
+ */
+ public UpdateStatus setXAxisReverse(Boolean reverse) {
+ return axes[0].setReverse(reverse);
+ }
+
+ /**
+ * @return the x axis grid color
+ */
+ public Integer getXAxisGridColor() {
+ return axes[0].getGridColor();
+ }
+
+ /**
+ * @param gridColor the x axis grid color to set
+ */
+ public UpdateStatus setXAxisGridColor(Integer gridColor) {
+ return axes[0].setGridColor(gridColor);
+ }
+
+ /**
+ * @return the x axis grid thickness
+ */
+ public Double getXAxisGridThickness() {
+ Double d = axes[0].getGridThickness();
+ return d == -1 ? getLineThickness() : d;
+ }
+
+ /**
+ * @param gridThickness the x axis grid thickness to set
+ */
+ public UpdateStatus setXAxisGridThickness(Double gridThickness) {
+ return axes[0].setGridThickness(gridThickness);
+ }
+
+ /**
+ * @return the x axis grid style
+ */
+ public Integer getXAxisGridStyle() {
+ return axes[0].getGridStyle();
+ }
+
+ /**
+ * @param gridStyle the x axis grid style to set
+ */
+ public UpdateStatus setXAxisGridStyle(Integer gridStyle) {
+ return axes[0].setGridStyle(gridStyle);
+ }
+
+ /**
+ * @return the x axis label UID
+ */
+ public Integer getXAxisLabel() {
+ return axes[0].getLabel();
+ }
+
+ /**
+ * @param label the x axis label to set
+ */
+ public UpdateStatus setXAxisLabel(Integer label) {
+ return axes[0].setLabel(label);
+ }
+
+ /**
+ * @return the x axis location
+ */
+ public Integer getXAxisLocation() {
+ return getXAxisLocationAsEnum().ordinal();
+ }
+
+ /**
+ * @return the x axis location
+ */
+ public AxisLocation getXAxisLocationAsEnum() {
+ return axes[0].getAxisLocation();
+ }
+
+ /**
+ * @param axisLocation the x axis location to set
+ */
+ public UpdateStatus setXAxisLocation(Integer axisLocation) {
+ return setXAxisLocationAsEnum(AxisLocation.intToEnum(axisLocation));
+ }
+
+ /**
+ * @param axisLocation the x axis location to set
+ */
+ public UpdateStatus setXAxisLocationAsEnum(AxisLocation axisLocation) {
+ return axes[0].setAxisLocation(axisLocation);
+ }
+
+ /**
+ * @return the x axis log flag
+ */
+ public Boolean getXAxisLogFlag() {
+ return axes[0].getLogFlag();
+ }
+
+ /**
+ * @param logFlag the x axis log flag to set
+ */
+ public UpdateStatus setXAxisLogFlag(Boolean logFlag) {
+ return axes[0].setLogFlag(logFlag);
+ }
+
+ /**
+ * @return the x axis ticks
+ */
+ public TicksProperty getXAxisTicks() {
+ return axes[0].getTicks();
+ }
+
+ /**
+ * @param ticks the x axis ticks to set
+ */
+ public UpdateStatus setXAxisTicks(TicksProperty ticks) {
+ return axes[0].setTicks(ticks);
+ }
+
+ /**
+ * @return the x axis autoticks
+ */
+ public Boolean getXAxisAutoTicks() {
+ return axes[0].getAutoTicks();
+ }
+
+ /**
+ * @param autoTicks the x axis autoticks to set
+ */
+ public UpdateStatus setXAxisAutoTicks(Boolean autoTicks) {
+ return axes[0].setAutoTicks(autoTicks);
+ }
+
+ /**
+ * @return the x axis number of ticks
+ */
+ public Integer getXAxisNumberTicks() {
+ return axes[0].getNumberOfTicks();
+ }
+
+ /**
+ * @return the x axis ticks locations
+ */
+ public Double[] getXAxisTicksLocations() {
+ return axes[0].getTicksLocations();
+ }
+
+ /**
+ * @param ticksLocations the x axis ticks locations to set
+ */
+ public UpdateStatus setXAxisTicksLocations(Double[] ticksLocations) {
+ return axes[0].setTicksLocations(ticksLocations);
+ }
+
+ /**
+ * @return the x axis ticks labels
+ */
+ public String[] getXAxisTicksLabels() {
+ return axes[0].getTicksLabelsStrings();
+ }
+
+ /**
+ * @return the x axis ticks labels
+ */
+ public ArrayList<FormattedText> getXAxisTicksLabelsAsArrayList() {
+ return axes[0].getTicksLabels();
+ }
+
+ /**
+ * @param labels the x axis ticks labels to set
+ */
+ public UpdateStatus setXAxisTicksLabels(String[] labels) {
+ return axes[0].setTicksLabelsStrings(labels);
+ }
+
+ /**
+ * @param labels the x axis ticks labels to set
+ */
+ public UpdateStatus setXAxisTicksLabelsAsArrayList(ArrayList<FormattedText> labels) {
+ return axes[0].setTicksLabels(labels);
+ }
+
+ /**
+ * @return the x axis number of subticks
+ */
+ public Integer getXAxisSubticks() {
+ return axes[0].getSubticks();
+ }
+
+ /**
+ * @param subticks the x axis number of subticks to set
+ */
+ public UpdateStatus setXAxisSubticks(Integer subticks) {
+ return axes[0].setSubticks(subticks);
+ }
+
+ /**
+ * @return the y axis
+ */
+ public AxisProperty getYAxis() {
+ return axes[1];
+ }
+
+ /**
+ * @param yAxis the y axis to set
+ */
+ public UpdateStatus setYAxis(AxisProperty yAxis) {
+ axes[1] = yAxis;
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the y axis visible
+ */
+ public Boolean getYAxisVisible() {
+ return axes[1].getVisible();
+ }
+
+ /**
+ * @param visible the y axis visible to set
+ */
+ public UpdateStatus setYAxisVisible(Boolean visible) {
+ return axes[1].setVisible(visible);
+ }
+
+ /**
+ * @return the y axis format
+ */
+ public String getYAxisFormat() {
+ return axes[1].getFormat();
+ }
+
+ /**
+ * @param format the x axis format to set
+ */
+ public UpdateStatus setYAxisFormat(String format) {
+ return axes[1].setFormat(format);
+ }
+
+ /**
+ * @return the y axis scale-translate factors
+ */
+ public Double[] getYAxisSTFactors() {
+ return axes[1].getSTFactors();
+ }
+
+ /**
+ * @param factors the y axis scale-translate factors
+ */
+ public UpdateStatus setYAxisSTFactors(Double[] factors) {
+ return axes[1].setSTFactors(factors);
+ }
+
+ /**
+ * @return the y axis reverse
+ */
+ public Boolean getYAxisReverse() {
+ return axes[1].getReverse();
+ }
+
+ /**
+ * @param reverse the y axis reverse to set
+ */
+ public UpdateStatus setYAxisReverse(Boolean reverse) {
+ return axes[1].setReverse(reverse);
+ }
+
+ /**
+ * @return the y axis grid color
+ */
+ public Integer getYAxisGridColor() {
+ return axes[1].getGridColor();
+ }
+
+ /**
+ * @param gridColor the y axis grid color to set
+ */
+ public UpdateStatus setYAxisGridColor(Integer gridColor) {
+ return axes[1].setGridColor(gridColor);
+ }
+
+ /**
+ * @return the y axis grid thickness
+ */
+ public Double getYAxisGridThickness() {
+ Double d = axes[1].getGridThickness();
+ return d == -1 ? getLineThickness() : d;
+ }
+
+ /**
+ * @param gridThickness the y axis grid thickness to set
+ */
+ public UpdateStatus setYAxisGridThickness(Double gridThickness) {
+ return axes[1].setGridThickness(gridThickness);
+ }
+
+ /**
+ * @return the y axis grid style
+ */
+ public Integer getYAxisGridStyle() {
+ return axes[1].getGridStyle();
+ }
+
+ /**
+ * @param gridStyle the y axis grid style to set
+ */
+ public UpdateStatus setYAxisGridStyle(Integer gridStyle) {
+ return axes[1].setGridStyle(gridStyle);
+ }
+
+ /**
+ * @return the y axis label UID
+ */
+ public Integer getYAxisLabel() {
+ return axes[1].getLabel();
+ }
+
+ /**
+ * @param label the y axis label to set
+ */
+ public UpdateStatus setYAxisLabel(Integer label) {
+ return axes[1].setLabel(label);
+ }
+
+ /**
+ * @return the y axis location
+ */
+ public Integer getYAxisLocation() {
+ return getYAxisLocationAsEnum().ordinal();
+ }
+
+ /**
+ * @return the y axis location
+ */
+ public AxisLocation getYAxisLocationAsEnum() {
+ return axes[1].getAxisLocation();
+ }
+
+ /**
+ * @param axisLocation the y axis location to set
+ */
+ public UpdateStatus setYAxisLocation(Integer axisLocation) {
+ return setYAxisLocationAsEnum(AxisLocation.intToEnum(axisLocation));
+ }
+
+ /**
+ * @param axisLocation the y axis location to set
+ */
+ public UpdateStatus setYAxisLocationAsEnum(AxisLocation axisLocation) {
+ return axes[1].setAxisLocation(axisLocation);
+ }
+
+ /**
+ * @return the y axis log flag
+ */
+ public Boolean getYAxisLogFlag() {
+ return axes[1].getLogFlag();
+ }
+
+ /**
+ * @param logFlag the y axis log flag to set
+ */
+ public UpdateStatus setYAxisLogFlag(Boolean logFlag) {
+ return axes[1].setLogFlag(logFlag);
+ }
+
+ /**
+ * @return the y axis ticks
+ */
+ public TicksProperty getYAxisTicks() {
+ return axes[1].getTicks();
+ }
+
+ /**
+ * @param ticks the y axis ticks to set
+ */
+ public UpdateStatus setYAxisTicks(TicksProperty ticks) {
+ return axes[1].setTicks(ticks);
+ }
+
+ /**
+ * @return the y axis autoticks
+ */
+ public Boolean getYAxisAutoTicks() {
+ return axes[1].getAutoTicks();
+ }
+
+ /**
+ * @param autoTicks the y axis autoticks to set
+ */
+ public UpdateStatus setYAxisAutoTicks(Boolean autoTicks) {
+ return axes[1].setAutoTicks(autoTicks);
+ }
+
+ /**
+ * @return the y axis number of ticks
+ */
+ public Integer getYAxisNumberTicks() {
+ return axes[1].getNumberOfTicks();
+ }
+
+ /**
+ * @return the y axis ticks locations
+ */
+ public Double[] getYAxisTicksLocations() {
+ return axes[1].getTicksLocations();
+ }
+
+ /**
+ * @param ticksLocations the y axis ticks locations to set
+ */
+ public UpdateStatus setYAxisTicksLocations(Double[] ticksLocations) {
+ return axes[1].setTicksLocations(ticksLocations);
+ }
+
+ /**
+ * @return the y axis ticks labels
+ */
+ public String[] getYAxisTicksLabels() {
+ return axes[1].getTicksLabelsStrings();
+ }
+
+ /**
+ * @return the y axis ticks labels
+ */
+ public ArrayList<FormattedText> getYAxisTicksLabelsAsArrayList() {
+ return axes[1].getTicksLabels();
+ }
+
+ /**
+ * @param labels the y axis ticks labels to set
+ */
+ public UpdateStatus setYAxisTicksLabels(String[] labels) {
+ return axes[1].setTicksLabelsStrings(labels);
+ }
+
+ /**
+ * @param labels the y axis ticks labels to set
+ */
+ public UpdateStatus setYAxisTicksLabelsAsArrayList(ArrayList<FormattedText> labels) {
+ return axes[1].setTicksLabels(labels);
+ }
+
+ /**
+ * @return the y axis number of subticks
+ */
+ public Integer getYAxisSubticks() {
+ return axes[1].getSubticks();
+ }
+
+ /**
+ * @param subticks the y axis number of subticks to set
+ */
+ public UpdateStatus setYAxisSubticks(Integer subticks) {
+ return axes[1].setSubticks(subticks);
+ }
+
+ /**
+ * @return the z axis
+ */
+ public AxisProperty getZAxis() {
+ return axes[2];
+ }
+
+ /**
+ * @param zAxis the z axis to set
+ */
+ public UpdateStatus setZAxis(AxisProperty zAxis) {
+ axes[2] = zAxis;
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the z axis visible
+ */
+ public Boolean getZAxisVisible() {
+ return axes[2].getVisible();
+ }
+
+ /**
+ * @param visible the z axis visible to set
+ */
+ public UpdateStatus setZAxisVisible(Boolean visible) {
+ return axes[2].setVisible(visible);
+ }
+
+ /**
+ * @return the z axis format
+ */
+ public String getZAxisFormat() {
+ return axes[2].getFormat();
+ }
+
+ /**
+ * @param format the z axis format to set
+ */
+ public UpdateStatus setZAxisFormat(String format) {
+ return axes[2].setFormat(format);
+ }
+
+ /**
+ * @return the z axis scale-translate factors
+ */
+ public Double[] getZAxisSTFactors() {
+ return axes[2].getSTFactors();
+ }
+
+ /**
+ * @param factors the z axis scale-translate factors
+ */
+ public UpdateStatus setZAxisSTFactors(Double[] factors) {
+ return axes[2].setSTFactors(factors);
+ }
+
+ /**
+ * @return the z axis reverse
+ */
+ public Boolean getZAxisReverse() {
+ return axes[2].getReverse();
+ }
+
+ /**
+ * @param reverse the z axis reverse to set
+ */
+ public UpdateStatus setZAxisReverse(Boolean reverse) {
+ return axes[2].setReverse(reverse);
+ }
+
+ /**
+ * @return the z axis grid color
+ */
+ public Integer getZAxisGridColor() {
+ return axes[2].getGridColor();
+ }
+
+ /**
+ * @param gridColor the z axis grid color to set
+ */
+ public UpdateStatus setZAxisGridColor(Integer gridColor) {
+ return axes[2].setGridColor(gridColor);
+ }
+
+ /**
+ * @return the x axis grid thickness
+ */
+ public Double getZAxisGridThickness() {
+ Double d = axes[2].getGridThickness();
+ return d == -1 ? getLineThickness() : d;
+ }
+
+ /**
+ * @param gridThickness the x axis grid thickness to set
+ */
+ public UpdateStatus setZAxisGridThickness(Double gridThickness) {
+ return axes[2].setGridThickness(gridThickness);
+ }
+
+ /**
+ * @return the z axis grid style
+ */
+ public Integer getZAxisGridStyle() {
+ return axes[2].getGridStyle();
+ }
+
+ /**
+ * @param gridStyle the z axis grid style to set
+ */
+ public UpdateStatus setZAxisGridStyle(Integer gridStyle) {
+ return axes[2].setGridStyle(gridStyle);
+ }
+
+ /**
+ * @return the z axis label UID
+ */
+ public Integer getZAxisLabel() {
+ return axes[2].getLabel();
+ }
+
+ /**
+ * @param label the z axis label to set
+ */
+ public UpdateStatus setZAxisLabel(Integer label) {
+ return axes[2].setLabel(label);
+ }
+
+ /**
+ * @return the z axis location
+ */
+ public Integer getZAxisLocation() {
+ return getZAxisLocationAsEnum().ordinal();
+ }
+
+ /**
+ * @return the z axis location
+ */
+ public AxisLocation getZAxisLocationAsEnum() {
+ return axes[2].getAxisLocation();
+ }
+
+ /**
+ * @param axisLocation the z axis location to set
+ */
+ public UpdateStatus setZAxisLocation(Integer axisLocation) {
+ return setZAxisLocationAsEnum(AxisLocation.intToEnum(axisLocation));
+ }
+
+ /**
+ * @param axisLocation the z axis location to set
+ */
+ public UpdateStatus setZAxisLocationAsEnum(AxisLocation axisLocation) {
+ return axes[2].setAxisLocation(axisLocation);
+ }
+
+ /**
+ * @return the z axis log flag
+ */
+ public Boolean getZAxisLogFlag() {
+ return axes[2].getLogFlag();
+ }
+
+ /**
+ * @param logFlag the z axis log flag to set
+ */
+ public UpdateStatus setZAxisLogFlag(Boolean logFlag) {
+ return axes[2].setLogFlag(logFlag);
+ }
+
+ /**
+ * @return the z axis ticks
+ */
+ public TicksProperty getZAxisTicks() {
+ return axes[2].getTicks();
+ }
+
+ /**
+ * @param ticks the z axis ticks to set
+ */
+ public UpdateStatus setZAxisTicks(TicksProperty ticks) {
+ return axes[2].setTicks(ticks);
+ }
+
+ /**
+ * @return the z axis autoticks
+ */
+ public Boolean getZAxisAutoTicks() {
+ return axes[2].getAutoTicks();
+ }
+
+ /**
+ * @param autoTicks the z axis autoticks to set
+ */
+ public UpdateStatus setZAxisAutoTicks(Boolean autoTicks) {
+ return axes[2].setAutoTicks(autoTicks);
+ }
+
+ /**
+ * @return the z axis number of ticks
+ */
+ public Integer getZAxisNumberTicks() {
+ return axes[2].getNumberOfTicks();
+ }
+
+ /**
+ * @return the z axis ticks locations
+ */
+ public Double[] getZAxisTicksLocations() {
+ return axes[2].getTicksLocations();
+ }
+
+ /**
+ * @param ticksLocations the z axis ticks locations to set
+ */
+ public UpdateStatus setZAxisTicksLocations(Double[] ticksLocations) {
+ return axes[2].setTicksLocations(ticksLocations);
+ }
+
+ /**
+ * @return the z axis ticks labels
+ */
+ public String[] getZAxisTicksLabels() {
+ return axes[2].getTicksLabelsStrings();
+ }
+
+ /**
+ * @return the z axis ticks labels
+ */
+ public ArrayList<FormattedText> getZAxisTicksLabelsAsArrayList() {
+ return axes[2].getTicksLabels();
+ }
+
+ /**
+ * @param labels the z axis ticks labels to set
+ */
+ public UpdateStatus setZAxisTicksLabels(String[] labels) {
+ return axes[2].setTicksLabelsStrings(labels);
+ }
+
+ /**
+ * @param labels the z axis ticks labels to set
+ */
+ public UpdateStatus setZAxisTicksLabelsAsArrayList(ArrayList<FormattedText> labels) {
+ return axes[2].setTicksLabels(labels);
+ }
+
+ /**
+ * @return the z axis number of subticks
+ */
+ public Integer getZAxisSubticks() {
+ return axes[2].getSubticks();
+ }
+
+ /**
+ * @param subticks the z axis number of subticks to set
+ */
+ public UpdateStatus setZAxisSubticks(Integer subticks) {
+ return axes[2].setSubticks(subticks);
+ }
+
+ /**
+ * @return the autosubticks
+ */
+ public Boolean getAutoSubticks() {
+ return autoSubticks;
+ }
+
+ /**
+ * @param autoSubticks the autosubticks to set
+ */
+ public UpdateStatus setAutoSubticks(Boolean autoSubticks) {
+ if (this.autoSubticks != autoSubticks) {
+ this.autoSubticks = autoSubticks;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * Gets the ticks labels font style.
+ * It supposes all ticks labels within a single axis have the same font style value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @return the ticks labels font style
+ */
+ public Integer getFontStyle() {
+ return axes[0].getFontStyle();
+ }
+
+ /**
+ * Sets the ticks labels font style.
+ * It supposes all ticks labels within a single axis have the same font style value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @param fontStyle the ticks labels font style to set
+ */
+ public UpdateStatus setFontStyle(Integer fontStyle) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < axes.length; i++) {
+ UpdateStatus s = axes[i].setFontStyle(fontStyle);
+ if (s == UpdateStatus.Success) {
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Gets the ticks labels font size.
+ * It supposes all ticks labels within a single axis have the same font size value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @return the ticks labels font size
+ */
+ public Double getFontSize() {
+ return axes[0].getFontSize();
+ }
+
+ /**
+ * Sets the ticks labels font size.
+ * It supposes all ticks labels within a single axis have the same font size value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @param fontSize the ticks labels font size to set
+ */
+ public UpdateStatus setFontSize(Double fontSize) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < axes.length; i++) {
+ UpdateStatus s = axes[i].setFontSize(fontSize);
+ if (s == UpdateStatus.Success) {
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Gets the ticks labels font color.
+ * It supposes all ticks labels within a single axis have the same font color value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @return the ticks labels font color
+ */
+ public Integer getFontColor() {
+ return axes[0].getFontColor();
+ }
+
+ /**
+ * Sets the ticks labels font color.
+ * It supposes all ticks labels within a single axis have the same font color value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @param fontColor the ticks labels font color to set
+ */
+ public UpdateStatus setFontColor(Integer fontColor) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < axes.length; i++) {
+ UpdateStatus s = axes[i].setFontColor(fontColor);
+ if (s == UpdateStatus.Success) {
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Gets the ticks labels font fractional.
+ * It supposes all ticks labels within a single axis have the same font fractional value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @return the ticks labels font fractional
+ */
+ public Boolean getFontFractional() {
+ return axes[0].getFontFractional();
+ }
+
+ /**
+ * Sets the ticks labels font fractional.
+ * It supposes all ticks labels within a single axis have the same font fractional value
+ * and that this value is the same for the 3 axes.
+ * To be corrected.
+ * @param fontFractional the ticks labels font fractional to set
+ */
+ public UpdateStatus setFontFractional(Boolean fontFractional) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < axes.length; i++) {
+ UpdateStatus s = axes[i].setFontFractional(fontFractional);
+ if (s == UpdateStatus.Success) {
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the axesBounds
+ */
+ public Double[] getAxesBounds() {
+ Double[] retAxesBounds = new Double[4];
+
+ retAxesBounds[0] = axesBounds[0];
+ retAxesBounds[1] = axesBounds[1];
+ retAxesBounds[2] = axesBounds[2];
+ retAxesBounds[3] = axesBounds[3];
+
+ return retAxesBounds;
+ }
+
+ /**
+ * @param axesBounds the axesBounds to set
+ */
+ public UpdateStatus setAxesBounds(Double[] axesBounds) {
+ if (this.axesBounds[0] != axesBounds[0] || this.axesBounds[1] != axesBounds[1]
+ || this.axesBounds[2] != axesBounds[2] || this.axesBounds[3] != axesBounds[3]) {
+ this.axesBounds[0] = axesBounds[0];
+ this.axesBounds[1] = axesBounds[1];
+ this.axesBounds[2] = axesBounds[2];
+ this.axesBounds[3] = axesBounds[3];
+
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the hiddenColor
+ */
+ public Integer getHiddenColor() {
+ return hiddenColor;
+ }
+
+ /**
+ * @param hiddenColor the hiddenColor to set
+ */
+ public UpdateStatus setHiddenColor(Integer hiddenColor) {
+ if (this.hiddenColor != hiddenColor) {
+ this.hiddenColor = hiddenColor;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * Returns the line property
+ * @return the line property
+ */
+ public Line getLine() {
+ return line;
+ }
+
+ /**
+ * @return the line mode
+ */
+ public Boolean getLineMode() {
+ return line.getMode();
+ }
+
+ /**
+ * @param lineMode the line mode to set
+ */
+ public UpdateStatus setLineMode(Boolean lineMode) {
+ return line.setMode(lineMode);
+ }
+
+ /**
+ * @return the line style
+ */
+ public Integer getLineStyle() {
+ return line.getLineStyle().asScilabIndex();
+ }
+
+ /**
+ * @param lineStyle the line style to set
+ */
+ public UpdateStatus setLineStyle(Integer lineStyle) {
+ return line.setLineStyle(LineType.fromScilabIndex(lineStyle));
+ }
+
+ /**
+ * @return the line thickness
+ */
+ public Double getLineThickness() {
+ return line.getThickness();
+ }
+
+ /**
+ * @param lineThickness the line thickness to set
+ */
+ public UpdateStatus setLineThickness(Double lineThickness) {
+ return line.setThickness(lineThickness);
+ }
+
+ /**
+ * @return the line color
+ */
+ public Integer getLineColor() {
+ return line.getColor();
+ }
+
+ /**
+ * @param lineColor the lineColor to set
+ */
+ public UpdateStatus setLineColor(Integer lineColor) {
+ return line.setColor(lineColor);
+ }
+
+ /**
+ * @return the mark mode
+ */
+ public Boolean getMarkMode() {
+ return mark.getMode();
+ }
+
+ /**
+ * @param markMode the mark mode to set
+ */
+ public UpdateStatus setMarkMode(Boolean markMode) {
+ return mark.setMode(markMode);
+ }
+
+ /**
+ * @return the mark style
+ */
+ public Integer getMarkStyle() {
+ return mark.getStyle();
+ }
+
+ /**
+ * @param markStyle the mark style to set
+ */
+ public UpdateStatus setMarkStyle(Integer markStyle) {
+ return mark.setStyle(markStyle);
+ }
+
+ /**
+ * @return the mark size
+ */
+ public Integer getMarkSize() {
+ return mark.getSize();
+ }
+
+ /**
+ * @param markSize the mark size to set
+ */
+ public UpdateStatus setMarkSize(Integer markSize) {
+ return mark.setSize(markSize);
+ }
+
+ /**
+ * @return the mark size unit
+ */
+ public Integer getMarkSizeUnit() {
+ return mark.getMarkSizeUnit().ordinal();
+ }
+
+ /**
+ * @param markSizeUnit the mark size unit to set
+ */
+ public UpdateStatus setMarkSizeUnit(Integer markSizeUnit) {
+ return mark.setMarkSizeUnit(MarkSizeUnitType.intToEnum(markSizeUnit));
+ }
+
+ /**
+ * @return the mark foreground
+ */
+ public Integer getMarkForeground() {
+ return mark.getForeground();
+ }
+
+ /**
+ * @param markForeground the mark foreground to set
+ */
+ public UpdateStatus setMarkForeground(Integer markForeground) {
+ return mark.setForeground(markForeground);
+ }
+
+ /**
+ * @return the mark background
+ */
+ public Integer getMarkBackground() {
+ return mark.getBackground();
+ }
+
+ /**
+ * @param markBackground the mark background to set
+ */
+ public UpdateStatus setMarkBackground(Integer markBackground) {
+ return mark.setBackground(markBackground);
+ }
+
+ /**
+ * @return the clip state
+ */
+ public Integer getClipState() {
+ return clipProperty.getClipState().ordinal();
+ }
+
+ /**
+ * @param clipState the clip state to set
+ */
+ public UpdateStatus setClipState(Integer clipState) {
+ return clipProperty.setClipState(ClipStateType.intToEnum(clipState));
+ }
+
+ /**
+ * @return the clip box
+ */
+ public Double[] getClipBox() {
+ return clipProperty.getClipBox();
+ }
+
+ /**
+ * @param clipBox the clip box to set
+ */
+ public UpdateStatus setClipBox(Double[] clipBox) {
+ return clipProperty.setClipBox(clipBox);
+ }
+
+ /**
+ * @return the clip box set
+ */
+ public Boolean getClipBoxSet() {
+ return clipProperty.getClipBoxSet();
+ }
+
+ /**
+ * @param clipBoxSet the clip box set to set
+ */
+ public UpdateStatus setClipBoxSet(Boolean clipBoxSet) {
+ return clipProperty.setClipBoxSet(clipBoxSet);
+ }
+
+ /**
+ * @return the arcDrawingMethod
+ */
+ public Integer getArcDrawingMethod() {
+ return arcDrawingMethod.ordinal();
+ }
+
+ /**
+ * @param arcDrawingMethod the arcDrawingMethod to set
+ */
+ public UpdateStatus setArcDrawingMethod(Integer arcDrawingMethod) {
+ ArcDrawingMethod mode = ArcDrawingMethod.intToEnum(arcDrawingMethod);
+ if (this.arcDrawingMethod != mode) {
+ this.arcDrawingMethod = mode;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the box
+ */
+ public Box getBox() {
+ return box;
+ }
+
+ /**
+ * @param box the box to set
+ */
+ public UpdateStatus setBox(Box box) {
+ this.box = box;
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the box type
+ */
+ public Integer getBoxType() {
+ return getBoxTypeAsEnum().ordinal();
+ }
+
+ /**
+ * @return the box type
+ */
+ public BoxType getBoxTypeAsEnum() {
+ return box.getBox();
+ }
+
+ /**
+ * @param box the BoxType to set
+ */
+ public UpdateStatus setBoxType(Integer box) {
+ return setBoxTypeAsEnum(BoxType.intToEnum(box));
+ }
+
+ /**
+ * @param box the BoxType to set
+ */
+ public UpdateStatus setBoxTypeAsEnum(BoxType box) {
+ return this.box.setBox(box);
+ }
+
+ /**
+ * @return the hidden axis color
+ */
+ public Integer getHiddenAxisColor() {
+ return box.getHiddenAxisColor();
+ }
+
+ /**
+ * @param color the hidden axis color to set
+ */
+ public UpdateStatus setHiddenAxisColor(Integer color) {
+ return box.setHiddenAxisColor(color);
+ }
+
+ /**
+ * @return the X axis tight limits
+ */
+ public Boolean getXTightLimits() {
+ return box.getXTightLimits();
+ }
+
+ /**
+ * @return the Y axis tight limits
+ */
+ public Boolean getYTightLimits() {
+ return box.getYTightLimits();
+ }
+
+ /**
+ * @return the Z axis tight limits
+ */
+ public Boolean getZTightLimits() {
+ return box.getZTightLimits();
+ }
+
+ /**
+ * @param tightLimits the tightLimits to set for X axis
+ */
+ public UpdateStatus setXTightLimits(Boolean tightLimits) {
+ return box.setXTightLimits(tightLimits);
+ }
+
+ /**
+ * @param tightLimits the tightLimits to set for Y axis
+ */
+ public UpdateStatus setYTightLimits(Boolean tightLimits) {
+ return box.setYTightLimits(tightLimits);
+ }
+
+ /**
+ * @param tightLimits the tightLimits to set for Z axis
+ */
+ public UpdateStatus setZTightLimits(Boolean tightLimits) {
+ return box.setZTightLimits(tightLimits);
+ }
+
+ /**
+ * @return the data bounds
+ */
+ public Double[] getDataBounds() {
+ return box.getDataBounds();
+ }
+
+ /**
+ * @param dataBounds the data bounds to set
+ */
+ public UpdateStatus setDataBounds(Double[] dataBounds) {
+ return box.setDataBounds(dataBounds);
+ }
+
+ /**
+ * @return the real data bounds
+ */
+ public Double[] getRealDataBounds() {
+ return box.getRealDataBounds();
+ }
+
+ /**
+ * @param realDataBounds the real data bounds to set
+ */
+ public UpdateStatus setRealDataBounds(Double[] realDataBounds) {
+ return box.setRealDataBounds(realDataBounds);
+ }
+
+ /**
+ * Get the scale and translate factors corresponding to the displayed bounds
+ * @return the factors as a multidimensional array 2x3
+ */
+ public double[][] getScaleTranslateFactors() {
+ // For an axe scale and translate factors are
+ // such that scale*min+translate=-1 and scale*max+translate=+1
+ // With these factors, double data will be in interval [-1;1]
+
+ Double[] bounds = getMaximalDisplayedBounds();
+ double[][] f = new double[2][];
+
+ // scale factors
+ f[0] = new double[] {2 / (bounds[1] - bounds[0]),
+ 2 / (bounds[3] - bounds[2]),
+ 2 / (bounds[5] - bounds[4])
+ };
+
+ // translate factors
+ f[1] = new double[] { -(bounds[1] + bounds[0]) / (bounds[1] - bounds[0]), -(bounds[3] + bounds[2]) / (bounds[3] - bounds[2]), -(bounds[5] + bounds[4]) / (bounds[5] - bounds[4])};
+
+ return f;
+ }
+
+ public Double[] getCorrectedBounds() {
+ if (getZoomEnabled()) {
+ Double[] b = getCorrectZoomBox();
+ double[][] factors = getScaleTranslateFactors();
+
+ b[0] = b[0] * factors[0][0] + factors[1][0];
+ b[1] = b[1] * factors[0][0] + factors[1][0];
+ b[2] = b[2] * factors[0][1] + factors[1][1];
+ b[3] = b[3] * factors[0][1] + factors[1][1];
+ b[4] = b[4] * factors[0][2] + factors[1][2];
+ b[5] = b[5] * factors[0][2] + factors[1][2];
+
+ return b;
+ } else {
+ return new Double[] { -1., 1., -1., 1., -1., 1.};
+ }
+ }
+
+ /**
+ * Current displayed bounds getter.
+ * @return the current visible bounds of this axes.
+ */
+ public Double[] getDisplayedBounds() {
+ if (getZoomEnabled()) {
+ return getCorrectZoomBox();
+ } else {
+ return getMaximalDisplayedBounds();
+ }
+ }
+
+ /**
+ * Maximal possible displayed bounds getter.
+ * @return the maximal possible displayed bounds.
+ */
+ public Double[] getMaximalDisplayedBounds() {
+ Double[] bounds = getDataBounds();
+ boolean eq = bounds[0].doubleValue() == bounds[1].doubleValue();
+ if (getXAxisLogFlag()) {
+ if (eq) {
+ bounds[0] = Math.log10(bounds[0]) - 1;
+ bounds[1] = bounds[0] + 2;
+ } else {
+ bounds[0] = Math.log10(bounds[0]);
+ bounds[1] = Math.log10(bounds[1]);
+ }
+ } else if (eq) {
+ // Avoid to have same bounds.
+ double inc = getIncrement(bounds[0]);
+ bounds[0] -= inc;
+ bounds[1] += inc;
+ }
+
+ if (getXAxisLocationAsEnum() == AxisProperty.AxisLocation.ORIGIN) {
+ if (0 < bounds[0]) {
+ bounds[0] = 0.;
+ } else if (bounds[1] < 0) {
+ bounds[1] = 0.;
+ }
+ }
+
+ eq = bounds[2].doubleValue() == bounds[3].doubleValue();
+ if (getYAxisLogFlag()) {
+ if (eq) {
+ bounds[2] = Math.log10(bounds[2]) - 1;
+ bounds[3] = bounds[2] + 2;
+ } else {
+ bounds[2] = Math.log10(bounds[2]);
+ bounds[3] = Math.log10(bounds[3]);
+ }
+ } else if (eq) {
+ double inc = getIncrement(bounds[2]);
+ bounds[2] -= inc;
+ bounds[3] += inc;
+ }
+
+ if (getYAxisLocationAsEnum() == AxisProperty.AxisLocation.ORIGIN) {
+ if (0 < bounds[2]) {
+ bounds[2] = 0.;
+ } else if (bounds[3] < 0) {
+ bounds[3] = 0.;
+ }
+ }
+
+ eq = bounds[4].doubleValue() == bounds[5].doubleValue();
+ if (getZAxisLogFlag()) {
+ if (eq) {
+ bounds[4] = Math.log10(bounds[4]) - 1;
+ bounds[5] = bounds[4] + 2;
+ } else {
+ bounds[4] = Math.log10(bounds[4]);
+ bounds[5] = Math.log10(bounds[5]);
+ }
+ } else if (eq) {
+ double inc = getIncrement(bounds[4]);
+ bounds[4] -= inc;
+ bounds[5] += inc;
+ }
+
+ if (false && getZAxisLocationAsEnum() == AxisProperty.AxisLocation.ORIGIN) {
+ // We ignore this flag axis location since it cannot be set by the user (bug 13494)
+ if (0 < bounds[4]) {
+ bounds[4] = 0.;
+ } else if (bounds[5] < 0) {
+ bounds[5] = 0.;
+ }
+ }
+
+ if (!getXTightLimits()) {
+ round(bounds, 0);
+ }
+ if (!getYTightLimits()) {
+ round(bounds, 2);
+ }
+ if (!getZTightLimits()) {
+ round(bounds, 4);
+ }
+
+ return bounds;
+ }
+
+ private final double getIncrement(final double x) {
+ final int exponent = (int) (((Double.doubleToLongBits(x) & 0x7FF0000000000000L) >> 52) - 1023);
+
+ return Math.pow(2, Math.max(0, exponent - 52));
+ }
+
+ /**
+ * Round the bounds in the bounds array at the given index.
+ * bounds[i] and bounds[i + 1 ] are rounded to be in the value written
+ * k * b * 10^n
+ * where b is in {1, 2, 5}
+ * and b * 10 ^n the maximal value less than (bounds[i + 1] - bounds[i]) / BOUNDS_PARAMETER.
+ * @param bounds the bounds array.
+ * @param i the start index.
+ */
+ private void round(Double[] bounds, int i) {
+ double delta = (bounds[i + 1] - bounds[i]) / BOUNDS_PARAMETER;
+ double powerOfTen = Math.pow(10, Math.floor(Math.log10(delta)));
+ double base = delta / powerOfTen;
+
+ if (base < 2) {
+ base = 1;
+ } else if (base < 5) {
+ base = 2;
+ } else {
+ base = 5;
+ }
+
+ double step = base * powerOfTen;
+ bounds[i] = step * Math.floor(bounds[i] / step);
+ bounds[i + 1] = step * Math.ceil(bounds[i + 1] / step);
+ }
+
+ /**
+ * @return the zoomEnabled
+ */
+ public Boolean getZoomEnabled() {
+ return box.getZoomEnabled();
+ }
+
+ /**
+ * @param zoomEnabled the zoomEnabled to set
+ */
+ public UpdateStatus setZoomEnabled(Boolean zoomEnabled) {
+ return box.setZoomEnabled(zoomEnabled);
+ }
+
+ /**
+ * @return the zoom box
+ */
+ public Double[] getZoomBox() {
+ return box.getZoomBox();
+ }
+
+ public Double[] getCorrectZoomBox() {
+ Double[] b = getZoomBox();
+ if (getXAxisLogFlag()) {
+ b[0] = Math.log10(b[0]);
+ b[1] = Math.log10(b[1]);
+ }
+
+ if (getYAxisLogFlag()) {
+ b[2] = Math.log10(b[2]);
+ b[3] = Math.log10(b[3]);
+ }
+
+ if (getZAxisLogFlag()) {
+ b[4] = Math.log10(b[4]);
+ b[5] = Math.log10(b[5]);
+ }
+
+ return b;
+ }
+
+ /**
+ * @param zoomBox the zoom box to set
+ */
+ public UpdateStatus setZoomBox(Double[] zoomBox) {
+ return box.setZoomBox(zoomBox);
+ }
+
+ /**
+ * @return the autoscale
+ */
+ public Boolean getAutoScale() {
+ return box.getAutoScale();
+ }
+
+ /**
+ * @param autoScale the autoscale to set
+ */
+ public UpdateStatus setAutoScale(Boolean autoScale) {
+ return box.setAutoScale(autoScale);
+ }
+
+ /**
+ * @return the firstplot
+ */
+ public Boolean getFirstPlot() {
+ return box.getFirstPlot();
+ }
+
+ /**
+ * @param firstPlot the firstplot to set
+ */
+ public UpdateStatus setFirstPlot(Boolean firstPlot) {
+ return box.setFirstPlot(firstPlot);
+ }
+
+ /**
+ * @return the camera
+ */
+ public Camera getCamera() {
+ return camera;
+ }
+
+ /**
+ * @param camera the camera to set
+ */
+ public UpdateStatus setCamera(Camera camera) {
+ if (this.camera.equals(camera)) {
+ this.camera = camera;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the view type
+ */
+ public Integer getView() {
+ return getViewAsEnum().ordinal();
+ }
+
+ /**
+ * @return the view type
+ */
+ public ViewType getViewAsEnum() {
+ return camera.getView();
+ }
+
+ /**
+ * @param view the view type to set
+ */
+ public UpdateStatus setView(Integer view) {
+ return setViewAsEnum(ViewType.intToEnum(view));
+ }
+
+ /**
+ * @param view the view type to set
+ */
+ public UpdateStatus setViewAsEnum(ViewType view) {
+ return camera.setView(view);
+ }
+
+ /**
+ * @return the isoview
+ */
+ public Boolean getIsoview() {
+ return camera.getIsoview();
+ }
+
+ /**
+ * @param isoview the isoview to set
+ */
+ public UpdateStatus setIsoview(Boolean isoview) {
+ return camera.setIsoview(isoview);
+ }
+
+ /**
+ * @return the cubescaling
+ */
+ public Boolean getCubeScaling() {
+ return camera.getCubeScaling();
+ }
+
+ /**
+ * @param cubeScaling the cubescaling to set
+ */
+ public UpdateStatus setCubeScaling(Boolean cubeScaling) {
+ return camera.setCubeScaling(cubeScaling);
+ }
+
+ /**
+ * @return the rotation angles
+ */
+ public Double[] getRotationAngles() {
+ return camera.getRotationAngles();
+ }
+
+ /**
+ * @param rotationAngles the rotation angles to set
+ * @return the update status.
+ */
+ public UpdateStatus setRotationAngles(Double[] rotationAngles) {
+ if (camera.setRotationAngles(rotationAngles)) {
+ try {
+ GraphicController controller = GraphicController.getController();
+ Figure figure = (Figure) controller.getObjectFromId(getParentFigure());
+ if (figure.getRotationAsEnum().equals(Figure.RotationType.MULTIPLE)) {
+ for (Integer child : figure.getChildren()) {
+ if (child != null) {
+ if (GraphicObjectProperties.__GO_AXES__ == ((Integer) controller.getProperty(child, GraphicObjectProperties.__GO_TYPE__))) {
+ controller.setProperty(
+ child,
+ GraphicObjectProperties.__GO_ROTATION_ANGLES__,
+ rotationAngles);
+ }
+ }
+ }
+ }
+ } catch (ClassCastException ignored) {
+ }
+ return UpdateStatus.Success;
+ } else {
+ return UpdateStatus.NoChange;
+ }
+ }
+
+ /**
+ * @return the 3d rotation angles
+ */
+ public Double[] getRotationAngles3d() {
+ return camera.getRotationAngles3d();
+ }
+
+ /**
+ * @param rotationAngles3d the 3d rotation angles to set
+ */
+ public UpdateStatus setRotationAngles3d(Double[] rotationAngles3d) {
+ return camera.setRotationAngles3d(rotationAngles3d);
+ }
+
+ /**
+ * @return the filled
+ */
+ public Boolean getFilled() {
+ return filled;
+ }
+
+ /**
+ * @param filled the filled to set
+ */
+ public UpdateStatus setFilled(Boolean filled) {
+ if (this.filled != filled) {
+ this.filled = filled;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the background
+ */
+ public Integer getBackground() {
+ return background;
+ }
+
+ /**
+ * @param background the background to set
+ */
+ public UpdateStatus setBackground(Integer background) {
+ if (this.background != background) {
+ this.background = background;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the gridPosition
+ */
+ public Integer getGridPosition() {
+ return getGridPositionAsEnum().ordinal();
+ }
+
+ /**
+ * @return the gridPosition
+ */
+ public GridPosition getGridPositionAsEnum() {
+ return gridPosition;
+ }
+
+ /**
+ * @param gridPosition the gridPosition to set
+ */
+ public UpdateStatus setGridPosition(Integer gridPosition) {
+ return setGridPositionAsEnum(GridPosition.intToEnum(gridPosition));
+ }
+
+ /**
+ * @param gridPosition the gridPosition to set
+ */
+ public UpdateStatus setGridPositionAsEnum(GridPosition gridPosition) {
+ if (this.gridPosition != gridPosition) {
+ this.gridPosition = gridPosition;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the margins
+ */
+ public Double[] getMargins() {
+ Double[] retMargins = new Double[4];
+
+ retMargins[0] = margins[0];
+ retMargins[1] = margins[1];
+ retMargins[2] = margins[2];
+ retMargins[3] = margins[3];
+
+ return retMargins;
+ }
+
+ /**
+ * @param margins the margins to set
+ */
+ public UpdateStatus setMargins(Double[] margins) {
+ if (this.margins[0] != margins[0] || this.margins[1] != margins[1] || this.margins[2] != margins[2] || this.margins[3] != margins[3]) {
+ this.margins[0] = margins[0];
+ this.margins[1] = margins[1];
+ this.margins[2] = margins[2];
+ this.margins[3] = margins[3];
+
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the margins
+ */
+ public Boolean getAutoMargins() {
+ return new Boolean(auto_margins);
+ }
+
+ /**
+ * @param margins the margins to set
+ */
+ public UpdateStatus setAutoMargins(Boolean auto_margins) {
+ if (this.auto_margins != auto_margins) {
+ this.auto_margins = auto_margins;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the title UID
+ */
+ public Integer getTitle() {
+ return title;
+ }
+
+ /**
+ * @param title the title to set
+ */
+ public UpdateStatus setTitle(Integer title) {
+ if (this.title != title) {
+ this.title = title;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_AXES__;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxesContainer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxesContainer.java
new file mode 100755
index 000000000..9e9cf9a3b
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxesContainer.java
@@ -0,0 +1,30 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab enterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axes;
+
+import org.scilab.modules.graphic_objects.figure.ColorMap;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+public interface AxesContainer {
+
+ public Integer getIdentifier();
+ public void accept(Visitor visitor);
+ public Integer getAntialiasing();
+ public Integer[] getAxesSize();
+ public Integer[] getChildren();
+
+ public Integer getBackground();
+ public ColorMap getColorMap();
+ public Integer getParentFigure();
+ public Boolean getVisible();
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxisProperty.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxisProperty.java
new file mode 100755
index 000000000..184c56d11
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/AxisProperty.java
@@ -0,0 +1,566 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axes;
+
+import org.scilab.modules.graphic_objects.contouredObject.Line;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+import org.scilab.modules.graphic_objects.textObject.FormattedText;
+
+import java.util.ArrayList;
+
+
+/**
+ * Axis property class
+ * @author Manuel JULIACHS
+ */
+public class AxisProperty {
+ /**
+ * AxisProperty properties names
+ */
+ public enum AxisPropertyProperty { VISIBLE, REVERSE, GRIDCOLOR, GRIDTHICKNESS, GRIDSTYLE, LABEL, AXISLOCATION,
+ LOGFLAG, UNKNOWNPROPERTY
+ }
+
+ /**
+ * Axis location type
+ * BOTTOM, TOP, MIDDLE, ORIGIN are allowed for an x-axis,
+ * LEFT, RIGHT, MIDDLE or ORIGIN are allowed for a y-axis
+ */
+ public static enum AxisLocation { BOTTOM, TOP, MIDDLE, ORIGIN, LEFT, RIGHT;
+
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the axis location enum
+ */
+ public static AxisLocation intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return AxisLocation.BOTTOM;
+ case 1:
+ return AxisLocation.TOP;
+ case 2:
+ return AxisLocation.MIDDLE;
+ case 3:
+ return AxisLocation.ORIGIN;
+ case 4:
+ return AxisLocation.LEFT;
+ case 5:
+ return AxisLocation.RIGHT;
+ default:
+ return null;
+ }
+ }
+ }
+
+ /** Specifies whether the axis is visible or not */
+ private boolean visible;
+
+ /** Specifies whether the axis is reversed or not */
+ private boolean reverse;
+
+ /** Grid color */
+ private int gridColor;
+
+ /** Grid thickness */
+ private double gridThickness;
+
+ /** Grid style */
+ private Line.LineType gridStyle;
+
+ /** Axis label UID */
+ private Integer label;
+
+ /** Axis location */
+ private AxisLocation axisLocation;
+
+ /** Specifies whether logarithmic coordinates are used or not */
+ private boolean logFlag;
+
+ /** Ticks property */
+ private TicksProperty ticks;
+
+ /** Constructor */
+ public AxisProperty() {
+ visible = false;
+ reverse = false;
+ gridColor = 0;
+ gridThickness = -1;
+ gridStyle = Line.LineType.DASH_DOT;
+
+ /* Sets the label to the null object */
+ label = 0;
+
+ axisLocation = AxisLocation.ORIGIN;
+ ticks = new TicksProperty();
+ logFlag = false;
+ }
+
+ /**
+ * Copy constructor
+ * @param axisProperty the AxisProperty to copy
+ */
+ public AxisProperty(AxisProperty axisProperty) {
+ visible = axisProperty.visible;
+ reverse = axisProperty.reverse;
+ gridColor = axisProperty.gridColor;
+ gridThickness = axisProperty.gridThickness;
+ gridStyle = axisProperty.gridStyle;
+
+ label = 0;
+
+ axisLocation = axisProperty.axisLocation;
+ ticks = new TicksProperty(axisProperty.ticks);
+ logFlag = axisProperty.logFlag;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(String propertyName) {
+ if (propertyName.equals("Visible")) {
+ return AxisPropertyProperty.VISIBLE;
+ } else if (propertyName.equals("Reverse")) {
+ return AxisPropertyProperty.REVERSE;
+ } else if (propertyName.equals("GridColor")) {
+ return AxisPropertyProperty.GRIDCOLOR;
+ } else if (propertyName.equals("GridThickness")) {
+ return AxisPropertyProperty.GRIDTHICKNESS;
+ } else if (propertyName.equals("GridStyle")) {
+ return AxisPropertyProperty.GRIDSTYLE;
+ } else if (propertyName.equals("Label")) {
+ return AxisPropertyProperty.LABEL;
+ } else if (propertyName.equals("AxisLocation")) {
+ return AxisPropertyProperty.AXISLOCATION;
+ } else if (propertyName.equals("LogFlag")) {
+ return AxisPropertyProperty.LOGFLAG;
+ } else {
+ return AxisPropertyProperty.UNKNOWNPROPERTY;
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == AxisPropertyProperty.VISIBLE) {
+ return getVisible();
+ } else if (property == AxisPropertyProperty.REVERSE) {
+ return getReverse();
+ } else if (property == AxisPropertyProperty.GRIDCOLOR) {
+ return getGridColor();
+ } else if (property == AxisPropertyProperty.GRIDTHICKNESS) {
+ return getGridThickness();
+ } else if (property == AxisPropertyProperty.GRIDSTYLE) {
+ return getGridStyle();
+ } else if (property == AxisPropertyProperty.LABEL) {
+ return getLabel();
+ } else if (property == AxisPropertyProperty.AXISLOCATION) {
+ return getAxisLocation();
+ } else if (property == AxisPropertyProperty.LOGFLAG) {
+ return getLogFlag();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public boolean setProperty(Object property, Object value) {
+ if (property == AxisPropertyProperty.VISIBLE) {
+ setVisible((Boolean) value);
+ } else if (property == AxisPropertyProperty.REVERSE) {
+ setReverse((Boolean) value);
+ } else if (property == AxisPropertyProperty.GRIDCOLOR) {
+ setGridColor((Integer) value);
+ } else if (property == AxisPropertyProperty.GRIDTHICKNESS) {
+ setGridThickness((Double) value);
+ } else if (property == AxisPropertyProperty.GRIDSTYLE) {
+ setGridStyle((Integer) value);
+ } else if (property == AxisPropertyProperty.LABEL) {
+ setLabel((Integer) value);
+ } else if (property == AxisPropertyProperty.AXISLOCATION) {
+ setAxisLocation((AxisLocation) value);
+ } else if (property == AxisPropertyProperty.LOGFLAG) {
+ setLogFlag((Boolean) value);
+ }
+
+ return true;
+ }
+
+ /**
+ * @return the axisLocation
+ */
+ public AxisLocation getAxisLocationAsEnum() {
+ return axisLocation;
+ }
+
+ /**
+ * @return the axisLocation
+ */
+ public AxisLocation getAxisLocation() {
+ return axisLocation;
+ }
+
+ /**
+ * @param axisLocation the axisLocation to set
+ */
+ public UpdateStatus setAxisLocation(AxisLocation axisLocation) {
+ if (this.axisLocation != axisLocation) {
+ this.axisLocation = axisLocation;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the gridColor
+ */
+ public Integer getGridColor() {
+ return gridColor;
+ }
+
+ /**
+ * @param gridColor the gridColor to set
+ */
+ public UpdateStatus setGridColor(Integer gridColor) {
+ if (this.gridColor != gridColor) {
+ this.gridColor = gridColor;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the gridThickness
+ */
+ public Double getGridThickness() {
+ return gridThickness;
+ }
+
+ /**
+ * @param gridThickness the gridThickness to set
+ */
+ public UpdateStatus setGridThickness(Double gridThickness) {
+ if (this.gridThickness != gridThickness) {
+ this.gridThickness = gridThickness;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the gridStyle
+ */
+ public Integer getGridStyle() {
+ return gridStyle.asScilabIndex();
+ }
+
+ /**
+ * @param gridStyle the gridStyle to set
+ */
+ public UpdateStatus setGridStyle(Integer gridStyle) {
+ Line.LineType type = Line.LineType.fromScilabIndex(gridStyle);
+ if (this.gridStyle != type) {
+ this.gridStyle = type;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the label
+ */
+ public Integer getLabel() {
+ return label;
+ }
+
+ /**
+ * @param label the label to set
+ */
+ public UpdateStatus setLabel(Integer label) {
+ if (this.label != label) {
+ this.label = label == null ? 0 : label;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the logFlag
+ */
+ public Boolean getLogFlag() {
+ return logFlag;
+ }
+
+ /**
+ * @param logFlag the logFlag to set
+ */
+ public UpdateStatus setLogFlag(Boolean logFlag) {
+ if (this.logFlag != logFlag) {
+ this.logFlag = logFlag;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the reverse
+ */
+ public Boolean getReverse() {
+ return reverse;
+ }
+
+ /**
+ * @param reverse the reverse to set
+ */
+ public UpdateStatus setReverse(Boolean reverse) {
+ if (this.reverse != reverse) {
+ this.reverse = reverse;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the ticks
+ */
+ public TicksProperty getTicks() {
+ return ticks;
+ }
+
+ /**
+ * @param ticks the ticks to set
+ */
+ public UpdateStatus setTicks(TicksProperty ticks) {
+ if (!this.ticks.equals(ticks)) {
+ this.ticks = ticks;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the visible
+ */
+ public Boolean getVisible() {
+ return visible;
+ }
+
+ /**
+ * @param visible the visible to set
+ */
+ public UpdateStatus setVisible(Boolean visible) {
+ if (this.visible != visible) {
+ this.visible = visible;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the autoticks
+ */
+ public Boolean getAutoTicks() {
+ return ticks.getAuto();
+ }
+
+ /**
+ * @param autoticks the autoticks to set
+ */
+ public UpdateStatus setAutoTicks(Boolean autoticks) {
+ return ticks.setAuto(autoticks);
+ }
+
+ /**
+ * @return the number of ticks
+ */
+ public Integer getNumberOfTicks() {
+ return ticks.getNumber();
+ }
+
+ /**
+ * @return the ticks locations
+ */
+ public Double[] getTicksLocations() {
+ return ticks.getLocations();
+ }
+
+ /**
+ * @param ticksLocations the ticks locations to set
+ */
+ public UpdateStatus setTicksLocations(Double[] ticksLocations) {
+ return ticks.setLocations(ticksLocations);
+ }
+
+ /**
+ * @return the ticks labels
+ */
+ public ArrayList<FormattedText> getTicksLabels() {
+ return ticks.getLabels();
+ }
+
+ /**
+ * @param labels the labels to set
+ */
+ public UpdateStatus setTicksLabels(ArrayList<FormattedText> labels) {
+ return ticks.setLabels(labels);
+ }
+
+ /**
+ * @return the ticks labels
+ */
+ public String[] getTicksLabelsStrings() {
+ return ticks.getLabelsStrings();
+ }
+
+ /**
+ * @param labels the labels strings to set
+ */
+ public UpdateStatus setTicksLabelsStrings(String[] labels) {
+ return ticks.setLabelsStrings(labels);
+ }
+
+ /**
+ * @return the number of subticks
+ */
+ public Integer getSubticks() {
+ return ticks.getSubticks();
+ }
+
+ /**
+ * @param subticks the number of subticks to set
+ */
+ public UpdateStatus setSubticks(Integer subticks) {
+ return ticks.setSubticks(subticks);
+ }
+
+ /**
+ * Supposes all ticks labels have the same font style.
+ * To be corrected.
+ * @return the ticks labels font style
+ */
+ public Integer getFontStyle() {
+ return ticks.getFontStyle();
+ }
+
+ /**
+ * Supposes all ticks labels have the same font style.
+ * To be corrected.
+ * @param fontStyle the ticks labels font style to set
+ */
+ public UpdateStatus setFontStyle(Integer fontStyle) {
+ return ticks.setFontStyle(fontStyle);
+ }
+
+ /**
+ * Supposes all ticks labels have the same font size.
+ * To be corrected.
+ * @return the ticks labels font size
+ */
+ public Double getFontSize() {
+ return ticks.getFontSize();
+ }
+
+ /**
+ * Supposes all ticks labels have the same font size.
+ * To be corrected.
+ * @param fontSize the ticks labels font size to set
+ */
+ public UpdateStatus setFontSize(Double fontSize) {
+ return ticks.setFontSize(fontSize);
+ }
+
+ /**
+ * @return the ticks labels format
+ */
+ public String getFormat() {
+ return ticks.getFormat();
+ }
+
+ /**
+ * @param format the ticks labels format set
+ */
+ public UpdateStatus setFormat(String format) {
+ return ticks.setFormat(format);
+ }
+
+ /**
+ * @return the ticks labels scale-translate factors
+ */
+ public Double[] getSTFactors() {
+ return ticks.getSTFactors();
+ }
+
+ /**
+ * @param factors the ticks labels scale-translate factors
+ */
+ public UpdateStatus setSTFactors(Double[] factors) {
+ return ticks.setSTFactors(factors);
+ }
+
+ /**
+ * Supposes all ticks labels have the same font color.
+ * To be corrected.
+ * @return the ticks labels font color
+ */
+ public Integer getFontColor() {
+ return ticks.getFontColor();
+ }
+
+ /**
+ * Supposes all ticks labels have the same font color.
+ * To be corrected.
+ * @param fontColor the ticks labels font color to set
+ */
+ public UpdateStatus setFontColor(Integer fontColor) {
+ return ticks.setFontColor(fontColor);
+ }
+
+ /**
+ * Supposes all ticks labels have the same font fractional.
+ * To be corrected.
+ * @return the ticks labels font fractional
+ */
+ public Boolean getFontFractional() {
+ return ticks.getFontFractional();
+ }
+
+ /**
+ * Supposes all ticks labels have the same font fractional.
+ * To be corrected.
+ * @param fontFractional the ticks labels font fractional to set
+ */
+ public UpdateStatus setFontFractional(Boolean fontFractional) {
+ return ticks.setFontFractional(fontFractional);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Box.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Box.java
new file mode 100755
index 000000000..9cbf389e1
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Box.java
@@ -0,0 +1,370 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axes;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Box class
+ * @author Manuel JULIACHS
+ */
+public class Box {
+ /** Box properties names */
+ public enum BoxProperty { BOX, HIDDENAXISCOLOR, XTIGHTLIMITS, YTIGHTLIMITS, ZTIGHTLIMITS, DATABOUNDS, REALDATABOUNDS, ZOOMENABLED, ZOOMBOX, AUTOSCALE, FIRSTPLOT };
+
+ /** Box type */
+ public static enum BoxType { OFF, ON, HIDDEN_AXES, BACK_HALF;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the box type enum
+ */
+ public static BoxType intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return BoxType.OFF;
+ case 1:
+ return BoxType.ON;
+ case 2:
+ return BoxType.HIDDEN_AXES;
+ case 3:
+ return BoxType.BACK_HALF;
+ default:
+ return null;
+ }
+ }
+ }
+
+ /** Box type */
+ private BoxType box;
+
+ /** Hidden axis color */
+ private int hiddenAxisColor;
+
+ /** Specifies whether tight limits are enforced or not */
+ private boolean[] tightLimits;
+
+ /** Data bounding box (6-element array) */
+ private double[] dataBounds;
+
+ /** Data bounding box, as modified by automatic ticks computation (6-element array) */
+ private double[] realDataBounds;
+
+ /** Speficies whether zooming is enabled or not */
+ private boolean zoomEnabled;
+
+ /** Magnified 3D sub-region (6-element array) */
+ private double[] zoomBox;
+
+ /** Indicates whether data bounds are updated when a new plot command is executed */
+ private boolean autoScale;
+
+ /**
+ * Indicates whether no high-level drawing function has yet been called (true) or
+ * has been called at least once (false)
+ */
+ private boolean firstPlot;
+
+ /** Constructor */
+ public Box() {
+ box = BoxType.OFF;
+ hiddenAxisColor = 0;
+ tightLimits = new boolean[] {false, false, false};
+ dataBounds = new double[] {0, 1, 0, 1, -1, 1};
+ realDataBounds = new double[6];
+ zoomEnabled = false;
+ zoomBox = new double[6];
+ autoScale = false;
+ firstPlot = true;
+ }
+
+ /**
+ * Copy constructor
+ * @param box the Box to copy
+ */
+ public Box(Box box) {
+ this.box = box.box;
+ hiddenAxisColor = box.hiddenAxisColor;
+
+ tightLimits = new boolean[3];
+ for (int i = 0; i < tightLimits.length; i++) {
+ tightLimits[i] = box.tightLimits[i];
+ }
+
+ dataBounds = new double[6];
+
+ for (int i = 0; i < dataBounds.length; i++) {
+ dataBounds[i] = box.dataBounds[i];
+ }
+
+ realDataBounds = new double[6];
+
+ for (int i = 0; i < realDataBounds.length; i++) {
+ realDataBounds[i] = box.realDataBounds[i];
+ }
+
+ zoomEnabled = box.zoomEnabled;
+
+ zoomBox = new double[6];
+
+ for (int i = 0; i < zoomBox.length; i++) {
+ zoomBox[i] = box.zoomBox[i];
+ }
+
+ autoScale = box.autoScale;
+ firstPlot = box.firstPlot;
+ }
+
+ /**
+ * @return the autoScale
+ */
+ public Boolean getAutoScale() {
+ return autoScale;
+ }
+
+ /**
+ * @param autoScale the autoScale to set
+ */
+ public UpdateStatus setAutoScale(Boolean autoScale) {
+ if (this.autoScale != autoScale) {
+ this.autoScale = autoScale;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the box
+ */
+ public BoxType getBox() {
+ return box;
+ }
+
+ /**
+ * @param box the box to set
+ */
+ public UpdateStatus setBox(BoxType box) {
+ if (this.box != box) {
+ this.box = box;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * Return the data bounds.
+ * The array contain : {xMin, xMax, yMin, yMax, zMin, zMax}
+ * @return the dataBounds
+ */
+ public Double[] getDataBounds() {
+ Double[] retDataBounds = new Double[6];
+
+ for (int i = 0; i < retDataBounds.length; i++) {
+ retDataBounds[i] = dataBounds[i];
+ }
+
+ return retDataBounds;
+ }
+
+ /**
+ * @param dataBounds the dataBounds to set
+ */
+ public UpdateStatus setDataBounds(Double[] dataBounds) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ final int len = Math.min(this.dataBounds.length, dataBounds.length);
+ for (int i = 0; i < len; i++) {
+ if (this.dataBounds[i] != dataBounds[i]) {
+ this.dataBounds[i] = dataBounds[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the hiddenAxisColor
+ */
+ public Integer getHiddenAxisColor() {
+ return hiddenAxisColor;
+ }
+
+ /**
+ * @param hiddenAxisColor the hiddenAxisColor to set
+ */
+ public UpdateStatus setHiddenAxisColor(Integer hiddenAxisColor) {
+ if (this.hiddenAxisColor != hiddenAxisColor) {
+ this.hiddenAxisColor = hiddenAxisColor;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the realDataBounds
+ */
+ public Double[] getRealDataBounds() {
+ Double[] retRealDataBounds = new Double[6];
+
+ for (int i = 0; i < retRealDataBounds.length; i++) {
+ retRealDataBounds[i] = realDataBounds[i];
+ }
+
+ return retRealDataBounds;
+ }
+
+ /**
+ * @param realDataBounds the realDataBounds to set
+ */
+ public UpdateStatus setRealDataBounds(Double[] realDataBounds) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ final int len = Math.min(this.realDataBounds.length, realDataBounds.length);
+ for (int i = 0; i < len; i++) {
+ if (this.realDataBounds[i] != realDataBounds[i]) {
+ this.realDataBounds[i] = realDataBounds[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the tightLimits for X axis
+ */
+ public Boolean getXTightLimits() {
+ return tightLimits[0];
+ }
+
+ /**
+ * @return the tightLimits for Y axis
+ */
+ public Boolean getYTightLimits() {
+ return tightLimits[1];
+ }
+
+ /**
+ * @return the tightLimits for X axis
+ */
+ public Boolean getZTightLimits() {
+ return tightLimits[2];
+ }
+
+ /**
+ * @param tightLimits the tightLimits to set for X axis
+ */
+ public UpdateStatus setXTightLimits(Boolean tightLimits) {
+ if (this.tightLimits[0] != tightLimits) {
+ this.tightLimits[0] = tightLimits;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @param tightLimits the tightLimits to set for Y axis
+ */
+ public UpdateStatus setYTightLimits(Boolean tightLimits) {
+ if (this.tightLimits[1] != tightLimits) {
+ this.tightLimits[1] = tightLimits;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @param tightLimits the tightLimits to set for Z axis
+ */
+ public UpdateStatus setZTightLimits(Boolean tightLimits) {
+ if (this.tightLimits[2] != tightLimits) {
+ this.tightLimits[2] = tightLimits;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the zoomEnabled
+ */
+ public Boolean getZoomEnabled() {
+ return zoomEnabled;
+ }
+
+ /**
+ * @param zoomEnabled the zoomEnabled to set
+ */
+ public UpdateStatus setZoomEnabled(Boolean zoomEnabled) {
+ if (this.zoomEnabled != zoomEnabled) {
+ this.zoomEnabled = zoomEnabled;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the zoomBox
+ */
+ public Double[] getZoomBox() {
+ Double[] retZoomBox = new Double[6];
+
+ for (int i = 0; i < retZoomBox.length; i++) {
+ retZoomBox[i] = zoomBox[i];
+ }
+
+ return retZoomBox;
+ }
+
+ /**
+ * @param zoomBox the zoomBox to set
+ */
+ public UpdateStatus setZoomBox(Double[] zoomBox) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ final int len = Math.min(this.zoomBox.length, zoomBox.length);
+ for (int i = 0; i < len; i++) {
+ if (this.zoomBox[i] != zoomBox[i]) {
+ this.zoomBox[i] = zoomBox[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the firstPlot
+ */
+ public Boolean getFirstPlot() {
+ return firstPlot;
+ }
+
+ /**
+ * @param firstPlot the firstPlot to set
+ */
+ public UpdateStatus setFirstPlot(Boolean firstPlot) {
+ if (this.firstPlot != firstPlot) {
+ this.firstPlot = firstPlot;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Camera.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Camera.java
new file mode 100755
index 000000000..163beaec1
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/Camera.java
@@ -0,0 +1,229 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axes;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Camera class
+ * @author Manuel JULIACHS
+ */
+public class Camera {
+ /** Default rotation angles */
+ public static final double[] DEFAULT_ROTATION_ANGLES = {0.0, 270.0};
+
+ /** Camera properties names */
+ public enum CameraProperty { VIEW, ISOVIEW, CUBESCALING, ROTATIONANGLES, ROTATIONANGLES3D };
+
+ /** View type */
+ public enum ViewType { VIEW_2D, VIEW_3D;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the view type type enum
+ */
+ public static ViewType intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return ViewType.VIEW_2D;
+ case 1:
+ return ViewType.VIEW_3D;
+ default:
+ return null;
+ }
+ }
+ }
+
+ /** Specifies whether the projection must be performed for a 2D or a 3D scene */
+ private ViewType view;
+
+ /** Specifies whether an isoview transformation must be applied or not */
+ private boolean isoview;
+
+ /** Specifies whether a unit cube transformation must be performed */
+ private boolean cubeScaling;
+
+ /** 2-element array (alpha and theta rotation angles) */
+ private double[] rotationAngles;
+
+ /**
+ * Last know values of the rotation angles when View was equal to VIEW_3D
+ * 2-element array (alpha and theta)
+ */
+ private double[] rotationAngles3d;
+
+ /** Constructor */
+ public Camera() {
+ view = ViewType.VIEW_2D;
+ isoview = false;
+ cubeScaling = false;
+ rotationAngles = new double[2];
+ rotationAngles3d = new double[2];
+ }
+
+ /**
+ * Copy constructor
+ * @param camera the Camera to copy
+ */
+ public Camera(Camera camera) {
+ view = camera.view;
+ isoview = camera.isoview;
+ cubeScaling = camera.cubeScaling;
+
+ rotationAngles = new double[2];
+
+ rotationAngles[0] = camera.rotationAngles[0];
+ rotationAngles[1] = camera.rotationAngles[1];
+
+ rotationAngles3d = new double[2];
+
+ rotationAngles3d[0] = camera.rotationAngles3d[0];
+ rotationAngles3d[1] = camera.rotationAngles3d[1];
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof Camera) {
+ Camera c = (Camera) o;
+ return view == c.view && isoview == c.isoview && cubeScaling == c.cubeScaling && rotationAngles[0] == c.rotationAngles[0] && rotationAngles[1] == c.rotationAngles[1] && rotationAngles3d[0] == c.rotationAngles3d[0] && rotationAngles3d[1] == c.rotationAngles3d[1];
+ }
+
+ return false;
+ }
+
+ /**
+ * @return the cubeScaling
+ */
+ public Boolean getCubeScaling() {
+ return cubeScaling;
+ }
+
+ /**
+ * @param cubeScaling the cubeScaling to set
+ */
+ public UpdateStatus setCubeScaling(Boolean cubeScaling) {
+ if (this.cubeScaling != cubeScaling) {
+ this.cubeScaling = cubeScaling;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the isoview
+ */
+ public Boolean getIsoview() {
+ return isoview;
+ }
+
+ /**
+ * @param isoview the isoview to set
+ */
+ public UpdateStatus setIsoview(Boolean isoview) {
+ if (this.isoview != isoview) {
+ this.isoview = isoview;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the rotationAngles in degree
+ */
+ public Double[] getRotationAngles() {
+ Double [] retRotationAngles = new Double[2];
+
+ retRotationAngles[0] = rotationAngles[0];
+ retRotationAngles[1] = rotationAngles[1];
+
+ return retRotationAngles;
+ }
+
+ /**
+ * @param rotationAngles the rotationAngles to set
+ * @return true if the rotation angles have changed.
+ */
+ public boolean setRotationAngles(Double[] rotationAngles) {
+ if ((this.rotationAngles[0] != rotationAngles[0]) || (this.rotationAngles[1] != rotationAngles[1])) {
+ if (rotationAngles[0] == DEFAULT_ROTATION_ANGLES[0] && rotationAngles[1] == DEFAULT_ROTATION_ANGLES[1]) {
+ view = ViewType.VIEW_2D;
+ } else if (view == ViewType.VIEW_2D) {
+ view = ViewType.VIEW_3D;
+ }
+
+ this.rotationAngles[0] = rotationAngles[0];
+ this.rotationAngles[1] = rotationAngles[1];
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * @return the 3d rotationAngles
+ */
+ public Double[] getRotationAngles3d() {
+ Double [] retRotationAngles3d = new Double[2];
+
+ retRotationAngles3d[0] = rotationAngles3d[0];
+ retRotationAngles3d[1] = rotationAngles3d[1];
+
+ return retRotationAngles3d;
+ }
+
+ /**
+ * @param rotationAngles3d the 3d rotationAngles to set
+ */
+ public UpdateStatus setRotationAngles3d(Double[] rotationAngles3d) {
+ if (this.rotationAngles3d[0] != rotationAngles3d[0] || this.rotationAngles3d[1] != rotationAngles3d[1]) {
+ this.rotationAngles3d[0] = rotationAngles3d[0];
+ this.rotationAngles3d[1] = rotationAngles3d[1];
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the view
+ */
+ public ViewType getView() {
+ return view;
+ }
+
+ /**
+ * @param view the view to set
+ */
+ public UpdateStatus setView(ViewType view) {
+ if (this.view != view) {
+ if (view == ViewType.VIEW_2D) {
+ rotationAngles3d[0] = rotationAngles[0];
+ rotationAngles3d[1] = rotationAngles[1];
+
+ rotationAngles[0] = DEFAULT_ROTATION_ANGLES[0];
+ rotationAngles[1] = DEFAULT_ROTATION_ANGLES[1];
+ } else if (view == ViewType.VIEW_3D && this.view == ViewType.VIEW_2D) {
+ rotationAngles[0] = rotationAngles3d[0];
+ rotationAngles[1] = rotationAngles3d[1];
+ }
+ this.view = view;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/TicksProperty.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/TicksProperty.java
new file mode 100755
index 000000000..326c23493
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axes/TicksProperty.java
@@ -0,0 +1,742 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axes;
+
+import java.util.ArrayList;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+import org.scilab.modules.graphic_objects.textObject.Font;
+import org.scilab.modules.graphic_objects.textObject.FormattedText;
+
+/**
+ * TicksProperty class
+ * @author Manuel JULIACHS
+ */
+public class TicksProperty {
+ /** TicksProperty properties names */
+ public enum TicksPropertyProperty { AUTO, LOCATIONS, LABELS,
+ FONT_SIZE, FONT_STYLE, FONT_COLOR, SUBTICKS
+ };
+
+ /** Default number of ticks */
+ private static final int DEFAULT_NUMBER_OF_TICKS = 11;
+
+ /** Specifies whether ticks are automatically computed or not */
+ private boolean auto;
+
+ /** Number of subticks between two main ticks */
+ private int subticks;
+
+ /** Default font */
+ private Font defaultFont;
+
+ private String format = "";
+ private Double[] st_factors = new Double[] {1., 0.};
+
+ /** TicksArrays class */
+ private class TicksArrays {
+ /** Ticks locations */
+ private double[] locations;
+
+ /** Ticks labels */
+ private ArrayList <FormattedText> labels;
+
+ /** Number of ticks */
+ private int number;
+
+ /**
+ * Constructor
+ */
+ public TicksArrays(int number) {
+ locations = new double[number];
+ labels = new ArrayList<FormattedText>(number);
+
+ for (int i = 0; i < number; i++) {
+ labels.add(i, new FormattedText());
+ }
+
+ this.number = number;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof TicksArrays) {
+ TicksArrays ta = (TicksArrays) o;
+ if (ta.number == number) {
+ for (int i = 0; i < number; i++) {
+ if (ta.locations[i] != locations[i] || !ta.labels.get(i).equals(labels.get(i))) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @return the number of ticks
+ */
+ public Integer getNumber() {
+ return number;
+ }
+
+ /**
+ * @return the labels
+ */
+ public ArrayList<FormattedText> getLabels() {
+ return labels;
+ }
+
+ /**
+ * @param labels the labels to set
+ */
+ public UpdateStatus setLabels(ArrayList<FormattedText> labels) {
+ UpdateStatus status = this.labels.equals(labels) ? UpdateStatus.NoChange : UpdateStatus.Success;
+ if (status == UpdateStatus.Success) {
+ if (!this.labels.isEmpty()) {
+ this.labels.clear();
+ }
+
+ for (int i = 0; i < labels.size(); i++) {
+ this.labels.add(i, new FormattedText(labels.get(i)));
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the labels strings
+ */
+ public String[] getLabelsStrings() {
+ String[] labelsStrings;
+
+ labelsStrings = new String[number];
+
+ for (int i = 0; i < number; i++) {
+ labelsStrings[i] = new String(labels.get(i).getText()).replaceAll("\u00A0", " ");
+ }
+
+ return labelsStrings;
+ }
+
+ /**
+ * Sets the ticks labels strings
+ * Requires the corresponding ticks locations to have previously been set.
+ * @param labels the labels to set
+ */
+ public UpdateStatus setLabelsStrings(String[] labels) {
+ if (labels.length != number) {
+ return UpdateStatus.NoChange;
+ }
+
+ if (this.labels == null || this.labels.size() != labels.length) {
+ this.labels = new ArrayList<FormattedText>(0);
+
+ Font font = new Font(defaultFont);
+ for (int i = 0; i < labels.length; i++) {
+ FormattedText newText = new FormattedText(labels[i], font);
+ this.labels.add(newText);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < number; i++) {
+ FormattedText ft = this.labels.get(i);
+ if (!ft.getText().equals(labels[i])) {
+ this.labels.get(i).setText(labels[i]);
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the locations
+ */
+ public Double[] getLocations() {
+ Double[] retLocations;
+
+ retLocations = new Double[number];
+
+ for (int i = 0; i < number; i++) {
+ retLocations[i] = locations[i];
+ }
+
+ return retLocations;
+ }
+
+ /**
+ * Sets the ticks locations
+ * Also sets the current number of ticks to the size of the locations array
+ * if the latter is resized.
+ * @param locations the locations to set
+ */
+ public UpdateStatus setLocations(Double[] locations) {
+ UpdateStatus status = UpdateStatus.Success;
+ if (this.locations == null || number != locations.length) {
+ this.locations = new double[locations.length];
+ number = locations.length;
+ } else {
+ status = UpdateStatus.NoChange;
+ }
+
+ for (int i = 0; i < locations.length; i++) {
+ if (status == UpdateStatus.NoChange) {
+ if (this.locations[i] != locations[i]) {
+ status = UpdateStatus.Success;
+ this.locations[i] = locations[i];
+ }
+ } else {
+ this.locations[i] = locations[i];
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font style.
+ * To be corrected.
+ * @return the ticks labels font style
+ */
+ public Integer getFontStyle() {
+ if (!labels.isEmpty()) {
+ return labels.get(0).getFont().getStyle();
+ }
+ return 0;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font style.
+ * To be corrected.
+ * @param fontStyle the ticks labels font style to set
+ */
+ public UpdateStatus setFontStyle(Integer fontStyle) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < labels.size(); i++) {
+ Font f = labels.get(i).getFont();
+ if (f.getStyle() != fontStyle) {
+ f.setStyle(fontStyle);
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font size.
+ * To be corrected.
+ * @return the ticks labels font size
+ */
+ public Double getFontSize() {
+ if (!labels.isEmpty()) {
+ return labels.get(0).getFont().getSize();
+ }
+ return 0.0;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font size.
+ * To be corrected.
+ * @param fontSize the ticks labels font size to set
+ */
+ public UpdateStatus setFontSize(Double fontSize) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < labels.size(); i++) {
+ Font f = labels.get(i).getFont();
+ if (f.getSize() != fontSize) {
+ f.setSize(fontSize);
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font color.
+ * To be corrected.
+ * @return the ticks labels font color
+ */
+ public Integer getFontColor() {
+ if (!labels.isEmpty()) {
+ return labels.get(0).getFont().getColor();
+ }
+ return 0;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font color.
+ * To be corrected.
+ * @param fontColor the ticks labels font color to set
+ */
+ public UpdateStatus setFontColor(Integer fontColor) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < labels.size(); i++) {
+ Font f = labels.get(i).getFont();
+ if (!f.getColor().equals(fontColor)) {
+ f.setColor(fontColor);
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font fractional.
+ * To be corrected.
+ * @return the ticks labels font fractional
+ */
+ public Boolean getFontFractional() {
+ if (!labels.isEmpty()) {
+ return labels.get(0).getFont().getFractional();
+ }
+ return false;
+ }
+
+ /**
+ * Supposes all ticks labels have the same font fractional.
+ * To be corrected.
+ * @param fontFractional the ticks labels font fractional to set
+ */
+ public UpdateStatus setFontFractional(Boolean fontFractional) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ for (int i = 0; i < labels.size(); i++) {
+ Font f = labels.get(i).getFont();
+ if (f.getFractional() != fontFractional) {
+ f.setFractional(fontFractional);
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+ }
+
+ /** Automatic ticks */
+ TicksArrays automaticTicks;
+
+ /** User ticks */
+ TicksArrays userTicks;
+
+ /** Constructor */
+ public TicksProperty() {
+ auto = false;
+
+ subticks = 0;
+
+ defaultFont = new Font();
+
+ automaticTicks = new TicksArrays(DEFAULT_NUMBER_OF_TICKS);
+ userTicks = new TicksArrays(0);
+ }
+
+ /**
+ * Copy constructor
+ * @param ticksProperty the TicksProperty to copy
+ */
+ public TicksProperty(TicksProperty ticksProperty) {
+ auto = ticksProperty.auto;
+
+ subticks = ticksProperty.subticks;
+ format = ticksProperty.format;
+ st_factors = ticksProperty.st_factors;
+
+ defaultFont = new Font(ticksProperty.defaultFont);
+
+ automaticTicks = new TicksArrays(0);
+ userTicks = new TicksArrays(0);
+
+ automaticTicks.setLocations(ticksProperty.automaticTicks.getLocations());
+ userTicks.setLocations(ticksProperty.userTicks.getLocations());
+
+ automaticTicks.setLabels(ticksProperty.automaticTicks.getLabels());
+ userTicks.setLabels(ticksProperty.userTicks.getLabels());
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof TicksProperty) {
+ TicksProperty tp = (TicksProperty) o;
+ if (tp.auto == auto && tp.subticks == subticks && tp.defaultFont.equals(defaultFont)) {
+ if (auto) {
+ return automaticTicks.equals(tp.automaticTicks);
+ } else {
+ return userTicks.equals(tp.userTicks);
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @return the format
+ */
+ public String getFormat() {
+ return format;
+ }
+
+ /**
+ * @param format the format to set
+ */
+ public UpdateStatus setFormat(String format) {
+ if (!this.format.equals(format)) {
+ this.format = format;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the format
+ */
+ public Double[] getSTFactors() {
+ return st_factors;
+ }
+
+ /**
+ * @param format the format to set
+ */
+ public UpdateStatus setSTFactors(Double[] factors) {
+ if (!this.st_factors[0].equals(factors[0]) || !this.st_factors[1].equals(factors[1])) {
+ this.st_factors = factors;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the auto
+ */
+ public Boolean getAuto() {
+ return auto;
+ }
+
+ /**
+ * @param auto the auto to set
+ */
+ public UpdateStatus setAuto(Boolean auto) {
+ if (this.auto != auto) {
+ this.auto = auto;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the labels
+ */
+ public ArrayList<FormattedText> getLabels() {
+ if (auto) {
+ return automaticTicks.getLabels();
+ } else {
+ return userTicks.getLabels();
+ }
+ }
+
+ /**
+ * @param labels the labels to set
+ */
+ public UpdateStatus setLabels(ArrayList<FormattedText> labels) {
+ if (auto) {
+ return automaticTicks.setLabels(labels);
+ } else {
+ return userTicks.setLabels(labels);
+ }
+ }
+
+ /**
+ * @return the labels strings
+ */
+ public String[] getLabelsStrings() {
+ if (auto) {
+ return automaticTicks.getLabelsStrings();
+ } else {
+ return userTicks.getLabelsStrings();
+ }
+ }
+
+ /**
+ * Sets the ticks labels strings
+ * Requires the corresponding ticks locations to have previously been set.
+ * @param labels the labels to set
+ */
+ public UpdateStatus setLabelsStrings(String[] labels) {
+ if (auto) {
+ return automaticTicks.setLabelsStrings(labels);
+ } else {
+ return userTicks.setLabelsStrings(labels);
+ }
+ }
+
+ /**
+ * @return the number of ticks
+ */
+ public Integer getNumber() {
+ if (auto) {
+ return automaticTicks.getNumber();
+ } else {
+ return userTicks.getNumber();
+ }
+ }
+
+ /**
+ * @return the locations
+ */
+ public Double[] getLocations() {
+ if (auto) {
+ return automaticTicks.getLocations();
+ } else {
+ return userTicks.getLocations();
+ }
+ }
+
+ /**
+ * Sets the ticks locations
+ * Also sets the current number of ticks to the size of the locations array
+ * if the latter is resized.
+ * @param locations the locations to set
+ */
+ public UpdateStatus setLocations(Double[] locations) {
+ if (auto) {
+ return automaticTicks.setLocations(locations);
+ } else {
+ return userTicks.setLocations(locations);
+ }
+ }
+
+ /**
+ * @return the subticks
+ */
+ public Integer getSubticks() {
+ return subticks;
+ }
+
+ /**
+ * @param subticks the subticks to set
+ */
+ public UpdateStatus setSubticks(Integer subticks) {
+ if (this.subticks != subticks) {
+ this.subticks = subticks;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * Supposes that all automatic and user ticks labels have the same font style.
+ * To be corrected (commented out block) when the associated C get function is completed.
+ * @return the ticks labels font style
+ */
+ public Integer getFontStyle() {
+ return automaticTicks.getFontStyle();
+
+ /*
+ if (auto) {
+ return automaticTicks.getFontStyle();
+ } else {
+ return userTicks.getFontStyle();
+ }
+ */
+ }
+
+ /**
+ * Supposes that all automatic and user ticks labels have the same font style.
+ * To be corrected (commented out block) when the associated C set function is completed.
+ * @param fontStyle the ticks labels font style to set
+ */
+ public UpdateStatus setFontStyle(Integer fontStyle) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (fontStyle != defaultFont.getStyle()) {
+ defaultFont.setStyle(fontStyle);
+ status = UpdateStatus.Success;
+ }
+
+ UpdateStatus s1 = automaticTicks.setFontStyle(fontStyle);
+ UpdateStatus s2 = userTicks.setFontStyle(fontStyle);
+
+ if (status == UpdateStatus.Success || s1 == UpdateStatus.Success || s2 == UpdateStatus.Success) {
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+
+ /*
+ if (auto) {
+ automaticTicks.setFontStyle(fontStyle);
+ } else {
+ userTicks.setFontStyle(fontStyle);
+ }
+ */
+ }
+
+ /**
+ * Supposes that all automatic and user ticks labels have the same font size.
+ * To be corrected (commented out block) when the associated C get function is completed.
+ * @return the ticks labels font size
+ */
+ public Double getFontSize() {
+ return automaticTicks.getFontSize();
+
+ /*
+ if (auto) {
+ return automaticTicks.getFontSize();
+ } else {
+ return userTicks.getFontSize();
+ }
+ */
+ }
+
+ /**
+ * Supposes that all automatic and user ticks labels have the same font size.
+ * To be corrected (commented out block) when the associated C set function is completed.
+ * @param fontSize the ticks labels font size to set
+ */
+ public UpdateStatus setFontSize(Double fontSize) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (fontSize != defaultFont.getSize()) {
+ defaultFont.setSize(fontSize);
+ status = UpdateStatus.Success;
+ }
+
+ UpdateStatus s1 = automaticTicks.setFontSize(fontSize);
+ UpdateStatus s2 = userTicks.setFontSize(fontSize);
+
+ if (status == UpdateStatus.Success || s1 == UpdateStatus.Success || s2 == UpdateStatus.Success) {
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+
+ /*
+ if (auto) {
+ automaticTicks.setFontSize(fontSize);
+ } else {
+ userTicks.setFontSize(fontSize);
+ }
+ */
+ }
+
+ /**
+ * Supposes that all automatic and user ticks labels have the same font color.
+ * To be corrected (commented out block) when the associated C get function is completed.
+ * @return the ticks labels font color
+ */
+ public Integer getFontColor() {
+ return automaticTicks.getFontColor();
+
+ /*
+ if (auto) {
+ return automaticTicks.getFontColor();
+ } else {
+ return userTicks.getFontColor();
+ }
+ */
+ }
+
+ /**
+ * Supposes that all automatic and user ticks labels have the same font color.
+ * To be corrected (commented out block) when the associated C set function is completed.
+ * @param fontColor the ticks labels font color to set
+ */
+ public UpdateStatus setFontColor(Integer fontColor) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (fontColor != defaultFont.getColor()) {
+ defaultFont.setColor(fontColor);
+ status = UpdateStatus.Success;
+ }
+
+ UpdateStatus s1 = automaticTicks.setFontColor(fontColor);
+ UpdateStatus s2 = userTicks.setFontColor(fontColor);
+
+ if (status == UpdateStatus.Success || s1 == UpdateStatus.Success || s2 == UpdateStatus.Success) {
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+
+ /*
+ if (auto) {
+ automaticTicks.setFontColor(fontColor);
+ } else {
+ userTicks.setFontColor(fontColor);
+ }
+ */
+ }
+
+ /**
+ * Supposes all automatic and user ticks labels have the same font fractional.
+ * To be corrected (commented out block) when the associated C get function is completed.
+ * @return the ticks labels font fractional
+ */
+ public Boolean getFontFractional() {
+ return automaticTicks.getFontFractional();
+
+ /*
+ if (auto) {
+ return automaticTicks.getFontFractional();
+ } else {
+ return userTicks.getFontFractional();
+ }
+ */
+ }
+
+ /**
+ * Supposes all automatic and user ticks labels have the same font fractional.
+ * To be corrected (commented out block) when the associated C set function is completed.
+ * @param fontFractional the ticks labels font fractional to set
+ */
+ public UpdateStatus setFontFractional(Boolean fontFractional) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (fontFractional != defaultFont.getFractional()) {
+ defaultFont.setFractional(fontFractional);
+ status = UpdateStatus.Success;
+ }
+
+ UpdateStatus s1 = automaticTicks.setFontFractional(fontFractional);
+ UpdateStatus s2 = userTicks.setFontFractional(fontFractional);
+
+ if (status == UpdateStatus.Success || s1 == UpdateStatus.Success || s2 == UpdateStatus.Success) {
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+
+ /*
+ if (auto) {
+ automaticTicks.setFontFractional(fontFractional);
+ } else {
+ userTicks.setFontFractional(fontFractional);
+ }
+ */
+ }
+
+ public Font getDefaultFont() {
+ return defaultFont;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axis/Axis.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axis/Axis.java
new file mode 100755
index 000000000..affe79a71
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/axis/Axis.java
@@ -0,0 +1,553 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.axis;
+
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.textObject.Font;
+
+import java.util.ArrayList;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_FRACTIONAL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FORMATN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_NUMBER_TICKS_LABELS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SUBTICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TICKS_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TICKS_DIRECTION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TICKS_LABELS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TICKS_SEGMENT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TICKS_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_NUMBER_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_TICKS_COORDS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_NUMBER_TICKS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_TICKS_COORDS__;
+
+/**
+ * Axis class
+ * @author Manuel JULIACHS
+ */
+public class Axis extends ClippableContouredObject {
+ /** Axis properties */
+ private enum AxisProperty { TICKSDIRECTION, XNUMBERTICKS, YNUMBERTICKS, XTICKSCOORDS, YTICKSCOORDS, TICKSCOLOR, TICKSSEGMENT, TICKSSTYLE,
+ SUBTICKS, NUMBERTICKSLABELS, TICKSLABELS, FORMATN, FONT
+ };
+
+ /** Default number of ticks */
+ private static final int DEFAULT_NUMBER_OF_TICKS = 10;
+
+ /** Ticks direction */
+ public enum TicksDirection {TOP, BOTTOM, LEFT, RIGHT}
+
+ /** Ticks direction */
+ private TicksDirection ticksDirection;
+
+ /** Ticks x-coordinate position vector */
+ private double[] xTicksCoords;
+
+ /** Ticks y-coordinate position vector */
+ private double[] yTicksCoords;
+
+ /** Ticks color */
+ private int ticksColor;
+
+ /** Specifies whether the axis segment is drawn */
+ private boolean ticksSegment;
+
+ /** Specifies the ticks style (either 0, 1, or 2) */
+ private int ticksStyle;
+
+ /** Number of subticks */
+ private int subticks;
+
+ /** Ticks labels list */
+ private ArrayList <String> ticksLabels;
+
+ /** Label format */
+ private String formatn;
+
+ /** Font */
+ private Font font;
+
+ /** Constructor */
+ public Axis() {
+ super();
+ ticksDirection = TicksDirection.TOP;
+ xTicksCoords = new double[DEFAULT_NUMBER_OF_TICKS];
+ yTicksCoords = new double[1];
+ ticksColor = 0;
+ ticksSegment = false;
+ ticksLabels = new ArrayList<String>(DEFAULT_NUMBER_OF_TICKS);
+ formatn = new String("");
+ font = new Font();
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_TICKS_DIRECTION__ :
+ return AxisProperty.TICKSDIRECTION;
+ case __GO_X_NUMBER_TICKS__ :
+ return AxisProperty.XNUMBERTICKS;
+ case __GO_Y_NUMBER_TICKS__ :
+ return AxisProperty.YNUMBERTICKS;
+ case __GO_X_TICKS_COORDS__ :
+ return AxisProperty.XTICKSCOORDS;
+ case __GO_Y_TICKS_COORDS__ :
+ return AxisProperty.YTICKSCOORDS;
+ case __GO_TICKS_COLOR__ :
+ return AxisProperty.TICKSCOLOR;
+ case __GO_TICKS_SEGMENT__ :
+ return AxisProperty.TICKSSEGMENT;
+ case __GO_TICKS_STYLE__ :
+ return AxisProperty.TICKSSTYLE;
+ case __GO_SUBTICKS__ :
+ return AxisProperty.SUBTICKS;
+ case __GO_NUMBER_TICKS_LABELS__ :
+ return AxisProperty.NUMBERTICKSLABELS;
+ case __GO_TICKS_LABELS__ :
+ return AxisProperty.TICKSLABELS;
+ case __GO_FORMATN__ :
+ return AxisProperty.FORMATN;
+ case __GO_FONT__ :
+ return AxisProperty.FONT;
+ case __GO_FONT_STYLE__ :
+ return Font.FontProperty.STYLE;
+ case __GO_FONT_SIZE__ :
+ return Font.FontProperty.SIZE;
+ case __GO_FONT_COLOR__ :
+ return Font.FontProperty.COLOR;
+ case __GO_FONT_FRACTIONAL__ :
+ return Font.FontProperty.FRACTIONAL;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == AxisProperty.TICKSDIRECTION) {
+ return getTicksDirection();
+ } else if (property == AxisProperty.XNUMBERTICKS) {
+ return getXNumberTicks();
+ } else if (property == AxisProperty.YNUMBERTICKS) {
+ return getYNumberTicks();
+ } else if (property == AxisProperty.XTICKSCOORDS) {
+ return getXTicksCoords();
+ } else if (property == AxisProperty.YTICKSCOORDS) {
+ return getYTicksCoords();
+ } else if (property == AxisProperty.TICKSCOLOR) {
+ return getTicksColor();
+ } else if (property == AxisProperty.TICKSSEGMENT) {
+ return getTicksSegment();
+ } else if (property == AxisProperty.TICKSSTYLE) {
+ return getTicksStyle();
+ } else if (property == AxisProperty.SUBTICKS) {
+ return getSubticks();
+ } else if (property == AxisProperty.NUMBERTICKSLABELS) {
+ return getNumberTicksLabels();
+ } else if (property == AxisProperty.TICKSLABELS) {
+ return getTicksLabels();
+ } else if (property == AxisProperty.FORMATN) {
+ return getFormatn();
+ } else if (property == AxisProperty.FONT) {
+ return getFont();
+ } else if (property == Font.FontProperty.STYLE) {
+ return getStyle();
+ } else if (property == Font.FontProperty.SIZE) {
+ return getSize();
+ } else if (property == Font.FontProperty.COLOR) {
+ return getColor();
+ } else if (property == Font.FontProperty.FRACTIONAL) {
+ return getFractional();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == AxisProperty.TICKSDIRECTION) {
+ setTicksDirection((Integer) value);
+ } else if (property == AxisProperty.XTICKSCOORDS) {
+ setXTicksCoords((Double[]) value);
+ } else if (property == AxisProperty.YTICKSCOORDS) {
+ setYTicksCoords((Double[]) value);
+ } else if (property == AxisProperty.TICKSCOLOR) {
+ setTicksColor((Integer) value);
+ } else if (property == AxisProperty.TICKSSEGMENT) {
+ setTicksSegment((Boolean) value);
+ } else if (property == AxisProperty.TICKSSTYLE) {
+ setTicksStyle((Integer) value);
+ } else if (property == AxisProperty.SUBTICKS) {
+ setSubticks((Integer) value);
+ } else if (property == AxisProperty.TICKSLABELS) {
+ setTicksLabels((String[]) value);
+ } else if (property == AxisProperty.FORMATN) {
+ setFormatn((String) value);
+ } else if (property == AxisProperty.FONT) {
+ setFont((Font) value);
+ } else if (property == Font.FontProperty.STYLE) {
+ setStyle((Integer) value);
+ } else if (property == Font.FontProperty.SIZE) {
+ setSize((Double) value);
+ } else if (property == Font.FontProperty.COLOR) {
+ setColor((Integer) value);
+ } else if (property == Font.FontProperty.FRACTIONAL) {
+ setFractional((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font
+ */
+ public Font getFont() {
+ return font;
+ }
+
+ /**
+ * @param font the font to set
+ */
+ public UpdateStatus setFont(Font font) {
+ this.font = font;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font style
+ */
+ public Integer getStyle() {
+ return font.getStyle();
+ }
+
+ /**
+ * @param style the font style to set
+ */
+ public UpdateStatus setStyle(Integer style) {
+ font.setStyle(style);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font size
+ */
+ public Double getSize() {
+ return font.getSize();
+ }
+
+ /**
+ * @param size the font size to set
+ */
+ public UpdateStatus setSize(Double size) {
+ font.setSize(size);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font color
+ */
+ public Integer getColor() {
+ return font.getColor();
+ }
+
+ /**
+ * @param color the font color to set
+ */
+ public UpdateStatus setColor(Integer color) {
+ font.setColor(color);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font fractional
+ */
+ public Boolean getFractional() {
+ return font.getFractional();
+ }
+
+ /**
+ * @param fractional the font fractional to set
+ */
+ public UpdateStatus setFractional(Boolean fractional) {
+ font.setFractional(fractional);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the formatn
+ */
+ public String getFormatn() {
+ return formatn;
+ }
+
+ /**
+ * @param formatn the formatn to set
+ */
+ public UpdateStatus setFormatn(String formatn) {
+ this.formatn = formatn;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the ticksColor
+ */
+ public Integer getTicksColor() {
+ return ticksColor;
+ }
+
+ /**
+ * @param ticksColor the ticksColor to set
+ */
+ public UpdateStatus setTicksColor(Integer ticksColor) {
+ this.ticksColor = ticksColor;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the ticksDirection
+ */
+ public Integer getTicksDirection() {
+ return getTicksDirectionAsEnum().ordinal();
+ }
+
+ /**
+ * @return the ticksDirection
+ */
+ public TicksDirection getTicksDirectionAsEnum() {
+ return ticksDirection;
+ }
+
+ /**
+ * @param ticksDirection the ticksDirection to set
+ */
+ public UpdateStatus setTicksDirection(Integer ticksDirection) {
+ setTicksDirectionAsEnum(TicksDirection.values()[ticksDirection]);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param ticksDirection the ticksDirection to set
+ */
+ public UpdateStatus setTicksDirectionAsEnum(TicksDirection ticksDirection) {
+ this.ticksDirection = ticksDirection;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the number of ticks labels
+ */
+ public Integer getNumberTicksLabels() {
+ return ticksLabels.size();
+ }
+
+ /**
+ * @return the ticksLabels
+ */
+ public String[] getTicksLabels() {
+ String[] labels = new String[ticksLabels.size()];
+
+ for (int i = 0; i < ticksLabels.size(); i++) {
+ labels[i] = new String(ticksLabels.get(i));
+ }
+
+ return labels;
+ }
+
+ /**
+ * @return the ticksLabels
+ */
+ public ArrayList<String> getTicksLabelsAsArrayList() {
+ return ticksLabels;
+ }
+
+ /**
+ * @param ticksLabels the ticksLabels to set
+ */
+ public UpdateStatus setTicksLabels(String[] ticksLabels) {
+ if (!this.ticksLabels.isEmpty()) {
+ this.ticksLabels.clear();
+ }
+
+ for (int i = 0; i < ticksLabels.length; i++) {
+ this.ticksLabels.add(new String(ticksLabels[i]));
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param ticksLabels the ticksLabels to set
+ */
+ public UpdateStatus setTicksLabelsAsArrayList(ArrayList<String> ticksLabels) {
+ if (!this.ticksLabels.isEmpty()) {
+ this.ticksLabels.clear();
+ }
+
+ for (int i = 0; i < ticksLabels.size(); i++) {
+ this.ticksLabels.add(new String(ticksLabels.get(i)));
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the ticksSegment
+ */
+ public Boolean getTicksSegment() {
+ return ticksSegment;
+ }
+
+ /**
+ * @param ticksSegment the ticksSegment to set
+ */
+ public UpdateStatus setTicksSegment(Boolean ticksSegment) {
+ this.ticksSegment = ticksSegment;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the ticksStyle
+ */
+ public Integer getTicksStyle() {
+ return ticksStyle;
+ }
+
+ /**
+ * @param ticksStyle the ticksStyle to set
+ */
+ public UpdateStatus setTicksStyle(Integer ticksStyle) {
+ this.ticksStyle = ticksStyle;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the subticks
+ */
+ public Integer getSubticks() {
+ return subticks;
+ }
+
+ /**
+ * @param subticks the subticks to set
+ */
+ public UpdateStatus setSubticks(Integer subticks) {
+ this.subticks = subticks;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the number of X ticks
+ */
+ public Integer getXNumberTicks() {
+ return xTicksCoords.length;
+ }
+
+ /**
+ * @return the number of X ticks
+ */
+ public Integer getYNumberTicks() {
+ return yTicksCoords.length;
+ }
+
+ /**
+ * @return the xTicksCoords
+ */
+ public Double[] getXTicksCoords() {
+ Double[] retXTicksCoords = new Double[xTicksCoords.length];
+
+ for (int i = 0; i < xTicksCoords.length; i++) {
+ retXTicksCoords[i] = xTicksCoords[i];
+ }
+
+ return retXTicksCoords;
+ }
+
+ /**
+ * Sets the x ticks coordinates
+ * Resizes the array if required
+ * TODO : we should use format_n to fill ticks label.
+ * @param ticksCoords the xTicksCoords to set
+ */
+ public UpdateStatus setXTicksCoords(Double[] ticksCoords) {
+ if (ticksCoords.length != xTicksCoords.length) {
+ xTicksCoords = new double[ticksCoords.length];
+ }
+
+ for (int i = 0; i < xTicksCoords.length; i++) {
+ xTicksCoords[i] = ticksCoords[i];
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the yTicksCoords
+ */
+ public Double[] getYTicksCoords() {
+ Double[] retYTicksCoords = new Double[yTicksCoords.length];
+
+ for (int i = 0; i < yTicksCoords.length; i++) {
+ retYTicksCoords[i] = yTicksCoords[i];
+ }
+
+ return retYTicksCoords;
+ }
+
+ /**
+ * Sets the y ticks coordinates
+ * Resizes the array if required
+ * TODO : we should use format_n to fill ticks label.
+ * @param ticksCoords the yTicksCoords to set
+ */
+ public UpdateStatus setYTicksCoords(Double[] ticksCoords) {
+ if (ticksCoords.length != yTicksCoords.length) {
+ yTicksCoords = new double[ticksCoords.length];
+ }
+
+ for (int i = 0; i < yTicksCoords.length; i++) {
+ yTicksCoords[i] = ticksCoords[i];
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_AXIS__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/builder/Builder.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/builder/Builder.java
new file mode 100755
index 000000000..d2f556154
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/builder/Builder.java
@@ -0,0 +1,1156 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
+ * Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.builder;
+
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import org.scilab.modules.graphic_objects.ScilabNativeView;
+import org.scilab.modules.graphic_objects.arc.Arc;
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.axis.Axis;
+import org.scilab.modules.graphic_objects.fec.Fec;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.figure.Figure.BarType;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.imageplot.Imageplot;
+import org.scilab.modules.graphic_objects.label.Label;
+import org.scilab.modules.graphic_objects.legend.Legend;
+import org.scilab.modules.graphic_objects.lighting.Light;
+import org.scilab.modules.graphic_objects.lighting.Light.LightType;
+import org.scilab.modules.graphic_objects.polyline.Polyline;
+import org.scilab.modules.graphic_objects.rectangle.Rectangle;
+import org.scilab.modules.graphic_objects.surface.Surface;
+import org.scilab.modules.graphic_objects.textObject.Font;
+import org.scilab.modules.graphic_objects.textObject.Text;
+import org.scilab.modules.graphic_objects.vectfield.Champ;
+import org.scilab.modules.graphic_objects.vectfield.Segs;
+
+public final class Builder {
+ public final static int createRect(int parentSubwin, double x, double y, double height, double width, int foreground, int background, int isfilled, int isline) {
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes) controller.getObjectFromId(parentSubwin);
+
+ if (height < 0 || width < 0) {
+ return 0;
+ }
+
+ Integer iRect = controller.askObject(Type.RECTANGLE, false);
+
+ /*
+ * Sets the rectangle's parent in order to initialize the former's
+ * Contoured properties with the latter's values (cloneGraphicContext
+ * call below)
+ */
+
+ Rectangle rect = (Rectangle) controller.getObjectFromId(iRect);
+ rect.setUpperLeftPoint(new Double[] { x, y, 0.0 });
+ rect.setHeight(height);
+ rect.setWidth(width);
+
+ rect.setVisible(axes.getVisible());
+
+ /* Clip state and region */
+ /* To be checked for consistency */
+
+ rect.setClipBox(axes.getClipBox());
+ rect.setClipBoxSet(axes.getClipBoxSet());
+ rect.setClipState(axes.getClipState());
+ rect.setMarkMode(axes.getMarkMode());
+
+ /*
+ * Initializes the contour properties (background, foreground, etc) to
+ * the default values (those of the parent Axes).
+ */
+ cloneGraphicContext(parentSubwin, iRect);
+
+ /* Contour settings */
+ rect.setLineMode(isline == 1);
+ rect.setFillMode(isfilled == 1);
+
+ if (foreground != -1) {
+ rect.setLineColor(foreground);
+ }
+
+ if (background != -1) {
+ rect.setBackground(background);
+ }
+
+ controller.objectCreated(iRect);
+
+ /*
+ * Sets the Axes as the rectangle's parent and adds the rectangle to its
+ * parent's list of children.
+ */
+ //setGraphicObjectRelationship(pparentsubwinUID, pobjUID);
+
+ return iRect;
+ }
+
+ public static int cloneGraphicContext(int sourceIdentifier, int destIdentifier) {
+ GraphicController controller = GraphicController.getController();
+ Boolean lineMode = false;
+ Integer foreground = 0;
+ Integer lineStyle = 0;
+ Integer background = 0;
+ Integer markForeground = 0;
+ Integer markBackground = 0;
+ Integer markStyle = 0;
+ Integer markSize = 0;
+ Integer markSizeUnit = 0;
+ Double lineThickness = 0.;
+
+ /*
+ * All these properties are passed by value thus do not care to release
+ * them and do not call releaseGraphicObjectProperty on purpose.
+ */
+
+ lineMode = (Boolean) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_LINE_MODE__);
+ foreground = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_LINE_COLOR__);
+ lineThickness = (Double) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_LINE_THICKNESS__);
+ lineStyle = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_LINE_STYLE__);
+
+ background = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_BACKGROUND__);
+
+ markForeground = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_MARK_FOREGROUND__);
+
+ markBackground = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_MARK_BACKGROUND__);
+
+ markStyle = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_MARK_STYLE__);
+
+ markSize = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_MARK_SIZE__);
+
+ markSizeUnit = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_MARK_SIZE_UNIT__);
+
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_LINE_MODE__, lineMode);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_LINE_COLOR__, foreground);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_LINE_THICKNESS__, lineThickness);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_LINE_STYLE__, lineStyle);
+
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_BACKGROUND__, background);
+
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_MARK_FOREGROUND__, markForeground);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_MARK_BACKGROUND__, markBackground);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_MARK_STYLE__, markStyle);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_MARK_SIZE__, markSize);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_MARK_SIZE_UNIT__, markSizeUnit);
+
+ return 0;
+ }
+
+ public static int cloneFontContext(int sourceIdentifier, int destIdentifier) {
+ GraphicController controller = GraphicController.getController();
+
+ Integer fontColor = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_FONT_COLOR__);
+ Integer fontStyle = (Integer) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_FONT_STYLE__);
+ Double fontSize = (Double) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_FONT_SIZE__);
+ Boolean fontFractional = (Boolean) controller.getProperty(sourceIdentifier, GraphicObjectProperties.__GO_FONT_FRACTIONAL__);
+
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_FONT_COLOR__, fontColor);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_FONT_STYLE__, fontStyle);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_FONT_SIZE__, fontSize);
+ controller.setProperty(destIdentifier, GraphicObjectProperties.__GO_FONT_FRACTIONAL__, fontFractional);
+
+ return 0;
+ }
+
+ public static int createHiddenLabel(int parent) {
+
+ GraphicController controller = GraphicController.getController();
+
+ Integer iLabel = controller.askObject(Type.LABEL, false);
+ Label label = (Label) controller.getObjectFromId(iLabel);
+
+ //Hide Label as they are non explicit children
+ label.setHidden(true);
+ label.setAutoPosition(true);
+ label.setAutoRotation(true);
+
+ cloneGraphicContext(parent, iLabel);
+ cloneFontContext(parent, iLabel);
+ controller.objectCreated(iLabel);
+
+ // Sets the label's parent
+ controller.setGraphicObjectRelationship(parent, iLabel);
+
+ return iLabel;
+ }
+
+ public static void initSubWinBounds(int subWin) {
+ GraphicController controller = GraphicController.getController();
+
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_X_AXIS_LOG_FLAG__, false);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_Y_AXIS_LOG_FLAG__, false);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_Z_AXIS_LOG_FLAG__, false);
+ }
+
+ public static void reinitSubWin(int subWin) {
+ GraphicController controller = GraphicController.getController();
+ Integer label = 0;
+
+ for (Integer childId : (Integer[]) controller.getProperty(subWin, GraphicObjectProperties.__GO_CHILDREN__)) {
+ GraphicModel.getModel().deleteObject(childId);
+ }
+
+ label = createHiddenLabel(subWin);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_TITLE__, label);
+
+ label = createHiddenLabel(subWin);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_X_AXIS_LABEL__, label);
+
+ label = createHiddenLabel(subWin);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_Y_AXIS_LABEL__, label);
+
+ label = createHiddenLabel(subWin);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_Z_AXIS_LABEL__, label);
+
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_X_AXIS_LOCATION__, 0);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_Y_AXIS_LOCATION__, 4);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_VISIBLE__, true);
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_FIRST_PLOT__, true);
+
+ Integer axesModel = GraphicModel.getAxesModel().getIdentifier();
+ Axes axes = (Axes) controller.getObjectFromId(axesModel);
+
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_VIEW__, axes.getView());
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_ROTATION_ANGLES__, axes.getRotationAngles());
+ controller.setProperty(subWin, GraphicObjectProperties.__GO_ROTATION_ANGLES_3D__, axes.getRotationAngles3d());
+ }
+
+ public static boolean isAxesRedrawing(int subWin) {
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes) controller.getObjectFromId(subWin);
+
+ if (axes.getAutoClear()) {
+ reinitSubWin(subWin);
+ return true;
+ }
+ return false;
+ }
+
+ public static int createLabel(int parent, int type) {
+ GraphicController controller = GraphicController.getController();
+ Double[] position = new Double[3];
+ position[0] = 1.0;
+ position[1] = 1.0;
+ position[2] = 1.0;
+
+ //check parent type
+ Integer parentType = (Integer) controller.getProperty(parent, GraphicObjectProperties.__GO_TYPE__);
+ if (parentType != GraphicObjectProperties.__GO_AXES__) {
+ return 1;
+ }
+
+ //get axes model
+ Integer axesModel = GraphicModel.getAxesModel().getIdentifier();
+
+ //get type label from axes model
+ Integer labelSource = (Integer) controller.getProperty(axesModel, type);
+
+ //clone label
+ Integer newLabel = controller.cloneObject(labelSource);
+ controller.setProperty(newLabel, GraphicObjectProperties.__GO_POSITION__, position);
+ // Auto position must be reset as setting the position has set it to false
+ Boolean autoPosition = (Boolean) controller.getProperty(labelSource, GraphicObjectProperties.__GO_AUTO_POSITION__);
+ controller.setProperty(newLabel, GraphicObjectProperties.__GO_AUTO_POSITION__, autoPosition);
+
+ // Set relation between newLabel and parent
+ controller.setProperty(parent, type, newLabel);
+ controller.setGraphicObjectRelationship(parent, newLabel);
+ return 0;
+ }
+
+ public final static int createFigureFromModel() {
+ GraphicController controller = GraphicController.getController();
+ return controller.cloneObject(GraphicModel.getFigureModel().getIdentifier());
+ }
+
+ public final static int cloneAxesModel(int parent) {
+ GraphicController controller = GraphicController.getController();
+
+ Integer newAxes = controller.cloneObject(GraphicModel.getAxesModel().getIdentifier());
+ createLabel(newAxes, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ createLabel(newAxes, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ createLabel(newAxes, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ createLabel(newAxes, GraphicObjectProperties.__GO_TITLE__);
+
+ controller.setGraphicObjectRelationship(parent, newAxes);
+ controller.setProperty(parent, GraphicObjectProperties.__GO_SELECTED_CHILD__, newAxes);
+
+ ScilabNativeView.ScilabNativeView__setCurrentSubWin(newAxes);
+ ScilabNativeView.ScilabNativeView__setCurrentObject(newAxes);
+ return newAxes;
+ }
+
+ public final static void cloneMenus(int iModel, int iParent) {
+ GraphicController controller = GraphicController.getController();
+ GraphicObject model = controller.getObjectFromId(iModel);
+
+ Integer[] children = model.getChildren();
+
+ for (int i = children.length - 1; i >= 0; i--) {
+ GraphicObject child = controller.getObjectFromId(children[i]);
+ if (child.getType() == GraphicObjectProperties.__GO_UIMENU__) {
+ Integer newMenu = controller.cloneObject(children[i]);
+ controller.setGraphicObjectRelationship(iParent, newMenu);
+
+ cloneMenus(children[i], newMenu);
+ }
+ }
+ }
+
+ public final static int createFigure(boolean dockable, int menubarType, int toolbarType, boolean defaultAxes, boolean visible) {
+ GraphicController controller = GraphicController.getController();
+ Integer figModel = GraphicModel.getFigureModel().getIdentifier();
+ Integer figId = controller.cloneObject(figModel, false);
+ Figure figure = (Figure) controller.getObjectFromId(figId);
+ figure.setDockable(dockable);
+ figure.setMenubar(menubarType);
+ figure.setToolbar(toolbarType);
+ figure.setVisible(visible);
+ figure.setDefaultAxes(defaultAxes);
+
+ controller.objectCreated(figId);
+
+ ScilabNativeView.ScilabNativeView__setCurrentFigure(figId);
+
+ if (menubarType == BarType.FIGURE.ordinal()) {
+ cloneMenus(figModel, figId);
+ }
+
+ if (defaultAxes) {
+ //clone default axes
+ cloneAxesModel(figId);
+ }
+
+ return figId;
+ }
+
+ public final static int createNewFigureWithAxes() {
+ GraphicController controller = GraphicController.getController();
+ Integer figModel = GraphicModel.getFigureModel().getIdentifier();
+
+ //clone default figure
+ Integer newFigure = createFigureFromModel();
+
+ //Clone the default menus
+ cloneMenus(figModel, newFigure);
+
+ //set ID to 0
+ controller.setProperty(newFigure, GraphicObjectProperties.__GO_ID__, 0);
+
+ //clone default axes
+ cloneAxesModel(newFigure);
+ ScilabNativeView.ScilabNativeView__setCurrentFigure(newFigure);
+
+ //Force axes size after window creation
+ Integer[] axesSize = (Integer[]) controller.getProperty(figModel, GraphicObjectProperties.__GO_AXES_SIZE__);
+ controller.setProperty(newFigure, GraphicObjectProperties.__GO_AXES_SIZE__, axesSize);
+
+ controller.setProperty(newFigure, GraphicObjectProperties.__GO_VALID__, true);
+
+ return newFigure;
+ }
+
+ public final static int createSubWin(int parentFigure) {
+ //GraphicController controller = GraphicController.getController();
+ //GraphicObject parent = controller.getObjectFromId(parentFigure);
+ //if (parent.getType() != GraphicObjectProperties.__GO_FIGURE__) {
+ // return 0;
+ //}
+
+ return cloneAxesModel(parentFigure);
+ }
+
+ public final static int createText(int iParentsubwinUID, String[] str, int nbRow, int nbCol, double x, double y, boolean autoSize, double[] userSize, int centerPos, int foreground,
+ boolean isForeground, int background, boolean isBackground, boolean isBoxed, boolean isLine, boolean isFilled, int align) {
+
+ GraphicController controller = GraphicController.getController();
+ int iText = controller.askObject(Type.TEXT, false);
+
+ Axes axes = (Axes) controller.getObjectFromId(iParentsubwinUID);
+ Text text = (Text) controller.getObjectFromId(iText);
+
+ //clip
+ text.setClipBox(axes.getClipBox());
+ text.setClipBoxSet(axes.getClipBoxSet());
+ text.setClipState(axes.getClipState());
+
+ //text
+ Integer[] dimensions = new Integer[2];
+ dimensions[0] = nbRow;
+ dimensions[1] = nbCol;
+ text.setTextArrayDimensions(dimensions);
+ text.setTextStrings(str);
+
+ //position
+ Double[] position = new Double[3];
+ position[0] = x;
+ position[1] = y;
+ position[2] = 0.0;
+ text.setPosition(position);
+
+ //test box
+ Double[] setUserSize = new Double[2];
+ text.setTextBoxMode(centerPos);
+ text.setAutoDimensioning(autoSize);
+
+ if (autoSize == false || centerPos != 0) {
+ setUserSize[0] = userSize[0];
+ setUserSize[1] = userSize[1];
+ } else {
+ setUserSize[0] = 0.0;
+ setUserSize[1] = 0.0;
+ }
+ text.setTextBox(setUserSize);
+
+ int alignment = align - 1;
+ if (alignment < 0 || alignment > 2) {
+ alignment = 0;
+ }
+
+ text.setAlignment(alignment);
+
+ cloneGraphicContext(iParentsubwinUID, iText);
+ cloneFontContext(iParentsubwinUID, iText);
+
+ text.setBox(isBoxed);
+ text.setLineMode(isLine);
+ text.setFillMode(isFilled);
+
+ if (isForeground) {
+ text.setLineColor(foreground);
+ }
+
+ if (isBackground) {
+ text.setBackground(background);
+ }
+
+ text.setVisible(axes.getVisible());
+ controller.objectCreated(iText);
+ return iText;
+ }
+
+ public final static int createArc(int parent, double x, double y, double h, double w, double startAngle, double endAngle, int foreground, boolean isForeground, int background,
+ boolean isBackground, boolean filled, boolean line) {
+
+ GraphicController controller = GraphicController.getController();
+ int iArc = controller.askObject(Type.ARC, false);
+
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+ Arc arc = (Arc) controller.getObjectFromId(iArc);
+
+ //set visible false during construction
+ arc.setVisible(false);
+
+ Double[] upperLeftPoint = new Double[3];
+ upperLeftPoint[0] = x;
+ upperLeftPoint[1] = y;
+ upperLeftPoint[2] = 0.0;
+
+ arc.setUpperLeftPoint(upperLeftPoint);
+ arc.setHeight(h);
+ arc.setWidth(w);
+ arc.setStartAngle(startAngle);
+ arc.setEndAngle(endAngle);
+ arc.setArcDrawingMethod(axes.getArcDrawingMethod());
+
+ //clip
+ arc.setClipBox(axes.getClipBox());
+ arc.setClipBoxSet(axes.getClipBoxSet());
+ arc.setClipState(axes.getClipState());
+
+ cloneGraphicContext(parent, iArc);
+
+ arc.setLineMode(line);
+ arc.setFillMode(filled);
+
+ if (isForeground) {
+ arc.setLineColor(foreground);
+ }
+
+ if (isBackground) {
+ arc.setBackground(background);
+ }
+
+ arc.setVisible(axes.getVisible());
+ controller.objectCreated(iArc);
+ controller.setGraphicObjectRelationship(parent, iArc);
+ return iArc;
+ }
+
+ public final static int createAxis(int parent, int dir, int tics, double[] vx, double[] vy, int subint, String format, int fontSize, int textColor, int ticsColor, boolean seg) {
+
+ GraphicController controller = GraphicController.getController();
+ int iAxis = controller.askObject(Type.AXIS, false);
+
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+ Axis axis = (Axis) controller.getObjectFromId(iAxis);
+
+ //clip box
+ axis.setClipBox(axes.getClipBox());
+ axis.setClipBoxSet(false);
+
+ axis.setTicksDirection(dir);
+ axis.setTicksStyle(tics);
+
+ axis.setXTicksCoords(toDouble(vx));
+ axis.setYTicksCoords(toDouble(vy));
+
+ if (format != null && format.equals("") == false) {
+ axis.setFormatn(format);
+ }
+
+ axis.setSubticks(subint);
+ axis.setTicksSegment(seg);
+ cloneGraphicContext(parent, iAxis);
+ cloneFontContext(parent, iAxis);
+
+ Font font = axis.getFont();
+ if (fontSize == -1) {
+ font.setSize(axes.getFontSize());
+ } else {
+ font.setSize(new Double(fontSize));
+ }
+ if (textColor == -1) {
+ font.setColor(axes.getFontColor());
+ } else {
+ font.setColor(textColor);
+ }
+ font.setStyle(axes.getFontStyle());
+
+ axis.setTicksColor(ticsColor);
+
+ controller.objectCreated(iAxis);
+ controller.setGraphicObjectRelationship(parent, iAxis);
+ return iAxis;
+ }
+
+ public static int createCompound(int parent, int[] children) {
+ GraphicController controller = GraphicController.getController();
+ int iCompound = controller.askObject(Type.COMPOUND);
+
+ GraphicObject obj = controller.getObjectFromId(parent);
+ for (int i = 0; i < children.length; i++) {
+ controller.setGraphicObjectRelationship(iCompound, children[i]);
+ }
+
+ controller.setGraphicObjectRelationship(parent, iCompound);
+ controller.setProperty(iCompound, GraphicObjectProperties.__GO_VISIBLE__, obj.getVisible());
+ return iCompound;
+ }
+
+ public static int createCompoundSeq(int parent, int childrenCount) {
+ GraphicController controller = GraphicController.getController();
+ int iCompound = controller.askObject(Type.COMPOUND);
+ GraphicObject axes = controller.getObjectFromId(parent);
+
+ Integer[] children = axes.getChildren();
+
+ /*
+ * Remove the last "number" created objects (located at the children
+ * list's head) and add them to the compound in the same order
+ */
+ for (int i = 0; i < childrenCount; i++) {
+ /*
+ * Set the parent-child relationship between the Compound and each
+ * aggregated object. Children are added to the Compound from the
+ * least recent to the most recent, to preserve their former
+ * ordering.
+ */
+ controller.setGraphicObjectRelationship(iCompound, children[childrenCount - i - 1]);
+ }
+
+ controller.setGraphicObjectRelationship(parent, iCompound);
+
+ /*
+ * visibility is obtained from the parent Figure, whereas it is
+ * retrieved from the parent Axes in ConstructCompound. To be made
+ * consistent.
+ */
+ Figure fig = (Figure) controller.getObjectFromId(axes.getParentFigure());
+ controller.setProperty(iCompound, GraphicObjectProperties.__GO_VISIBLE__, fig.getVisible());
+ return iCompound;
+ }
+
+ public static int createFec(int parent, double[] zminmax, int[] colminmax, int[] colout, boolean with_mesh) {
+
+ GraphicController controller = GraphicController.getController();
+ int iFec = controller.askObject(Type.FEC, false);
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+ Fec fec = (Fec) controller.getObjectFromId(iFec);
+
+ fec.setZBounds(toDouble(zminmax));
+ fec.setColorRange(toInteger(colminmax));
+ fec.setOutsideColor(toInteger(colout));
+
+ fec.setVisible(axes.getVisible());
+
+ //clip box
+ fec.setClipBox(axes.getClipBox());
+ fec.setClipBoxSet(axes.getClipBoxSet());
+ fec.setClipState(axes.getClipState());
+
+ cloneGraphicContext(parent, iFec);
+
+ fec.setLineMode(with_mesh);
+
+ controller.objectCreated(iFec);
+ return iFec;
+ }
+
+ public static int createGrayplot(int parent, int type, double[] pvecx, int n1, int n2) {
+
+ int[] objectTypes = new int[] { GraphicObjectProperties.__GO_GRAYPLOT__, GraphicObjectProperties.__GO_MATPLOT__, GraphicObjectProperties.__GO_MATPLOT__ };
+
+ GraphicController controller = GraphicController.getController();
+ int iPlot = controller.askObject(GraphicObject.getTypeFromName(objectTypes[type]), false);
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+ Imageplot plot = (Imageplot) controller.getObjectFromId(iPlot);
+
+ if (type == 2) { //Matplot1
+ Double[] data = new Double[pvecx.length];
+ for (int i = 0; i < pvecx.length; i++) {
+ data[i] = pvecx[i];
+ }
+ plot.setTranslate(data);
+
+ Double[] scale = new Double[2];
+ scale[0] = (pvecx[2] - pvecx[0]) / (n2 - 1.0);
+ scale[1] = (pvecx[3] - pvecx[1]) / (n1 - 1.0);
+ plot.setScale(scale);
+ }
+
+ plot.setVisible(axes.getVisible());
+
+ //clip box
+ plot.setClipBox(axes.getClipBox());
+ plot.setClipBoxSet(axes.getClipBoxSet());
+ plot.setClipState(axes.getClipState());
+
+ cloneGraphicContext(parent, iPlot);
+ controller.objectCreated(iPlot);
+ return iPlot;
+ }
+
+ public static int createPolyline(int parent, boolean closed, int plot, int foreground, boolean isForeground, int[] background, int mark_style, boolean isMarkStyle, int mark_foreground,
+ boolean isMarkForeground, int mark_background, boolean isMarkBackground, boolean isline, boolean isfilled, boolean ismark, boolean isinterp) {
+
+ GraphicController controller = GraphicController.getController();
+ int iPoly = controller.askObject(Type.POLYLINE, false);
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+ Polyline poly = (Polyline) controller.getObjectFromId(iPoly);
+
+ poly.setVisible(false);
+
+ //clip box
+ poly.setClipBox(axes.getClipBox());
+ poly.setClipBoxSet(axes.getClipBoxSet());
+ poly.setClipState(axes.getClipState());
+
+ poly.setClosed(closed);
+ poly.setPolylineStyle(plot);
+
+ cloneGraphicContext(parent, iPoly);
+
+ poly.setMarkMode(ismark);
+ poly.setLineMode(isline);
+ poly.setFillMode(isfilled);
+ poly.setInterpColorMode(isinterp);
+
+ if (isForeground) {
+ poly.setLineColor(foreground);
+ }
+
+ if (background.length != 0) {
+ if (isinterp) {
+ /* 3 or 4 values to store */
+ Integer[] color = new Integer[background.length];
+ for (int i = 0; i < background.length; i++) {
+ color[i] = background[i];
+ }
+
+ poly.setInterpColorVector(color);
+ } else {
+ poly.setBackground(background[0]);
+ }
+ }
+
+ if (isMarkStyle) {
+ poly.setMarkStyle(mark_style);
+ }
+
+ if (isMarkForeground) {
+ poly.setMarkForeground(mark_foreground);
+ }
+
+ if (isMarkBackground) {
+ poly.setMarkBackground(mark_background);
+ }
+
+ poly.setVisible(true);
+ controller.objectCreated(iPoly);
+ return iPoly;
+ }
+
+ public static int createLegend(int parent, String[] text, int[] handles) {
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+
+ if (axes.getHasLegendChild()) {
+ controller.removeRelationShipAndDelete(axes.getLegendChild());
+ }
+
+ int iLeg = controller.askObject(Type.LEGEND, false);
+ Legend leg = (Legend) controller.getObjectFromId(iLeg);
+
+ leg.setParent(parent);
+ leg.setVisible(axes.getVisible());
+
+ int count = handles.length;
+ Integer[] textDims = new Integer[2];
+ textDims[0] = count;
+ textDims[1] = 1;
+
+ leg.setTextArrayDimensions(textDims);
+ leg.setTextStrings(text);
+
+ /*
+ * Links are ordered from most recent to least recent, as their
+ * referred-to Polylines in the latter's parent Compound object.
+ */
+
+ ArrayList<Integer> links = new ArrayList<Integer>();
+ for (int i = count - 1; i >= 0; i--) {
+ links.add(count - i - 1, handles[i]);
+ }
+
+ leg.setLinks(links);
+
+ leg.setClipBoxSet(false);
+ leg.setClipState(0); //OFF
+ leg.setClipBox(axes.getClipBox());
+
+ cloneGraphicContext(parent, iLeg);
+ cloneFontContext(parent, iLeg);
+
+ leg.setFillMode(true);
+
+ controller.objectCreated(iLeg);
+ leg.setParent(0);
+ controller.setGraphicObjectRelationship(parent, iLeg);
+ return iLeg;
+ }
+
+ public static int createSegs(int parent, double[] vx, double[] vy, double[] vz, boolean isVZ, int[] style, double arsize) {
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+ int iSegs = controller.askObject(Type.SEGS, false);
+ Segs segs = (Segs) controller.getObjectFromId(iSegs);
+
+ segs.setVisible(axes.getVisible());
+
+ //clip box
+ segs.setClipBox(axes.getClipBox());
+ segs.setClipBoxSet(axes.getClipBoxSet());
+ segs.setClipState(axes.getClipState());
+
+ /* Segs: Nbr1/2 arrows, Nbr1 is the number of endpoints */
+ int numberArrows = vx.length / 2;
+
+ segs.setNumberArrows(numberArrows);
+ segs.setArrowSize(arsize);
+
+ Double[] arrowCoords = new Double[3 * numberArrows];
+ for (int i = 0; i < numberArrows; i++) {
+ arrowCoords[3 * i] = vx[2 * i];
+ arrowCoords[3 * i + 1] = vy[2 * i];
+ if (isVZ) {
+ arrowCoords[3 * i + 2] = vz[2 * i];
+ } else {
+ arrowCoords[3 * i + 2] = 0.0;
+ }
+ }
+
+ segs.setBase(arrowCoords);
+
+ for (int i = 0; i < numberArrows; i++) {
+ arrowCoords[3 * i] = vx[2 * i + 1];
+ arrowCoords[3 * i + 1] = vy[2 * i + 1];
+ if (isVZ) {
+ arrowCoords[3 * i + 2] = vz[2 * i + 1];
+ } else {
+ arrowCoords[3 * i + 2] = 0.0;
+ }
+ }
+
+ segs.setDirection(arrowCoords);
+ segs.setColors(toInteger(style));
+
+ cloneGraphicContext(parent, iSegs);
+ controller.objectCreated(iSegs);
+ controller.setGraphicObjectRelationship(parent, iSegs);
+ return iSegs;
+ }
+
+ public static int createChamp(int parent, double[] vx, double[] vy, double[] vfx, double[] vfy, double arsize, boolean typeofchamp) {
+
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+
+ int iChamp = controller.askObject(Type.CHAMP, false);
+ Champ champ = (Champ) controller.getObjectFromId(iChamp);
+
+ champ.setVisible(axes.getVisible());
+
+ //clip box
+ champ.setClipBox(axes.getClipBox());
+ champ.setClipBoxSet(axes.getClipBoxSet());
+ champ.setClipState(axes.getClipState());
+
+ int numberArrows = vx.length * vy.length;
+ champ.setNumberArrows(numberArrows);
+
+ Integer[] dimensions = new Integer[] { vx.length, vy.length };
+ champ.setDimensions(dimensions);
+
+ champ.setArrowSize(arsize);
+
+ Double[] arrowCoords = new Double[3 * numberArrows];
+
+ //convert vx Double
+ Double[] temp = new Double[vx.length];
+ for (int i = 0; i < vx.length; i++) {
+ temp[i] = vx[i];
+ }
+ champ.setBaseX(temp);
+
+ //convert vy Double
+ temp = new Double[vy.length];
+ for (int i = 0; i < vy.length; i++) {
+ temp[i] = vy[i];
+ }
+ champ.setBaseY(temp);
+
+ for (int i = 0; i < numberArrows; i++) {
+ arrowCoords[3 * i] = vfx[i];
+ arrowCoords[3 * i + 1] = vfy[i];
+ arrowCoords[3 * i + 2] = 0.0;
+ }
+
+ champ.setDirection(arrowCoords);
+ champ.setColored(typeofchamp);
+
+ cloneGraphicContext(parent, iChamp);
+
+ controller.objectCreated(iChamp);
+ controller.setGraphicObjectRelationship(parent, iChamp);
+
+ return iChamp;
+ }
+
+ public static int createSurface(int parent, int typeof3d, int colorFlag, int colorMode) {
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes) controller.getObjectFromId(parent);
+
+ int iSurf = controller.askObject(GraphicObject.getTypeFromName(typeof3d), false);
+ Surface surf = (Surface) controller.getObjectFromId(iSurf);
+
+ surf.setVisible(axes.getVisible());
+
+ //clip box
+ surf.setClipBox(axes.getClipBox());
+ surf.setClipBoxSet(axes.getClipBoxSet());
+ surf.setClipState(axes.getClipState());
+
+ surf.setColorFlag(colorFlag);
+ surf.setColorMode(colorMode);
+
+ surf.setHiddenColor(axes.getHiddenColor());
+
+ surf.setSurfaceMode(true);
+ cloneGraphicContext(parent, iSurf);
+ controller.objectCreated(iSurf);
+ controller.setGraphicObjectRelationship(parent, iSurf);
+
+ return iSurf;
+ }
+
+ public static void initSubWinTo3d(int iSubwin, String legend, boolean isLegend, int[] flag, double alpha, double theta, double[] ebox, double[] x, double[] y, double[] z) {
+ GraphicController controller = GraphicController.getController();
+
+ // Force 3d view
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_VIEW__, 1);
+
+ if (isLegend) {
+ StringTokenizer strTok = new StringTokenizer(legend, "@");
+ int iToken = strTok.countTokens();
+ if (iToken > 0) {
+ //X
+ String str[] = new String[] { strTok.nextToken() };
+ Integer label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ Integer[] dims = new Integer[] { 1, 1 };
+ controller.setProperty(label, GraphicObjectProperties.__GO_TEXT_ARRAY_DIMENSIONS__, dims);
+ controller.setProperty(label, GraphicObjectProperties.__GO_TEXT_STRINGS__, str);
+ }
+
+ if (iToken > 1) {
+ //Y
+ String str[] = new String[] { strTok.nextToken() };
+ Integer label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ Integer[] dims = new Integer[] { 1, 1 };
+ controller.setProperty(label, GraphicObjectProperties.__GO_TEXT_ARRAY_DIMENSIONS__, dims);
+ controller.setProperty(label, GraphicObjectProperties.__GO_TEXT_STRINGS__, str);
+ }
+
+ if (iToken > 2) {
+ //Z
+ String str[] = new String[] { strTok.nextToken() };
+ Integer label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ Integer[] dims = new Integer[] { 1, 1 };
+ controller.setProperty(label, GraphicObjectProperties.__GO_TEXT_ARRAY_DIMENSIONS__, dims);
+ controller.setProperty(label, GraphicObjectProperties.__GO_TEXT_STRINGS__, str);
+ }
+ }
+
+ // Force psubwin->logflags to linear
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_LOG_FLAG__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_LOG_FLAG__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_LOG_FLAG__, false);
+
+ Boolean firstPlot = (Boolean) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_FIRST_PLOT__);
+
+ if (firstPlot && (flag[2] == 0 || flag[2] == 1)) {
+ /* Nothing to do */
+ } else {
+ if (flag[2] == 0 || flag[2] == 1) {
+ if (firstPlot) {
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_VISIBLE__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_VISIBLE__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_VISIBLE__, false);
+
+ // 0: OFF
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_BOX_TYPE__, 0);
+
+ Integer label = 0;
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, false);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, false);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, false);
+ }
+ } else if (flag[2] == 2) {
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_VISIBLE__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_VISIBLE__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_VISIBLE__, false);
+
+ //2: HIDDEN_AXES
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_BOX_TYPE__, 2);
+
+ Integer label = 0;
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, false);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, false);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, false);
+
+ } else if (flag[2] == 3) {
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_VISIBLE__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_VISIBLE__, false);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_VISIBLE__, false);
+
+ //1: ON
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_BOX_TYPE__, 1);
+
+ Integer label = 0;
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, true);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, true);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, true);
+
+ } else if (flag[2] == 4) {
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_VISIBLE__, true);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_VISIBLE__, true);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_VISIBLE__, true);
+
+ //1: ON
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_BOX_TYPE__, 1);
+
+ Integer label = 0;
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, true);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, true);
+ label = (Integer) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ controller.setProperty(label, GraphicObjectProperties.__GO_VISIBLE__, true);
+ }
+ }
+
+ Double[] rotationAngles = new Double[] { alpha, theta };
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_ROTATION_ANGLES__, rotationAngles);
+
+ Double[] dataBounds = (Double[]) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_DATA_BOUNDS__);
+ Boolean autoScale = (Boolean) controller.getProperty(iSubwin, GraphicObjectProperties.__GO_AUTO_SCALE__);
+
+ Double rect[] = new Double[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
+ if (autoScale) {
+ // compute and merge new specified bounds with data bounds
+ switch (flag[1]) {
+ case 0:
+ break;
+ case 1:
+ case 3:
+ case 5:
+ case 7:
+ rect[0] = ebox[0]; // xmin
+ rect[1] = ebox[1]; // xmax
+ rect[2] = ebox[2]; // ymin
+ rect[3] = ebox[3]; // ymax
+ rect[4] = ebox[4]; // zmin
+ rect[5] = ebox[5]; // zmax
+ break;
+ case 2:
+ case 4:
+ case 6:
+ case 8:
+ double[] res = getDrect(x, rect[0], rect[1], dataBounds[0], dataBounds[1]);
+ rect[0] = res[0];
+ rect[1] = res[1];
+
+ res = getDrect(y, rect[2], rect[3], dataBounds[2], dataBounds[3]);
+ rect[2] = res[0];
+ rect[3] = res[1];
+
+ res = getDrect(z, rect[4], rect[5], dataBounds[4], dataBounds[5]);
+ rect[4] = res[0];
+ rect[5] = res[1];
+ break;
+ }
+
+ if (firstPlot == false) {
+ rect[0] = Math.min(dataBounds[0], rect[0]); // xmin
+ rect[1] = Math.max(dataBounds[1], rect[1]); // xmax
+ rect[2] = Math.min(dataBounds[2], rect[2]); // ymin
+ rect[3] = Math.max(dataBounds[3], rect[3]); // ymax
+ rect[4] = Math.min(dataBounds[4], rect[4]); // zmin
+ rect[5] = Math.max(dataBounds[5], rect[5]); // zmax
+ }
+
+ if (flag[1] != 0) {
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_DATA_BOUNDS__, rect);
+ }
+ }
+
+ if (flag[1] != 0) {
+ boolean isoview = (flag[1] == 3 || flag[1] == 4 || flag[1] == 5 || flag[1] == 6);
+ controller.setProperty(iSubwin, GraphicObjectProperties.__GO_ISOVIEW__, isoview);
+ }
+ }
+
+ private static double[] getDrect(double[] x, double min, double max, double defaultMin, double defaultMax) {
+ double refMax = Double.NEGATIVE_INFINITY;
+ double refMin = Double.POSITIVE_INFINITY;
+ boolean isInfinite = true;
+
+ for (int i = 0; i < x.length; i++) {
+ Double tmp = x[i];
+ if (tmp.isInfinite() == false && tmp.isNaN() == false) {
+ refMin = Math.min(refMin, tmp);
+ refMax = Math.max(refMax, tmp);
+ isInfinite = false;
+ }
+ }
+
+ if (isInfinite) {
+ refMin = defaultMin;
+ refMax = defaultMax;
+ }
+
+ return new double[] { refMin, refMax };
+ }
+
+ private static boolean isValidType(int type) {
+ return type >= 0 && type <= 1;
+ }
+
+ private static boolean isValidColor(double[] color) {
+ return (color[0] >= 0.0 && color[0] <= 1.0) && (color[1] >= 0.0 && color[1] <= 1.0) && (color[2] >= 0.0 && color[2] <= 1.0);
+ }
+
+ public static int createLight(int parent, int type, boolean visible, double[] pos, double[] dir, double[] ambient, double[] diffuse, double[] specular) {
+ GraphicController controller = GraphicController.getController();
+
+ int iLight = controller.askObject(Type.LIGHT, false);
+ Light light = (Light) controller.getObjectFromId(iLight);
+
+ light.setVisible(visible);
+ if (isValidType(type)) {
+ light.setLightType(LightType.intToEnum(type));
+ }
+
+ if (pos.length == 3) {
+ light.setPosition(toDouble(pos));
+ }
+
+ if (dir.length == 3) {
+ light.setDirection(toDouble(dir));
+ }
+ if (ambient.length == 3) {
+ if (isValidColor(ambient)) {
+ light.setAmbientColor(toDouble(ambient));
+ }
+ }
+ if (diffuse.length == 3) {
+ if (isValidColor(diffuse)) {
+ light.setDiffuseColor(toDouble(diffuse));
+ }
+ }
+ if (specular.length == 3) {
+ if (isValidColor(specular)) {
+ light.setSpecularColor(toDouble(specular));
+ }
+ }
+
+ controller.objectCreated(iLight);
+ // Set light's parent
+ controller.setGraphicObjectRelationship(parent, iLight);
+ return iLight;
+ }
+
+ private static Double[] toDouble(double[] var) {
+ Double[] ret = new Double[var.length];
+ for (int i = 0; i < var.length; i++) {
+ ret[i] = var[i];
+ }
+
+ return ret;
+ }
+
+ private static Integer[] toInteger(int[] var) {
+ Integer[] ret = new Integer[var.length];
+ for (int i = 0; i < var.length; i++) {
+ ret[i] = var[i];
+ }
+
+ return ret;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/compound/Compound.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/compound/Compound.java
new file mode 100755
index 000000000..3a12df4fe
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/compound/Compound.java
@@ -0,0 +1,42 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.compound;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+/**
+ * Compound object class
+ * @author Manuel JULIACHS
+ */
+public class Compound extends GraphicObject {
+
+ /** Constructor */
+ public Compound() {
+ super();
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_COMPOUND__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/console/Console.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/console/Console.java
new file mode 100755
index 000000000..501b7add6
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/console/Console.java
@@ -0,0 +1,227 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.console;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CONSOLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SHOWHIDDENHANDLES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SHOWHIDDENPROPERTIES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TOOLBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_USEDEPRECATEDLF__;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * @author Vincent COUVERT
+ */
+public final class Console extends GraphicObject {
+
+ /**
+ * Scilab mode enum
+ * Java Console created only in STD mode
+ */
+ public enum ScilabMode { STD, NW };
+
+ private static Console me;
+
+ private boolean showHiddenHandles;
+
+ private boolean showHiddenProperties;
+
+ private ScilabMode scilabMode;
+
+ private boolean useDeprecatedLF = false;
+
+ private boolean toolbarVisible = false;
+
+ /** Console properties names */
+ private enum ConsoleProperty {
+ SHOWHIDDENHANDLES,
+ SHOWHIDDENPROPERTIES,
+ USEDEPRECATEDLF,
+ TOOLBARVISIBLE
+ };
+
+ /**
+ * Constructor
+ */
+ private Console() {
+ super();
+ }
+
+ /**
+ * Returns the console object
+ * @return the console object
+ */
+ public static Console getConsole() {
+ if (me == null) {
+ me = new Console();
+ }
+
+ return me;
+
+ }
+
+ /**
+ * Get this object type
+ * @return "Console"
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
+ */
+ public Integer getType() {
+ return __GO_CONSOLE__;
+ }
+
+ /**
+ * Set the scilabMode property
+ * @param scilabMode the new value to set
+ */
+ public UpdateStatus setScilabMode(ScilabMode scilabMode) {
+ this.scilabMode = scilabMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the javaEnabled proeprty
+ * @return javaEnabled
+ */
+ public ScilabMode getScilabMode() {
+ return this.scilabMode;
+ }
+
+ /**
+ * Set the showHiddenHandles property
+ * @param showHiddenHandles the new value to set
+ */
+ public UpdateStatus setShowHiddenHandles(boolean showHiddenHandles) {
+ this.showHiddenHandles = showHiddenHandles;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the showHiddenHandles property
+ * @return showHiddenHandles
+ */
+ public boolean getShowHiddenHandles() {
+ return this.showHiddenHandles;
+ }
+
+ /**
+ * Set the showHiddenProperties property
+ * @param showHiddenProperties the new value to set
+ */
+ public UpdateStatus setShowHiddenProperties(boolean showHiddenProperties) {
+ this.showHiddenProperties = showHiddenProperties;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the showHiddenProperties property
+ * @return showHiddenProperties
+ */
+ public boolean getShowHiddenProperties() {
+ return this.showHiddenProperties;
+ }
+
+ /**
+ * Accept method
+ * @param visitor the visitor
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#accept(org.scilab.modules.graphic_objects.graphicObject.Visitor)
+ */
+ public void accept(Visitor visitor) {
+
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ if (propertyName == __GO_SHOWHIDDENHANDLES__) {
+ return ConsoleProperty.SHOWHIDDENHANDLES;
+ } else if (propertyName == __GO_SHOWHIDDENPROPERTIES__) {
+ return ConsoleProperty.SHOWHIDDENPROPERTIES;
+ } else if (propertyName == __GO_USEDEPRECATEDLF__) {
+ return ConsoleProperty.USEDEPRECATEDLF;
+ } else if (propertyName == __GO_TOOLBAR_VISIBLE__) {
+ return ConsoleProperty.TOOLBARVISIBLE;
+ } else {
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ConsoleProperty.SHOWHIDDENHANDLES) {
+ return getShowHiddenHandles();
+ } else if (property == ConsoleProperty.SHOWHIDDENPROPERTIES) {
+ return getShowHiddenProperties();
+ } else if (property == ConsoleProperty.USEDEPRECATEDLF) {
+ return getUseDeprecatedLF();
+ } else if (property == ConsoleProperty.TOOLBARVISIBLE) {
+ return getToolbarVisible();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ConsoleProperty.SHOWHIDDENHANDLES) {
+ setShowHiddenHandles((Boolean) value);
+ } else if (property == ConsoleProperty.SHOWHIDDENPROPERTIES) {
+ setShowHiddenProperties((Boolean) value);
+ } else if (property == ConsoleProperty.USEDEPRECATEDLF) {
+ setUseDeprecatedLF((Boolean) value);
+ } else if (property == ConsoleProperty.TOOLBARVISIBLE) {
+ setToolbarVisible((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+ return UpdateStatus.Success;
+ }
+
+ public boolean getUseDeprecatedLF() {
+ return useDeprecatedLF;
+ }
+
+ public UpdateStatus setUseDeprecatedLF(boolean useDeprecatedLF) {
+ if (this.useDeprecatedLF == useDeprecatedLF) {
+ return UpdateStatus.NoChange;
+ }
+ this.useDeprecatedLF = useDeprecatedLF;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getToolbarVisible() {
+ return toolbarVisible;
+ }
+
+ public UpdateStatus setToolbarVisible(Boolean status) {
+ if (status.equals(toolbarVisible)) {
+ return UpdateStatus.NoChange;
+ }
+
+ toolbarVisible = status;
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.java
new file mode 100755
index 000000000..38e54470c
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ClippableContouredObject.java
@@ -0,0 +1,178 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.contouredObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClipStateType;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClippablePropertyType;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+
+/**
+ * ClippableContouredObject
+ * @author Manuel JULIACHS
+ */
+public abstract class ClippableContouredObject extends ContouredObject {
+ /** ClippableContouredObject properties names */
+ public enum ClippableContouredObjectPropertyType { CLIPPROPERTY };
+
+ /** Clipping state */
+ private ClippableProperty clipProperty;
+
+ /** Constructor */
+ public ClippableContouredObject() {
+ super();
+ clipProperty = new ClippableProperty();
+ }
+
+ public ClippableContouredObject clone() {
+ ClippableContouredObject copy = (ClippableContouredObject) super.clone();
+ return copy;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_CLIP_PROPERTY__ :
+ return ClippableContouredObjectPropertyType.CLIPPROPERTY;
+ case __GO_CLIP_STATE__ :
+ return ClippablePropertyType.CLIPSTATE;
+ case __GO_CLIP_BOX__ :
+ return ClippablePropertyType.CLIPBOX;
+ case __GO_CLIP_BOX_SET__ :
+ return ClippablePropertyType.CLIPBOXSET;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ClippableContouredObjectPropertyType.CLIPPROPERTY) {
+ return getClipProperty();
+ } else if (property == ClippablePropertyType.CLIPSTATE) {
+ return getClipState();
+ } else if (property == ClippablePropertyType.CLIPBOX) {
+ return getClipBox();
+ } else if (property == ClippablePropertyType.CLIPBOXSET) {
+ return getClipBoxSet();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ClippableContouredObjectPropertyType.CLIPPROPERTY) {
+ setClipProperty((ClippableProperty) value);
+ } else if (property == ClippablePropertyType.CLIPSTATE) {
+ setClipState((Integer) value);
+ } else if (property == ClippablePropertyType.CLIPBOX) {
+ setClipBox((Double[]) value);
+ } else if (property == ClippablePropertyType.CLIPBOXSET) {
+ setClipBoxSet((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+ /**
+ * @return the clipProperty
+ */
+ public ClippableProperty getClipProperty() {
+ return clipProperty;
+ }
+
+ /**
+ * @param clipProperty the clipProperty to set
+ */
+ public UpdateStatus setClipProperty(ClippableProperty clipProperty) {
+ this.clipProperty = clipProperty;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the clipBox
+ */
+ public Double[] getClipBox() {
+ return clipProperty.getClipBox();
+ }
+
+ /**
+ * @param clipBox the clipBox to set
+ */
+ public UpdateStatus setClipBox(Double[] clipBox) {
+ clipProperty.setClipBox(clipBox);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the clipState
+ */
+ public Integer getClipState() {
+ return getClipStateAsEnum().ordinal();
+ }
+
+ /**
+ * @return the clipState
+ */
+ public ClipStateType getClipStateAsEnum() {
+ return clipProperty.getClipState();
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public UpdateStatus setClipState(Integer clipState) {
+ setClipStateAsEnum(ClipStateType.intToEnum(clipState));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public UpdateStatus setClipStateAsEnum(ClipStateType clipState) {
+ clipProperty.setClipState(clipState);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the clipBoxSet
+ */
+ public Boolean getClipBoxSet() {
+ return clipProperty.getClipBoxSet();
+ }
+
+ /**
+ * @param clipBoxSet the clipBoxSet to set
+ */
+ public UpdateStatus setClipBoxSet(Boolean clipBoxSet) {
+ clipProperty.setClipBoxSet(clipBoxSet);
+ return UpdateStatus.Success;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.java
new file mode 100755
index 000000000..a249d5d61
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/ContouredObject.java
@@ -0,0 +1,535 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.contouredObject;
+
+import org.scilab.modules.graphic_objects.contouredObject.Line.LinePropertyType;
+import org.scilab.modules.graphic_objects.contouredObject.Line.LineType;
+import org.scilab.modules.graphic_objects.contouredObject.Mark.MarkPropertyType;
+import org.scilab.modules.graphic_objects.contouredObject.Mark.MarkSizeUnitType;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Contoured object class
+ * @author Manuel JULIACHS
+ */
+public abstract class ContouredObject extends GraphicObject {
+ /** ContouredObject properties */
+ public enum ContouredObjectPropertyType { LINE, FILLMODE, BACKGROUND, MARK, MARK_OFFSET, MARK_STRIDE, SELECTED };
+
+ /** Line property */
+ private Line line;
+
+ /** Specifies whether the object is filled or not */
+ private boolean fillMode;
+
+ /** Background (fill) color */
+ private int background;
+
+ /** Mark property */
+ private Mark mark;
+
+ private int offset;
+ private int stride;
+
+ private boolean selected;
+ private final Integer selectedColor = new Integer(-3);
+
+ /** Default constructor */
+ public ContouredObject() {
+ line = new Line();
+ fillMode = false;
+ background = 0;
+ mark = new Mark();
+ offset = 0;
+ stride = 1;
+ selected = false;
+ }
+
+ public ContouredObject clone() {
+ ContouredObject copy = (ContouredObject) super.clone();
+
+ copy.line = new Line(line);
+ copy.mark = new Mark(mark);
+
+ return copy;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_LINE__ :
+ return ContouredObjectPropertyType.LINE;
+ case __GO_LINE_MODE__ :
+ return LinePropertyType.MODE;
+ case __GO_LINE_STYLE__ :
+ return LinePropertyType.LINESTYLE;
+ case __GO_LINE_THICKNESS__ :
+ return LinePropertyType.THICKNESS;
+ case __GO_LINE_COLOR__ :
+ return LinePropertyType.COLOR;
+ case __GO_FILL_MODE__ :
+ return ContouredObjectPropertyType.FILLMODE;
+ case __GO_BACKGROUND__ :
+ return ContouredObjectPropertyType.BACKGROUND;
+ case __GO_MARK__ :
+ return ContouredObjectPropertyType.MARK;
+ case __GO_MARK_MODE__ :
+ return MarkPropertyType.MODE;
+ case __GO_MARK_STYLE__ :
+ return MarkPropertyType.STYLE;
+ case __GO_MARK_SIZE_UNIT__ :
+ return MarkPropertyType.SIZEUNIT;
+ case __GO_MARK_SIZE__ :
+ return MarkPropertyType.SIZE;
+ case __GO_MARK_FOREGROUND__ :
+ return MarkPropertyType.FOREGROUND;
+ case __GO_MARK_BACKGROUND__ :
+ return MarkPropertyType.BACKGROUND;
+ case __GO_MARK_OFFSET__ :
+ return ContouredObjectPropertyType.MARK_OFFSET;
+ case __GO_MARK_STRIDE__ :
+ return ContouredObjectPropertyType.MARK_STRIDE;
+ case __GO_SELECTED__ :
+ return ContouredObjectPropertyType.SELECTED;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ContouredObjectPropertyType.LINE) {
+ return getLine();
+ } else if (property == LinePropertyType.MODE) {
+ return getLineMode();
+ } else if (property == LinePropertyType.LINESTYLE) {
+ return getLineStyle();
+ } else if (property == LinePropertyType.THICKNESS) {
+ return getLineThickness();
+ } else if (property == LinePropertyType.COLOR) {
+ return getLineColor();
+ } else if (property == ContouredObjectPropertyType.FILLMODE) {
+ return getFillMode();
+ } else if (property == ContouredObjectPropertyType.BACKGROUND) {
+ return getBackground();
+ } else if (property == ContouredObjectPropertyType.MARK) {
+ return getMark();
+ } else if (property == MarkPropertyType.MODE) {
+ return getMarkMode();
+ } else if (property == MarkPropertyType.STYLE) {
+ return getMarkStyle();
+ } else if (property == MarkPropertyType.SIZEUNIT) {
+ return getMarkSizeUnit();
+ } else if (property == MarkPropertyType.SIZE) {
+ return getMarkSize();
+ } else if (property == MarkPropertyType.FOREGROUND) {
+ return getMarkForeground();
+ } else if (property == MarkPropertyType.BACKGROUND) {
+ return getMarkBackground();
+ } else if (property == ContouredObjectPropertyType.MARK_OFFSET) {
+ return getMarkOffset();
+ } else if (property == ContouredObjectPropertyType.MARK_STRIDE) {
+ return getMarkStride();
+ } else if (property == ContouredObjectPropertyType.SELECTED) {
+ return getSelected();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ContouredObjectPropertyType.LINE) {
+ setLine((Line) value);
+ } else if (property == LinePropertyType.MODE) {
+ return setLineMode((Boolean) value);
+ } else if (property == LinePropertyType.LINESTYLE) {
+ setLineStyle((Integer) value);
+ } else if (property == LinePropertyType.THICKNESS) {
+ setLineThickness((Double) value);
+ } else if (property == LinePropertyType.COLOR) {
+ return setLineColor((Integer) value);
+ } else if (property == ContouredObjectPropertyType.FILLMODE) {
+ return setFillMode((Boolean) value);
+ } else if (property == ContouredObjectPropertyType.BACKGROUND) {
+ setBackground((Integer) value);
+ } else if (property == ContouredObjectPropertyType.MARK) {
+ setMark((Mark) value);
+ } else if (property == MarkPropertyType.MODE) {
+ return setMarkMode((Boolean) value);
+ } else if (property == MarkPropertyType.STYLE) {
+ return setMarkStyle((Integer) value);
+ } else if (property == MarkPropertyType.SIZEUNIT) {
+ setMarkSizeUnit((Integer) value);
+ } else if (property == MarkPropertyType.SIZE) {
+ return setMarkSize((Integer) value);
+ } else if (property == MarkPropertyType.FOREGROUND) {
+ this.setMarkForeground((Integer) value);
+ } else if (property == MarkPropertyType.BACKGROUND) {
+ this.setMarkBackground((Integer) value);
+ } else if (property == ContouredObjectPropertyType.MARK_OFFSET) {
+ this.setMarkOffset((Integer) value);
+ } else if (property == ContouredObjectPropertyType.MARK_STRIDE) {
+ this.setMarkStride((Integer) value);
+ } else if (property == ContouredObjectPropertyType.SELECTED) {
+ this.setSelected((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the color to use for selection
+ */
+ public Integer getSelectedColor() {
+ return selectedColor;
+ }
+
+ /**
+ * @return true if selected
+ */
+ public Boolean getSelected() {
+ return selected;
+ }
+
+ /**
+ * @param selected true if selected
+ */
+ public UpdateStatus setSelected(Boolean selected) {
+ if (this.selected != selected) {
+ this.selected = selected;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the offset
+ */
+ public Integer getMarkOffset() {
+ return offset;
+ }
+
+ /**
+ * @param offset the offset to set
+ */
+ public UpdateStatus setMarkOffset(Integer offset) {
+ if (this.offset != offset) {
+ this.offset = offset < 0 ? 0 : offset;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the stride
+ */
+ public Integer getMarkStride() {
+ return stride;
+ }
+
+ /**
+ * @param stride the stride to set
+ */
+ public UpdateStatus setMarkStride(Integer stride) {
+ if (this.stride != stride) {
+ this.stride = stride < 1 ? 1 : stride;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the background
+ */
+ public Integer getBackground() {
+ return background;
+ }
+
+ /**
+ * @param background the background to set
+ */
+ public UpdateStatus setBackground(Integer background) {
+ this.background = background;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the fillMode
+ */
+ public Boolean getFillMode() {
+ return fillMode;
+ }
+
+ /**
+ * @param fillMode the fillMode to set
+ */
+ public UpdateStatus setFillMode(Boolean fillMode) {
+ if (this.fillMode == fillMode) {
+ return UpdateStatus.NoChange;
+ }
+ this.fillMode = fillMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the line
+ */
+ public Line getLine() {
+ return line;
+ }
+
+ /**
+ * @param line the line to set
+ */
+ public UpdateStatus setLine(Line line) {
+ this.line = line;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the line color
+ * @return the color
+ */
+ public Integer getLineColor() {
+ return line.getColor();
+ }
+
+ /**
+ * Set the line color
+ * @param color the color to set
+ */
+ public UpdateStatus setLineColor(Integer color) {
+ return line.setColor(color);
+ }
+
+ /**
+ * Get the line style
+ * @return the lineStyle
+ */
+ public Integer getLineStyle() {
+ return getLineStyleAsEnum().asScilabIndex();
+ }
+
+ /**
+ * Get the line style
+ * @return the lineStyle
+ */
+ public LineType getLineStyleAsEnum() {
+ return line.getLineStyle();
+ }
+
+ /**
+ * Set the line style
+ * @param lineStyle the lineStyle to set
+ */
+ public UpdateStatus setLineStyle(Integer lineStyle) {
+ setLineStyleAsEnum(LineType.fromScilabIndex(lineStyle));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Set the line style
+ * @param lineStyle the lineStyle to set
+ */
+ public UpdateStatus setLineStyleAsEnum(LineType lineStyle) {
+ line.setLineStyle(lineStyle);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Return the line mode
+ * @return the mode
+ */
+ public Boolean getLineMode() {
+ return line.getMode();
+ }
+
+ /**
+ * Set the line mode
+ * @param mode the mode to set
+ */
+ public UpdateStatus setLineMode(Boolean mode) {
+ return line.setMode(mode);
+ }
+
+ /**
+ * Get the line thickness
+ * @return the thickness
+ */
+ public Double getLineThickness() {
+ return line.getThickness();
+ }
+
+ /**
+ * Set the line thickness
+ * @param thickness the thickness to set
+ */
+ public UpdateStatus setLineThickness(Double thickness) {
+ line.setThickness(thickness);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the mark
+ */
+ public Mark getMark() {
+ return mark;
+ }
+
+ /**
+ * @param mark the mark to set
+ */
+ public UpdateStatus setMark(Mark mark) {
+ this.mark = mark;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the mark background
+ * @return the background
+ */
+ public Integer getMarkBackground() {
+ return mark.getBackground();
+ }
+
+ /**
+ * Set the mark background
+ * @param background the background to set
+ */
+ public UpdateStatus setMarkBackground(Integer background) {
+ mark.setBackground(background);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the mark foreground
+ * @return the foreground
+ */
+ public Integer getMarkForeground() {
+ return mark.getForeground();
+ }
+
+ /**
+ * Set the mark foreground
+ * @param foreground the foreground to set
+ */
+ public UpdateStatus setMarkForeground(Integer foreground) {
+ mark.setForeground(foreground);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the mark size unit
+ * @return the markSizeUnit
+ */
+ public Integer getMarkSizeUnit() {
+ return getMarkSizeUnitAsEnum().ordinal();
+ }
+
+ /**
+ * Get the mark size unit
+ * @return the markSizeUnit
+ */
+ public MarkSizeUnitType getMarkSizeUnitAsEnum() {
+ return mark.getMarkSizeUnit();
+ }
+
+ /**
+ * Set the mark size unit
+ * @param markSizeUnit the markSizeUnit to set
+ */
+ public UpdateStatus setMarkSizeUnit(Integer markSizeUnit) {
+ setMarkSizeUnitAsEnum(MarkSizeUnitType.intToEnum(markSizeUnit));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Set the mark size unit
+ * @param markSizeUnit the markSizeUnit to set
+ */
+ public UpdateStatus setMarkSizeUnitAsEnum(MarkSizeUnitType markSizeUnit) {
+ mark.setMarkSizeUnit(markSizeUnit);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the mark size
+ * @return the size
+ */
+ public Integer getMarkSize() {
+ return mark.getSize();
+ }
+
+ /**
+ * Set the mark size
+ * @param size the size to set
+ */
+ public UpdateStatus setMarkSize(Integer size) {
+ return mark.setSize(size);
+ }
+
+ /**
+ * Get the mark mode
+ * @return the mode
+ */
+ public Boolean getMarkMode() {
+ return mark.getMode();
+ }
+
+ /**
+ * Set the mark mode
+ * @param mode the mode to set
+ */
+ public UpdateStatus setMarkMode(Boolean mode) {
+ return mark.setMode(mode);
+ }
+
+ /**
+ * Get the mark style
+ * @return the style
+ */
+ public Integer getMarkStyle() {
+ return mark.getStyle();
+ }
+
+ /**
+ * Set the mark style
+ * @param style the style to set
+ */
+ public UpdateStatus setMarkStyle(Integer style) {
+ return mark.setStyle(style);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Line.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Line.java
new file mode 100755
index 000000000..d172f91c6
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Line.java
@@ -0,0 +1,204 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.contouredObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Line class
+ * @author Manuel JULIACHS
+ */
+public class Line {
+ /** Line properties */
+ public enum LinePropertyType { MODE, LINESTYLE, THICKNESS, COLOR };
+
+ /** Line style */
+ public enum LineType { SOLID, DASH, DASH_DOT, LONG_DASH_DOT, BIG_DASH_DOT, BIG_DASH_LONG_DASH, DOT, DOUBLE_DOT, LONG_BLANK_DOT, BIG_BLANK_DOT;
+
+ /**
+ * Converts a scilab line style index to the corresponding line type.
+ * @param sciIndex the scilab index.
+ * @return the line type as enum.
+ */
+ public static LineType fromScilabIndex(Integer sciIndex) {
+ switch (sciIndex) {
+ case 1:
+ return SOLID;
+ case 2:
+ return DASH;
+ case 3:
+ return DASH_DOT;
+ case 4:
+ return LONG_DASH_DOT;
+ case 5:
+ return BIG_DASH_DOT;
+ case 6:
+ return BIG_DASH_LONG_DASH;
+ case 7:
+ return DOT;
+ case 8:
+ return DOUBLE_DOT;
+ case 9:
+ return LONG_BLANK_DOT;
+ case 10:
+ return BIG_BLANK_DOT;
+ default:
+ return SOLID;
+ }
+ }
+
+ /**
+ * Converts the line type to the corresponding scilab line style index.
+ * @return the scilab line style index corresponding to this line type.
+ */
+ public int asScilabIndex() {
+ return ordinal() + 1;
+ }
+
+ /**
+ * Converts the line type to a 16-bit pattern.
+ * @return the 16-bit pattern corresponding to the line type.
+ */
+ public short asPattern() {
+ switch (this) {
+ case DASH:
+ return (short) 0x07FF; // 5 blanks, 11 solids
+ case DASH_DOT:
+ return (short) 0x0F0F; // 4 blanks, 4 solids, 4 blanks, 4 solids
+ case LONG_DASH_DOT:
+ return (short) 0x1FC2; // 3 blanks, 3 solids, 3 blanks, 7 solids
+ case BIG_DASH_DOT:
+ return (short) 0x3FC9; // 2 blanks, 8 solids, 2 blanks, 1 solid, 2 blanks, 1 solid
+ case BIG_DASH_LONG_DASH:
+ return (short) 0x3FC6; // 3 blanks, 8 solids, 3 blanks, 2 solids
+ case DOT:
+ return (short) 0x5555; // (1 blank, 1 solid) x 8
+ case DOUBLE_DOT:
+ return (short) 0x3333; // (2 blanks, 2 solids) x 4
+ case LONG_BLANK_DOT:
+ return (short) 0x1111; // (3 blanks, 1 solids) x 4
+ case BIG_BLANK_DOT:
+ return (short) 0x0101; // (7 blanks, 1 solids) x 2
+ default:
+ case SOLID:
+ return (short) 0xFFFF; // 16 solids, unused equivalent to no stipple
+ }
+ }
+ }
+
+ /** Specifies whether the line is drawn or not */
+ private boolean mode;
+
+ /** Line style */
+ private LineType lineStyle;
+
+ /** Line thickness */
+ private double thickness;
+
+ /** Line color */
+ private int color;
+
+ /** Constructor */
+ public Line() {
+ mode = false;
+ lineStyle = LineType.SOLID;
+ thickness = 1.0;
+ color = -1;
+ }
+
+ /**
+ * Copy constructor
+ * @param line the Line to copy
+ */
+ public Line(Line line) {
+ mode = line.mode;
+ lineStyle = line.lineStyle;
+ thickness = line.thickness;
+ color = line.color;
+ }
+
+ /**
+ * @return the color
+ */
+ public Integer getColor() {
+ return color;
+ }
+
+ /**
+ * @param color the color to set
+ */
+ public UpdateStatus setColor(Integer color) {
+ if (this.color == color) {
+ return UpdateStatus.NoChange;
+ }
+ this.color = color;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the lineStyle
+ */
+ public LineType getLineStyle() {
+ return lineStyle;
+ }
+
+ /**
+ * @param lineStyle the lineStyle to set
+ */
+ public UpdateStatus setLineStyle(LineType lineStyle) {
+ if (this.lineStyle != lineStyle) {
+ this.lineStyle = lineStyle;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the mode
+ */
+ public Boolean getMode() {
+ return mode;
+ }
+
+ /**
+ * @param mode the mode to set
+ */
+ public UpdateStatus setMode(Boolean mode) {
+ if (this.mode == mode) {
+ return UpdateStatus.NoChange;
+ }
+ this.mode = mode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the thickness
+ */
+ public Double getThickness() {
+ return thickness;
+ }
+
+ /**
+ * @param thickness the thickness to set
+ */
+ public UpdateStatus setThickness(Double thickness) {
+ if (this.thickness != thickness) {
+ this.thickness = thickness;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Mark.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Mark.java
new file mode 100755
index 000000000..3aa1e69f4
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/contouredObject/Mark.java
@@ -0,0 +1,198 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.contouredObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Mark class
+ * @author Manuel JULIACHS
+ */
+public class Mark {
+ /** Mark properties */
+ public enum MarkPropertyType { MODE, STYLE, SIZEUNIT, SIZE, FOREGROUND, BACKGROUND };
+
+ /** Mark size unit type */
+ public enum MarkSizeUnitType { POINT, TABULATED;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the mark size unit type enum
+ */
+ public static MarkSizeUnitType intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return MarkSizeUnitType.POINT;
+ case 1:
+ return MarkSizeUnitType.TABULATED;
+ default:
+ return null;
+ }
+ }
+ }
+
+
+ /** Specifies whether marks must be drawn or not */
+ private boolean mode;
+
+ /** Mark style */
+ private int style;
+
+ /** Mark size unit */
+ private MarkSizeUnitType markSizeUnit;
+
+ /** Mark size */
+ private int size;
+
+ /** Foreground color */
+ private int foreground;
+
+ /** Background color */
+ private int background;
+
+ /** Constructor */
+ public Mark() {
+ super();
+ mode = false;
+ style = 0;
+ markSizeUnit = MarkSizeUnitType.POINT;
+ foreground = 0;
+ background = 0;
+ }
+
+ /**
+ * Copy constructor
+ * @param mark the Mark to copy
+ */
+ public Mark(Mark mark) {
+ mode = mark.mode;
+ style = mark.style;
+ size = mark.size;
+ markSizeUnit = mark.markSizeUnit;
+ foreground = mark.foreground;
+ background = mark.background;
+ }
+
+ /**
+ * @return the background
+ */
+ public Integer getBackground() {
+ return background;
+ }
+
+ /**
+ * @param background the background to set
+ */
+ public UpdateStatus setBackground(Integer background) {
+ if (this.background != background) {
+ this.background = background;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the foreground
+ */
+ public Integer getForeground() {
+ return foreground;
+ }
+
+ /**
+ * @param foreground the foreground to set
+ */
+ public UpdateStatus setForeground(Integer foreground) {
+ if (this.foreground != foreground) {
+ this.foreground = foreground;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the markSizeUnit
+ */
+ public MarkSizeUnitType getMarkSizeUnit() {
+ return markSizeUnit;
+ }
+
+ /**
+ * @param markSizeUnit the markSizeUnit to set
+ */
+ public UpdateStatus setMarkSizeUnit(MarkSizeUnitType markSizeUnit) {
+ if (this.markSizeUnit != markSizeUnit) {
+ this.markSizeUnit = markSizeUnit;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the size
+ */
+ public Integer getSize() {
+ return size;
+ }
+
+ /**
+ * @param size the size to set
+ */
+ public UpdateStatus setSize(Integer size) {
+ if (this.size == size) {
+ return UpdateStatus.NoChange;
+ }
+ this.size = size;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the mode
+ */
+ public Boolean getMode() {
+ return mode;
+ }
+
+ /**
+ * @param mode the mode to set
+ */
+ public UpdateStatus setMode(Boolean mode) {
+ if (this.mode == mode) {
+ return UpdateStatus.NoChange;
+ }
+ this.mode = mode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the style
+ */
+ public Integer getStyle() {
+ return style;
+ }
+
+ /**
+ * @param style the style to set
+ */
+ public UpdateStatus setStyle(Integer style) {
+ if (this.style == style) {
+ return UpdateStatus.NoChange;
+ }
+ this.style = style;
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/datatip/Datatip.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/datatip/Datatip.java
new file mode 100755
index 000000000..600172939
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/datatip/Datatip.java
@@ -0,0 +1,440 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2012 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.datatip;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_3COMPONENT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_AUTOORIENTATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_BOX_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_DATA__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_DISPLAY_FNC__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_INTERP_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_LABEL_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_ORIENTATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_INDEXES__;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+import org.scilab.forge.scirenderer.ruler.graduations.UserDefinedFormat;
+
+import org.scilab.modules.action_binding.InterpreterManagement;
+import org.scilab.modules.graphic_objects.PolylineData;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.textObject.Text;
+import org.scilab.modules.localization.Messages;
+
+public class Datatip extends Text {
+
+ /** false = datatip text box is hidden*/
+ Boolean tipBoxMode;
+ /** false = datatip label is hidden*/
+ Boolean tipLabelMode;
+ /** false = display only (X, Y), true = display (X, Y, Z)*/
+ Boolean use3component;
+ /** false = no interpolation between point segments*/
+ Boolean interpMode;
+ /** Displayed number format*/
+ DecimalFormat tipTextFormat;
+ /** Display function*/
+ String displayFnc;
+ /** For automatic update the datatip orientation*/
+ Boolean autoOrientation;
+ /* index of data in parent object ( polyline, plot3d, fac3d*/
+ /* size = 1 for polyline and 2 for others*/
+ Integer dataIndex;
+ Double ratio;
+
+
+ enum DatatipObjectProperty { TIP_DATA, TIP_BOX_MODE, TIP_LABEL_MODE, TIP_ORIENTATION, TIP_AUTOORIENTATION, TIP_3COMPONENT, TIP_INTERP_MODE, TIP_DISPLAY_FNC, TIP_INDEXES};
+ enum TipOrientation { TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, LEFT, RIGHT, TOP, BOTTOM;
+
+ /**
+ * Transform a integer to a TipOrientation enum.
+ */
+ public static TipOrientation intToEnum(Integer i) {
+ switch (i) {
+ case 0:
+ return TipOrientation.TOP_LEFT;
+ case 1:
+ return TipOrientation.TOP_RIGHT;
+ case 2:
+ return TipOrientation.BOTTOM_LEFT;
+ case 3:
+ return TipOrientation.BOTTOM_RIGHT;
+ case 4:
+ return TipOrientation.LEFT;
+ case 5:
+ return TipOrientation.RIGHT;
+ case 6:
+ return TipOrientation.TOP;
+ case 7:
+ return TipOrientation.BOTTOM;
+ default:
+ return TipOrientation.TOP_RIGHT;
+ }
+ }
+
+ };
+
+ TipOrientation currentOrientation;
+
+ /**
+ * Initializes the datatip, setup format, orientation and mark.
+ */
+ public Datatip() {
+ super();
+ use3component = false;
+ autoOrientation = true;
+ setOrientationAsEnum(TipOrientation.TOP_RIGHT);
+ DecimalFormat fb = new DecimalFormat("#.####E00");
+ DecimalFormatSymbols decimalFormatSymbols = fb.getDecimalFormatSymbols();
+ decimalFormatSymbols.setDecimalSeparator('.');
+ decimalFormatSymbols.setExponentSeparator("e");
+ decimalFormatSymbols.setGroupingSeparator('\u00A0');
+ fb.setDecimalFormatSymbols(decimalFormatSymbols);
+ tipTextFormat = new UserDefinedFormat(fb, "%g", 1, 0);
+
+ tipBoxMode = true;
+ tipLabelMode = true;
+ interpMode = true;
+ displayFnc = "";
+ ratio = 0.;
+ dataIndex = Integer.MIN_VALUE;
+ setVisible(true);
+ setBox(true);
+ setLineMode(true);
+ setFillMode(true);
+ setBackground(-2);
+ setClipState(1);
+
+ setMarkMode(true);
+ setMarkSize(8);
+ setMarkBackground(-1);
+ setMarkForeground(-1);
+ setMarkStyle(11);
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Convert the property name to the DatatipObjectProperty enum.
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_DATATIP_DATA__:
+ return DatatipObjectProperty.TIP_DATA;
+ case __GO_DATATIP_BOX_MODE__:
+ return DatatipObjectProperty.TIP_BOX_MODE;
+ case __GO_DATATIP_LABEL_MODE__:
+ return DatatipObjectProperty.TIP_LABEL_MODE;
+ case __GO_DATATIP_ORIENTATION__:
+ return DatatipObjectProperty.TIP_ORIENTATION;
+ case __GO_DATATIP_3COMPONENT__:
+ return DatatipObjectProperty.TIP_3COMPONENT;
+ case __GO_DATATIP_AUTOORIENTATION__:
+ return DatatipObjectProperty.TIP_AUTOORIENTATION;
+ case __GO_DATATIP_INTERP_MODE__:
+ return DatatipObjectProperty.TIP_INTERP_MODE;
+ case __GO_DATATIP_DISPLAY_FNC__:
+ return DatatipObjectProperty.TIP_DISPLAY_FNC;
+ case __GO_DATATIP_INDEXES__ :
+ return DatatipObjectProperty.TIP_INDEXES;
+ default:
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * @return the datatip property
+ */
+ public Object getProperty(Object property) {
+ if (property instanceof DatatipObjectProperty) {
+ switch ((DatatipObjectProperty) property) {
+ case TIP_DATA:
+ return getTipData();
+ case TIP_BOX_MODE:
+ return getTipBoxMode();
+ case TIP_LABEL_MODE:
+ return getTipLabelMode();
+ case TIP_ORIENTATION:
+ return getOrientation();
+ case TIP_3COMPONENT:
+ return isUsing3Component();
+ case TIP_AUTOORIENTATION:
+ return isAutoOrientationEnabled();
+ case TIP_INTERP_MODE:
+ return getInterpMode();
+ case TIP_DISPLAY_FNC:
+ return getDisplayFunction();
+ case TIP_INDEXES:
+ return getIndexes();
+ }
+ }
+
+ return super.getProperty(property);
+ }
+
+ /**
+ * Set the datatip property
+ * @param property the property
+ * @param value the new property value.
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property instanceof DatatipObjectProperty) {
+ switch ((DatatipObjectProperty) property) {
+ case TIP_BOX_MODE:
+ return setTipBoxMode((Boolean) value);
+ case TIP_LABEL_MODE:
+ return setTipLabelMode((Boolean) value);
+ case TIP_ORIENTATION:
+ return setOrientation((Integer) value);
+ case TIP_3COMPONENT:
+ return setUse3Component((Boolean) value);
+ case TIP_AUTOORIENTATION:
+ return setAutoOrientation((Boolean) value);
+ case TIP_INTERP_MODE:
+ return setInterpMode((Boolean) value);
+ case TIP_DISPLAY_FNC:
+ return setDisplayFunction((String) value);
+ case TIP_INDEXES:
+ return setIndexes((Double[]) value);
+ }
+ }
+
+ return super.setProperty(property, value);
+ }
+
+ /**
+ * Get the current tip data
+ * @return the tip data
+ */
+ public Double[] getTipData() {
+ final double[] dataX = (double[]) PolylineData.getDataX(getParent());
+ final double[] dataY = (double[]) PolylineData.getDataY(getParent());
+
+ if (use3component) {
+ final double[] dataZ = (double[]) PolylineData.getDataZ(getParent());
+
+ if (dataX.length < dataIndex + 2 || dataY.length < dataIndex + 2 || dataZ.length < dataIndex + 2) {
+ if (dataX.length >= 1 && dataY.length >= 1 && dataZ.length >= 1) {
+ return new Double[] {dataX[dataX.length - 1], dataY[dataY.length - 1], dataZ[dataZ.length - 1]};
+ } else {
+ return new Double[] {0., 0., 0.};
+ }
+ }
+
+ //get pt0 and pt1 from polyline data
+ final double[] pt0 = new double[] {dataX[dataIndex], dataY[dataIndex], dataZ[dataIndex]};
+ final double[] pt1 = new double[] {dataX[dataIndex + 1], dataY[dataIndex + 1], dataZ[dataIndex + 1]};
+
+ final double x = pt0[0] + (pt1[0] - pt0[0]) * ratio;
+ final double y = pt0[1] + (pt1[1] - pt0[1]) * ratio;
+ final double z = pt0[2] + (pt1[2] - pt0[2]) * ratio;
+
+ return new Double[] {x, y, z};
+ } else {
+ if (dataX.length < dataIndex + 2 || dataY.length < dataIndex + 2) {
+ if (dataX.length >= 1 && dataY.length >= 1) {
+ return new Double[] {dataX[dataX.length - 1], dataY[dataY.length - 1], 0.};
+ } else {
+ return new Double[] {0., 0., 0.};
+ }
+ }
+
+ //get pt0 and pt1 from polyline data
+ final double[] pt0 = new double[] {dataX[dataIndex], dataY[dataIndex]};
+ final double[] pt1 = new double[] {dataX[dataIndex + 1], dataY[dataIndex + 1]};
+
+ final double x = pt0[0] + (pt1[0] - pt0[0]) * ratio;
+ final double y = pt0[1] + (pt1[1] - pt0[1]) * ratio;
+
+ return new Double[] {x, y, 0.};
+ }
+ }
+
+ /**
+ * Get the current textbox orientation as an integer
+ * @return current orientation.
+ */
+ public Integer getOrientation() {
+ return getOrientationAsEnum().ordinal();
+ }
+
+ /**
+ * Get the current oriantation as a enum
+ * @return the current orientation
+ */
+ public TipOrientation getOrientationAsEnum() {
+ return currentOrientation;
+ }
+
+ /**
+ * Set the current orientation (updating the text position)
+ * @param orientation the new orientation (integer).
+ */
+ public UpdateStatus setOrientation(Integer orientation) {
+ currentOrientation = TipOrientation.intToEnum(orientation);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Set the current orientation (updating the text position)
+ * @param orientation the new orientation (TipOrientation enum).
+ */
+ public UpdateStatus setOrientationAsEnum(TipOrientation orientation) {
+ currentOrientation = orientation;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return true if the datatip is displaying the Z component, false otherwise.
+ */
+ public Boolean isUsing3Component() {
+ return use3component;
+ }
+
+ /**
+ * If true set the Z component to be displayed.
+ * @param useZ True to enable display the Z component, false to disable.
+ */
+ public UpdateStatus setUse3Component(Boolean useZ) {
+ use3component = useZ;
+ updateText();
+ return UpdateStatus.Success;
+ }
+
+
+ public Boolean isAutoOrientationEnabled() {
+ return autoOrientation;
+ }
+
+ public UpdateStatus setAutoOrientation(Boolean status) {
+ autoOrientation = status;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Update the text from the datatip base on current tipData value.
+ */
+ public void updateText() {
+ //if display function is empty look in parent
+ //if parent is empty too use default print
+
+ String fnc = getDisplayFunction();
+ if (fnc == null || fnc.equals("")) {
+ //look in parent
+ fnc = (String) GraphicController.getController().getProperty(getParent(), GraphicObjectProperties.__GO_DATATIP_DISPLAY_FNC__);
+ if (fnc == null || fnc.equals("")) {
+ String[] textArray = new String[] {"X:", "Y:", "Z:"};
+ Double[] tipData = getTipData();
+ textArray[0] += tipTextFormat.format(tipData[0]);
+ textArray[1] += tipTextFormat.format(tipData[1]);
+ textArray[2] += tipTextFormat.format(tipData[2]);
+
+ Integer[] dim = new Integer[2];
+ dim[0] = use3component ? 3 : 2;
+ dim[1] = 1;
+ setTextArrayDimensions(dim);
+ setTextStrings(textArray);
+ return;
+ }
+ }
+
+ String errMsg = Messages.gettext("Wrong value for '%s' property: A valid function name expected.\n");
+ errMsg = errMsg.replace("'", "''");
+ errMsg = errMsg.replace("\n", "\\n");
+ String updateCommand = "try;" +
+ "GDZa786XBSq7899SHKp=getcallbackobject(" + getIdentifier() + ");" +
+ "set(GDZa786XBSq7899SHKp,\"text\"," + fnc + "(GDZa786XBSq7899SHKp));" +
+ "clear(\"GDZa786XBSq7899SHKp\");" +
+ "catch;" +
+ "set(GDZa786XBSq7899SHKp,\"display_function\",\"\");" +
+ "set(GDZa786XBSq7899SHKp.parent,\"display_function\",\"\");" +
+ "clear(\"GDZa786XBSq7899SHKp\");" +
+ "error(msprintf(\"" + errMsg + "\", \"display_function\"));" +
+ "end;";
+ InterpreterManagement.requestScilabExec(updateCommand);
+ }
+
+ public Boolean getTipBoxMode() {
+ return tipBoxMode;
+ }
+
+ public Boolean getTipLabelMode() {
+ return tipLabelMode;
+ }
+
+ public Boolean getInterpMode() {
+ return interpMode;
+ }
+
+ public String getDisplayFunction() {
+ return displayFnc;
+ }
+
+ public UpdateStatus setTipBoxMode(Boolean mode) {
+ tipBoxMode = mode;
+ setBox(tipBoxMode);
+ return UpdateStatus.Success;
+ }
+
+ public UpdateStatus setTipLabelMode(Boolean mode) {
+ tipLabelMode = mode;
+ return UpdateStatus.Success;
+ }
+
+ public UpdateStatus setInterpMode(Boolean mode) {
+ interpMode = mode;
+ return UpdateStatus.Success;
+ }
+
+ public UpdateStatus setDisplayFunction(String fnc) {
+ displayFnc = fnc;
+ updateText();
+ return UpdateStatus.Success;
+ }
+
+ @Override
+ public Double[] getPosition() {
+ return getTipData();
+ }
+
+ public UpdateStatus setIndexes(Double[] value) {
+ if (value[0].intValue() != dataIndex || !value[1].equals(ratio)) {
+ dataIndex = value[0].intValue();
+ ratio = new Double(value[1]);
+ updateText();
+
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ public Integer getIndexes() {
+ return dataIndex;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_DATATIP__;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/event/EventHandler.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/event/EventHandler.java
new file mode 100755
index 000000000..021246c4c
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/event/EventHandler.java
@@ -0,0 +1,64 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.event;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+public class EventHandler {
+ /** Event handler string */
+ private String eventHandler = "";
+
+ /** Specifies whether the event handler is enabled or not */
+ private Boolean eventHandlerEnabled = false;
+
+ /**
+ * Default constructor
+ */
+ public EventHandler() {
+ eventHandler = "";
+ eventHandlerEnabled = false;
+ }
+
+ /**
+ * Copy constructor
+ * @param eventHandler the EventHandler to copy
+ */
+ public EventHandler(EventHandler eventHandler) {
+ this.eventHandler = eventHandler.eventHandler;
+ this.eventHandlerEnabled = eventHandler.eventHandlerEnabled;
+ }
+
+ public Boolean getEventHandlerEnabled() {
+ return eventHandlerEnabled;
+ }
+
+ public UpdateStatus setEventHandlerEnabled(Boolean eventHandlerEnabled) {
+ if (eventHandlerEnabled == this.eventHandlerEnabled) {
+ return UpdateStatus.NoChange;
+ }
+ this.eventHandlerEnabled = eventHandlerEnabled;
+ return UpdateStatus.Success;
+ }
+
+ public String getEventHandlerString() {
+ return eventHandler;
+ }
+
+ public UpdateStatus setEventHandlerString(String eventHandler) {
+ if (this.eventHandler.compareTo(eventHandler) == 0) {
+ return UpdateStatus.NoChange;
+ }
+ this.eventHandler = eventHandler;
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/fec/Fec.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/fec/Fec.java
new file mode 100755
index 000000000..6f1f954a3
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/fec/Fec.java
@@ -0,0 +1,178 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.fec;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Fec class
+ * @author Manuel JULIACHS
+ */
+public class Fec extends ClippableContouredObject {
+ // TBD: Data
+ // + triangles -> Data Model
+ // TBD properties relative to the data model
+ /** Fec properties names */
+ private enum FecProperty { ZBOUNDS, OUTSIDECOLOR, COLORRANGE };
+
+ /** Z Bounds: 2-element array */
+ private double[] zBounds;
+
+ /** 2-element array */
+ private int[] outsideColor;
+
+ /** 2-element array */
+ private int[] colorRange;
+
+ /** Constructor */
+ public Fec() {
+ super();
+ zBounds = new double[2];
+ outsideColor = new int[2];
+ colorRange = new int[2];
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_Z_BOUNDS__ :
+ return FecProperty.ZBOUNDS;
+ case __GO_OUTSIDE_COLOR__ :
+ return FecProperty.OUTSIDECOLOR;
+ case __GO_COLOR_RANGE__ :
+ return FecProperty.COLORRANGE;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == FecProperty.ZBOUNDS) {
+ return getZBounds();
+ } else if (property == FecProperty.OUTSIDECOLOR) {
+ return getOutsideColor();
+ } else if (property == FecProperty.COLORRANGE) {
+ return getColorRange();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == FecProperty.ZBOUNDS) {
+ setZBounds((Double[]) value);
+ } else if (property == FecProperty.OUTSIDECOLOR) {
+ setOutsideColor((Integer[]) value);
+ } else if (property == FecProperty.COLORRANGE) {
+ setColorRange((Integer[]) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the colorRange
+ */
+ public Integer[] getColorRange() {
+ Integer[] retColorRange = new Integer[2];
+ retColorRange[0] = colorRange[0];
+ retColorRange[1] = colorRange[1];
+
+ return retColorRange;
+ }
+
+ /**
+ * @param colorRange the colorRange to set
+ */
+ public UpdateStatus setColorRange(Integer[] colorRange) {
+ this.colorRange[0] = colorRange[0];
+ this.colorRange[1] = colorRange[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the outsideColor
+ */
+ public Integer[] getOutsideColor() {
+ Integer[] retOutsideColor = new Integer[2];
+ retOutsideColor[0] = outsideColor[0];
+ retOutsideColor[1] = outsideColor[1];
+
+ return retOutsideColor;
+ }
+
+ /**
+ * @param outsideColor the outsideColor to set
+ */
+ public UpdateStatus setOutsideColor(Integer[] outsideColor) {
+ this.outsideColor[0] = outsideColor[0];
+ this.outsideColor[1] = outsideColor[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the zBounds
+ */
+ public Double[] getZBounds() {
+ Double[] retZBounds = new Double[2];
+ retZBounds[0] = zBounds[0];
+ retZBounds[1] = zBounds[1];
+
+ return retZBounds;
+ }
+
+ /**
+ * @param bounds the zBounds to set
+ */
+ public UpdateStatus setZBounds(Double[] zBounds) {
+ this.zBounds[0] = zBounds[0];
+ this.zBounds[1] = zBounds[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_FEC__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/ColorMap.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/ColorMap.java
new file mode 100755
index 000000000..cc46e9996
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/ColorMap.java
@@ -0,0 +1,127 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Pierre Lando
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.figure;
+
+import java.util.Arrays;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * @author Pierre Lando
+ */
+public class ColorMap {
+ /**
+ * Number of channels for one color.
+ */
+ private static final int CHANNELS_NUMBER = 3;
+
+ private static final float[] BLACK_COLOR = new float[] {0, 0, 0};
+ private static final float[] WHITE_COLOR = new float[] {1, 1, 1};
+ private static final float[] LIGHT_GRAY_COLOR = new float[] {0.7f, 0.7f, 0.7f};
+
+ /**
+ * The data of this ColorMap.
+ */
+ Double[] data = new Double[0];
+
+ /**
+ * Default constructor
+ */
+ public ColorMap() {
+
+ }
+
+ /**
+ * Copy constructor
+ * @param colorMap the ColorMap to copy
+ */
+ public ColorMap(ColorMap colorMap) {
+ setData(colorMap.data);
+ }
+
+ /**
+ * Return a copy of the data of this color map.
+ * @return a copy of the data of this color map.
+ */
+ public Double[] getData() {
+ return data.clone();
+ }
+
+ /**
+ * Return the number of color in this ColorMap
+ * @return the number of color in this ColorMap
+ */
+ public int getSize() {
+ return data.length / CHANNELS_NUMBER;
+ }
+
+ /**
+ * Return the color corresponding to the given Scilab index.
+ *
+ * The first color in scilab ColorMap has index 1.
+ * If index is 0, it will be considered as 1.
+ * If index is -1 the color is black.
+ * If index is -2 the color is white.
+ * If index is last scilab index + 1, it will be considered as -1.
+ * If index is last scilab index + 2, it will be considered as -2.
+ * Other values should not be possible.
+ * By the way we consider the nearest value.
+ *
+ * @param index the given Scilab index.
+ * @return the color corresponding to the given Scilab index.
+ */
+ public float[] getScilabColor(int index) {
+
+ int lastScilabIndex = getSize();
+
+ if (index == 0) {
+ index = -1;
+ }
+
+ if (index > lastScilabIndex) {
+ index = lastScilabIndex - index;
+ }
+ if (index == -3) {
+ return LIGHT_GRAY_COLOR;
+ } else if (index == -1 || index < -2) {
+ return BLACK_COLOR;
+ } else if (index == -2) {
+ return WHITE_COLOR;
+ } else {
+ index = index - 1;
+ return new float[] {
+ Math.min(1.f, data[index].floatValue()),
+ Math.min(1.f, data[index + getSize()].floatValue()),
+ Math.min(1.f, data[index + getSize() * 2].floatValue())
+ };
+ }
+ }
+
+ /**
+ * Set the data of this ColorMap
+ * This function is package to avoid bad use (update model without using the controller).
+ * @param data the new data.
+ */
+ UpdateStatus setData(Double[] data) {
+ // Do not update colormap if it's the same
+ if (Arrays.equals(data, this.data)) {
+ return UpdateStatus.NoChange;
+ }
+ int length = data.length;
+ length -= length % CHANNELS_NUMBER;
+
+ this.data = new Double[length];
+ System.arraycopy(data, 0, this.data, 0, length);
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/Figure.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/Figure.java
new file mode 100755
index 000000000..4e334fb2b
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/figure/Figure.java
@@ -0,0 +1,1432 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.figure;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ANTIALIASING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AUTORESIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXES_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BACKGROUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BORDER_OPT_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLOSEREQUESTFCN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_COLORMAP_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_COLORMAP__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DEFAULT_AXES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DOCKABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_EVENTHANDLER_ENABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_EVENTHANDLER_NAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_GRID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_IMMEDIATE_DRAWING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_INFOBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_INFO_MESSAGE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT_SET__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MENUBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MENUBAR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_NAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PIXEL_DRAWING_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_RESIZEFCN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_RESIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ROTATION_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TOOLBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TOOLBAR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VIEWPORT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ICON__;
+
+import java.util.Arrays;
+
+import org.scilab.modules.graphic_objects.axes.AxesContainer;
+import org.scilab.modules.graphic_objects.event.EventHandler;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+
+/**
+ * Figure class
+ * @author Manuel JULIACHS
+ */
+public class Figure extends GraphicObject implements AxesContainer {
+ /** Figure properties names */
+ private enum FigureProperty {
+ INFOMESSAGE, COLORMAP, COLORMAPSIZE, BACKGROUND, ROTATIONTYPE, RESIZEFCN, CLOSEREQUESTFCN, RESIZE, TOOLBAR, TOOLBAR_VISIBLE, MENUBAR, MENUBAR_VISIBLE, INFOBAR_VISIBLE, DOCKABLE, LAYOUT, LAYOUT_SET, GRIDOPT_GRID, GRIDOPT_PADDING, BORDEROPT_PADDING, DEFAULT_AXES, ICON
+ };
+
+ /**
+ * Specifies whether rotation applies to a single subwindow or to all the
+ * figure's subwindows
+ */
+ public enum RotationType {
+ UNARY, MULTIPLE;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the rotation type enum
+ */
+ public static RotationType intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return RotationType.UNARY;
+ case 1:
+ return RotationType.MULTIPLE;
+ default:
+ return null;
+ }
+ }
+
+ public static RotationType stringToEnum(String value) {
+ if (value.equals("multiple")) {
+ return MULTIPLE;
+ }
+
+ return UNARY;
+ }
+
+ public static String enumToString(RotationType value) {
+ switch (value) {
+ case MULTIPLE:
+ return "multiple";
+ case UNARY:
+ default:
+ return "unary";
+ }
+ }
+ }
+
+ public enum BarType {
+ NONE, FIGURE;
+ public static BarType intToEnum(Integer intValue) {
+ switch (intValue) {
+ default:
+ case 0:
+ return BarType.NONE;
+ case 1:
+ return BarType.FIGURE;
+ }
+ }
+
+ public static BarType stringToEnum(String value) {
+ if (value.equals("figure")) {
+ return FIGURE;
+ }
+
+ return NONE;
+ }
+
+ public static String enumToString(BarType value) {
+ switch (value) {
+ case FIGURE:
+ return "figure";
+ case NONE:
+ default:
+ return "none";
+ }
+ }
+ }
+
+ /** Pixel drawing logical operations */
+ private enum PixelDrawingMode {
+ CLEAR, AND, ANDREVERSE, COPY, ANDINVERTED, NOOP, XOR, OR, NOR, EQUIV, INVERT, ORREVERSE, COPYINVERTED, ORINVERTED, NAND, SET;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the pixel drawing mode enum
+ */
+ public static PixelDrawingMode intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return PixelDrawingMode.CLEAR;
+ case 1:
+ return PixelDrawingMode.AND;
+ case 2:
+ return PixelDrawingMode.ANDREVERSE;
+ case 3:
+ return PixelDrawingMode.COPY;
+ case 4:
+ return PixelDrawingMode.ANDINVERTED;
+ case 5:
+ return PixelDrawingMode.NOOP;
+ case 6:
+ return PixelDrawingMode.XOR;
+ case 7:
+ return PixelDrawingMode.OR;
+ case 8:
+ return PixelDrawingMode.NOR;
+ case 9:
+ return PixelDrawingMode.EQUIV;
+ case 10:
+ return PixelDrawingMode.INVERT;
+ case 11:
+ return PixelDrawingMode.ORREVERSE;
+ case 12:
+ return PixelDrawingMode.COPYINVERTED;
+ case 13:
+ return PixelDrawingMode.ORINVERTED;
+ case 14:
+ return PixelDrawingMode.NAND;
+ case 15:
+ return PixelDrawingMode.SET;
+ default:
+ return null;
+ }
+ }
+ };
+
+ /** FigureDimensions properties names */
+ public enum FigureDimensionsProperty {
+ POSITION, SIZE
+ };
+
+ /**
+ * FigureDimensions class
+ */
+ private class FigureDimensions {
+ /** Position (x,y) of the upper-left corner in the top-level window */
+ private Integer[] position;
+
+ /** Dimensions (w, h) of the figure window */
+ private Integer[] size;
+
+ /**
+ * Default constructor
+ */
+ public FigureDimensions() {
+ position = new Integer[] { 0, 0 };
+ size = new Integer[] { 0, 0 };
+ }
+
+ /**
+ * Copy constructor
+ * @param figureDimensions the FigureDimensions to copy
+ */
+ public FigureDimensions(FigureDimensions figureDimensions) {
+ this.position = new Integer[2];
+ this.position[0] = figureDimensions.position[0];
+ this.position[1] = figureDimensions.position[1];
+
+ this.size = new Integer[2];
+ this.size[0] = figureDimensions.size[0];
+ this.size[1] = figureDimensions.size[1];
+ }
+ }
+
+ /** CanvasProperty properties names */
+ public enum CanvasProperty {
+ AUTORESIZE, VIEWPORT, AXESSIZE
+ };
+
+ /**
+ * Canvas class
+ */
+ private class Canvas {
+ /** Specifies whether automatic resizing is used */
+ private boolean autoResize;
+
+ /** Viewport position (x,y) */
+ private Integer[] viewport;
+
+ /** Rendering canvas (w,h) dimensions */
+ private Integer[] axesSize;
+
+ /**
+ * Default constructor
+ */
+ public Canvas() {
+ autoResize = false;
+ viewport = new Integer[2];
+ axesSize = new Integer[2];
+ }
+
+ /**
+ * Copy constructor
+ * @param canvas the Canvas to copy
+ */
+ public Canvas(Canvas canvas) {
+ this.autoResize = canvas.autoResize;
+
+ this.viewport = new Integer[2];
+
+ this.viewport[0] = canvas.viewport[0];
+ this.viewport[1] = canvas.viewport[1];
+
+ this.axesSize = new Integer[2];
+
+ this.axesSize[0] = canvas.axesSize[0];
+ this.axesSize[1] = canvas.axesSize[1];
+ }
+ }
+
+ /** FigureName properties names */
+ public enum FigureNameProperty {
+ NAME, ID
+ };
+
+ /**
+ * FigureName class
+ */
+ public class FigureName implements Cloneable {
+ /** Name */
+ private String name;
+
+ /** Identifier */
+ private int id;
+
+ public FigureName clone() throws CloneNotSupportedException {
+ FigureName copy;
+
+ // return (FigureName) super.clone();
+
+ copy = (FigureName) super.clone();
+
+ copy.name = new String(this.name);
+ copy.id = this.id;
+
+ return copy;
+ }
+
+ /**
+ * Default constructor
+ */
+ public FigureName() {
+ name = "";
+ id = 0;
+ }
+
+ /**
+ * Copy constructor
+ * @param figureName the FigureName to copy
+ */
+ public FigureName(FigureName figureName) {
+ name = new String(figureName.name);
+ id = figureName.id;
+ }
+
+ }
+
+ /** RenderingMode properties names */
+ public enum RenderingModeProperty {
+ PIXELDRAWINGMODE, ANTIALIASING, IMMEDIATEDRAWING
+ };
+
+ /**
+ * RenderingMode class
+ */
+ private class RenderingMode {
+
+ /** Specifies the pixel drawing mode used */
+ private PixelDrawingMode pixelDrawingMode;
+
+ /** Antialising level (0 == off) */
+ private int antialiasing;
+
+ /** Specifies whether immediate drawing is used or not */
+ private boolean immediateDrawing;
+
+ /**
+ * Default constructor
+ */
+ public RenderingMode() {
+ pixelDrawingMode = PixelDrawingMode.COPY;
+ antialiasing = 0;
+ immediateDrawing = true;
+ }
+
+ /**
+ * Copy constructor
+ * @param renderingMode the RenderingMode to copy
+ */
+ public RenderingMode(RenderingMode renderingMode) {
+ pixelDrawingMode = renderingMode.pixelDrawingMode;
+ antialiasing = renderingMode.antialiasing;
+ immediateDrawing = renderingMode.immediateDrawing;
+ }
+
+ }
+
+ /** EventHandler properties names */
+ public enum EventHandlerProperty {
+ EVENTHANDLER, EVENTHANDLERENABLE
+ };
+
+ /** Figure dimensions */
+ private FigureDimensions dimensions;
+
+ /** Canvas property */
+ private Canvas canvas;
+
+ /** Figure name */
+ private FigureName figureName;
+
+ /** Info message */
+ private String infoMessage;
+
+ /**
+ * Default ColorMap: (3 x N) matrix, where N is the number of colors and 3
+ * the number of color channels
+ */
+ private ColorMap colorMap;
+
+ /** Rendering mode */
+ private RenderingMode renderingMode;
+
+ /** Background color */
+ private int background;
+
+ /** Event handler */
+ private EventHandler eventHandler;
+
+ /** ResizeFcn */
+ private String resizeFcn;
+
+ /** CloseRequestFcn */
+ private String closeRequestFcn;
+
+ /** Rotation type */
+ private RotationType rotation;
+
+ /** resize */
+ private Boolean resize;
+
+ /** toolbar */
+ private BarType toolbar;
+ private Boolean toolbarVisible;
+
+ /** menubar */
+ private BarType menubar;
+ private Boolean menubarVisible;
+
+ /** infobar */
+ private Boolean infobarVisible;
+
+ /** dockable */
+ private Boolean dockable;
+
+ /** layout */
+ private LayoutType layout;
+
+ /** layout options */
+ private Integer[] gridOptGrid = new Integer[] { 0, 0 };
+ private Integer[] gridOptPadding = new Integer[] { 0, 0 };
+ private Integer[] borderOptPadding = new Integer[] { 0, 0 };
+
+ /** default axes management */
+ private Boolean defaultAxes;
+
+ private String icon = "";
+
+ /** Constructor */
+ public Figure() {
+ super();
+ dimensions = new FigureDimensions();
+ canvas = new Canvas();
+ figureName = new FigureName();
+ infoMessage = "";
+ colorMap = new ColorMap();
+
+ renderingMode = new RenderingMode();
+ background = 0;
+ eventHandler = new EventHandler();
+ resizeFcn = "";
+ closeRequestFcn = "";
+ rotation = RotationType.UNARY;
+ resize = true;
+ toolbarVisible = true;
+ toolbar = BarType.FIGURE;
+ menubarVisible = true;
+ menubar = BarType.FIGURE;
+ infobarVisible = true;
+ dockable = true;
+ layout = LayoutType.NONE;
+ defaultAxes = true;
+ }
+
+ @Override
+ public Figure clone() {
+ Figure copy = null;
+ copy = (Figure) super.clone();
+
+ copy.dimensions = new FigureDimensions(this.dimensions);
+ copy.canvas = new Canvas(this.canvas);
+ copy.figureName = new FigureName(this.figureName);
+ copy.colorMap = new ColorMap(this.colorMap);
+ copy.renderingMode = new RenderingMode(this.renderingMode);
+ copy.eventHandler = new EventHandler(this.eventHandler);
+
+ copy.gridOptGrid = new Integer[] { 0, 0 };
+ copy.gridOptPadding = new Integer[] { 0, 0 };
+ copy.borderOptPadding = new Integer[] { 0, 0 };
+ copy.setValid(true);
+
+ return copy;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_POSITION__:
+ return FigureDimensionsProperty.POSITION;
+ case __GO_SIZE__:
+ return FigureDimensionsProperty.SIZE;
+ case __GO_AUTORESIZE__:
+ return CanvasProperty.AUTORESIZE;
+ case __GO_VIEWPORT__:
+ return CanvasProperty.VIEWPORT;
+ case __GO_AXES_SIZE__:
+ return CanvasProperty.AXESSIZE;
+ case __GO_NAME__:
+ return FigureNameProperty.NAME;
+ case __GO_ID__:
+ return FigureNameProperty.ID;
+ case __GO_INFO_MESSAGE__:
+ return FigureProperty.INFOMESSAGE;
+ case __GO_COLORMAP__:
+ return FigureProperty.COLORMAP;
+ case __GO_COLORMAP_SIZE__:
+ return FigureProperty.COLORMAPSIZE;
+ case __GO_PIXEL_DRAWING_MODE__:
+ return RenderingModeProperty.PIXELDRAWINGMODE;
+ case __GO_ANTIALIASING__:
+ return RenderingModeProperty.ANTIALIASING;
+ case __GO_IMMEDIATE_DRAWING__:
+ return RenderingModeProperty.IMMEDIATEDRAWING;
+ case __GO_BACKGROUND__:
+ return FigureProperty.BACKGROUND;
+ case __GO_EVENTHANDLER_NAME__:
+ return EventHandlerProperty.EVENTHANDLER;
+ case __GO_EVENTHANDLER_ENABLE__:
+ return EventHandlerProperty.EVENTHANDLERENABLE;
+ case __GO_ROTATION_TYPE__:
+ return FigureProperty.ROTATIONTYPE;
+ case __GO_RESIZEFCN__:
+ return FigureProperty.RESIZEFCN;
+ case __GO_CLOSEREQUESTFCN__:
+ return FigureProperty.CLOSEREQUESTFCN;
+ case __GO_RESIZE__:
+ return FigureProperty.RESIZE;
+ case __GO_TOOLBAR__:
+ return FigureProperty.TOOLBAR;
+ case __GO_TOOLBAR_VISIBLE__:
+ return FigureProperty.TOOLBAR_VISIBLE;
+ case __GO_MENUBAR__:
+ return FigureProperty.MENUBAR;
+ case __GO_MENUBAR_VISIBLE__:
+ return FigureProperty.MENUBAR_VISIBLE;
+ case __GO_INFOBAR_VISIBLE__:
+ return FigureProperty.INFOBAR_VISIBLE;
+ case __GO_DOCKABLE__:
+ return FigureProperty.DOCKABLE;
+ case __GO_LAYOUT__:
+ return FigureProperty.LAYOUT;
+ case __GO_LAYOUT_SET__:
+ return FigureProperty.LAYOUT_SET;
+ case __GO_GRID_OPT_GRID__:
+ return FigureProperty.GRIDOPT_GRID;
+ case __GO_GRID_OPT_PADDING__:
+ return FigureProperty.GRIDOPT_PADDING;
+ case __GO_BORDER_OPT_PADDING__:
+ return FigureProperty.BORDEROPT_PADDING;
+ case __GO_DEFAULT_AXES__:
+ return FigureProperty.DEFAULT_AXES;
+ case __GO_UI_ICON__:
+ return FigureProperty.ICON;
+ default:
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == FigureDimensionsProperty.POSITION) {
+ return getPosition();
+ } else if (property == FigureDimensionsProperty.SIZE) {
+ return getSize();
+ } else if (property == CanvasProperty.AUTORESIZE) {
+ return getAutoResize();
+ } else if (property == CanvasProperty.VIEWPORT) {
+ return getViewport();
+ } else if (property == CanvasProperty.AXESSIZE) {
+ return getAxesSize();
+ } else if (property == FigureNameProperty.NAME) {
+ return getName();
+ } else if (property == FigureNameProperty.ID) {
+ return getId();
+ } else if (property == FigureProperty.INFOMESSAGE) {
+ return getInfoMessage();
+ } else if (property == FigureProperty.COLORMAP) {
+ return getColorMap().getData();
+ } else if (property == FigureProperty.COLORMAPSIZE) {
+ return getColorMap().getSize();
+ } else if (property == RenderingModeProperty.PIXELDRAWINGMODE) {
+ return getPixelDrawingMode();
+ } else if (property == RenderingModeProperty.ANTIALIASING) {
+ return getAntialiasing();
+ } else if (property == RenderingModeProperty.IMMEDIATEDRAWING) {
+ return getImmediateDrawing();
+ } else if (property == FigureProperty.BACKGROUND) {
+ return getBackground();
+ } else if (property == EventHandlerProperty.EVENTHANDLER) {
+ return getEventHandlerString();
+ } else if (property == EventHandlerProperty.EVENTHANDLERENABLE) {
+ return getEventHandlerEnable();
+ } else if (property == FigureProperty.ROTATIONTYPE) {
+ return getRotation();
+ } else if (property == FigureProperty.RESIZEFCN) {
+ return getResizeFcn();
+ } else if (property == FigureProperty.CLOSEREQUESTFCN) {
+ return getCloseRequestFcn();
+ } else if (property == FigureProperty.RESIZE) {
+ return getResize();
+ } else if (property == FigureProperty.TOOLBAR) {
+ return getToolbar();
+ } else if (property == FigureProperty.TOOLBAR_VISIBLE) {
+ return getToolbarVisible();
+ } else if (property == FigureProperty.MENUBAR) {
+ return getMenubar();
+ } else if (property == FigureProperty.MENUBAR_VISIBLE) {
+ return getMenubarVisible();
+ } else if (property == FigureProperty.INFOBAR_VISIBLE) {
+ return getInfobarVisible();
+ } else if (property == FigureProperty.DOCKABLE) {
+ return getDockable();
+ } else if (property == FigureProperty.LAYOUT) {
+ return getLayout();
+ } else if (property == FigureProperty.LAYOUT_SET) {
+ return isLayoutSettable();
+ } else if (property == FigureProperty.GRIDOPT_GRID) {
+ return getGridOptGrid();
+ } else if (property == FigureProperty.GRIDOPT_PADDING) {
+ return getGridOptPadding();
+ } else if (property == FigureProperty.BORDEROPT_PADDING) {
+ return getBorderOptPadding();
+ } else if (property == FigureProperty.DEFAULT_AXES) {
+ return hasDefaultAxes();
+ } else if (property == FigureProperty.ICON) {
+ return getIcon();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property instanceof FigureProperty) {
+ switch ((FigureProperty) property) {
+ case BACKGROUND:
+ return setBackground((Integer) value);
+ case CLOSEREQUESTFCN:
+ return setCloseRequestFcn((String) value);
+ case COLORMAP:
+ return getColorMap().setData((Double[]) value);
+ case COLORMAPSIZE:
+ return UpdateStatus.NoChange;
+ case INFOMESSAGE:
+ return setInfoMessage((String) value);
+ case RESIZEFCN:
+ return setResizeFcn((String) value);
+ case ROTATIONTYPE:
+ return setRotation((Integer) value);
+ case RESIZE:
+ return setResize((Boolean) value);
+ case TOOLBAR:
+ return setToolbar((Integer) value);
+ case TOOLBAR_VISIBLE:
+ return setToolbarVisible((Boolean) value);
+ case MENUBAR:
+ return setMenubar((Integer) value);
+ case MENUBAR_VISIBLE:
+ return setMenubarVisible((Boolean) value);
+ case INFOBAR_VISIBLE:
+ return setInfobarVisible((Boolean) value);
+ case DOCKABLE:
+ return setDockable((Boolean) value);
+ case LAYOUT:
+ return setLayout((Integer) value);
+ case GRIDOPT_GRID:
+ return setGridOptGrid((Integer[]) value);
+ case GRIDOPT_PADDING:
+ return setGridOptPadding((Integer[]) value);
+ case BORDEROPT_PADDING:
+ return setBorderOptPadding((Integer[]) value);
+ case DEFAULT_AXES:
+ return setDefaultAxes((Boolean) value);
+ case ICON:
+ return setIcon((String) value);
+ default:
+ break;
+ }
+ } else if (property instanceof CanvasProperty) {
+ switch ((CanvasProperty) property) {
+ case AUTORESIZE:
+ return setAutoResize((Boolean) value);
+ case AXESSIZE:
+ return setAxesSize((Integer[]) value);
+ case VIEWPORT:
+ return setViewport((Integer[]) value);
+ }
+ } else if (property instanceof FigureDimensionsProperty) {
+ switch ((FigureDimensionsProperty) property) {
+ case POSITION:
+ return setPosition((Integer[]) value);
+ case SIZE:
+ return setSize((Integer[]) value);
+ }
+ } else if (property instanceof FigureNameProperty) {
+ switch ((FigureNameProperty) property) {
+ case ID:
+ return setId((Integer) value);
+ case NAME:
+ return setName((String) value);
+ }
+ } else if (property instanceof RenderingModeProperty) {
+ switch ((RenderingModeProperty) property) {
+ case ANTIALIASING:
+ return setAntialiasing((Integer) value);
+ case IMMEDIATEDRAWING:
+ return setImmediateDrawing((Boolean) value);
+ case PIXELDRAWINGMODE:
+ return setPixelDrawingMode((Integer) value);
+ }
+ } else if (property instanceof EventHandlerProperty) {
+ switch ((EventHandlerProperty) property) {
+ case EVENTHANDLER:
+ return setEventHandlerString((String) value);
+ case EVENTHANDLERENABLE:
+ return setEventHandlerEnable((Boolean) value);
+ }
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the background
+ */
+ public Integer getBackground() {
+ return background;
+ }
+
+ /**
+ * @param background the background to set
+ */
+ public UpdateStatus setBackground(Integer background) {
+ if (this.background == background) {
+ return UpdateStatus.NoChange;
+ }
+ this.background = background;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the canvas
+ */
+ public Canvas getCanvas() {
+ return canvas;
+ }
+
+ /**
+ * @param canvas the canvas to set
+ */
+ public UpdateStatus setCanvas(Canvas canvas) {
+ this.canvas = canvas;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the autoresize
+ */
+ public Boolean getAutoResize() {
+ return canvas.autoResize;
+ }
+
+ /**
+ * @param autoResize the autoresize to set
+ */
+ public UpdateStatus setAutoResize(Boolean autoResize) {
+ if (canvas.autoResize == autoResize) {
+ return UpdateStatus.NoChange;
+ }
+ canvas.autoResize = autoResize;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the viewport
+ */
+ public Integer[] getViewport() {
+ Integer[] retViewport = new Integer[2];
+
+ retViewport[0] = canvas.viewport[0];
+ retViewport[1] = canvas.viewport[1];
+
+ return retViewport;
+ }
+
+ /**
+ * @param viewport the viewport to set
+ */
+ public UpdateStatus setViewport(Integer[] viewport) {
+ if (Arrays.equals(canvas.viewport, viewport)) {
+ return UpdateStatus.NoChange;
+ }
+ canvas.viewport[0] = viewport[0];
+ canvas.viewport[1] = viewport[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the axes size
+ */
+ public Integer[] getAxesSize() {
+ Integer[] retAxesSize = new Integer[2];
+
+ retAxesSize[0] = canvas.axesSize[0];
+ retAxesSize[1] = canvas.axesSize[1];
+
+ return retAxesSize;
+ }
+
+ /**
+ * @param axesSize the axes size to set
+ */
+ public UpdateStatus setAxesSize(Integer[] axesSize) {
+ if (Arrays.equals(canvas.axesSize, axesSize)) {
+ //must return Success to broadcast information
+ return UpdateStatus.Success;
+ }
+ canvas.axesSize[0] = axesSize[0];
+ canvas.axesSize[1] = axesSize[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the colorMap
+ */
+ public ColorMap getColorMap() {
+ return colorMap;
+ }
+
+ /**
+ * @return the dimensions
+ */
+ public FigureDimensions getDimensions() {
+ return dimensions;
+ }
+
+ /**
+ * @param dimensions the dimensions to set
+ */
+ public UpdateStatus setDimensions(FigureDimensions dimensions) {
+ if (this.dimensions == dimensions) {
+ return UpdateStatus.NoChange;
+ }
+ this.dimensions = dimensions;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the figure position
+ */
+ public Integer[] getPosition() {
+ Integer[] retPosition = new Integer[2];
+
+ retPosition[0] = dimensions.position[0];
+ retPosition[1] = dimensions.position[1];
+
+ return retPosition;
+ }
+
+ /**
+ * @param position the position to set
+ */
+ public UpdateStatus setPosition(Integer[] position) {
+ if (Arrays.equals(dimensions.position, position)) {
+ return UpdateStatus.NoChange;
+ }
+
+ dimensions.position[0] = position[0];
+ dimensions.position[1] = position[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the figure size
+ */
+ public Integer[] getSize() {
+ Integer[] retSize = new Integer[2];
+
+ retSize[0] = dimensions.size[0];
+ retSize[1] = dimensions.size[1];
+
+ return retSize;
+ }
+
+ /**
+ * @param size the size to set
+ */
+ public UpdateStatus setSize(Integer[] size) {
+ if (Arrays.equals(dimensions.size, size)) {
+ return UpdateStatus.NoChange;
+ }
+
+ dimensions.size[0] = size[0];
+ dimensions.size[1] = size[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the eventHandler
+ */
+ public EventHandler getEventHandler() {
+ return eventHandler;
+ }
+
+ /**
+ * @param eventHandler the eventHandler to set
+ */
+ public UpdateStatus setEventHandler(EventHandler eventHandler) {
+ if (this.eventHandler.equals(eventHandler)) {
+ return UpdateStatus.NoChange;
+ }
+ this.eventHandler = eventHandler;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the eventHandler string
+ */
+ public String getEventHandlerString() {
+ return eventHandler.getEventHandlerString();
+ }
+
+ /**
+ * @param eventHandlerString the eventHandler string to set
+ */
+ public UpdateStatus setEventHandlerString(String eventHandlerString) {
+ if (eventHandler.getEventHandlerString().equals(eventHandlerString)) {
+ return UpdateStatus.NoChange;
+ }
+ eventHandler.setEventHandlerString(eventHandlerString);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the eventHandlerEnabled
+ */
+ public Boolean getEventHandlerEnable() {
+ return eventHandler.getEventHandlerEnabled();
+ }
+
+ /**
+ * @param eventHandlerEnabled the eventHandlerEnabled to set
+ */
+ public UpdateStatus setEventHandlerEnable(Boolean eventHandlerEnabled) {
+ if (eventHandler.getEventHandlerEnabled() == eventHandlerEnabled) {
+ return UpdateStatus.NoChange;
+ }
+ eventHandler.setEventHandlerEnabled(eventHandlerEnabled);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the infoMessage
+ */
+ public String getInfoMessage() {
+ return infoMessage;
+ }
+
+ /**
+ * @param infoMessage the infoMessage to set
+ */
+ public UpdateStatus setInfoMessage(String infoMessage) {
+ if (this.infoMessage != null && this.infoMessage.equals(infoMessage)) {
+ return UpdateStatus.NoChange;
+ }
+ this.infoMessage = infoMessage;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the name
+ */
+ public FigureName getFigureName() {
+ return figureName;
+ }
+
+ /**
+ * @param figureName the figure name to set
+ */
+ public UpdateStatus setFigureName(FigureName figureName) {
+ if (this.figureName.equals(figureName)) {
+ return UpdateStatus.NoChange;
+ }
+ this.figureName = figureName;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the figure name
+ */
+ public String getName() {
+ return figureName.name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public UpdateStatus setName(String name) {
+ if (figureName.name.equals(name)) {
+ return UpdateStatus.NoChange;
+ }
+ figureName.name = name;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the id
+ */
+ public Integer getId() {
+ return figureName.id;
+ }
+
+ /**
+ * @param id the id to set
+ */
+ public UpdateStatus setId(Integer id) {
+ //must return Success to update Views
+ figureName.id = id;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the renderingMode
+ */
+ public RenderingMode getRenderingMode() {
+ return renderingMode;
+ }
+
+ /**
+ * @param renderingMode the renderingMode to set
+ */
+ public UpdateStatus setRenderingMode(RenderingMode renderingMode) {
+ if (this.renderingMode.equals(renderingMode)) {
+ return UpdateStatus.NoChange;
+ }
+ this.renderingMode = renderingMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the pixel drawing mode enum
+ */
+ public PixelDrawingMode getPixelDrawingModeAsEnum() {
+ return renderingMode.pixelDrawingMode;
+ }
+
+ /**
+ * @return the pixel drawing mode
+ */
+ public Integer getPixelDrawingMode() {
+ return getPixelDrawingModeAsEnum().ordinal();
+ }
+
+ /**
+ * @param pixelDrawingMode the pixel drawing mode to set
+ */
+ public UpdateStatus setPixelDrawingMode(PixelDrawingMode pixelDrawingMode) {
+ if (renderingMode.pixelDrawingMode.equals(pixelDrawingMode)) {
+ return UpdateStatus.NoChange;
+ }
+ renderingMode.pixelDrawingMode = pixelDrawingMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param pixelDrawingMode the pixel drawing mode to set
+ */
+ public UpdateStatus setPixelDrawingMode(Integer pixelDrawingMode) {
+ PixelDrawingMode mode = PixelDrawingMode.intToEnum(pixelDrawingMode);
+ if (renderingMode.pixelDrawingMode == mode) {
+ return UpdateStatus.NoChange;
+ }
+
+ renderingMode.pixelDrawingMode = mode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the antialiasing
+ */
+ public Integer getAntialiasing() {
+ return renderingMode.antialiasing;
+ }
+
+ /**
+ * @param antialiasing the antialiasing to set
+ */
+ public UpdateStatus setAntialiasing(Integer antialiasing) {
+ if (renderingMode.antialiasing == antialiasing) {
+ return UpdateStatus.NoChange;
+ }
+ renderingMode.antialiasing = antialiasing;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the immediateDrawing
+ */
+ public Boolean getImmediateDrawing() {
+ return renderingMode.immediateDrawing;
+ }
+
+ /**
+ * @param immediateDrawing the immediateDrawing to set
+ */
+ public UpdateStatus setImmediateDrawing(Boolean immediateDrawing) {
+ if (renderingMode.immediateDrawing == immediateDrawing) {
+ return UpdateStatus.NoChange;
+ }
+
+ renderingMode.immediateDrawing = immediateDrawing;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the rotation
+ */
+ public RotationType getRotationAsEnum() {
+ return rotation;
+ }
+
+ /**
+ * @return the rotation
+ */
+ public Integer getRotation() {
+ return getRotationAsEnum().ordinal();
+ }
+
+ /**
+ * @param rotation the rotation to set
+ */
+ public UpdateStatus setRotation(RotationType rotation) {
+ if (this.rotation.equals(rotation)) {
+ return UpdateStatus.NoChange;
+ }
+ this.rotation = rotation;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param rotation the rotation to set
+ */
+ public UpdateStatus setRotation(Integer rotation) {
+ RotationType rotationType = RotationType.intToEnum(rotation);
+ if (rotationType == null || this.rotation == rotationType) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.rotation = rotationType;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the resize function
+ */
+ public String getResizeFcn() {
+ return resizeFcn;
+ }
+
+ /**
+ * @param resizeFcn the resize function to set
+ */
+ public UpdateStatus setResizeFcn(String resizeFcn) {
+ if (this.resizeFcn.equals(resizeFcn)) {
+ return UpdateStatus.NoChange;
+ }
+ this.resizeFcn = resizeFcn;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the close request function
+ */
+ public String getCloseRequestFcn() {
+ return closeRequestFcn;
+ }
+
+ /**
+ * @param closeRequestFcn the close request function to set
+ */
+ public UpdateStatus setCloseRequestFcn(String closeRequestFcn) {
+ if (this.closeRequestFcn.equals(closeRequestFcn)) {
+ return UpdateStatus.NoChange;
+ }
+ this.closeRequestFcn = closeRequestFcn;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getResize() {
+ return resize;
+ }
+
+ public UpdateStatus setResize(Boolean status) {
+ if (status.equals(resize)) {
+ return UpdateStatus.NoChange;
+ }
+
+ resize = status;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getToolbarVisible() {
+ return toolbarVisible;
+ }
+
+ public UpdateStatus setToolbarVisible(Boolean status) {
+ if (status.equals(toolbarVisible)) {
+ return UpdateStatus.NoChange;
+ }
+
+ toolbarVisible = status;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getToolbar() {
+ return toolbar.ordinal();
+ }
+
+ public BarType getToolbarAsEnum() {
+ return toolbar;
+ }
+
+ public UpdateStatus setToolbar(Integer toolbar) {
+ return setToolbar(BarType.intToEnum(toolbar));
+ }
+
+ public UpdateStatus setToolbar(BarType toolbar) {
+ if (toolbar == this.toolbar) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.toolbar = toolbar;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getMenubarVisible() {
+ return menubarVisible;
+ }
+
+ public UpdateStatus setMenubarVisible(Boolean status) {
+ if (status.equals(menubarVisible)) {
+ return UpdateStatus.NoChange;
+ }
+
+ menubarVisible = status;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getMenubar() {
+ return menubar.ordinal();
+ }
+
+ public BarType getMenubarAsEnum() {
+ return menubar;
+ }
+
+ public UpdateStatus setMenubar(Integer menubar) {
+ return setMenubar(BarType.intToEnum(menubar));
+ }
+
+ public UpdateStatus setMenubar(BarType menubar) {
+ if (menubar == this.menubar) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.menubar = menubar;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getInfobarVisible() {
+ return infobarVisible;
+ }
+
+ public UpdateStatus setInfobarVisible(Boolean status) {
+ if (status.equals(infobarVisible)) {
+ return UpdateStatus.NoChange;
+ }
+
+ infobarVisible = status;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getDockable() {
+ return dockable;
+ }
+
+ public UpdateStatus setDockable(Boolean status) {
+ if (status.equals(dockable)) {
+ return UpdateStatus.NoChange;
+ }
+
+ dockable = status;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getLayout() {
+ return layout.ordinal();
+ }
+
+ public LayoutType getLayoutAsEnum() {
+ return layout;
+ }
+
+ public boolean isLayoutSettable() {
+ return (this.layout == LayoutType.NONE);
+ }
+
+ public UpdateStatus setLayout(Integer value) {
+ return setLayout(LayoutType.intToEnum(value));
+ }
+
+ public UpdateStatus setLayout(LayoutType layout) {
+ //avoid to set layout twice
+ if (this.layout == LayoutType.NONE) {
+ if (layout == LayoutType.NONE) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.layout = layout;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.Fail;
+ }
+
+ public Integer[] getBorderOptPadding() {
+ return borderOptPadding;
+ }
+
+ public UpdateStatus setBorderOptPadding(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (borderOptPadding.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0; i < value.length; i++) {
+ if (borderOptPadding[i] != value[i]) {
+ borderOptPadding[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getGridOptPadding() {
+ return gridOptPadding;
+ }
+
+ public UpdateStatus setGridOptPadding(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridOptPadding.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0; i < value.length; i++) {
+ if (gridOptPadding[i] != value[i]) {
+ gridOptPadding[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getGridOptGrid() {
+ return gridOptGrid;
+ }
+
+ public UpdateStatus setGridOptGrid(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridOptGrid.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0; i < value.length; i++) {
+ if (gridOptGrid[i] != value[i]) {
+ gridOptGrid[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Boolean hasDefaultAxes() {
+ return defaultAxes;
+ }
+
+ public UpdateStatus setDefaultAxes(Boolean status) {
+ if (status.equals(defaultAxes)) {
+ return UpdateStatus.NoChange;
+ }
+
+ defaultAxes = status;
+ return UpdateStatus.Success;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public UpdateStatus setIcon(String icon) {
+ if (this.icon.equals(icon)) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.icon = icon;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_FIGURE__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicController/GraphicController.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicController/GraphicController.java
new file mode 100755
index 000000000..d94a88b2d
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicController/GraphicController.java
@@ -0,0 +1,417 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicController;
+
+import java.awt.GraphicsEnvironment;
+import java.util.Collections;
+import java.util.ConcurrentModificationException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.Vector;
+
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.graphicView.FlattenTreeView;
+import org.scilab.modules.graphic_objects.graphicView.GedTreeView;
+import org.scilab.modules.graphic_objects.graphicView.GraphicView;
+import org.scilab.modules.graphic_objects.graphicView.GuiLogView;
+import org.scilab.modules.graphic_objects.graphicView.LogView;
+
+/**
+ * GraphicController class
+ * @author Bruno JOFRET
+ */
+public class GraphicController {
+
+ private static boolean MVCViewEnable = false;
+ private static boolean debugEnable = false;
+ private static boolean infoEnable = false;
+ private static Integer lastId = 0;
+
+ private static void INFO(String message) {
+ if (infoEnable == true) {
+ System.err.println("[CONTROLLER - INFO] : " + message);
+ }
+ }
+
+ private static void DEBUG(String message) {
+ if (debugEnable == true) {
+ System.err.println("[CONTROLLER - DEBUG] : " + message);
+ }
+ }
+
+ /**
+ * Set of all views attached to this controller.
+ */
+ private volatile static Set<GraphicView> allViews = Collections.synchronizedSet(new HashSet<GraphicView>());
+
+ /**
+ * Graphic controller singleton.
+ */
+ private static GraphicController me = null;
+
+ /**
+ * Default constructor
+ */
+ private GraphicController() {
+ if (!GraphicsEnvironment.isHeadless() && MVCViewEnable) {
+ register(GuiLogView.createGuiLogView());
+ register(GedTreeView.create());
+ }
+ }
+
+ /**
+ * Returns the controller
+ * @return the controller
+ */
+ public static GraphicController getController() {
+ if (me == null) {
+ me = new GraphicController();
+ }
+
+ return me;
+ }
+
+ /**
+ * Register a view that will receive notification
+ * of any model changes.
+ * @param view The view to register.
+ */
+ public void register(GraphicView view) {
+ INFO("Register view : " + view.toString());
+ allViews.add(view);
+ }
+
+ /**
+ * Unregister a view.
+ * @param view The view to unregister.
+ */
+ public void unregister(GraphicView view) {
+ INFO("Unregister view : " + view.toString());
+ allViews.remove(view);
+ }
+
+ /**
+ * Creates a UID
+ * @return the created UID
+ */
+ public Integer createUID() {
+ return ++lastId;
+ }
+
+ /**
+ * Returns the object associated to an id
+ * @param id the object id
+ * @return the object
+ */
+ public GraphicObject getObjectFromId(Integer id) {
+ return GraphicModel.getModel().getObjectFromId(id);
+ }
+
+ /**
+ * Fast property set method
+ * @param id the object id
+ * @param prop the property name
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public boolean setProperty(Integer id, int prop, Object value) {
+ try {
+ switch (GraphicModel.getModel().setProperty(id, prop, value)) {
+ case Success : // BroadCast Message + return true
+ objectUpdate(id, prop);
+ return true;
+ case NoChange : // Do not broadcast message
+ return true;
+ case Fail :
+ return false;
+ }
+ return false;
+ } catch (Exception e) {
+ DEBUG("====== Exception caught ======");
+ DEBUG("setProperty : " + id + " " + prop);
+ e.printStackTrace();
+ DEBUG("====== Exception caught ======");
+ return false;
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param id the object id
+ * @param prop the property name
+ * @return the property value
+ */
+ public Object getProperty(Integer id, int prop) {
+ try {
+ return GraphicModel.getModel().getProperty(id, prop);
+ } catch (Exception e) {
+ DEBUG("====== Exception caught ======");
+ DEBUG("getProperty : [" + id + "] " + prop);
+ e.printStackTrace();
+ DEBUG("====== Exception caught ======");
+ return null;
+ }
+ }
+
+ /**
+ * Returns a null property
+ * @param id the object id
+ * @param prop the property name
+ * @return the null property
+ */
+ public Object getNullProperty(Integer id, String prop) {
+ return GraphicModel.getModel().getNullProperty(id, prop);
+ }
+
+ /**
+ * Asks the model to create a new object
+ * @param type the object type
+ * @return the created object's id
+ */
+ public Integer askObject(Type type, boolean broadcastMessage) {
+
+ try {
+ Integer id = createUID();
+ GraphicModel.getModel().createObject(id, type);
+ if (broadcastMessage) {
+ objectCreated(id);
+ }
+
+ return id;
+ } catch (Exception e) {
+ DEBUG("====== Exception caught ======");
+ DEBUG(" askObject type = " + type.name());
+ e.printStackTrace();
+ DEBUG("====== Exception caught ======");
+ return 0;
+ }
+
+ }
+
+ public Integer cloneObject(Integer id, boolean broadcastMessage) {
+ try {
+ Integer newId = createUID();
+ GraphicModel.getModel().cloneObject(id, newId);
+ if (broadcastMessage) {
+ objectCreated(newId);
+ }
+
+ return newId;
+ } catch (Exception e) {
+ DEBUG("====== Exception caught ======");
+ DEBUG("cloneObject id = " + id);
+ e.printStackTrace();
+ DEBUG("====== Exception caught ======");
+ return 0;
+ }
+ }
+
+ /**
+ * Ask the model to clone an object
+ * @param id : the ID of the object to clone.
+ * @return the id of the clone.
+ */
+ public Integer cloneObject(Integer id) {
+ return cloneObject(id, true);
+ }
+
+ public Integer askObject(Type type) {
+ return askObject(type, true);
+ }
+
+ /**
+ * Deletes an object
+ * @param id the deleted object's id
+ */
+ public void deleteObject(Integer id) {
+ try {
+ objectDeleted(id);
+ GraphicModel.getModel().deleteObject(id);
+ } catch (Exception e) {
+ DEBUG("====== Exception caught ======");
+ DEBUG("deleteObject id = " + id);
+ e.printStackTrace();
+ DEBUG("====== Exception caught ======");
+ }
+ }
+
+ /**
+ * Notifies the existing views that an object has been created
+ * @param id the created object's id
+ */
+ public void objectCreated(final Integer id) {
+ //INFO("### Create object : "+id);
+ //INFO("### type is : " + getProperty(id, GraphicObjectProperties.__GO_TYPE__));
+ Vector<Runnable> broadCastVector = new Vector<Runnable>();
+
+ try {
+ for (final GraphicView view : allViews) {
+ broadCastVector.add(new Runnable() {
+ public void run() {
+ view.createObject(id);
+ }
+ });
+ }
+ for (final Runnable runMe : broadCastVector) {
+ runMe.run();
+ }
+ } catch (ConcurrentModificationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Notified the existing views that an object has been updated
+ * @param id the updated object's id
+ * @param prop the property that has been updated
+ */
+ public void objectUpdate(final Integer id, final int prop) {
+ //INFO("### Update object : "+id);
+ //INFO("### type is : " + getProperty(id, GraphicObjectProperties.__GO_TYPE__));
+ //INFO("### prop is : " + prop);
+
+ Vector<Runnable> broadCastVector = new Vector<Runnable>();
+ try {
+ for (final GraphicView view : allViews) {
+ broadCastVector.add(new Runnable() {
+ public void run() {
+ view.updateObject(id, prop);
+ }
+ });
+ }
+ for (final Runnable runMe : broadCastVector) {
+ runMe.run();
+ }
+ } catch (ConcurrentModificationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Notified the existing views that an object has been deleted
+ * @param id the deleted object's id
+ */
+ public void objectDeleted(final Integer id) {
+ //INFO("### Delete object : "+id);
+ //INFO("### type is : " + getProperty(id, GraphicObjectProperties.__GO_TYPE__));
+ Vector<Runnable> broadCastVector = new Vector<Runnable>();
+
+ try {
+ for (final GraphicView view : allViews) {
+ broadCastVector.add(new Runnable() {
+ public void run() {
+ view.deleteObject(id);
+ }
+ });
+ }
+ for (final Runnable runMe : broadCastVector) {
+ runMe.run();
+ }
+ } catch (ConcurrentModificationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Set relationship between two object and remove old relationship.
+ * @param parentId id of the parent object.
+ * @param childId id of the child object.
+ */
+ public void setGraphicObjectRelationship(Integer parentId, Integer childId) {
+ /*
+ * All the parent and children get/set calls must be performed first,
+ * and only then the corresponding object updates.
+ */
+ Object oldParent = getProperty(childId, GraphicObjectProperties.__GO_PARENT__);
+
+ if (oldParent != null && oldParent instanceof Integer) {
+ Integer oldParentId = (Integer) oldParent;
+
+ if (oldParentId == parentId) {
+ return;
+ }
+
+ if (oldParentId != 0) {
+ getObjectFromId(oldParentId).removeChild(childId);
+ }
+ }
+
+ /* Insertion occurs at the head of the children list. */
+ if (parentId != null && parentId != 0) {
+ GraphicObject go = getObjectFromId(parentId);
+ if (go != null) {
+ go.addChild(childId);
+ }
+ }
+
+ setProperty(childId, GraphicObjectProperties.__GO_PARENT__, parentId);
+
+ /* Object updates can now be performed. */
+ if (oldParent != null && oldParent instanceof Integer && ((Integer)oldParent) != 0) {
+ objectUpdate((Integer)oldParent, GraphicObjectProperties.__GO_CHILDREN__);
+ }
+
+ if (parentId != null && parentId != 0) {
+ objectUpdate(parentId, GraphicObjectProperties.__GO_CHILDREN__);
+ }
+
+ // Useless (already done in setProperty(childId, GraphicObjectProperties.__GO_PARENT__, parentId);)
+ //objectUpdate(childId, GraphicObjectProperties.__GO_PARENT__);
+ }
+
+ /**
+ * Remove relationship between given object and is parent.
+ * Then delete it.
+ * TODO : Manage children of deleted object.
+ * @param id deleted object identifier.
+ */
+ public void removeRelationShipAndDelete(Integer id) {
+ final GraphicObject killMe = getObjectFromId(id);
+ // assert that the object has not been deleted yet
+ if (killMe == null) {
+ return;
+ }
+
+ Integer parentUID = killMe.getParent();
+
+
+ /* Remove object from Parent's Children list */
+ if (parentUID != null && parentUID != 0) {
+ getObjectFromId(parentUID).removeChild(id);
+ //setProperty(id, GraphicObjectProperties.__GO_PARENT__, "");
+
+ objectUpdate(parentUID, GraphicObjectProperties.__GO_CHILDREN__);
+ objectUpdate(parentUID, GraphicObjectProperties.__GO_DATATIPS__);
+ //objectUpdate(id, GraphicObjectProperties.__GO_PARENT__);
+ }
+
+ killMe.setValid(false);
+ recursiveDeleteChildren(killMe);
+
+ deleteObject(id);
+ }
+
+ private void recursiveDeleteChildren(GraphicObject killMe) {
+ Integer children[] = killMe.getChildren();
+
+ for (int i = 0 ; i < children.length ; ++i) {
+ GraphicObject killMeThisChild = getObjectFromId(children[i]);
+ killMeThisChild.setValid(false);
+ recursiveDeleteChildren(killMeThisChild);
+ deleteObject(children[i]);
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.java
new file mode 100755
index 000000000..02086f89e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicModel/GraphicModel.java
@@ -0,0 +1,356 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicModel;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.scilab.modules.graphic_objects.arc.Arc;
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.axis.Axis;
+import org.scilab.modules.graphic_objects.compound.Compound;
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.datatip.Datatip;
+import org.scilab.modules.graphic_objects.fec.Fec;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+import org.scilab.modules.graphic_objects.imageplot.Grayplot;
+import org.scilab.modules.graphic_objects.imageplot.Matplot;
+import org.scilab.modules.graphic_objects.label.Label;
+import org.scilab.modules.graphic_objects.legend.Legend;
+import org.scilab.modules.graphic_objects.lighting.Light;
+import org.scilab.modules.graphic_objects.polyline.Polyline;
+import org.scilab.modules.graphic_objects.rectangle.Rectangle;
+import org.scilab.modules.graphic_objects.surface.Fac3d;
+import org.scilab.modules.graphic_objects.surface.Plot3d;
+import org.scilab.modules.graphic_objects.textObject.Text;
+import org.scilab.modules.graphic_objects.uibar.progressionbar.Progressionbar;
+import org.scilab.modules.graphic_objects.uibar.waitbar.Waitbar;
+import org.scilab.modules.graphic_objects.uicontextmenu.Uicontextmenu;
+import org.scilab.modules.graphic_objects.uicontrol.checkbox.CheckBox;
+import org.scilab.modules.graphic_objects.uicontrol.edit.Edit;
+import org.scilab.modules.graphic_objects.uicontrol.edit.Spinner;
+import org.scilab.modules.graphic_objects.uicontrol.frame.Frame;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorder;
+import org.scilab.modules.graphic_objects.uicontrol.layer.Layer;
+import org.scilab.modules.graphic_objects.uicontrol.listbox.ListBox;
+import org.scilab.modules.graphic_objects.uicontrol.popupmenu.PopupMenu;
+import org.scilab.modules.graphic_objects.uicontrol.pushbutton.PushButton;
+import org.scilab.modules.graphic_objects.uicontrol.radiobutton.RadioButton;
+import org.scilab.modules.graphic_objects.uicontrol.slider.Slider;
+import org.scilab.modules.graphic_objects.uicontrol.tab.Tab;
+import org.scilab.modules.graphic_objects.uicontrol.table.Table;
+import org.scilab.modules.graphic_objects.uicontrol.uiimage.UiImage;
+import org.scilab.modules.graphic_objects.uicontrol.uitext.UiText;
+import org.scilab.modules.graphic_objects.uimenu.Uimenu;
+import org.scilab.modules.graphic_objects.vectfield.Champ;
+import org.scilab.modules.graphic_objects.vectfield.Segs;
+
+/**
+ * GraphicModel class
+ * @author Bruno JOFRET
+ */
+public final class GraphicModel {
+
+ private static GraphicModel me;
+ private static GraphicObject figureModel;
+ private static GraphicObject axesModel;
+
+ private Map<Integer, GraphicObject> allObjects = new HashMap<Integer, GraphicObject>();
+
+ /**
+ * Default constructor
+ */
+ private GraphicModel() { }
+
+ /**
+ * Returns the model
+ * @return the model
+ */
+ public static GraphicModel getModel() {
+ if (me == null) {
+ me = new GraphicModel();
+ }
+
+ return me;
+ }
+
+ public static Figure getFigureModel() {
+ return (Figure) figureModel;
+ }
+
+ public static Axes getAxesModel() {
+ return (Axes) axesModel;
+ }
+
+ /**
+ * @param id the id of the object to get
+ * @return the object
+ */
+ public GraphicObject getObjectFromId(Integer id) {
+ return allObjects.get(id);
+ }
+
+ /**
+ * Returns a null property
+ * @param id the id of the object
+ * @param property the property name
+ * @return the property
+ */
+ public Object getNullProperty(Integer id, String property) {
+ GraphicObject object = allObjects.get(id);
+ return object.getNullProperty(property);
+ }
+
+ /**
+ * Fast property get
+ * @param id object id
+ * @param property property name
+ * @return property value
+ */
+ public Object getProperty(Integer id, int property) {
+ GraphicObject object = allObjects.get(id);
+
+ if (object != null) {
+ Object propertyType = object.getPropertyFromName(property);
+ return object.getProperty(propertyType);
+ }
+ return null;
+ }
+
+ /**
+ * Fast property set
+ * @param id object id
+ * @param property name
+ * @param value property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Integer id, int property, Object value) {
+ GraphicObject object = allObjects.get(id);
+ if (object != null) {
+ synchronized (object) {
+ Object propertyType = object.getPropertyFromName(property);
+ return object.setProperty(propertyType, value);
+ }
+ }
+ return UpdateStatus.Fail;
+ }
+
+ /**
+ * Creates an object
+ * @param id object id
+ * @param type object type
+ * @return the created object's id
+ */
+ public Integer createObject(Integer id, GraphicObject.Type type) {
+ GraphicObject object = createTypedObject(type);
+
+ if (object != null) {
+ allObjects.put(id, object);
+ object.setIdentifier(id);
+
+ return id;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Clone object
+ * @param id : id of the object to clone
+ * @param newId : id of the clone
+ * @return newId
+ */
+ public Integer cloneObject(Integer id, Integer newId) {
+ GraphicObject object = allObjects.get(id);
+ GraphicObject objectClone = object.clone();
+ objectClone.setIdentifier(newId);
+
+ allObjects.put(newId, objectClone);
+
+ return newId;
+ }
+
+ /**
+ * Creates a typed object
+ * @param type the object type
+ * @return the created typed object
+ */
+ private GraphicObject createTypedObject(Type type) {
+ GraphicObject createdObject = null;
+ switch (type) {
+ case ARC:
+ createdObject = new Arc();
+ break;
+ case AXES:
+ createdObject = new Axes();
+ break;
+ case AXESMODEL:
+ createdObject = new Axes();
+ createdObject.setValid(false);
+ axesModel = createdObject;
+ break;
+ case AXIS:
+ createdObject = new Axis();
+ break;
+ case CHAMP:
+ createdObject = new Champ();
+ break;
+ case COMPOUND:
+ createdObject = new Compound();
+ break;
+ case FAC3D:
+ createdObject = new Fac3d();
+ break;
+ case FEC:
+ createdObject = new Fec();
+ break;
+ case FIGURE:
+ createdObject = new Figure();
+ break;
+ case FIGUREMODEL:
+ createdObject = new Figure();
+ createdObject.setValid(false);
+ figureModel = createdObject;
+ break;
+ case GRAYPLOT:
+ createdObject = new Grayplot();
+ break;
+ case LABEL:
+ createdObject = new Label();
+ break;
+ case LEGEND:
+ createdObject = new Legend();
+ break;
+ case MATPLOT:
+ createdObject = new Matplot();
+ break;
+ case PLOT3D:
+ createdObject = new Plot3d();
+ break;
+ case POLYLINE:
+ createdObject = new Polyline();
+ break;
+ case RECTANGLE:
+ createdObject = new Rectangle();
+ break;
+ case SEGS:
+ createdObject = new Segs();
+ break;
+ case TEXT:
+ createdObject = new Text();
+ break;
+ /* UICONTROLS */
+ case CHECKBOX:
+ createdObject = new CheckBox();
+ break;
+ case EDIT:
+ createdObject = new Edit();
+ break;
+ case SPINNER:
+ createdObject = new Spinner();
+ break;
+ case FRAME:
+ createdObject = new Frame();
+ break;
+ case IMAGE:
+ createdObject = new UiImage();
+ break;
+ case LISTBOX:
+ createdObject = new ListBox();
+ break;
+ case POPUPMENU:
+ createdObject = new PopupMenu();
+ break;
+ case PUSHBUTTON:
+ createdObject = new PushButton();
+ break;
+ case RADIOBUTTON:
+ createdObject = new RadioButton();
+ break;
+ case SLIDER:
+ createdObject = new Slider();
+ break;
+ case TABLE:
+ createdObject = new Table();
+ break;
+ case UITEXT:
+ createdObject = new UiText();
+ break;
+ /* UIMENU */
+ case UIMENU:
+ createdObject = new Uimenu();
+ break;
+ case UIMENUMODEL:
+ createdObject = new Uimenu();
+ createdObject.setValid(false);
+ break;
+ /* UICONTEXTMENU */
+ case UICONTEXTMENU:
+ createdObject = new Uicontextmenu();
+ break;
+ /* Create Scilab console object */
+ case CONSOLE:
+ createdObject = Console.getConsole();
+ ((Console) createdObject).setScilabMode(Console.ScilabMode.NW);
+ break;
+ case JAVACONSOLE:
+ createdObject = Console.getConsole();
+ ((Console) createdObject).setScilabMode(Console.ScilabMode.STD);
+ break;
+ /* Uibar */
+ case PROGRESSIONBAR:
+ createdObject = new Progressionbar();
+ break;
+ case WAITBAR:
+ createdObject = new Waitbar();
+ break;
+ case LIGHT:
+ createdObject = new Light();
+ break;
+ case DATATIP:
+ createdObject = new Datatip();
+ break;
+ case TAB:
+ createdObject = new Tab();
+ break;
+ case LAYER:
+ createdObject = new Layer();
+ break;
+ case BORDER:
+ createdObject = new FrameBorder();
+ break;
+ case FRAME_SCROLLABLE:
+ createdObject = new Frame();
+ ((Frame)createdObject).setScrollable(true);
+ break;
+ default:
+ createdObject = null;
+ }
+ return createdObject;
+ }
+
+ /**
+ * Deletes an object
+ * @param id object id
+ */
+ public void deleteObject(Integer id) {
+ GraphicObject object = allObjects.get(id);
+ synchronized (object) {
+ allObjects.remove(id);
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/CallBack.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/CallBack.java
new file mode 100755
index 000000000..0c2e0825a
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/CallBack.java
@@ -0,0 +1,117 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008-2008 - INRIA - Bruno JOFRET
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Abstract class to manage all callbacks.
+ *
+ * @author Bruno JOFRET
+ */
+public class CallBack {
+
+ /**
+ * Unmanaged command type constant
+ */
+ public static final int UNTYPED = -1;
+ /**
+ * Scilab instruction command type constant
+ */
+ public static final int SCILAB_INSTRUCTION = 0;
+ public static final int SCILAB_NOT_INTERRUPTIBLE_INSTRUCTION = 10;
+ /**
+ * C or Fortran function type constant
+ */
+ public static final int C_FORTRAN = 1;
+ /**
+ * Scilab function type constant
+ */
+ public static final int SCILAB_FUNCTION = 2;
+ public static final int SCILAB_NOT_INTERRUPTIBLE_FUNCTION = 12;
+ /**
+ * Scilab function type constant (not trapped by scilab event listeners)
+ */
+ public static final int SCILAB_OUT_OF_XCLICK_AND_XGETMOUSE = -2;
+ /**
+ * Java function type constant
+ */
+ public static final int JAVA = 3;
+ /**
+ * Java function type constant (not trapped by scilab event listeners)
+ */
+ public static final int JAVA_OUT_OF_XCLICK_AND_XGETMOUSE = -3;
+
+ /**
+ * Scilab instruction without GCBO setting (old addmenu compatibility)
+ */
+ public static final int SCILAB_INSTRUCTION_WITHOUT_GCBO = 4;
+
+ /**
+ * The Command to Store and remember.
+ */
+ private String command;
+
+ /**
+ * The command type
+ */
+ private int commandType;
+
+ /**
+ * Constructor to be seen by specifics CallBack.
+ * @param command the command associated to the ccallback
+ */
+ public CallBack(String command) {
+ this(command, UNTYPED);
+ }
+
+ /**
+ * Constructor to be seen by specifics CallBack.
+ * @param command the command associated to the ccallback
+ * @param commandType the command type
+ */
+ public CallBack(String command, int commandType) {
+ this.command = command;
+ this.commandType = commandType;
+ }
+
+ /**
+ * @param command sets the command
+ */
+ public UpdateStatus setCommand(String command) {
+ this.command = command;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the command if it's a Scilab instruction.
+ */
+ public String getCommand() {
+ return command;
+ }
+
+ /**
+ * @param commandType sets the command
+ */
+ public UpdateStatus setCommandType(int commandType) {
+ this.commandType = commandType;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the command type
+ */
+ public int getCommandType() {
+ return commandType;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.java
new file mode 100755
index 000000000..b32fc218e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/ClippableProperty.java
@@ -0,0 +1,161 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * ClippableProperty class
+ * @author Manuel JULIACHS
+ */
+public class ClippableProperty {
+ /** ClippableProperty properties */
+ public enum ClippablePropertyType { CLIPSTATE, CLIPBOX, CLIPBOXSET };
+
+ /** Indicates how clipping is performed */
+ public static enum ClipStateType { OFF, CLIPGRF, ON;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the clip state type enum
+ */
+ public static ClipStateType intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return ClipStateType.OFF;
+ case 1:
+ return ClipStateType.CLIPGRF;
+ case 2:
+ return ClipStateType.ON;
+ default:
+ return null;
+ }
+ }
+
+ }
+
+ /** Clipping state */
+ private ClipStateType clipState;
+
+ /** Clip box (4- or 6-element array) */
+ private double[] clipBox;
+
+ /** Specifies whether the clip box has been set at least once */
+ private boolean clipBoxSet;
+
+ /** Constructor */
+ public ClippableProperty() {
+ clipState = ClipStateType.OFF;
+ clipBox = new double[4];
+ clipBoxSet = false;
+ }
+
+ /**
+ * Copy constructor
+ * @param clippableProperty the ClippableProperty to copy
+ */
+ public ClippableProperty(ClippableProperty clippableProperty) {
+ clipState = clippableProperty.clipState;
+
+ clipBox = new double[4];
+
+ for (int i = 0; i < clipBox.length; i++) {
+ clipBox[i] = clippableProperty.clipBox[i];
+ }
+
+ clipBoxSet = clippableProperty.clipBoxSet;
+ }
+
+ /**
+ * @return the clipBox
+ */
+ public Double[] getClipBox() {
+ Double[] retClipBox = new Double[clipBox.length];
+
+ for (int i = 0; i < clipBox.length; i++) {
+ retClipBox[i] = clipBox[i];
+ }
+
+ return retClipBox;
+ }
+
+ /**
+ * @param clipBox the clipBox to set
+ */
+ public UpdateStatus setClipBox(Double[] clipBox) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (clipBoxSet == false) {
+ clipBoxSet = true;
+ status = UpdateStatus.Success;
+ }
+
+ if (status == UpdateStatus.Success) {
+ for (int i = 0; i < clipBox.length; i++) {
+ this.clipBox[i] = clipBox[i];
+ }
+ } else {
+ for (int i = 0; i < clipBox.length; i++) {
+ if (this.clipBox[i] != clipBox[i]) {
+ this.clipBox[i] = clipBox[i];
+ status = UpdateStatus.Success;
+ }
+ }
+ }
+
+ return status;
+ }
+
+ /**
+ * @return the clipState
+ */
+ public ClipStateType getClipState() {
+ return clipState;
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public UpdateStatus setClipState(ClipStateType clipState) {
+ if (clipState == ClipStateType.ON && clipBoxSet == false) {
+ clipState = ClipStateType.CLIPGRF;
+ }
+
+ if (this.clipState != clipState) {
+ this.clipState = clipState;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the clipBoxSet
+ */
+ public Boolean getClipBoxSet() {
+ return clipBoxSet;
+ }
+
+ /**
+ * @param clipBoxSet the clipBoxSet to set
+ */
+ public UpdateStatus setClipBoxSet(Boolean clipBoxSet) {
+ if (this.clipBoxSet != clipBoxSet) {
+ this.clipBoxSet = clipBoxSet;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.java
new file mode 100755
index 000000000..61c69f5c9
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicClippableObject.java
@@ -0,0 +1,167 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClipStateType;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClippablePropertyType;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * GraphicClippableObject class
+ * @author Manuel JULIACHS
+ */
+public abstract class GraphicClippableObject extends GraphicObject {
+ /** GraphicClippableObject properties names */
+ private enum GraphicClippableObjectProperty { CLIPPROPERTY };
+
+ /** Stores the actual clipping state */
+ private ClippableProperty clipProperty;
+
+ /** Default constructor */
+ public GraphicClippableObject() {
+ super();
+ clipProperty = new ClippableProperty();
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_CLIP_PROPERTY__ :
+ return GraphicClippableObjectProperty.CLIPPROPERTY;
+ case __GO_CLIP_STATE__ :
+ return ClippablePropertyType.CLIPSTATE;
+ case __GO_CLIP_BOX__ :
+ return ClippablePropertyType.CLIPBOX;
+ case __GO_CLIP_BOX_SET__ :
+ return ClippablePropertyType.CLIPBOXSET;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == GraphicClippableObjectProperty.CLIPPROPERTY) {
+ return getClipProperty();
+ } else if (property == ClippablePropertyType.CLIPSTATE) {
+ return getClipState();
+ } else if (property == ClippablePropertyType.CLIPBOX) {
+ return getClipBox();
+ } else if (property == ClippablePropertyType.CLIPBOXSET) {
+ return getClipBoxSet();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == GraphicClippableObjectProperty.CLIPPROPERTY) {
+ setClipProperty((ClippableProperty) value);
+ } else if (property == ClippablePropertyType.CLIPSTATE) {
+ setClipState((Integer) value);
+ } else if (property == ClippablePropertyType.CLIPBOX) {
+ setClipBox((Double[]) value);
+ } else if (property == ClippablePropertyType.CLIPBOXSET) {
+ setClipBoxSet((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the clipProperty
+ */
+ public ClippableProperty getClipProperty() {
+ return clipProperty;
+ }
+
+ /**
+ * @param clipProperty the clipProperty to set
+ */
+ public void setClipProperty(ClippableProperty clipProperty) {
+ this.clipProperty = clipProperty;
+ }
+
+ /**
+ * @return the clipBox
+ */
+ public Double[] getClipBox() {
+ return clipProperty.getClipBox();
+ }
+
+ /**
+ * @param clipBox the clipBox to set
+ */
+ public void setClipBox(Double[] clipBox) {
+ clipProperty.setClipBox(clipBox);
+ }
+
+ /**
+ * @return the clipState
+ */
+ public Integer getClipState() {
+ return getClipStateAsEnum().ordinal();
+ }
+
+ /**
+ * @return the clipState
+ */
+ public ClipStateType getClipStateAsEnum() {
+ return clipProperty.getClipState();
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public void setClipState(Integer clipState) {
+ setClipStateAsEnum(ClipStateType.intToEnum(clipState));
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public void setClipStateAsEnum(ClipStateType clipState) {
+ clipProperty.setClipState(clipState);
+ }
+
+ /**
+ * @return the clipBoxSet
+ */
+ public Boolean getClipBoxSet() {
+ return clipProperty.getClipBoxSet();
+ }
+
+ /**
+ * @param clipBoxSet the clipBoxSet to set
+ */
+ public void setClipBoxSet(Boolean clipBoxSet) {
+ clipProperty.setClipBoxSet(clipBoxSet);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java
new file mode 100755
index 000000000..ba25b84d5
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObject.java
@@ -0,0 +1,793 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Manuel JULIACHS
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicObject;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARC__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXESMODEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXIS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACKTYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACK__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CHAMP__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CHILDREN_COUNT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CHILDREN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_COMPOUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATA_MODEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FAC3D__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FEC__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FIGUREMODEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FIGURE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRAYPLOT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_HAS_LEGEND_CHILD__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_HIDDEN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LEGEND_CHILD__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LEGEND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LIGHT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MATPLOT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PARENT_AXES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PARENT_FIGURE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PARENT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PLOT3D__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POLYLINE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PROGRESSIONBAR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_RECTANGLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_REFERENCED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SEGS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SELECTED_CHILD__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TEXT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTEXTMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UIMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_SCROLLABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SPINNER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VALID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_WAITBAR__;
+
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.legend.Legend;
+import org.scilab.modules.graphic_objects.uicontrol.frame.Frame;
+
+/**
+ * GraphicObject class
+ * @author Manuel JULIACHS
+ * @author Vincent COUVERT
+ */
+public abstract class GraphicObject implements Cloneable {
+
+ public enum UpdateStatus {
+ Success, // Property updated with new values
+ NoChange, // Property leave unchanged
+ Fail // Update Fail
+ };
+
+ /** User data array default size */
+ public static final int USER_DATA_DEFAULT_SIZE = 0;
+
+ /** Graphic objects types */
+ public enum Type { ARC, AXES, AXESMODEL, AXIS, CHAMP, COMPOUND, FAC3D, FEC, FIGURE, FIGUREMODEL, GRAYPLOT,
+ LABEL, LEGEND, MATPLOT, PLOT3D, POLYLINE, RECTANGLE, SEGS, TEXT, CHECKBOX, EDIT, SPINNER, FRAME,
+ IMAGE, LISTBOX, POPUPMENU, PUSHBUTTON, RADIOBUTTON, CONSOLE, JAVACONSOLE, SLIDER, TABLE, UITEXT, UIMENU, UIMENUMODEL,
+ PROGRESSIONBAR, WAITBAR, UICONTEXTMENU, DATATIP, LIGHT, TABGROUP, TAB, LAYER, BORDER, FRAME_SCROLLABLE, UNKNOWNOBJECT
+ };
+
+ /** GraphicObject properties */
+ public enum GraphicObjectPropertyType { PARENT, CHILDREN, CHILDREN_COUNT, HIDDEN, VISIBLE, TYPE, REFERENCED, VALID, DATA,
+ PARENT_FIGURE, PARENT_AXES, HASLEGENDCHILD, LEGENDCHILD, SELECTEDCHILD, TAG, CALLBACK, CALLBACKTYPE, UNKNOWNPROPERTY
+ };
+
+ /** Identifier */
+ private Integer identifier;
+
+ /** Parent object is known by its UID */
+ private Integer parent;
+
+ /** Child objects list. Known by their UID */
+ private List <Integer> children;
+
+ /** Specifies whether the object is visible or not */
+ private boolean visible;
+
+ /** Specifies if the "handle" is referenced in scilab */
+ private boolean referenced;
+
+ /** Specifies if the "handle" is valid, i.e included in a rendered object */
+ private boolean valid;
+
+ /** Specifies if the "handle" is hidden, i.e not listed as children in Scilab view */
+ private boolean hidden;
+
+ /** Tag */
+ private String tag;
+
+ /** Callback */
+ private CallBack callback;
+
+ /**
+ * Identifier of the selected child
+ * This was previously implemented as a list, but is used in practice
+ * to store only the identifier of the currently selected child.
+ * To do: use a list if required
+ */
+ private Integer selectedChild;
+
+ /** Constructor */
+ public GraphicObject() {
+ identifier = 0;
+ parent = 0;
+ children = new LinkedList<Integer>();
+ visible = true;
+ valid = true;
+ referenced = false;
+ selectedChild = 0;
+ tag = "";
+ callback = new CallBack("");
+ }
+
+ /**
+ * Clone
+ * @return clone
+ * @see java.lang.Object#clone()
+ */
+ public GraphicObject clone() {
+ GraphicObject copy = null;
+
+ try {
+ copy = (GraphicObject) super.clone();
+ } catch (CloneNotSupportedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ /*
+ * Creating an empty list is done to avoid
+ * still referencing the original object's own list,
+ * which occurs when the Figure model is cloned.
+ */
+ copy.setChildren(new LinkedList<Integer>());
+
+ /*
+ * Avoids keeping the Figure model as a parent
+ * when the Axes model is cloned.
+ */
+ copy.setParent(0);
+
+ /*
+ * Sets no object as the selected child.
+ */
+ copy.setSelectedChild(0);
+
+ return copy;
+ }
+
+ abstract public void accept(Visitor visitor) throws ObjectRemovedException;
+
+ /**
+ * Returns the enum associated to a type name
+ * @param typeName the property name
+ * @return the type enum
+ */
+ public static Type getTypeFromName(int typeName) {
+ switch (typeName) {
+ case __GO_ARC__ :
+ return Type.ARC;
+ case __GO_AXES__ :
+ return Type.AXES;
+ case __GO_AXESMODEL__ :
+ return Type.AXESMODEL;
+ case __GO_AXIS__ :
+ return Type.AXIS;
+ case __GO_CHAMP__ :
+ return Type.CHAMP;
+ case __GO_COMPOUND__ :
+ return Type.COMPOUND;
+ case __GO_FAC3D__ :
+ return Type.FAC3D;
+ case __GO_FEC__ :
+ return Type.FEC;
+ case __GO_FIGURE__ :
+ return Type.FIGURE;
+ case __GO_FIGUREMODEL__ :
+ return Type.FIGUREMODEL;
+ case __GO_GRAYPLOT__ :
+ return Type.GRAYPLOT;
+ case __GO_LABEL__ :
+ return Type.LABEL;
+ case __GO_LEGEND__ :
+ return Type.LEGEND;
+ case __GO_MATPLOT__ :
+ return Type.MATPLOT;
+ case __GO_PLOT3D__ :
+ return Type.PLOT3D;
+ case __GO_POLYLINE__ :
+ return Type.POLYLINE;
+ case __GO_RECTANGLE__ :
+ return Type.RECTANGLE;
+ case __GO_SEGS__ :
+ return Type.SEGS;
+ case __GO_TEXT__ :
+ return Type.TEXT;
+ case __GO_UI_CHECKBOX__ :
+ return Type.CHECKBOX;
+ case __GO_UI_EDIT__ :
+ return Type.EDIT;
+ case __GO_UI_SPINNER__ :
+ return Type.SPINNER;
+ case __GO_UI_FRAME__ :
+ return Type.FRAME;
+ case __GO_UI_IMAGE__ :
+ return Type.IMAGE;
+ case __GO_UI_LISTBOX__ :
+ return Type.LISTBOX;
+ case __GO_UI_POPUPMENU__ :
+ return Type.POPUPMENU;
+ case __GO_UI_PUSHBUTTON__ :
+ return Type.PUSHBUTTON;
+ case __GO_UI_RADIOBUTTON__ :
+ return Type.RADIOBUTTON;
+ case __GO_UI_SLIDER__ :
+ return Type.SLIDER;
+ case __GO_UI_TABLE__ :
+ return Type.TABLE;
+ case __GO_UI_TEXT__ :
+ return Type.UITEXT;
+ case __GO_UIMENU__ :
+ return Type.UIMENU;
+ case __GO_UICONTEXTMENU__ :
+ return Type.UICONTEXTMENU;
+ case __GO_PROGRESSIONBAR__ :
+ return Type.PROGRESSIONBAR;
+ case __GO_WAITBAR__ :
+ return Type.WAITBAR;
+ case __GO_DATATIP__:
+ return Type.DATATIP;
+ case __GO_LIGHT__ :
+ return Type.LIGHT;
+ case __GO_UI_TAB__ :
+ return Type.TAB;
+ case __GO_UI_LAYER__ :
+ return Type.LAYER;
+ case __GO_UI_FRAME_BORDER__ :
+ return Type.BORDER;
+ case __GO_UI_FRAME_SCROLLABLE__ :
+ return Type.FRAME_SCROLLABLE;
+ default :
+ return Type.UNKNOWNOBJECT;
+ }
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_PARENT__ :
+ return GraphicObjectPropertyType.PARENT;
+ case __GO_CHILDREN__ :
+ return GraphicObjectPropertyType.CHILDREN;
+ case __GO_CHILDREN_COUNT__ :
+ return GraphicObjectPropertyType.CHILDREN_COUNT;
+ case __GO_HIDDEN__ :
+ return GraphicObjectPropertyType.HIDDEN;
+ case __GO_VISIBLE__ :
+ return GraphicObjectPropertyType.VISIBLE;
+ case __GO_REFERENCED__ :
+ return GraphicObjectPropertyType.REFERENCED;
+ case __GO_VALID__ :
+ return GraphicObjectPropertyType.VALID;
+ case __GO_PARENT_FIGURE__ :
+ return GraphicObjectPropertyType.PARENT_FIGURE;
+ case __GO_PARENT_AXES__ :
+ return GraphicObjectPropertyType.PARENT_AXES;
+ case __GO_HAS_LEGEND_CHILD__ :
+ return GraphicObjectPropertyType.HASLEGENDCHILD;
+ case __GO_LEGEND_CHILD__ :
+ return GraphicObjectPropertyType.LEGENDCHILD;
+ case __GO_SELECTED_CHILD__ :
+ return GraphicObjectPropertyType.SELECTEDCHILD;
+ case __GO_TYPE__ :
+ return GraphicObjectPropertyType.TYPE;
+ case __GO_DATA_MODEL__ :
+ return GraphicObjectPropertyType.DATA;
+ case __GO_TAG__ :
+ return GraphicObjectPropertyType.TAG;
+ case __GO_CALLBACK__ :
+ return GraphicObjectPropertyType.CALLBACK;
+ case __GO_CALLBACKTYPE__ :
+ return GraphicObjectPropertyType.CALLBACKTYPE;
+ default:
+ //System.err.println("[ERROR] Unknown Property : "+propertyName+" !!!!!!!!!!");
+ return GraphicObjectPropertyType.UNKNOWNPROPERTY;
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (!(property instanceof GraphicObjectPropertyType)) {
+ return null;
+ }
+
+ GraphicObjectPropertyType p = (GraphicObjectPropertyType) property;
+ switch (p) {
+ case PARENT:
+ return getParent();
+ case CHILDREN:
+ return getChildren();
+ case CHILDREN_COUNT:
+ return children.size();
+ case VALID:
+ return isValid();
+ case HIDDEN:
+ return isHidden();
+ case VISIBLE:
+ return getVisible();
+ case PARENT_FIGURE:
+ return getParentFigure();
+ case PARENT_AXES:
+ return getParentAxes();
+ case HASLEGENDCHILD:
+ return getHasLegendChild();
+ case LEGENDCHILD:
+ return getLegendChild();
+ case SELECTEDCHILD:
+ return getSelectedChild();
+ case TYPE:
+ return getType();
+ case DATA:
+ return getIdentifier();
+ case TAG:
+ return getTag();
+ case CALLBACK:
+ return getCallbackString();
+ case CALLBACKTYPE:
+ return getCallbackType();
+ case UNKNOWNPROPERTY:
+ return null;
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (!(property instanceof GraphicObjectPropertyType)) {
+ return UpdateStatus.Success;
+ }
+
+ GraphicObjectPropertyType p = (GraphicObjectPropertyType) property;
+ switch (p) {
+ case PARENT:
+ setParent((Integer) value);
+ break;
+ case CHILDREN:
+ setChildren((Integer[]) value);
+ break;
+ case VALID:
+ setValid((Boolean) value);
+ break;
+ case HIDDEN:
+ setHidden((Boolean) value);
+ break;
+ case VISIBLE:
+ setVisible((Boolean) value);
+ break;
+ case SELECTEDCHILD:
+ setSelectedChild((Integer) value);
+ break;
+ case DATA:
+ return UpdateStatus.Success;
+ case TAG:
+ setTag((String) value);
+ break;
+ case CALLBACK:
+ setCallbackString((String) value);
+ break;
+ case CALLBACKTYPE:
+ setCallbackType((Integer) value);
+ break;
+ case UNKNOWNPROPERTY:
+ return UpdateStatus.Fail;
+ default:
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Returns a null property
+ * @param property property name
+ * @return null property
+ */
+ public Object getNullProperty(String property) {
+ return null;
+ }
+
+ /**
+ * Void property get method
+ * @param property the property name
+ */
+ public Object getPropertyVoid(String property) {
+ // TODO
+ return null;
+ }
+
+ /* TODO */
+ /**
+ * Void property set method
+ * @param property the property name
+ * @param value the property value
+ */
+ public void setPropertyVoid(String property, Object value) {
+ // TODO
+ }
+
+ /**
+ * @return the children
+ */
+ public Integer[] getChildren() {
+ return children.toArray(new Integer[children.size()]);
+ }
+
+ /**
+ * Adds a child.
+ * @param child the identifier of the added child.
+ */
+ public void addChild(Integer child) {
+ children.add(0, child);
+ }
+
+ /**
+ * Removes a child.
+ * @param child the identifier of the removed child.
+ */
+ public void removeChild(Integer child) {
+ children.remove(child);
+ }
+
+ /**
+ * @param children the children to set
+ */
+ private UpdateStatus setChildren(List<Integer> children) {
+ this.children = children;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param children the children to set
+ */
+ public UpdateStatus setChildren(Integer[] children) {
+ this.children = new LinkedList<Integer>(Arrays.asList(children));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the identifier
+ */
+ public Integer getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * @param identifier the identifier to set
+ */
+ public UpdateStatus setIdentifier(Integer identifier) {
+ this.identifier = identifier;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the parent
+ */
+ public Integer getParent() {
+ return parent;
+ }
+
+ /**
+ * @param parent the parent to set
+ * @return TODO
+ */
+ public UpdateStatus setParent(Integer parent) {
+ this.parent = parent;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the tag
+ */
+ public String getTag() {
+ return tag;
+ }
+
+ /**
+ * @param tag the tag to set
+ * @return TODO
+ */
+ public UpdateStatus setTag(String tag) {
+ if (this.tag.equals(tag)) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.tag = tag;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the callback
+ */
+ public String getCallbackString() {
+ return callback.getCommand();
+ }
+
+ /**
+ * @param callback the callback to set
+ * @return TODO
+ */
+ public UpdateStatus setCallbackString(String callback) {
+ return this.callback.setCommand(callback);
+ }
+
+ /**
+ * @return the callbackType
+ */
+ public Integer getCallbackType() {
+ return callback.getCommandType();
+ }
+
+ /**
+ * @param callbackType the callbackType to set
+ * @return TODO
+ */
+ public UpdateStatus setCallbackType(Integer callbackType) {
+ this.callback.setCommandType(callbackType);
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get parent Figure method
+ * Returns the identifier of the object's parent Figure
+ * If the object is a Figure, then returns its own identifier.
+ * To be done: use a member variable storing the up-to-date current parent Figure,
+ * returned instead of recursively ascending the hierarchy at each call.
+ * @return the parent Figure identifier
+ */
+ public Integer getParentFigure() {
+ if (this instanceof Figure) {
+ return getIdentifier();
+ }
+
+ if (getParent() != 0 && GraphicController.getController().getObjectFromId(getParent()) != null) {
+ return GraphicController.getController().getObjectFromId(getParent()).getParentFigure();
+ }
+
+ /* No parent Figure found */
+ return 0;
+ }
+
+ /**
+ * Get parent Figure method
+ * Returns the identifier of the object's parent Figure
+ * If the object is a Figure, then returns its own identifier.
+ * To be done: use a member variable storing the up-to-date current parent Figure,
+ * returned instead of recursively ascending the hierarchy at each call.
+ * @return the parent Figure identifier
+ */
+ public Integer getParentFrameOrFigure() {
+ if (this instanceof Figure || this instanceof Frame) {
+ return getIdentifier();
+ }
+
+ if (getParent() != 0 && GraphicController.getController().getObjectFromId(getParent()) != null) {
+ return GraphicController.getController().getObjectFromId(getParent()).getParentFrameOrFigure();
+ }
+
+ /* No parent Figure nor Frame found */
+ return 0;
+ }
+
+ /**
+ * Get parent Axes method
+ * Returns the identifier of the object's parent Axes
+ * If the object is an Axes, then returns its own identifier.
+ * To be done: use a member variable storing the up-to-date current parent Axes,
+ * returned instead of recursively ascending the hierarchy at each call.
+ * @return the parent Axes identifier
+ */
+ public Integer getParentAxes() {
+ if (this instanceof Axes) {
+ return getIdentifier();
+ } else {
+ if (getParent() != 0 && GraphicController.getController().getObjectFromId(getParent()) != null) {
+ return GraphicController.getController().getObjectFromId(getParent()).getParentAxes();
+ } else {
+ /* No parent Axes found */
+ return 0;
+ }
+ }
+ }
+
+ /**
+ * Get has legend child method
+ * Returns a boolean indicating whether one of the object's direct children
+ * is a Legend object. Only one Legend is supposed to be present in the list.
+ * To be done: storing the property and updating it only when a Legend object
+ * is inserted or deleted instead of searching the children list when the
+ * property is queried.
+ * @return a Boolean indicating whether the object has a child Legend object or not
+ */
+ public Boolean getHasLegendChild() {
+ for (int i = 0; i < children.size(); i++) {
+ GraphicObject currentObject = GraphicController.getController().getObjectFromId(children.get(i));
+
+ if (currentObject instanceof Legend) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns the identifier of the object's direct child that is a Legend object.
+ * It returns an empty string if the object has no Legend in its children list
+ * (one Legend is supposed to be present at most).
+ * @return the object's child Legend object identifier, or an empty string if no child Legend found.
+ */
+ public Integer getLegendChild() {
+ for (int i = 0; i < children.size(); i++) {
+ GraphicObject currentObject = GraphicController.getController().getObjectFromId(children.get(i));
+
+ if (currentObject instanceof Legend) {
+ return currentObject.getIdentifier();
+ }
+ }
+
+ /* No child legend found */
+ return 0;
+ }
+
+ /**
+ * Get selected child method
+ * @return the selected child
+ */
+ public Integer getSelectedChild() {
+ return selectedChild;
+ }
+
+ /**
+ * Set selected child method
+ * @param selectedChild the selected child to set
+ */
+ public UpdateStatus setSelectedChild(Integer selectedChild) {
+ this.selectedChild = selectedChild;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get visible method
+ * @return the visible
+ */
+ public Boolean getVisible() {
+ return visible;
+ }
+
+ /**
+ * Set visible method
+ * @param visible the visible to set
+ * @return TODO
+ */
+ public UpdateStatus setVisible(Boolean visible) {
+ if (this.visible == visible) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.visible = visible;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Each type should name itself
+ * @return Type as String
+ */
+ public abstract Integer getType();
+
+ /**
+ * isValid method
+ * @return valid
+ */
+ public Boolean isValid() {
+ return valid;
+ }
+
+ /**
+ * Set hidden method
+ * @param hidden the value to set
+ * @return TODO
+ */
+ public UpdateStatus setHidden(Boolean hidden) {
+ this.hidden = hidden;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * isHidden method
+ * @return hidden
+ */
+ public Boolean isHidden() {
+ return hidden;
+ }
+
+ /**
+ * Set valid method
+ * @param valid the validity to set
+ * @return TODO
+ */
+ public UpdateStatus setValid(Boolean valid) {
+ this.valid = valid;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * isReferenced method
+ * @return referenced
+ */
+ public Boolean isReferenced() {
+ return referenced;
+ }
+
+ /**
+ * Set referenced method
+ * @param referenced the reference status to set
+ * @return TODO
+ */
+ public UpdateStatus setReferenced(Boolean referenced) {
+ this.referenced = referenced;
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
new file mode 100755
index 000000000..f5b430558
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
@@ -0,0 +1,419 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Bruno JOFRET
+ * Copyright (C) 2012-2014 - Scilab-Enterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/*
+ * -=- This is a generated file, please do not edit by hand -=-
+ * -=- Please see properties definitions in -=-
+ * -=- SCI/modules/graphic_objects/src/scripts/propertiesMap.properties -=-
+ */
+
+package org.scilab.modules.graphic_objects.graphicObject;
+
+public class GraphicObjectProperties {
+
+ public static final int __GO_ARC__ = 0;
+ public static final int __GO_AXES__ = 1;
+ public static final int __GO_AXESMODEL__ = 2;
+ public static final int __GO_AXIS__ = 3;
+ public static final int __GO_CHAMP__ = 4;
+ public static final int __GO_COMPOUND__ = 5;
+ public static final int __GO_FAC3D__ = 6;
+ public static final int __GO_FEC__ = 7;
+ public static final int __GO_FIGURE__ = 8;
+ public static final int __GO_FIGUREMODEL__ = 9;
+ public static final int __GO_GRAYPLOT__ = 10;
+ public static final int __GO_LABEL__ = 11;
+ public static final int __GO_LEGEND__ = 12;
+ public static final int __GO_MATPLOT__ = 13;
+ public static final int __GO_PLOT3D__ = 14;
+ public static final int __GO_POLYLINE__ = 15;
+ public static final int __GO_RECTANGLE__ = 16;
+ public static final int __GO_SEGS__ = 17;
+ public static final int __GO_TEXT__ = 18;
+ public static final int __GO_UICONTROL__ = 19;
+ public static final int __GO_UIMENU__ = 20;
+ public static final int __GO_UICONTEXTMENU__ = 21;
+ public static final int __GO_CHILDREN__ = 22;
+ public static final int __GO_CHILDREN_COUNT__ = 23;
+ public static final int __GO_PARENT__ = 24;
+ public static final int __GO_USER_DATA__ = 25;
+ public static final int __GO_USER_DATA_SIZE__ = 26;
+ public static final int __GO_VISIBLE__ = 27;
+ public static final int __GO_HIDDEN__ = 28;
+ public static final int __GO_TYPE__ = 29;
+ public static final int __GO_DATA_MODEL__ = 30;
+ public static final int __GO_PARENT_FIGURE__ = 31;
+ public static final int __GO_PARENT_AXES__ = 32;
+ public static final int __GO_HAS_LEGEND_CHILD__ = 33;
+ public static final int __GO_LEGEND_CHILD__ = 34;
+ public static final int __GO_SELECTED_CHILD__ = 35;
+ public static final int __GO_CALLBACK__ = 36;
+ public static final int __GO_CALLBACKTYPE__ = 37;
+ public static final int __GO_DATA_MODEL_COORDINATES__ = 38;
+ public static final int __GO_DATA_MODEL_X__ = 39;
+ public static final int __GO_DATA_MODEL_Y__ = 40;
+ public static final int __GO_DATA_MODEL_Z__ = 41;
+ public static final int __GO_DATA_MODEL_X_COORDINATES_SHIFT__ = 42;
+ public static final int __GO_DATA_MODEL_Y_COORDINATES_SHIFT__ = 43;
+ public static final int __GO_DATA_MODEL_Z_COORDINATES_SHIFT__ = 44;
+ public static final int __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__ = 45;
+ public static final int __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__ = 46;
+ public static final int __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__ = 47;
+ public static final int __GO_DATA_MODEL_NUM_ELEMENTS__ = 48;
+ public static final int __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__ = 49;
+ public static final int __GO_DATA_MODEL_NUM_VERTICES_PER_GON__ = 50;
+ public static final int __GO_DATA_MODEL_NUM_GONS__ = 51;
+ public static final int __GO_DATA_MODEL_Z_COORDINATES_SET__ = 52;
+ public static final int __GO_DATA_MODEL_COLORS__ = 53;
+ public static final int __GO_DATA_MODEL_NUM_COLORS__ = 54;
+ public static final int __GO_DATA_MODEL_NUM_VERTICES__ = 55;
+ public static final int __GO_DATA_MODEL_NUM_INDICES__ = 56;
+ public static final int __GO_DATA_MODEL_INDICES__ = 57;
+ public static final int __GO_DATA_MODEL_VALUES__ = 58;
+ public static final int __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__ = 59;
+ public static final int __GO_DATA_MODEL_FEC_ELEMENTS__ = 60;
+ public static final int __GO_DATA_MODEL_NUM_X__ = 61;
+ public static final int __GO_DATA_MODEL_NUM_Y__ = 62;
+ public static final int __GO_DATA_MODEL_NUM_Z__ = 63;
+ public static final int __GO_DATA_MODEL_GRID_SIZE__ = 64;
+ public static final int __GO_DATA_MODEL_X_DIMENSIONS__ = 65;
+ public static final int __GO_DATA_MODEL_Y_DIMENSIONS__ = 66;
+ public static final int __GO_MATPLOT_TRANSLATE__ = 67;
+ public static final int __GO_MATPLOT_SCALE__ = 68;
+ public static final int __GO_DATA_MODEL_MATPLOT_BOUNDS__ = 69;
+ public static final int __GO_DATA_MODEL_MATPLOT_TYPE__ = 70;
+ public static final int __GO_DATA_MODEL_MATPLOT_GL_TYPE__ = 71;
+ public static final int __GO_DATA_MODEL_MATPLOT_DATA_INFOS__ = 72;
+ public static final int __GO_DATA_MODEL_MATPLOT_DATA_TYPE__ = 73;
+ public static final int __GO_DATA_MODEL_MATPLOT_DATA_ORDER__ = 74;
+ public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__ = 75;
+ public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_DATA__ = 76;
+ public static final int __GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__ = 77;
+ public static final int __GO_REFERENCED__ = 78;
+ public static final int __GO_VALID__ = 79;
+ public static final int __GO_POSITION__ = 80;
+ public static final int __GO_SIZE__ = 81;
+ public static final int __GO_CANVAS__ = 82;
+ public static final int __GO_AUTORESIZE__ = 83;
+ public static final int __GO_VIEWPORT__ = 84;
+ public static final int __GO_AXES_SIZE__ = 85;
+ public static final int __GO_FIGURE_NAME__ = 86;
+ public static final int __GO_NAME__ = 87;
+ public static final int __GO_ID__ = 88;
+ public static final int __GO_INFO_MESSAGE__ = 89;
+ public static final int __GO_COLORMAP__ = 90;
+ public static final int __GO_COLORMAP_SIZE__ = 91;
+ public static final int __GO_RENDERING_MODE__ = 92;
+ public static final int __GO_PIXEL_DRAWING_MODE__ = 93;
+ public static final int __GO_ANTIALIASING__ = 94;
+ public static final int __GO_IMMEDIATE_DRAWING__ = 95;
+ public static final int __GO_BACKGROUND__ = 96;
+ public static final int __GO_EVENTHANDLER__ = 97;
+ public static final int __GO_EVENTHANDLER_NAME__ = 98;
+ public static final int __GO_EVENTHANDLER_ENABLE__ = 99;
+ public static final int __GO_TAG__ = 100;
+ public static final int __GO_ROTATION_TYPE__ = 101;
+ public static final int __GO_RESIZEFCN__ = 102;
+ public static final int __GO_CLOSEREQUESTFCN__ = 103;
+ public static final int __GO_DEFAULT_AXES__ = 104;
+ public static final int __GO_UPPER_LEFT_POINT__ = 105;
+ public static final int __GO_WIDTH__ = 106;
+ public static final int __GO_HEIGHT__ = 107;
+ public static final int __GO_START_ANGLE__ = 108;
+ public static final int __GO_END_ANGLE__ = 109;
+ public static final int __GO_ARC_DRAWING_METHOD__ = 110;
+ public static final int __GO_X_AXIS_VISIBLE__ = 111;
+ public static final int __GO_X_AXIS_REVERSE__ = 112;
+ public static final int __GO_X_AXIS_GRID_COLOR__ = 113;
+ public static final int __GO_X_AXIS_GRID_THICKNESS__ = 114;
+ public static final int __GO_X_AXIS_GRID_STYLE__ = 115;
+ public static final int __GO_X_AXIS_LABEL__ = 116;
+ public static final int __GO_X_AXIS_LOCATION__ = 117;
+ public static final int __GO_X_AXIS_LOG_FLAG__ = 118;
+ public static final int __GO_X_AXIS_TICKS__ = 119;
+ public static final int __GO_X_AXIS_FORMAT__ = 120;
+ public static final int __GO_X_AXIS_ST_FACTORS__ = 121;
+ public static final int __GO_X_AXIS_AUTO_TICKS__ = 122;
+ public static final int __GO_X_AXIS_NUMBER_TICKS__ = 123;
+ public static final int __GO_X_AXIS_TICKS_LOCATIONS__ = 124;
+ public static final int __GO_X_AXIS_TICKS_LABELS__ = 125;
+ public static final int __GO_X_AXIS_SUBTICKS__ = 126;
+ public static final int __GO_Y_AXIS_VISIBLE__ = 127;
+ public static final int __GO_Y_AXIS_REVERSE__ = 128;
+ public static final int __GO_Y_AXIS_GRID_COLOR__ = 129;
+ public static final int __GO_Y_AXIS_GRID_THICKNESS__ = 130;
+ public static final int __GO_Y_AXIS_GRID_STYLE__ = 131;
+ public static final int __GO_Y_AXIS_LABEL__ = 132;
+ public static final int __GO_Y_AXIS_LOCATION__ = 133;
+ public static final int __GO_Y_AXIS_LOG_FLAG__ = 134;
+ public static final int __GO_Y_AXIS_TICKS__ = 135;
+ public static final int __GO_Y_AXIS_FORMAT__ = 136;
+ public static final int __GO_Y_AXIS_ST_FACTORS__ = 137;
+ public static final int __GO_Y_AXIS_AUTO_TICKS__ = 138;
+ public static final int __GO_Y_AXIS_NUMBER_TICKS__ = 139;
+ public static final int __GO_Y_AXIS_TICKS_LOCATIONS__ = 140;
+ public static final int __GO_Y_AXIS_TICKS_LABELS__ = 141;
+ public static final int __GO_Y_AXIS_SUBTICKS__ = 142;
+ public static final int __GO_Z_AXIS_VISIBLE__ = 143;
+ public static final int __GO_Z_AXIS_REVERSE__ = 144;
+ public static final int __GO_Z_AXIS_GRID_COLOR__ = 145;
+ public static final int __GO_Z_AXIS_GRID_THICKNESS__ = 146;
+ public static final int __GO_Z_AXIS_GRID_STYLE__ = 147;
+ public static final int __GO_Z_AXIS_LABEL__ = 148;
+ public static final int __GO_Z_AXIS_LOCATION__ = 149;
+ public static final int __GO_Z_AXIS_LOG_FLAG__ = 150;
+ public static final int __GO_Z_AXIS_TICKS__ = 151;
+ public static final int __GO_Z_AXIS_FORMAT__ = 152;
+ public static final int __GO_Z_AXIS_ST_FACTORS__ = 153;
+ public static final int __GO_Z_AXIS_AUTO_TICKS__ = 154;
+ public static final int __GO_Z_AXIS_NUMBER_TICKS__ = 155;
+ public static final int __GO_Z_AXIS_TICKS_LOCATIONS__ = 156;
+ public static final int __GO_Z_AXIS_TICKS_LABELS__ = 157;
+ public static final int __GO_Z_AXIS_SUBTICKS__ = 158;
+ public static final int __GO_AUTO_SUBTICKS__ = 159;
+ public static final int __GO_GRID_POSITION__ = 160;
+ public static final int __GO_TITLE__ = 161;
+ public static final int __GO_AUTO_CLEAR__ = 162;
+ public static final int __GO_FILLED__ = 163;
+ public static final int __GO_CAMERA__ = 164;
+ public static final int __GO_VIEW__ = 165;
+ public static final int __GO_ISOVIEW__ = 166;
+ public static final int __GO_CUBE_SCALING__ = 167;
+ public static final int __GO_ROTATION_ANGLES__ = 168;
+ public static final int __GO_ROTATION_ANGLES_3D__ = 169;
+ public static final int __GO_BOX_TYPE__ = 170;
+ public static final int __GO_HIDDEN_AXIS_COLOR__ = 171;
+ public static final int __GO_X_TIGHT_LIMITS__ = 172;
+ public static final int __GO_Y_TIGHT_LIMITS__ = 173;
+ public static final int __GO_Z_TIGHT_LIMITS__ = 174;
+ public static final int __GO_DATA_BOUNDS__ = 175;
+ public static final int __GO_REAL_DATA_BOUNDS__ = 176;
+ public static final int __GO_ZOOM_ENABLED__ = 177;
+ public static final int __GO_ZOOM_BOX__ = 178;
+ public static final int __GO_AUTO_SCALE__ = 179;
+ public static final int __GO_FIRST_PLOT__ = 180;
+ public static final int __GO_MARGINS__ = 181;
+ public static final int __GO_AUTO_MARGINS__ = 182;
+ public static final int __GO_AXES_BOUNDS__ = 183;
+ public static final int __GO_CLIP_PROPERTY__ = 184;
+ public static final int __GO_CLIP_STATE__ = 185;
+ public static final int __GO_CLIP_BOX__ = 186;
+ public static final int __GO_CLIP_BOX_SET__ = 187;
+ public static final int __GO_LINE__ = 188;
+ public static final int __GO_LINE_MODE__ = 189;
+ public static final int __GO_LINE_STYLE__ = 190;
+ public static final int __GO_LINE_THICKNESS__ = 191;
+ public static final int __GO_LINE_COLOR__ = 192;
+ public static final int __GO_FILL_MODE__ = 193;
+ public static final int __GO_MARK__ = 194;
+ public static final int __GO_MARK_MODE__ = 195;
+ public static final int __GO_MARK_STYLE__ = 196;
+ public static final int __GO_MARK_SIZE_UNIT__ = 197;
+ public static final int __GO_MARK_SIZE__ = 198;
+ public static final int __GO_MARK_FOREGROUND__ = 199;
+ public static final int __GO_MARK_BACKGROUND__ = 200;
+ public static final int __GO_MARK_OFFSET__ = 201;
+ public static final int __GO_MARK_STRIDE__ = 202;
+ public static final int __GO_SELECTED__ = 203;
+ public static final int __GO_TICKS_DIRECTION__ = 204;
+ public static final int __GO_X_NUMBER_TICKS__ = 205;
+ public static final int __GO_Y_NUMBER_TICKS__ = 206;
+ public static final int __GO_X_TICKS_COORDS__ = 207;
+ public static final int __GO_Y_TICKS_COORDS__ = 208;
+ public static final int __GO_TICKS_COLOR__ = 209;
+ public static final int __GO_TICKS_SEGMENT__ = 210;
+ public static final int __GO_TICKS_STYLE__ = 211;
+ public static final int __GO_SUBTICKS__ = 212;
+ public static final int __GO_NUMBER_TICKS_LABELS__ = 213;
+ public static final int __GO_TICKS_LABELS__ = 214;
+ public static final int __GO_FORMATN__ = 215;
+ public static final int __GO_FONT__ = 216;
+ public static final int __GO_FONT_STYLE__ = 217;
+ public static final int __GO_FONT_SIZE__ = 218;
+ public static final int __GO_FONT_COLOR__ = 219;
+ public static final int __GO_FONT_FRACTIONAL__ = 220;
+ public static final int __GO_Z_BOUNDS__ = 221;
+ public static final int __GO_OUTSIDE_COLOR__ = 222;
+ public static final int __GO_COLOR_RANGE__ = 223;
+ public static final int __GO_DATA_MAPPING__ = 224;
+ public static final int __GO_FONT_ANGLE__ = 225;
+ public static final int __GO_AUTO_POSITION__ = 226;
+ public static final int __GO_CORNERS__ = 227;
+ public static final int __GO_AUTO_ROTATION__ = 228;
+ public static final int __GO_LINKS__ = 229;
+ public static final int __GO_LINKS_COUNT__ = 230;
+ public static final int __GO_LEGEND_LOCATION__ = 231;
+ public static final int __GO_MARKS_COUNT__ = 232;
+ public static final int __GO_LINE_WIDTH__ = 233;
+ public static final int __GO_CLOSED__ = 234;
+ public static final int __GO_ARROW_SIZE_FACTOR__ = 235;
+ public static final int __GO_POLYLINE_STYLE__ = 236;
+ public static final int __GO_INTERP_COLOR_VECTOR__ = 237;
+ public static final int __GO_INTERP_COLOR_VECTOR_SET__ = 238;
+ public static final int __GO_INTERP_COLOR_MODE__ = 239;
+ public static final int __GO_X_SHIFT__ = 240;
+ public static final int __GO_Y_SHIFT__ = 241;
+ public static final int __GO_Z_SHIFT__ = 242;
+ public static final int __GO_BAR_WIDTH__ = 243;
+ public static final int __GO_SURFACE_MODE__ = 244;
+ public static final int __GO_COLOR_MODE__ = 245;
+ public static final int __GO_COLOR_FLAG__ = 246;
+ public static final int __GO_ALIGNMENT__ = 247;
+ public static final int __GO_BOX__ = 248;
+ public static final int __GO_TEXT_BOX__ = 249;
+ public static final int __GO_TEXT_BOX_MODE__ = 250;
+ public static final int __GO_AUTO_DIMENSIONING__ = 251;
+ public static final int __GO_FORMATTED_TEXT__ = 252;
+ public static final int __GO_TEXT_ARRAY_DIMENSIONS__ = 253;
+ public static final int __GO_TEXT_STRINGS__ = 254;
+ public static final int __GO_BASE__ = 255;
+ public static final int __GO_BASE_X__ = 256;
+ public static final int __GO_BASE_Y__ = 257;
+ public static final int __GO_BASE_Z__ = 258;
+ public static final int __GO_DIRECTION__ = 259;
+ public static final int __GO_DIRECTION_X__ = 260;
+ public static final int __GO_DIRECTION_Y__ = 261;
+ public static final int __GO_DIRECTION_Z__ = 262;
+ public static final int __GO_ARROW_SIZE__ = 263;
+ public static final int __GO_SEGS_COLORS__ = 264;
+ public static final int __GO_COLORED__ = 265;
+ public static final int __GO_ARROWS__ = 266;
+ public static final int __GO_NUMBER_ARROWS__ = 267;
+ public static final int __GO_CHAMP_DIMENSIONS__ = 268;
+ public static final int __GO_BOUNDING_BOX__ = 269;
+ public static final int __GO_MAX_LENGTH__ = 270;
+ public static final int __GO_MAX_USABLE_LENGTH__ = 271;
+ public static final int __GO_HIDDEN_COLOR__ = 272;
+ public static final int __GO_STYLE__ = 273;
+ public static final int __GO_UI_CHECKBOX__ = 274;
+ public static final int __GO_UI_EDIT__ = 275;
+ public static final int __GO_UI_SPINNER__ = 276;
+ public static final int __GO_UI_FRAME__ = 277;
+ public static final int __GO_UI_FRAME_SCROLLABLE__ = 278;
+ public static final int __GO_UI_IMAGE__ = 279;
+ public static final int __GO_UI_LISTBOX__ = 280;
+ public static final int __GO_UI_POPUPMENU__ = 281;
+ public static final int __GO_UI_PUSHBUTTON__ = 282;
+ public static final int __GO_UI_RADIOBUTTON__ = 283;
+ public static final int __GO_UI_SLIDER__ = 284;
+ public static final int __GO_UI_TABLE__ = 285;
+ public static final int __GO_UI_TEXT__ = 286;
+ public static final int __GO_UI_LAYER__ = 287;
+ public static final int __GO_UI_BACKGROUNDCOLOR__ = 288;
+ public static final int __GO_UI_ENABLE__ = 289;
+ public static final int __GO_UI_FONTANGLE__ = 290;
+ public static final int __GO_UI_FONTNAME__ = 291;
+ public static final int __GO_UI_FONTSIZE__ = 292;
+ public static final int __GO_UI_FONTUNITS__ = 293;
+ public static final int __GO_UI_FONTWEIGHT__ = 294;
+ public static final int __GO_UI_FOREGROUNDCOLOR__ = 295;
+ public static final int __GO_UI_HORIZONTALALIGNMENT__ = 296;
+ public static final int __GO_UI_LISTBOXTOP__ = 297;
+ public static final int __GO_UI_LISTBOXTOP_SIZE__ = 298;
+ public static final int __GO_UI_MAX__ = 299;
+ public static final int __GO_UI_MIN__ = 300;
+ public static final int __GO_UI_RELIEF__ = 301;
+ public static final int __GO_UI_STRING__ = 302;
+ public static final int __GO_UI_TAB_STRING__ = 303;
+ public static final int __GO_UI_STRING_SIZE__ = 304;
+ public static final int __GO_UI_STRING_COLNB__ = 305;
+ public static final int __GO_UI_TOOLTIPSTRING__ = 306;
+ public static final int __GO_UI_TOOLTIPSTRING_SIZE__ = 307;
+ public static final int __GO_UI_SLIDERSTEP__ = 308;
+ public static final int __GO_UI_UNITS__ = 309;
+ public static final int __GO_UI_VALUE__ = 310;
+ public static final int __GO_UI_TAB_VALUE__ = 311;
+ public static final int __GO_UI_VALUE_SIZE__ = 312;
+ public static final int __GO_UI_VERTICALALIGNMENT__ = 313;
+ public static final int __GO_UIPARENTMENU__ = 314;
+ public static final int __GO_UICHILDMENU__ = 315;
+ public static final int __GO_UICHECKEDMENU__ = 316;
+ public static final int __GO_UI_CHECKED__ = 317;
+ public static final int __GO_UI_LABEL__ = 318;
+ public static final int __GO_UI_MNEMONIC__ = 319;
+ public static final int __GO_UI_ACCELERATOR__ = 320;
+ public static final int __GO_UI_SEPARATOR__ = 321;
+ public static final int __GO_UI_ICON__ = 322;
+ public static final int __GO_CONSOLE__ = 323;
+ public static final int __GO_SHOWHIDDENHANDLES__ = 324;
+ public static final int __GO_SHOWHIDDENPROPERTIES__ = 325;
+ public static final int __GO_USEDEPRECATEDLF__ = 326;
+ public static final int __GO_WAITBAR__ = 327;
+ public static final int __GO_PROGRESSIONBAR__ = 328;
+ public static final int __GO_UI_MESSAGE__ = 329;
+ public static final int __GO_UI_MESSAGE_SIZE__ = 330;
+ public static final int __GO_DATATIP__ = 331;
+ public static final int __GO_DATATIP_DATA__ = 332;
+ public static final int __GO_DATATIP_ORIENTATION__ = 333;
+ public static final int __GO_DATATIP_3COMPONENT__ = 334;
+ public static final int __GO_DATATIP_AUTOORIENTATION__ = 335;
+ public static final int __GO_DATATIP_INTERP_MODE__ = 336;
+ public static final int __GO_DATATIP_DISPLAY_FNC__ = 337;
+ public static final int __GO_DATATIP_BOX_MODE__ = 338;
+ public static final int __GO_DATATIP_LABEL_MODE__ = 339;
+ public static final int __GO_DATATIP_MARK__ = 340;
+ public static final int __GO_AMBIENTCOLOR__ = 341;
+ public static final int __GO_DIFFUSECOLOR__ = 342;
+ public static final int __GO_SPECULARCOLOR__ = 343;
+ public static final int __GO_COLOR_MATERIAL__ = 344;
+ public static final int __GO_MATERIAL_SHININESS__ = 345;
+ public static final int __GO_LIGHT__ = 346;
+ public static final int __GO_LIGHT_TYPE__ = 347;
+ public static final int __GO_DATATIPS__ = 348;
+ public static final int __GO_DATATIPS_COUNT__ = 349;
+ public static final int __GO_DATATIP_INDEXES__ = 350;
+ public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 351;
+ public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 352;
+ public static final int __GO_RESIZE__ = 353;
+ public static final int __GO_TOOLBAR__ = 354;
+ public static final int __GO_TOOLBAR_VISIBLE__ = 355;
+ public static final int __GO_MENUBAR__ = 356;
+ public static final int __GO_MENUBAR_VISIBLE__ = 357;
+ public static final int __GO_INFOBAR_VISIBLE__ = 358;
+ public static final int __GO_DOCKABLE__ = 359;
+ public static final int __GO_LAYOUT__ = 360;
+ public static final int __GO_LAYOUT_SET__ = 361;
+ public static final int __GO_UI_TAB__ = 362;
+ public static final int __GO_UI_GRIDBAG_GRID__ = 363;
+ public static final int __GO_UI_GRIDBAG_WEIGHT__ = 364;
+ public static final int __GO_UI_GRIDBAG_FILL__ = 365;
+ public static final int __GO_UI_GRIDBAG_ANCHOR__ = 366;
+ public static final int __GO_UI_GRIDBAG_PADDING__ = 367;
+ public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 368;
+ public static final int __GO_UI_GRID_GRID__ = 369;
+ public static final int __GO_UI_GRID_PADDING__ = 370;
+ public static final int __GO_UI_BORDER_POSITION__ = 371;
+ public static final int __GO_UI_BORDER_PREFERREDSIZE__ = 372;
+ public static final int __GO_GRID_OPT_GRID__ = 373;
+ public static final int __GO_GRID_OPT_PADDING__ = 374;
+ public static final int __GO_BORDER_OPT_PADDING__ = 375;
+ public static final int __GO_UI_FRAME_BORDER__ = 376;
+ public static final int __GO_UI_FRAME_BORDER_COLOR__ = 377;
+ public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 378;
+ public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 379;
+ public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 380;
+ public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 381;
+ public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 382;
+ public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 383;
+ public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 384;
+ public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 385;
+ public static final int __GO_UI_FRAME_BORDER_TITLE__ = 386;
+ public static final int __GO_UI_FRAME_BORDER_POSITION__ = 387;
+ public static final int __GO_UI_FRAME_BORDER_STYLE__ = 388;
+ public static final int __GO_UI_GROUP_NAME__ = 389;
+ public static final int __GO_UI_TITLE_POSITION__ = 390;
+ public static final int __GO_UI_TITLE_SCROLL__ = 391;
+ public static final int __GO_UI_FRAME_BORDER_TYPE__ = 392;
+ public static final int __GO_UI_SCROLLABLE__ = 393;
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/Visitor.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/Visitor.java
new file mode 100755
index 000000000..ad202da41
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/Visitor.java
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2010 - DIGITEO - Pierre LANDO
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicObject;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.arc.Arc;
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.axis.Axis;
+import org.scilab.modules.graphic_objects.compound.Compound;
+import org.scilab.modules.graphic_objects.datatip.Datatip;
+import org.scilab.modules.graphic_objects.fec.Fec;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.imageplot.Grayplot;
+import org.scilab.modules.graphic_objects.imageplot.Matplot;
+import org.scilab.modules.graphic_objects.label.Label;
+import org.scilab.modules.graphic_objects.legend.Legend;
+import org.scilab.modules.graphic_objects.polyline.Polyline;
+import org.scilab.modules.graphic_objects.rectangle.Rectangle;
+import org.scilab.modules.graphic_objects.surface.Fac3d;
+import org.scilab.modules.graphic_objects.surface.Plot3d;
+import org.scilab.modules.graphic_objects.textObject.Text;
+import org.scilab.modules.graphic_objects.uicontrol.frame.Frame;
+import org.scilab.modules.graphic_objects.vectfield.Arrow;
+import org.scilab.modules.graphic_objects.vectfield.Champ;
+import org.scilab.modules.graphic_objects.vectfield.Segs;
+
+/**
+ * @author Pierre Lando
+ */
+public interface Visitor {
+
+ void visit(Axes axes);
+
+ void visit(Arc arc);
+
+ void visit(Axis axis);
+
+ void visit(Compound compound);
+
+ void visit(Fec fec) throws ObjectRemovedException;
+
+ void visit(Figure figure);
+
+ void visit(Frame frame);
+
+ void visit(Grayplot grayplot) throws ObjectRemovedException;
+
+ void visit(Matplot matplot) throws ObjectRemovedException;
+
+ void visit(Label label);
+
+ void visit(Legend legend);
+
+ void visit(Polyline polyline) throws ObjectRemovedException;
+
+ void visit(Rectangle rectangle);
+
+ void visit(Fac3d fac3d) throws ObjectRemovedException;
+
+ void visit(Plot3d plot3d) throws ObjectRemovedException;
+
+ void visit(Text text);
+
+ void visit(Datatip datatip);
+
+ void visit(Arrow arrow);
+
+ void visit(Champ champ) throws ObjectRemovedException;
+
+ void visit(Segs segs) throws ObjectRemovedException;
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.java
new file mode 100755
index 000000000..5e6196c8e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/FlattenTreeView.java
@@ -0,0 +1,74 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Scilab Enterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicView;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+
+public class FlattenTreeView extends TreeView {
+ private static FlattenTreeView me;
+
+ private FlattenTreeView() {
+ super();
+ }
+
+ public static void createView() {
+ if (me == null) {
+ me = new FlattenTreeView();
+ GraphicController.getController().register(me);
+ me.show();
+ }
+ }
+
+ public static void deleteView() {
+ if (me != null) {
+ me.hide();
+ GraphicController.getController().unregister(me);
+ me = null;
+ }
+ }
+
+ public void createObject(Integer id) {
+ try {
+ GraphicObject graphiObject = GraphicController.getController().getObjectFromId(id);
+ //if (!(graphiObject instanceof Uimenu)) {
+ DefaultMutableTreeNode node = new DefaultMutableTreeNode(new GraphicObjectNode(graphiObject));
+
+ allObjects.put(id, node);
+ top.add(node);
+ topModel.nodeStructureChanged(top);
+ //}
+ } catch (Exception e) {
+ //e.printStackTrace();
+ }
+ }
+
+ public void deleteObject(Integer id) {
+ try {
+ DefaultMutableTreeNode objectNode = allObjects.get(id);
+ if (objectNode != null) {
+ DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) objectNode.getParent();
+ objectNode.removeFromParent();
+ allObjects.remove(id);
+ topModel.nodeStructureChanged(parentNode);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void updateObject(Integer id, int property) {
+
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GedTreeView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GedTreeView.java
new file mode 100755
index 000000000..4360f82c9
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GedTreeView.java
@@ -0,0 +1,91 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Scilab Enterprises - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicView;
+
+import javax.swing.tree.DefaultMutableTreeNode;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+
+public class GedTreeView extends TreeView {
+
+ private static GedTreeView me;
+
+ private GedTreeView() {
+ super();
+ }
+
+ public static GedTreeView create() {
+ if (me == null) {
+ me = new GedTreeView();
+ }
+ return me;
+ }
+
+ public void createObject(Integer id) {
+ try {
+ GraphicObject graphiObject = GraphicController.getController().getObjectFromId(id);
+ DefaultMutableTreeNode node = new DefaultMutableTreeNode(new GraphicObjectNode(graphiObject));
+
+ allObjects.put(id, node);
+ top.add(node);
+ topModel.nodeStructureChanged(top);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void deleteObject(Integer id) {
+ try {
+ DefaultMutableTreeNode objectNode = allObjects.get(id);
+ if (objectNode != null) {
+ DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) objectNode.getParent();
+ objectNode.removeFromParent();
+ allObjects.remove(id);
+ topModel.nodeStructureChanged(parentNode);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void updateObject(Integer id, int property) {
+
+ DefaultMutableTreeNode objectNode = allObjects.get(id);
+ /*
+ * Update parent property
+ */
+ if (objectNode != null && property == GraphicObjectProperties.__GO_PARENT__) {
+ DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) objectNode.getParent();
+
+ if (parentNode != null) {
+ // Remove from old parent
+ objectNode.removeFromParent();
+ topModel.nodeStructureChanged(parentNode);
+
+ Integer parentUID = (Integer) GraphicController.getController().getProperty(id, GraphicObjectProperties.__GO_PARENT__);
+ // Retrieve new Parent
+ DefaultMutableTreeNode newParentNode = allObjects.get(parentUID);
+
+ // If there is no more parent, leave object at top level
+ if (newParentNode == null) {
+ newParentNode = top;
+ }
+
+ newParentNode.add(objectNode);
+ topModel.nodeStructureChanged(newParentNode);
+ }
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GraphicView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GraphicView.java
new file mode 100755
index 000000000..b820c9889
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GraphicView.java
@@ -0,0 +1,39 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicView;
+
+import java.util.EventListener;
+
+public interface GraphicView extends EventListener {
+
+ /**
+ * Notify an object with ID : id
+ * has been updated.
+ * @param id
+ */
+ void updateObject(Integer id, int property);
+
+ /**
+ * Notify an object with ID : id
+ * has been created.
+ * @param id
+ */
+ void createObject(Integer id);
+
+ /**
+ * Notify an object with ID : id
+ * has been deleted.
+ * @param id
+ */
+ void deleteObject(Integer id);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GuiLogView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GuiLogView.java
new file mode 100755
index 000000000..237b8d8f2
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/GuiLogView.java
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicView;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
+
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.text.Document;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+
+public class GuiLogView implements GraphicView {
+ private static GuiLogView me;
+ private JEditorPane htmlLogPane;
+ private JFrame frame;
+
+ public static GuiLogView createGuiLogView() {
+ if (me == null) {
+ me = new GuiLogView();
+ }
+ return me;
+ }
+
+ private GuiLogView() {
+ frame = new JFrame("GuiLogView");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ htmlLogPane = new JEditorPane();
+ htmlLogPane.setEditable(false);
+ JScrollPane logView = new JScrollPane(htmlLogPane);
+ frame.setContentPane(logView);
+ frame.setVisible(false);
+ frame.setSize(800, 600);
+ }
+
+ public void show() {
+ frame.setVisible(true);
+ }
+
+ public void createObject(Integer id) {
+ try {
+ int objectType = (Integer) GraphicController.getController().getProperty(id, __GO_TYPE__);
+ Document doc = htmlLogPane.getDocument();
+ doc.insertString(doc.getLength(), "+++" + id + " Object Created type is " + objectType + ".\n", null);
+ htmlLogPane.setCaretPosition(doc.getLength());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public void deleteObject(Integer id) {
+ try {
+ Document doc = htmlLogPane.getDocument();
+ doc.insertString(doc.getLength(), "---" + id + " Object Deleted.\n", null);
+ htmlLogPane.setCaretPosition(doc.getLength());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ public void updateObject(Integer id, int property) {
+ try {
+ Document doc = htmlLogPane.getDocument();
+ doc.insertString(doc.getLength(), "===" + id + " Object Property " + property + " Updated.\n", null);
+ htmlLogPane.setCaretPosition(doc.getLength());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/LogView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/LogView.java
new file mode 100755
index 000000000..c9cc0b7c7
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/LogView.java
@@ -0,0 +1,70 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.graphicView;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
+
+public class LogView implements GraphicView {
+
+ private static LogView me = null;
+
+ private LogView() {}
+
+ public static void createLogView() {
+ if (me == null) {
+ me = new LogView();
+ GraphicController.getController().register(me);
+ }
+ }
+
+ public static void deleteLogView() {
+ if (me != null) {
+ GraphicController.getController().unregister(me);
+ me = null;
+ }
+ }
+
+ public static HashMap<Integer, String> pierreDeRosette = new HashMap<Integer, String>();
+
+ static {
+ Field[] fields = GraphicObjectProperties.class.getFields();
+ for(int i = 0 ; i < fields.length ; ++i) {
+ try {
+ pierreDeRosette.put(fields[i].getInt(null), fields[i].getName());
+ } catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void createObject(Integer id) {
+ int objectType = (Integer) GraphicController.getController().getProperty(id, __GO_TYPE__);
+ System.out.println("+++ " + id + " Object Created type is " + pierreDeRosette.get(objectType) + ".");
+ }
+
+ public void deleteObject(Integer id) {
+ System.out.println("--- " + id + " Object Deleted.");
+
+ }
+
+ public void updateObject(Integer id, int property) {
+ System.out.println("=== " + id + " Object Property " + pierreDeRosette.get(property) + " Updated.");
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/ScilabView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/ScilabView.java
new file mode 100755
index 000000000..ea8dc53ff
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/ScilabView.java
@@ -0,0 +1,57 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicView;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CHILDREN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PARENT__;
+
+import org.scilab.modules.graphic_objects.ScilabNativeView;
+
+public class ScilabView extends ScilabNativeView implements GraphicView {
+
+ private static ScilabView me;
+
+ public ScilabView() {
+ }
+
+ public static ScilabView getScilabView() {
+ if (me == null) {
+ me = new ScilabView();
+ }
+ return me;
+ }
+
+ public void createObject(Integer id) {
+ ScilabNativeView__createObject(id);
+ }
+
+ public void deleteObject(Integer id) {
+ ScilabNativeView__deleteObject(id);
+ }
+
+ public void updateObject(Integer id, int property) {
+ switch (property) {
+ case __GO_ID__ :
+ case __GO_CHILDREN__ :
+ case __GO_PARENT__ :
+ case __GO_TAG__ : {
+ ScilabNativeView__updateObject(id, property);
+ break;
+ }
+ default : {
+ break;
+ }
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/TreeView.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/TreeView.java
new file mode 100755
index 000000000..c27087a56
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicView/TreeView.java
@@ -0,0 +1,218 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+package org.scilab.modules.graphic_objects.graphicView;
+
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JSplitPane;
+import javax.swing.JTree;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeSelectionModel;
+
+import org.scilab.modules.graphic_objects.contouredObject.ContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorder;
+
+public abstract class TreeView implements GraphicView, TreeSelectionListener {
+
+ protected Map<Integer, DefaultMutableTreeNode> allObjects = new ConcurrentHashMap<Integer, DefaultMutableTreeNode>();
+ protected DefaultTreeModel topModel = null;
+ protected DefaultMutableTreeNode top = new DefaultMutableTreeNode("Graphic Objects");
+ private JTree tree;
+ private JEditorPane htmlDetailPane;
+ private JFrame frame;
+
+ public void show() {
+ frame.setVisible(true);
+ }
+
+ public void hide() {
+ frame.setVisible(false);
+ }
+
+ protected TreeView() {
+ frame = new JFrame("TreeView");
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ JPanel panel = new JPanel(new GridLayout(1, 0));
+
+ topModel = new DefaultTreeModel(top);
+ tree = new JTree(topModel);
+ tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+ tree.addTreeSelectionListener(this);
+ tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
+
+
+ //Listen for when the selection changes.
+ tree.addTreeSelectionListener(this);
+
+
+ Dimension minDims = new Dimension(400, 300);
+ //Create the scroll pane and add the tree to it.
+ JScrollPane treeView = new JScrollPane(tree);
+ treeView.setMinimumSize(minDims);
+
+ //Create the HTML detail viewing pane.
+ htmlDetailPane = new JEditorPane();
+ htmlDetailPane.setEditable(false);
+ htmlDetailPane.setContentType("text/html");
+ JScrollPane htmlView = new JScrollPane(htmlDetailPane);
+
+ //Add the scroll panes to a split pane.
+ JSplitPane treeDetailPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
+ //treeDetailPane.setLeftComponent(fTreeView);
+ treeDetailPane.setLeftComponent(treeView);
+ treeDetailPane.setRightComponent(htmlView);
+
+ treeDetailPane.setDividerLocation(100);
+ treeDetailPane.setPreferredSize(new Dimension(1200, 600));
+
+ //Add the split pane to this panel.
+ panel.add(treeDetailPane);
+ frame.add(panel);
+ frame.setVisible(false);
+ frame.setSize(1200, 600);
+ }
+
+ public abstract void createObject(Integer id);
+ public abstract void deleteObject(Integer id) ;
+ public abstract void updateObject(Integer id, int property);
+
+ /*
+ * Inner class to wrap GraphicObject in a Node.
+ */
+ protected class GraphicObjectNode {
+ private GraphicObject graphicObject;
+
+ public GraphicObjectNode(GraphicObject object) {
+ this.graphicObject = object;
+ }
+
+ public String toString() {
+ return typeToString(graphicObject.getType()) + " : @" + graphicObject.getIdentifier().toString();
+ }
+
+ public String toHTML() {
+ StringBuffer strBuff = new StringBuffer();
+ strBuff.append("<html><body>");
+ strBuff.append("<h1>Graphic Object of type: " + typeToString(graphicObject.getType()) + "</h1>");
+ strBuff.append("<h2> Id : " + graphicObject.getIdentifier() + "</h2>");
+ strBuff.append("<table border=\"1\">");
+ strBuff.append("<tr><th>Property Name</th><th>Value</th></tr>");
+ // Graphic Object
+ for (GraphicObject.GraphicObjectPropertyType goProperty : GraphicObject.GraphicObjectPropertyType.values()) {
+ strBuff.append("<tr><td>");
+ strBuff.append(goProperty);
+ strBuff.append("</td><td>");
+ Object values = graphicObject.getProperty(goProperty);
+ if (values instanceof String[]) {
+ String[] strings = (String []) values;
+ strBuff.append("{");
+ for (int i = 0; i < strings.length ; ++i) {
+ strBuff.append(strings[i] + ",");
+ }
+ strBuff.append("}");
+ } else if (values instanceof Integer[]) {
+ Integer[] ints = (Integer []) values;
+ strBuff.append("{");
+ for (int i = 0; i < ints.length ; ++i) {
+ strBuff.append(ints[i] + ",");
+ }
+ strBuff.append("}");
+ } else if (values instanceof Double[]) {
+ Double[] vals = (Double []) values;
+ strBuff.append("{");
+ for (int i = 0; i < vals.length ; ++i) {
+ strBuff.append(vals[i] + ",");
+ }
+ strBuff.append("}");
+ } else {
+ if (values != null) {
+ if (values.getClass().getPackage().getName().contains("scilab")) {
+ strBuff.append(values.getClass().getCanonicalName());
+ } else {
+ strBuff.append(values.toString());
+ }
+ } else {
+ strBuff.append("??? NULL ???");
+ }
+ }
+ strBuff.append("</td></tr>");
+ }
+
+ // ContouredObject
+ if (graphicObject instanceof ContouredObject) {
+ for (ContouredObject.ContouredObjectPropertyType goProperty : ContouredObject.ContouredObjectPropertyType.values()) {
+ strBuff.append("<tr><td>");
+ strBuff.append(goProperty);
+ strBuff.append("</td><td>");
+ strBuff.append(graphicObject.getProperty(goProperty));
+ strBuff.append("</td></tr>");
+ }
+ }
+
+ // UiControl
+ if (graphicObject instanceof Uicontrol) {
+ Uicontrol uiControl = (Uicontrol) graphicObject;
+ strBuff.append("<tr><td>STYLE</td><td>" + typeToString(uiControl.getStyle()) + "</td>");
+ strBuff.append("<tr><td>LAYOUT</td><td>" + uiControl.getLayoutAsEnum() + "</td>");
+ strBuff.append("<tr><td>GROUP NAME</td><td>" + uiControl.getGroupName() + "</td>");
+ strBuff.append("<tr><td>FRAME_BORDER</td><td>" + uiControl.getFrameBorder() + "</td>");
+ }
+
+ if (graphicObject instanceof FrameBorder) {
+ FrameBorder frameBorder = (FrameBorder) graphicObject;
+ strBuff.append("<tr><td>STYLE</td><td>" + frameBorder.getStyleAsEnum().toString() + "</td>");
+ }
+
+ strBuff.append("</table>");
+ strBuff.append("</body></html>");
+ return strBuff.toString();
+ }
+
+ private String typeToString(Integer key) {
+ return LogView.pierreDeRosette.get(key);
+ }
+ }
+
+
+
+ /** Required by TreeSelectionListener interface. */
+ public void valueChanged(TreeSelectionEvent e) {
+ Object node = tree.getLastSelectedPathComponent();
+
+ if (node == null || !(node instanceof DefaultMutableTreeNode)) {
+ htmlDetailPane.setText("");
+ return;
+ }
+
+ Object nodeInfo = ((DefaultMutableTreeNode) node).getUserObject();
+ if (nodeInfo == null || !(nodeInfo instanceof GraphicObjectNode)) {
+ htmlDetailPane.setText("");
+ return;
+ }
+ GraphicObjectNode graphicObject = (GraphicObjectNode) nodeInfo;
+ htmlDetailPane.setText(graphicObject.toHTML());
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Grayplot.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Grayplot.java
new file mode 100755
index 000000000..754c7e773
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Grayplot.java
@@ -0,0 +1,144 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.imageplot;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Grayplot class
+ * @author Manuel JULIACHS
+ */
+public class Grayplot extends Imageplot {
+ /* TBD: properties relative to the data model */
+ /** Grayplot properties names */
+ private enum GrayplotProperty { DATAMAPPING };
+
+ /** Data mapping */
+ private enum DataMapping { SCALED, DIRECT;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the data mapping enum
+ */
+ public static DataMapping intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return DataMapping.SCALED;
+ case 1:
+ return DataMapping.DIRECT;
+ default:
+ return null;
+ }
+ }
+ }
+
+ /** Specifies how colors are mapped to values */
+ private DataMapping dataMapping;
+
+ /** Constructor */
+ public Grayplot() {
+ super();
+ dataMapping = DataMapping.DIRECT;
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ if (propertyName == __GO_DATA_MAPPING__) {
+ return GrayplotProperty.DATAMAPPING;
+ } else {
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == GrayplotProperty.DATAMAPPING) {
+ return getDataMapping();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == GrayplotProperty.DATAMAPPING) {
+ setDataMapping((Integer) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the dataMapping
+ */
+ public Integer getDataMapping() {
+ return getDataMappingAsEnum().ordinal();
+ }
+
+ /**
+ * @return the dataMapping
+ */
+ public DataMapping getDataMappingAsEnum() {
+ return dataMapping;
+ }
+
+ /**
+ * @param dataMapping the dataMapping to set
+ */
+ public UpdateStatus setDataMapping(Integer dataMapping) {
+ setDataMappingAsEnum(DataMapping.intToEnum(dataMapping));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param dataMapping the dataMapping to set
+ */
+ public UpdateStatus setDataMappingAsEnum(DataMapping dataMapping) {
+ this.dataMapping = dataMapping;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_GRAYPLOT__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Imageplot.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Imageplot.java
new file mode 100755
index 000000000..fd921f2d5
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Imageplot.java
@@ -0,0 +1,106 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.imageplot;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MATPLOT_SCALE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MATPLOT_TRANSLATE__;
+
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * ImagePlot class
+ * @author Manuel JULIACHS
+ */
+public abstract class Imageplot extends ClippableContouredObject {
+ // TBD
+ // Data -> Data Model
+ /** Grayplot properties names */
+ private enum ImageplotProperty { SCALE, TRANSLATE };
+ // Methods: to be done
+
+ private Double[] scale = {1.0, 1.0};
+ private Double[] translate = {0.5, 0.5};
+
+ /** Constructor */
+ public Imageplot() {
+ super();
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_MATPLOT_SCALE__ :
+ return ImageplotProperty.SCALE;
+ case __GO_MATPLOT_TRANSLATE__ :
+ return ImageplotProperty.TRANSLATE;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ImageplotProperty.TRANSLATE) {
+ return getTranslate();
+ } else if (property == ImageplotProperty.SCALE) {
+ return getScale();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ImageplotProperty.TRANSLATE) {
+ setTranslate((Double[]) value);
+ } else if (property == ImageplotProperty.SCALE) {
+ setScale((Double[]) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ public Double[] getScale() {
+ return new Double[] {scale[0], scale[1]};
+ }
+
+ public UpdateStatus setScale(Double[] scale) {
+ this.scale = scale;
+ return UpdateStatus.Success;
+ }
+
+ public Double[] getTranslate() {
+ return new Double[] {translate[0], translate[1]};
+ }
+
+ public UpdateStatus setTranslate(Double[] translate) {
+ this.translate = translate;
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Matplot.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Matplot.java
new file mode 100755
index 000000000..1b5eee104
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/imageplot/Matplot.java
@@ -0,0 +1,43 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.imageplot;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+/**
+ * Matplot class
+ * @author Manuel JULIACHS
+ */
+public class Matplot extends Imageplot {
+ // Methods: to be done
+
+ /** Constructor */
+ public Matplot() {
+ super();
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_MATPLOT__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/label/Label.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/label/Label.java
new file mode 100755
index 000000000..4389bd5f8
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/label/Label.java
@@ -0,0 +1,281 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.label;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+import org.scilab.modules.graphic_objects.textObject.TextObject;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Label class
+ * @author Manuel JULIACHS
+ */
+public class Label extends TextObject {
+ /** Label properties names */
+ public enum LabelProperty { FONTANGLE, AUTOPOSITION, POSITION, CORNERS, AUTOROTATION };
+
+ /** Text orientation */
+ private double fontAngle;
+
+ /** Specifies whether the label position is automatically computed or not */
+ private boolean autoPosition;
+
+ /** 3-element array: (x, y, z) position */
+ private double[] position;
+
+ /**
+ * The 3D coordinates of the Label's four corners.
+ * They are stored in clockwise order, starting from the lower-left corner.
+ */
+ private double[][] corners;
+
+ /** Specifies whether the label orientation is automatically computed or not */
+ private boolean autoRotation;
+
+ /** Constructor */
+ public Label() {
+ super();
+ fontAngle = 0.0;
+ autoPosition = false;
+ position = new double[3];
+ corners = new double[4][3];
+ autoRotation = false;
+
+ Integer[] textDimensions = {1, 1};
+ String[] textStrings = {""};
+
+ setTextArrayDimensions(textDimensions);
+ setTextStrings(textStrings);
+ }
+
+ /**
+ * Clone method
+ */
+ public Label clone() {
+ Label copy = (Label) super.clone();
+
+ copy.position = new double[3];
+ for (int i = 0; i < position.length; i++) {
+ copy.position[i] = position[i];
+ }
+
+ return copy;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_FONT_ANGLE__ :
+ return LabelProperty.FONTANGLE;
+ case __GO_AUTO_POSITION__ :
+ return LabelProperty.AUTOPOSITION;
+ case __GO_POSITION__ :
+ return LabelProperty.POSITION;
+ case __GO_CORNERS__ :
+ return LabelProperty.CORNERS;
+ case __GO_AUTO_ROTATION__ :
+ return LabelProperty.AUTOROTATION;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == LabelProperty.FONTANGLE) {
+ return getFontAngle();
+ } else if (property == LabelProperty.AUTOPOSITION) {
+ return getAutoPosition();
+ } else if (property == LabelProperty.POSITION) {
+ return getPosition();
+ } else if (property == LabelProperty.CORNERS) {
+ return getCorners();
+ } else if (property == LabelProperty.AUTOROTATION) {
+ return getAutoRotation();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == LabelProperty.FONTANGLE) {
+ setFontAngle((Double) value);
+ } else if (property == LabelProperty.AUTOPOSITION) {
+ setAutoPosition((Boolean) value);
+ } else if (property == LabelProperty.POSITION) {
+ setPosition((Double[]) value);
+ } else if (property == LabelProperty.CORNERS) {
+ setCorners((Double[]) value);
+ } else if (property == LabelProperty.AUTOROTATION) {
+ setAutoRotation((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the autoPosition
+ */
+ public Boolean getAutoPosition() {
+ return autoPosition;
+ }
+
+ /**
+ * @param autoPosition the autoPosition to set
+ */
+ public UpdateStatus setAutoPosition(Boolean autoPosition) {
+ this.autoPosition = autoPosition;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the autoRotation
+ */
+ public Boolean getAutoRotation() {
+ return autoRotation;
+ }
+
+ /**
+ * @param autoRotation the autoRotation to set
+ */
+ public UpdateStatus setAutoRotation(Boolean autoRotation) {
+ this.autoRotation = autoRotation;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the fontAngle
+ */
+ public Double getFontAngle() {
+ return fontAngle;
+ }
+
+ /**
+ * @param fontAngle the fontAngle to set
+ */
+ public UpdateStatus setFontAngle(Double fontAngle) {
+ if (autoRotation == true) {
+ autoRotation = false;
+ }
+
+ this.fontAngle = fontAngle;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the position
+ */
+ public Double[] getPosition() {
+ Double[] retPosition = new Double[3];
+
+ retPosition[0] = position[0];
+ retPosition[1] = position[1];
+ retPosition[2] = position[2];
+
+ return retPosition;
+ }
+
+ /**
+ * @param position the position to set
+ */
+ public UpdateStatus setPosition(Double[] position) {
+ if (autoPosition == true) {
+ autoPosition = false;
+ }
+
+ this.position[0] = position[0];
+ this.position[1] = position[1];
+ this.position[2] = position[2];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Returns the coordinates of the Label's corners
+ * Coordinates are returned as consecutive (x,y,z) triplets, each triplet
+ * corresponding to one corner, starting from the lower-left one and
+ * going in clockwise order.
+ * @return the corners' coordinates (12-element array)
+ */
+ public Double[] getCorners() {
+ Double[] retCorners = new Double[12];
+
+ for (int i = 0; i < 4; i++) {
+ for (int j = 0; j < 3; j++) {
+ retCorners[3 * i + j] = corners[i][j];
+ }
+ }
+
+ return retCorners;
+ }
+
+ /**
+ * Sets the coordinates of the Label's corners
+ * The coordinates to set are given as consecutive (x,y,z) triplets, each triplet
+ * corresponding to one corner, starting from the lower-left one and going in
+ * clockwise order.
+ * @param coordinates the corners' coordinates (12-element array)
+ */
+ public UpdateStatus setCorners(Double [] coordinates) {
+ if (coordinates.length != 12) {
+ return UpdateStatus.NoChange;
+ }
+
+ corners[0][0] = coordinates[0];
+ corners[0][1] = coordinates[1];
+ corners[0][2] = coordinates[2];
+
+ corners[1][0] = coordinates[3];
+ corners[1][1] = coordinates[4];
+ corners[1][2] = coordinates[5];
+
+ corners[2][0] = coordinates[6];
+ corners[2][1] = coordinates[7];
+ corners[2][2] = coordinates[8];
+
+ corners[3][0] = coordinates[9];
+ corners[3][1] = coordinates[10];
+ corners[3][2] = coordinates[11];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_LABEL__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/legend/Legend.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/legend/Legend.java
new file mode 100755
index 000000000..239bfc3f2
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/legend/Legend.java
@@ -0,0 +1,409 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.legend;
+
+import java.util.ArrayList;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+import org.scilab.modules.graphic_objects.textObject.ClippableTextObject;
+import org.scilab.modules.graphic_objects.textObject.FormattedText;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Legend class
+ * @author Manuel JULIACHS
+ */
+public class Legend extends ClippableTextObject {
+ /** Legend properties names */
+ private enum LegendProperty { LINKS, LINKSCOUNT, LEGENDLOCATION, POSITION , SIZE, MARKSCOUNT, LINEWIDTH};
+
+ /** Legend location */
+ public enum LegendLocation { IN_UPPER_RIGHT, IN_UPPER_LEFT, IN_LOWER_RIGHT, IN_LOWER_LEFT,
+ OUT_UPPER_RIGHT, OUT_UPPER_LEFT, OUT_LOWER_RIGHT, OUT_LOWER_LEFT,
+ UPPER_CAPTION, LOWER_CAPTION, BY_COORDINATES;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the legend location enum
+ */
+ public static LegendLocation intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return LegendLocation.IN_UPPER_RIGHT;
+ case 1:
+ return LegendLocation.IN_UPPER_LEFT;
+ case 2:
+ return LegendLocation.IN_LOWER_RIGHT;
+ case 3:
+ return LegendLocation.IN_LOWER_LEFT;
+ case 4:
+ return LegendLocation.OUT_UPPER_RIGHT;
+ case 5:
+ return LegendLocation.OUT_UPPER_LEFT;
+ case 6:
+ return LegendLocation.OUT_LOWER_RIGHT;
+ case 7:
+ return LegendLocation.OUT_LOWER_LEFT;
+ case 8:
+ return LegendLocation.UPPER_CAPTION;
+ case 9:
+ return LegendLocation.LOWER_CAPTION;
+ case 10:
+ return LegendLocation.BY_COORDINATES;
+ default:
+ return null;
+ }
+ }
+ };
+
+ /** List of the polylines referred to */
+ private ArrayList <Integer> links;
+
+ /** Legend location */
+ private LegendLocation legendLocation;
+
+ /** 2D position relative to the parent axes bounds */
+ private double[] position;
+
+ /** 2D size relative to the parent axes bounds */
+ private double[] size;
+
+ /** Number of marks to draw */
+ private Integer marksCount;
+
+ /** Line width in axes coordinates (percentage) */
+ private Double lineWidth;
+
+ /** Constructor */
+ public Legend() {
+ super();
+ this.links = new ArrayList<Integer>(0);
+ this.legendLocation = LegendLocation.LOWER_CAPTION;
+ position = new double[2];
+ size = new double[2];
+ marksCount = 3;
+ lineWidth = 0.1;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_LINKS__ :
+ return LegendProperty.LINKS;
+ case __GO_LINKS_COUNT__ :
+ return LegendProperty.LINKSCOUNT;
+ case __GO_LEGEND_LOCATION__ :
+ return LegendProperty.LEGENDLOCATION;
+ case __GO_POSITION__ :
+ return LegendProperty.POSITION;
+ case __GO_SIZE__ :
+ return LegendProperty.SIZE;
+ case __GO_MARKS_COUNT__ :
+ return LegendProperty.MARKSCOUNT;
+ case __GO_LINE_WIDTH__ :
+ return LegendProperty.LINEWIDTH;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == LegendProperty.LINKS) {
+ return getValidLinks();
+ } else if (property == LegendProperty.LINKSCOUNT) {
+ return getValidLinksCount();
+ } else if (property == LegendProperty.LEGENDLOCATION) {
+ return getLegendLocation();
+ } else if (property == LegendProperty.POSITION) {
+ return getPosition();
+ } else if (property == TextObjectProperty.TEXT_ARRAY_DIMENSIONS) {
+ return getValidTextArrayDimensions();
+ } else if (property == FormattedText.FormattedTextProperty.TEXT) {
+ return getValidTextStrings();
+ } else if (property == LegendProperty.SIZE) {
+ return getSize();
+ } else if (property == LegendProperty.MARKSCOUNT) {
+ return getMarksCount();
+ } else if (property == LegendProperty.LINEWIDTH) {
+ return getLineWidth();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == LegendProperty.LINKS) {
+ setLinks((Integer[]) value);
+ } else if (property == LegendProperty.LEGENDLOCATION) {
+ setLegendLocation((Integer) value);
+ } else if (property == LegendProperty.POSITION) {
+ setPosition((Double[]) value);
+ } else if (property == LegendProperty.MARKSCOUNT) {
+ setMarksCount((Integer) value);
+ } else if (property == LegendProperty.LINEWIDTH) {
+ setLineWidth((Double) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the legendLocation
+ */
+ public Integer getLegendLocation() {
+ return getLegendLocationAsEnum().ordinal();
+ }
+
+ /**
+ * @return the legendLocation
+ */
+ public LegendLocation getLegendLocationAsEnum() {
+ return legendLocation;
+ }
+
+ /**
+ * @param legendLocation the legendLocation to set
+ */
+ public UpdateStatus setLegendLocation(Integer legendLocation) {
+ setLegendLocationAsEnum(LegendLocation.intToEnum(legendLocation));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param legendLocation the legendLocation to set
+ */
+ public UpdateStatus setLegendLocationAsEnum(LegendLocation legendLocation) {
+ this.legendLocation = legendLocation;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the valid links
+ */
+ public Integer[] getValidLinks() {
+ ArrayList <Integer> validLinks = new ArrayList<Integer>(0);
+
+ for (int i = 0; i < links.size(); i++) {
+ GraphicObject object = GraphicController.getController().getObjectFromId(links.get(i));
+
+ if (object != null) {
+ validLinks.add(links.get(i));
+ }
+ }
+
+ return validLinks.toArray(new Integer[validLinks.size()]);
+ }
+
+ /**
+ * @return the valid links count
+ */
+ public Integer getValidLinksCount() {
+ int numValidLinks = 0;
+
+ for (int i = 0; i < links.size(); i++) {
+ GraphicObject object = GraphicController.getController().getObjectFromId(links.get(i));
+
+ if (object != null) {
+ numValidLinks++;
+ }
+ }
+
+ return numValidLinks;
+ }
+
+ /**
+ * @return the links
+ */
+ public Integer[] getLinks() {
+ Integer[] retLinks = new Integer[links.size()];
+
+ for (int i = 0; i < links.size(); i++) {
+ retLinks[i] = links.get(i);
+ }
+
+ return retLinks;
+ }
+
+ /**
+ * @return the links count
+ */
+ public Integer getLinksCount() {
+ return links.size();
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public UpdateStatus setLinks(Integer[] links) {
+ if (!this.links.isEmpty()) {
+ this.links.clear();
+ }
+
+ for (int i = 0; i < links.length; i++) {
+ this.links.add(links[i]);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the marks count
+ */
+ public Integer getMarksCount() {
+ return marksCount;
+ }
+
+ /**
+ * @param marksCount the marks count
+ */
+ public UpdateStatus setMarksCount(Integer marksCount) {
+ if (!this.marksCount.equals(marksCount)) {
+ this.marksCount = marksCount;
+
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * @return the line width
+ */
+ public Double getLineWidth() {
+ return lineWidth;
+ }
+
+ /**
+ * @param lineWidth the line width
+ */
+ public UpdateStatus setLineWidth(Double lineWidth) {
+ if (!this.lineWidth.equals(lineWidth)) {
+ this.lineWidth = lineWidth;
+
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+
+ /**
+ * Returns the dimensions of the text array, taking into account only valid links.
+ * @return the dimensions of the text array
+ */
+ public Integer[] getValidTextArrayDimensions() {
+ return new Integer[] {getValidLinksCount(), 1};
+ }
+
+ /**
+ * Returns the array of valid text strings.
+ * A string if considered valid if its corresponding link is also valid, otherwise it is ignored.
+ * This is used when getting the Legend's TEXT_STRINGS property in order to return only the strings
+ * corresponding to valid links (see also getValidLinks).
+ * @return the valid text strings
+ */
+ public String[] getValidTextStrings() {
+ ArrayList <String> validStrings = new ArrayList<String>(0);
+
+ /* Text strings are stored in reverse order relative to links. */
+ for (int i = 0; i < links.size(); i++) {
+ GraphicObject object = GraphicController.getController().getObjectFromId(links.get(links.size() - i - 1));
+
+ if (object != null) {
+ validStrings.add(text[i].getText());
+ }
+ }
+
+ return validStrings.toArray(new String[validStrings.size()]);
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public UpdateStatus setLinks(ArrayList<Integer> links) {
+ this.links = links;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the position
+ */
+ public Double[] getPosition() {
+ Double[] retPosition = new Double[2];
+ retPosition[0] = position[0];
+ retPosition[1] = position[1];
+
+ return retPosition;
+ }
+
+ /**
+ * @param position the position to set
+ */
+ public UpdateStatus setPosition(Double[] position) {
+ this.position[0] = position[0];
+ this.position[1] = position[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the size
+ */
+ public Double[] getSize() {
+ Double[] retSize = new Double[2];
+ retSize[0] = size[0];
+ retSize[1] = size[1];
+
+ return retSize;
+ }
+
+ /**
+ * @param size the size to set
+ */
+ public UpdateStatus setSize(Double[] size) {
+ this.size[0] = size[0];
+ this.size[1] = size[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_LEGEND__;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/ColorTriplet.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/ColorTriplet.java
new file mode 100755
index 000000000..2214b4125
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/ColorTriplet.java
@@ -0,0 +1,121 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro SOUZA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.lighting;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Color triplet used for lighting.
+ * @author Pedro SOUZA
+ */
+
+public class ColorTriplet {
+
+ /** color triplet properties */
+ public enum ColorTripletProperty {AMBIENTCOLOR, DIFFUSECOLOR, SPECULARCOLOR};
+ /** ambient color */
+ protected Double[] ambient;
+ /** diffuse color */
+ protected Double[] diffuse;
+ /** specular color */
+ protected Double[] specular;
+
+ public ColorTriplet() {
+ ambient = new Double[] {0.0, 0.0, 0.0};
+ diffuse = new Double[] {0.0, 0.0, 0.0};
+ specular = new Double[] {0.0, 0.0, 0.0};
+ }
+
+ /** copy constructor */
+ public ColorTriplet(ColorTriplet other) {
+ ambient = new Double[3];
+ diffuse = new Double[3];
+ specular = new Double[3];
+ setAmbientColor(other.ambient);
+ setDiffuseColor(other.diffuse);
+ setSpecularColor(other.specular);
+ }
+
+
+ /** returns the ambient color */
+ public Double[] getAmbientColor() {
+ Double[] ret = new Double[] {ambient[0], ambient[1], ambient[2]};
+ return ret;
+ }
+
+ /** Sets the ambient color */
+ public UpdateStatus setAmbientColor(Double[] color) {
+ if (color.length != 3 || !isColorValid(color)) {
+ return UpdateStatus.Fail;
+ }
+
+ if (ambient[0] != color[0] || ambient[1] != color[1] || ambient[2] != color[2]) {
+ ambient[0] = color[0];
+ ambient[1] = color[1];
+ ambient[2] = color[2];
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** returns the dffuse color */
+ public Double[] getDiffuseColor() {
+ Double[] ret = new Double[] {diffuse[0], diffuse[1], diffuse[2]};
+ return ret;
+ }
+
+ /** Sets the diffuse color */
+ public UpdateStatus setDiffuseColor(Double[] color) {
+ if (color.length != 3 || !isColorValid(color)) {
+ return UpdateStatus.Fail;
+ }
+
+ if (diffuse[0] != color[0] || diffuse[1] != color[1] || diffuse[2] != color[2]) {
+ diffuse[0] = color[0];
+ diffuse[1] = color[1];
+ diffuse[2] = color[2];
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** returns the specular color */
+ public Double[] getSpecularColor() {
+ Double[] ret = new Double[] {specular[0], specular[1], specular[2]};
+ return ret;
+ }
+
+ /** Sets the specular color */
+ public UpdateStatus setSpecularColor(Double[] color) {
+ if (color.length != 3 || !isColorValid(color)) {
+ return UpdateStatus.Fail;
+ }
+
+ if (specular[0] != color[0] || specular[1] != specular[1] || specular[2] != color[2]) {
+ specular[0] = color[0];
+ specular[1] = color[1];
+ specular[2] = color[2];
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ private boolean isColorValid(Double[] color) {
+ for (Double d : color) {
+ if (d < 0.0 || d > 1.0) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Light.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Light.java
new file mode 100755
index 000000000..a0042ba8c
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Light.java
@@ -0,0 +1,278 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro SOUZA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.lighting;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.legend.Legend.LegendLocation;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Light class
+ * @author Pedro SOUZA
+ */
+public class Light extends GraphicObject {
+
+ public enum LightProperty {POSITION, DIRECTION, TYPE};
+
+ public enum LightType {DIRECTIONAL, POINT;
+
+ public static LightType intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return DIRECTIONAL;
+ case 1:
+ return POINT;
+ default:
+ return null;
+ }
+ }
+ };
+
+
+ /** light position */
+ Double[] position;
+
+ /** light direction */
+ Double[] direction;
+
+ /** light type */
+ LightType type;
+
+ /** the light color */
+ ColorTriplet lightColor;
+
+ public Light() {
+ super();
+ lightColor = new ColorTriplet();
+
+ position = new Double[] {0.0, 0.0, 1.0};
+ direction = new Double[] {0.0, 0.0, 1.0};
+ type = LightType.POINT;
+
+ Double[] dark_gray = new Double[] {0.1, 0.1, 0.1};
+ Double[] white = new Double[] {1.0, 1.0, 1.0};
+ setAmbientColor(dark_gray);
+ setDiffuseColor(white);
+ setSpecularColor(white);
+ }
+
+ /** copy contructor */
+ public Light(Light other) {
+ super();
+ position = new Double[3];
+ direction = new Double[3];
+ type = other.type;
+ lightColor = new ColorTriplet(other.lightColor);
+ setPosition(other.position);
+ setDirection(other.direction);
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ }
+
+ /** returns the light's position */
+ public Double[] getPosition() {
+ Double[] ret = new Double[] {position[0], position[1], position[2]};
+ return ret;
+ }
+
+ /** Sets the light's position */
+ public UpdateStatus setPosition(Double[] pos) {
+ if (pos.length != 3) {
+ return UpdateStatus.Fail;
+ }
+
+ if (position[0] != pos[0] || position[1] != pos[1] || position[2] != pos[2]) {
+ position[0] = pos[0];
+ position[1] = pos[1];
+ position[2] = pos[2];
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** returns the light's direction */
+ public Double[] getDirection() {
+ Double[] ret = new Double[] {direction[0], direction[1], direction[2]};
+ return ret;
+ }
+
+ /** Sets the light's direction */
+ public UpdateStatus setDirection(Double[] dir) {
+ if (dir.length != 3) {
+ return UpdateStatus.Fail;
+ }
+
+ if (direction[0] != dir[0] || direction[1] != dir[1] || direction[2] != dir[2]) {
+ direction[0] = dir[0];
+ direction[1] = dir[1];
+ direction[2] = dir[2];
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** Sets the light's type from an integer */
+ public UpdateStatus setLightTypeAsInteger(Integer i) {
+ if (i >= 0 && i < LightType.values().length) {
+ if (this.type != LightType.values()[i]) {
+ this.type = LightType.values()[i];
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+ return UpdateStatus.Fail;
+ }
+
+ /** Get the light's type as integer */
+ public Integer getLightTypeAsInteger() {
+ return type.ordinal();
+ }
+
+ /** Sets the light's type */
+ public UpdateStatus setLightType(LightType type) {
+ if (this.type != type) {
+ this.type = type;
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** Get the light's type */
+ public LightType getLightType() {
+ return type;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_AMBIENTCOLOR__ :
+ return ColorTriplet.ColorTripletProperty.AMBIENTCOLOR;
+ case __GO_DIFFUSECOLOR__ :
+ return ColorTriplet.ColorTripletProperty.DIFFUSECOLOR;
+ case __GO_SPECULARCOLOR__ :
+ return ColorTriplet.ColorTripletProperty.SPECULARCOLOR;
+ case __GO_LIGHT_TYPE__ :
+ return LightProperty.TYPE;
+ case __GO_POSITION__ :
+ return LightProperty.POSITION;
+ case __GO_DIRECTION__ :
+ return LightProperty.DIRECTION;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property instanceof ColorTriplet.ColorTripletProperty) {
+ ColorTriplet.ColorTripletProperty cp = (ColorTriplet.ColorTripletProperty)property;
+ switch (cp) {
+ case AMBIENTCOLOR:
+ return getAmbientColor();
+ case DIFFUSECOLOR:
+ return getDiffuseColor();
+ case SPECULARCOLOR:
+ return getSpecularColor();
+ }
+ } else if (property instanceof LightProperty) {
+ LightProperty lp = (LightProperty)property;
+ switch (lp) {
+ case TYPE:
+ return getLightTypeAsInteger();
+ case POSITION:
+ return getPosition();
+ case DIRECTION:
+ return getDirection();
+ }
+ }
+
+ return super.getProperty(property);
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property instanceof ColorTriplet.ColorTripletProperty) {
+ ColorTriplet.ColorTripletProperty cp = (ColorTriplet.ColorTripletProperty)property;
+ switch (cp) {
+ case AMBIENTCOLOR:
+ return setAmbientColor((Double[])value);
+ case DIFFUSECOLOR:
+ return setDiffuseColor((Double[])value);
+ case SPECULARCOLOR:
+ return setSpecularColor((Double[])value);
+ }
+ } else if (property instanceof LightProperty) {
+ LightProperty lp = (LightProperty)property;
+ switch (lp) {
+ case TYPE:
+ return setLightTypeAsInteger((Integer)value);
+ case POSITION:
+ return setPosition((Double[])value);
+ case DIRECTION:
+ return setDirection((Double[])value);
+ }
+ }
+
+ return super.setProperty(property, value);
+ }
+
+ /** returns the ambient color of the light*/
+ public Double[] getAmbientColor() {
+ return lightColor.getAmbientColor();
+ }
+
+ /** Sets the ambient color */
+ public UpdateStatus setAmbientColor(Double[] color) {
+ return lightColor.setAmbientColor(color);
+ }
+
+ /** returns the dffuse color of the light*/
+ public Double[] getDiffuseColor() {
+ return lightColor.getDiffuseColor();
+ }
+
+ /** Sets the diffuse color of the light*/
+ public UpdateStatus setDiffuseColor(Double[] color) {
+ return lightColor.setDiffuseColor(color);
+ }
+
+ /** returns the specular color of the light*/
+ public Double[] getSpecularColor() {
+ return lightColor.getSpecularColor();
+ }
+
+ /** Sets the specular color of the light*/
+ public UpdateStatus setSpecularColor(Double[] color) {
+ return lightColor.setSpecularColor(color);
+ }
+
+ public Integer getType() {
+ return __GO_LIGHT__;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Material.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Material.java
new file mode 100755
index 000000000..034282951
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/lighting/Material.java
@@ -0,0 +1,74 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2013 - Pedro SOUZA
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.lighting;
+
+import org.scilab.modules.graphic_objects.lighting.ColorTriplet;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Material class
+ * @author Pedro SOUZA
+ */
+
+public class Material extends ColorTriplet {
+
+ /** material properties */
+ public enum MaterialProperty {COLOR_MATERIAL, SHININESS};
+ /** Specifies if the sufarce color will be used as diffuse color */
+ private Boolean useColorMaterial;
+
+ /** Specular shininess parameter*/
+ private Double shininess;
+
+
+ public Material() {
+ super();
+ useColorMaterial = true;
+ ambient[0] = ambient[1] = ambient[2] = 0.0;
+ diffuse[0] = diffuse[1] = diffuse[2] = 1.0;
+ specular[0] = specular[1] = specular[2] = 1.0;
+ shininess = 2.0;
+ }
+
+ /**
+ * Sets color-material mode, if true
+ * the surface color is used as diffuse color.
+ */
+ public UpdateStatus setColorMaterialMode(Boolean status) {
+ if (useColorMaterial != status) {
+ useColorMaterial = status;
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** returns the color-material status*/
+ public Boolean getColorMaterialMode() {
+ return useColorMaterial;
+ }
+
+ /** Sets shininess level*/
+ public UpdateStatus setShininess(Double s) {
+ if (shininess != s) {
+ shininess = s;
+ return UpdateStatus.Success;
+ }
+ return UpdateStatus.NoChange;
+ }
+
+ /** Gets shininess level*/
+ public Double getShininess() {
+ return shininess;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/polyline/Polyline.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/polyline/Polyline.java
new file mode 100755
index 000000000..0c3892f3a
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/polyline/Polyline.java
@@ -0,0 +1,478 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.polyline;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARROW_SIZE_FACTOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BAR_WIDTH__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLOSED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIPS_COUNT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIPS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_DISPLAY_FNC__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DATATIP_MARK__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_INTERP_COLOR_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_INTERP_COLOR_VECTOR_SET__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_INTERP_COLOR_VECTOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POLYLINE_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_X_SHIFT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Y_SHIFT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_Z_SHIFT__;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.datatip.Datatip;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+/**
+ * Polyline class
+ * @author Manuel JULIACHS
+ */
+public class Polyline extends ClippableContouredObject {
+ /** TBD: data */
+ // Data data -> Data Model
+ /* TODO: properties relative to the data model */
+ /** Polyline properties names */
+ private enum PolylineProperty { CLOSED, ARROWSIZEFACTOR, POLYLINESTYLE,
+ INTERPCOLORVECTOR, INTERPCOLORVECTORSET, INTERPCOLORMODE,
+ XSHIFT, YSHIFT, ZSHIFT, BARWIDTH, DATATIPS, DATATIPSCOUNT, TIP_DISPLAY_FNC, TIP_MARK
+ };
+
+ /** Specifies whether the polyline is closed */
+ private boolean closed;
+
+ /** Determines the arrow size */
+ private double arrowSizeFactor;
+
+ /** Polyline drawing style (normal, staircase, , etc.) */
+ private int polylineStyle;
+
+ /** Interpolation color vector (3- or 4-element array) */
+ private int[] interpColorVector;
+
+ /** Specifies whether the interpolation color vector has been set */
+ private boolean interpColorVectorSet;
+
+ /** Specifies whether interpolated shading is used */
+ private boolean interpColorMode;
+
+ /** Shift applied to the line points along the x-axis */
+ private double[] xShift;
+
+ /** Shift applied to the line points along the y-axis */
+ private double[] yShift;
+
+ /** Shift applied to the line points along the z-axis */
+ private double[] zShift;
+
+ /** Bar width */
+ private double barWidth;
+
+ /** Datatips objects list */
+ private List<Integer> datatips;
+
+ /** Display function*/
+ private String displayFnc;
+
+ private Integer tipMark;
+
+ /** Constructor */
+ public Polyline() {
+ super();
+ closed = false;
+ arrowSizeFactor = 1.0;
+ polylineStyle = 1;
+ interpColorVector = new int[4];
+ interpColorVectorSet = false;
+ interpColorMode = false;
+ xShift = null;
+ yShift = null;
+ zShift = null;
+ barWidth = 0.0;
+ datatips = new ArrayList<Integer>();
+ displayFnc = "";
+ tipMark = 11;
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_CLOSED__ :
+ return PolylineProperty.CLOSED;
+ case __GO_ARROW_SIZE_FACTOR__ :
+ return PolylineProperty.ARROWSIZEFACTOR;
+ case __GO_POLYLINE_STYLE__ :
+ return PolylineProperty.POLYLINESTYLE;
+ case __GO_INTERP_COLOR_VECTOR__ :
+ return PolylineProperty.INTERPCOLORVECTOR;
+ case __GO_INTERP_COLOR_VECTOR_SET__ :
+ return PolylineProperty.INTERPCOLORVECTORSET;
+ case __GO_INTERP_COLOR_MODE__ :
+ return PolylineProperty.INTERPCOLORMODE;
+ case __GO_X_SHIFT__ :
+ return PolylineProperty.XSHIFT;
+ case __GO_Y_SHIFT__ :
+ return PolylineProperty.YSHIFT;
+ case __GO_Z_SHIFT__ :
+ return PolylineProperty.ZSHIFT;
+ case __GO_BAR_WIDTH__ :
+ return PolylineProperty.BARWIDTH;
+ case __GO_DATATIPS__ :
+ return PolylineProperty.DATATIPS;
+ case __GO_DATATIPS_COUNT__ :
+ return PolylineProperty.DATATIPSCOUNT;
+ case __GO_DATATIP_DISPLAY_FNC__ :
+ return PolylineProperty.TIP_DISPLAY_FNC;
+ case __GO_DATATIP_MARK__ :
+ return PolylineProperty.TIP_MARK;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property instanceof PolylineProperty) {
+ switch ((PolylineProperty) property) {
+ case CLOSED:
+ return getClosed();
+ case ARROWSIZEFACTOR:
+ return getArrowSizeFactor();
+ case POLYLINESTYLE:
+ return getPolylineStyle();
+ case INTERPCOLORVECTOR:
+ return getInterpColorVector();
+ case INTERPCOLORVECTORSET:
+ return getInterpColorVectorSet();
+ case INTERPCOLORMODE:
+ return getInterpColorMode();
+ case XSHIFT:
+ return getXShift();
+ case YSHIFT:
+ return getYShift();
+ case ZSHIFT:
+ return getZShift();
+ case BARWIDTH:
+ return getBarWidth();
+ case DATATIPS:
+ return getDatatips();
+ case DATATIPSCOUNT:
+ return datatips.size();
+ case TIP_DISPLAY_FNC:
+ return getDisplayFunction();
+ case TIP_MARK:
+ return getTipMark();
+ }
+ }
+ return super.getProperty(property);
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ synchronized (this) {
+ if (property instanceof PolylineProperty) {
+ switch ((PolylineProperty) property) {
+ case CLOSED:
+ setClosed((Boolean) value);
+ break;
+ case ARROWSIZEFACTOR:
+ return setArrowSizeFactor((Double) value);
+ case POLYLINESTYLE:
+ return setPolylineStyle((Integer) value);
+ case INTERPCOLORVECTOR:
+ setInterpColorVector((Integer[]) value);
+ break;
+ case INTERPCOLORVECTORSET:
+ setInterpColorVectorSet((Boolean) value);
+ break;
+ case INTERPCOLORMODE:
+ return setInterpColorMode((Boolean) value);
+ case XSHIFT:
+ setXShift((double[]) value);
+ break;
+ case YSHIFT:
+ setYShift((double[]) value);
+ break;
+ case ZSHIFT:
+ setZShift((double[]) value);
+ break;
+ case BARWIDTH:
+ setBarWidth((Double) value);
+ break;
+ case DATATIPS:
+ setDatatips((Integer[]) value);
+ break;
+ case TIP_DISPLAY_FNC:
+ setDisplayFunction((String) value);
+ break;
+ case TIP_MARK:
+ setTipMark((Integer) value);
+ break;
+ }
+ }
+ return super.setProperty(property, value);
+ }
+ }
+
+ /**
+ * @return the arrowSizeFactor
+ */
+ public Double getArrowSizeFactor() {
+ return arrowSizeFactor;
+ }
+
+ /**
+ * @param arrowSizeFactor the arrowSizeFactor to set
+ */
+ public UpdateStatus setArrowSizeFactor(Double arrowSizeFactor) {
+ if (this.arrowSizeFactor == arrowSizeFactor) {
+ return UpdateStatus.NoChange;
+ }
+ this.arrowSizeFactor = arrowSizeFactor;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the barWidth
+ */
+ public Double getBarWidth() {
+ return barWidth;
+ }
+
+ /**
+ * @param barWidth the barWidth to set
+ */
+ public UpdateStatus setBarWidth(Double barWidth) {
+ this.barWidth = barWidth;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the closed
+ */
+ public Boolean getClosed() {
+ return closed;
+ }
+
+ /**
+ * @param closed the closed to set
+ */
+ public UpdateStatus setClosed(Boolean closed) {
+ this.closed = closed;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the interpColorMode
+ */
+ public Boolean getInterpColorMode() {
+ return interpColorMode;
+ }
+
+ /**
+ * @param interpColorMode the interpColorMode to set
+ */
+ public UpdateStatus setInterpColorMode(Boolean interpColorMode) {
+ if (this.interpColorMode == interpColorMode) {
+ return UpdateStatus.NoChange;
+ }
+ this.interpColorMode = interpColorMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the interpColorVector
+ */
+ public Integer[] getInterpColorVector() {
+ Integer[] retVector = new Integer[interpColorVector.length];
+ for (int i = 0; i < interpColorVector.length; i++) {
+ retVector[i] = interpColorVector[i];
+ }
+
+ return retVector;
+ }
+
+ /**
+ * @param interpColorVector the interpColorVector to set
+ */
+ public UpdateStatus setInterpColorVector(Integer[] interpColorVector) {
+ if (interpColorVectorSet == false) {
+ interpColorVectorSet = true;
+ }
+
+ for (int i = 0; i < interpColorVector.length; i++) {
+ this.interpColorVector[i] = interpColorVector[i];
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the interpColorVectorSet
+ */
+ public Boolean getInterpColorVectorSet() {
+ return interpColorVectorSet;
+ }
+
+ /**
+ * @param interpColorVectorSet the interpColorVectorSet to set
+ */
+ public UpdateStatus setInterpColorVectorSet(Boolean interpColorVectorSet) {
+ this.interpColorVectorSet = interpColorVectorSet;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the polylineStyle
+ */
+ public Integer getPolylineStyle() {
+ return polylineStyle;
+ }
+
+ /**
+ * @param polylineStyle the polylineStyle to set
+ */
+ public UpdateStatus setPolylineStyle(Integer polylineStyle) {
+ if (this.polylineStyle == polylineStyle) {
+ return UpdateStatus.NoChange;
+ }
+ this.polylineStyle = polylineStyle;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the xShift
+ */
+ public double[] getXShift() {
+ return xShift;
+ }
+
+ /**
+ * @param shift the xShift to set
+ */
+ public UpdateStatus setXShift(double[] shift) {
+ xShift = shift;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the yShift
+ */
+ public double[] getYShift() {
+ return yShift;
+ }
+
+ /**
+ * @param shift the yShift to set
+ */
+ public UpdateStatus setYShift(double[] shift) {
+ yShift = shift;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the zShift
+ */
+ public double[] getZShift() {
+ return zShift;
+ }
+
+ /**
+ * @param shift the zShift to set
+ */
+ public UpdateStatus setZShift(double[] shift) {
+ zShift = shift;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_POLYLINE__;
+ }
+
+ /**
+ * @return datatips
+ */
+ public Integer[] getDatatips() {
+ return datatips.toArray(new Integer[datatips.size()]);
+ }
+
+ /**
+ * @param datatips the datatips to set
+ */
+ private UpdateStatus setDatatips(List<Integer> datatips) {
+ this.datatips = datatips;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param datatips the datatips to set
+ */
+ public UpdateStatus setDatatips(Integer[] datatips) {
+ this.datatips = new LinkedList<Integer>(Arrays.asList(datatips));
+ return UpdateStatus.Success;
+ }
+
+ public String getDisplayFunction() {
+ return displayFnc;
+ }
+
+ public UpdateStatus setDisplayFunction(String fnc) {
+ GraphicController controller = GraphicController.getController();
+ displayFnc = fnc;
+ //update datatips
+ for (int i = 0 ; i < datatips.size() ; i++) {
+ Datatip tip = (Datatip) controller.getObjectFromId(datatips.get(i));
+ tip.updateText();
+ }
+ return UpdateStatus.Success;
+ }
+
+ public Integer getTipMark() {
+ return tipMark;
+ }
+
+ public UpdateStatus setTipMark(Integer tipMark) {
+ if (!this.tipMark.equals(tipMark)) {
+ this.tipMark = tipMark;
+
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.NoChange;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/Rectangle.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/Rectangle.java
new file mode 100755
index 000000000..57e83c08f
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/Rectangle.java
@@ -0,0 +1,167 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.rectangle;
+
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Class Rectangle
+ * @author Manuel JULIACHS
+ */
+public class Rectangle extends ClippableContouredObject {
+ /** Rectangle properties names */
+ private enum RectangleProperty { UPPERLEFTPOINT, WIDTH, HEIGHT };
+
+ /** Upper-left corner (x,y,z) coordinates */
+ private double[] upperLeftPoint;
+
+ /** Width */
+ private double width;
+
+ /** Height */
+ private double height;
+
+ /** Constructor */
+ public Rectangle() {
+ super();
+ upperLeftPoint = new double[3];
+ width = 0.0;
+ height = 0.0;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_UPPER_LEFT_POINT__ :
+ return RectangleProperty.UPPERLEFTPOINT;
+ case __GO_WIDTH__ :
+ return RectangleProperty.WIDTH;
+ case __GO_HEIGHT__ :
+ return RectangleProperty.HEIGHT;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == RectangleProperty.UPPERLEFTPOINT) {
+ return getUpperLeftPoint();
+ } else if (property == RectangleProperty.WIDTH) {
+ return getWidth();
+ } else if (property == RectangleProperty.HEIGHT) {
+ return getHeight();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == RectangleProperty.UPPERLEFTPOINT) {
+ setUpperLeftPoint((Double[]) value);
+ } else if (property == RectangleProperty.WIDTH) {
+ setWidth((Double) value);
+ } else if (property == RectangleProperty.HEIGHT) {
+ setHeight((Double) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the height
+ */
+ public Double getHeight() {
+ return height;
+ }
+
+ /**
+ * @param height the height to set
+ */
+ public UpdateStatus setHeight(Double height) {
+ this.height = height;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the upperLeftPoint
+ */
+ public Double[] getUpperLeftPoint() {
+ Double[] retPoint = new Double[3];
+
+ retPoint[0] = upperLeftPoint[0];
+ retPoint[1] = upperLeftPoint[1];
+ retPoint[2] = upperLeftPoint[2];
+
+ return retPoint;
+ }
+
+ /**
+ * @param upperLeftPoint the upperLeftPoint to set
+ */
+ public UpdateStatus setUpperLeftPoint(Double[] upperLeftPoint) {
+ this.upperLeftPoint[0] = upperLeftPoint[0];
+ this.upperLeftPoint[1] = upperLeftPoint[1];
+ this.upperLeftPoint[2] = upperLeftPoint[2];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the width
+ */
+ public Double getWidth() {
+ return width;
+ }
+
+ /**
+ * @param width the width to set
+ */
+ public UpdateStatus setWidth(Double width) {
+ this.width = width;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_RECTANGLE__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.java
new file mode 100755
index 000000000..28e66379b
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/rectangle/RectangleDecomposer.java
@@ -0,0 +1,220 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.rectangle;
+
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.utils.Utils;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Class RectangleDecomposer
+ * A set of static methods decomposing a rectangle into two triangles.
+ * Vertex indices 0 to 3 respectively correspond to the lower-left, lower-right,
+ * upper-left and upper-right corners.
+ * @author Manuel JULIACHS
+ */
+public class RectangleDecomposer {
+
+ /** The number of vertices of a rectangle. */
+ private static final int NUMBER_VERTICES = 4;
+
+ /** The triangle indices of a decomposed rectangle */
+ private static final int [] triangleIndices = {0, 1, 3, 0, 3, 2};
+
+ /** The line segment indices of a decomposed rectangle */
+ private static final int [] lineIndices = {0, 1, 1, 3, 3, 2, 2, 0};
+
+ /**
+ * @return the number of data elements.
+ */
+ public static int getDataSize() {
+ return NUMBER_VERTICES;
+ }
+
+ /**
+ * @return the number of triangle indices.
+ */
+ public static int getIndicesSize() {
+ return triangleIndices.length;
+ }
+
+ /**
+ * @return the number of line segment indices.
+ */
+ public static int getWireIndicesSize() {
+ return lineIndices.length;
+ }
+
+ /**
+ * Fills the input buffer with vertex data from the given object.
+ * @param the buffer to fill.
+ * @param the given object id.
+ * @param the number of coordinates taken by one element in the buffer.
+ * @param the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param the conversion scale factor to apply to data.
+ * @param the conversion translation value to apply to data.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ */
+ public static void fillVertices(FloatBuffer buffer, Integer id, int elementsSize,
+ int coordinateMask, double[] scale, double[] translation, int logMask) {
+
+ /* The x coordinates of the lower-left and upper-right corners */
+ double [] xcoords;
+ /* The y coordinates of the lower-left and upper-right corners */
+ double [] ycoords;
+ /* The rectangle's z coordinate */
+ double zcoord;
+
+ xcoords = new double[2];
+ ycoords = new double[2];
+
+ Double [] upperLeftPoint = (Double []) GraphicController.getController().getProperty(id, __GO_UPPER_LEFT_POINT__);
+ Double width = (Double) GraphicController.getController().getProperty(id, __GO_WIDTH__);
+ Double height = (Double) GraphicController.getController().getProperty(id, __GO_HEIGHT__);
+
+ xcoords[0] = upperLeftPoint[0];
+ xcoords[1] = upperLeftPoint[0] + width;
+
+ ycoords[0] = upperLeftPoint[1] - height;
+ ycoords[1] = upperLeftPoint[1];
+
+ zcoord = upperLeftPoint[2];
+
+ /* Vertices are output in the following order: lower-left, lower-right, upper-left and upper-right. */
+ if ((coordinateMask & 0x1) != 0) {
+ if ((logMask & 0x1) != 0) {
+ xcoords[0] = Math.log10(xcoords[0]);
+ xcoords[1] = Math.log10(xcoords[1]);
+ }
+
+ xcoords[0] = xcoords[0] * scale[0] + translation[0];
+ xcoords[1] = xcoords[1] * scale[0] + translation[0];
+
+ buffer.put(0, (float) xcoords[0]);
+ buffer.put(elementsSize, (float) xcoords[1]);
+ buffer.put(2 * elementsSize, (float) xcoords[0]);
+ buffer.put(3 * elementsSize, (float) xcoords[1]);
+ }
+
+ if ((coordinateMask & 0x2) != 0) {
+ if ((logMask & 0x2) != 0) {
+ ycoords[0] = Math.log10(ycoords[0]);
+ ycoords[1] = Math.log10(ycoords[1]);
+ }
+
+ ycoords[0] = ycoords[0] * scale[1] + translation[1];
+ ycoords[1] = ycoords[1] * scale[1] + translation[1];
+
+ buffer.put(1, (float) ycoords[0]);
+ buffer.put(elementsSize + 1, (float) ycoords[0]);
+ buffer.put(2 * elementsSize + 1, (float) ycoords[1]);
+ buffer.put(3 * elementsSize + 1, (float) ycoords[1]);
+ }
+
+ if ((coordinateMask & 0x4) != 0) {
+ if ((logMask & 0x4) != 0) {
+ zcoord = Math.log10(zcoord);
+ }
+
+ zcoord = zcoord * scale[2] + translation[2];
+
+ buffer.put(2, (float) zcoord);
+ buffer.put(elementsSize + 2, (float) zcoord);
+ buffer.put(2 * elementsSize + 2, (float) zcoord);
+ buffer.put(3 * elementsSize + 2, (float) zcoord);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8) != 0) {
+ buffer.put(3, 1.0f);
+ buffer.put(elementsSize + 3, 1.0f);
+ buffer.put(2 * elementsSize + 3, 1.0f);
+ buffer.put(3 * elementsSize + 3, 1.0f);
+ }
+ }
+
+ /**
+ * Fills the input buffer with triangle index data from the given object.
+ * @param the buffer to fill.
+ * @param the given object id.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid = false;
+
+ Double [] upperLeftPoint = (Double []) GraphicController.getController().getProperty(id, __GO_UPPER_LEFT_POINT__);
+ Double width = (Double) GraphicController.getController().getProperty(id, __GO_WIDTH__);
+ Double height = (Double) GraphicController.getController().getProperty(id, __GO_HEIGHT__);
+
+ /* Indices are output only if all the rectangle's values are valid. */
+ if (Utils.isValid(upperLeftPoint[0], upperLeftPoint[1], upperLeftPoint[2])
+ && Utils.isValid(width) && Utils.isValid(height)) {
+ valid = true;
+ }
+
+ /*
+ * Only the lower-left corner's log validity is tested, since width and height are supposed
+ * to be greater than or equal to 0 .
+ */
+ if (logMask != 0) {
+ valid = valid && Utils.isLogValid(upperLeftPoint[0], upperLeftPoint[1] - height, upperLeftPoint[2], logMask);
+ }
+
+ if (valid) {
+ buffer.put(triangleIndices);
+ return triangleIndices.length;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Fills the input buffer with segment index data from the given object.
+ * @param the buffer to fill.
+ * @param the given object id.
+ * @param the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillWireIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid = false;
+
+ Double [] upperLeftPoint = (Double []) GraphicController.getController().getProperty(id, __GO_UPPER_LEFT_POINT__);
+ Double width = (Double) GraphicController.getController().getProperty(id, __GO_WIDTH__);
+ Double height = (Double) GraphicController.getController().getProperty(id, __GO_HEIGHT__);
+
+ /* Segment indices are output only if all the rectangle's values are valid. */
+ if (Utils.isValid(upperLeftPoint[0], upperLeftPoint[1], upperLeftPoint[2])
+ && Utils.isValid(width) && Utils.isValid(height)) {
+ valid = true;
+ }
+
+ /*
+ * Only the lower-left corner's log validity is tested, since width and height are supposed
+ * to be greater than or equal to 0 .
+ */
+ if (logMask != 0) {
+ valid = valid && Utils.isLogValid(upperLeftPoint[0], upperLeftPoint[1] - height, upperLeftPoint[2], logMask);
+ }
+
+ if (valid) {
+ buffer.put(lineIndices);
+ return lineIndices.length;
+ } else {
+ return 0;
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Fac3d.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Fac3d.java
new file mode 100755
index 000000000..b84a1934d
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Fac3d.java
@@ -0,0 +1,143 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.surface;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Fac3d class
+ * @author Manuel JULIACHS
+ */
+public class Fac3d extends Surface {
+ /** Fac3d properties names */
+ private enum Fac3dProperty { DATAMAPPING };
+
+ /** Data mapping type */
+ private enum DataMapping { SCALED, DIRECT;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the data mapping enum
+ */
+ public static DataMapping intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return DataMapping.SCALED;
+ case 1:
+ return DataMapping.DIRECT;
+ default:
+ return null;
+ }
+ }
+ }
+
+ /** Specifies how colors are mapped to scalar values */
+ private DataMapping dataMapping;
+
+ /** Constructor */
+ public Fac3d() {
+ super();
+ dataMapping = DataMapping.DIRECT;
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ if (propertyName == __GO_DATA_MAPPING__) {
+ return Fac3dProperty.DATAMAPPING;
+ } else {
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == Fac3dProperty.DATAMAPPING) {
+ return getDataMapping();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == Fac3dProperty.DATAMAPPING) {
+ setDataMapping((Integer) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the dataMapping
+ */
+ public Integer getDataMapping() {
+ return getDataMappingAsEnum().ordinal();
+ }
+
+ /**
+ * @return the dataMapping
+ */
+ public DataMapping getDataMappingAsEnum() {
+ return dataMapping;
+ }
+
+ /**
+ * @param dataMapping the dataMapping to set
+ */
+ public UpdateStatus setDataMapping(Integer dataMapping) {
+ setDataMappingAsEnum(DataMapping.intToEnum(dataMapping));
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @param dataMapping the dataMapping to set
+ */
+ public UpdateStatus setDataMappingAsEnum(DataMapping dataMapping) {
+ this.dataMapping = dataMapping;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_FAC3D__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Plot3d.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Plot3d.java
new file mode 100755
index 000000000..9ef226feb
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Plot3d.java
@@ -0,0 +1,45 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.surface;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+/**
+ * Plot3d class
+ * @author Manuel JULIACHS
+ */
+public class Plot3d extends Surface {
+ // TBD Data -> Data Model
+ /* TBD: properties relative to the data model */
+
+ /** Constructor */
+ public Plot3d() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_PLOT3D__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Surface.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Surface.java
new file mode 100755
index 000000000..3957af87d
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/surface/Surface.java
@@ -0,0 +1,323 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.surface;
+
+import org.scilab.modules.graphic_objects.contouredObject.ClippableContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+import org.scilab.modules.graphic_objects.lighting.ColorTriplet;
+import org.scilab.modules.graphic_objects.lighting.Material;
+
+/**
+ * Surface class
+ * @author Manuel JULIACHS
+ */
+public abstract class Surface extends ClippableContouredObject {
+ // TBD Data -> Data Model
+ /* TBD: properties relative to the data model */
+ /** Surface properties names */
+ private enum SurfaceProperty { SURFACEMODE, COLORMODE, COLORFLAG, HIDDENCOLOR };
+
+ /** Specifies whether the surface is drawn or not */
+ private boolean surfaceMode;
+
+ /** Specifies the front face color (when colorFlag == 0) */
+ private int colorMode;
+
+ /** Specifies how facet colors are computed */
+ private int colorFlag;
+
+ /** Back-facing facets color */
+ private int hiddenColor;
+
+ /** material properties used for lighting */
+ private Material material;
+
+ /** Constructor */
+ public Surface() {
+ super();
+ surfaceMode = false;
+ colorMode = 0;
+ colorFlag = 0;
+ hiddenColor = 0;
+ material = new Material();
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_SURFACE_MODE__ :
+ return SurfaceProperty.SURFACEMODE;
+ case __GO_COLOR_MODE__ :
+ return SurfaceProperty.COLORMODE;
+ case __GO_COLOR_FLAG__ :
+ return SurfaceProperty.COLORFLAG;
+ case __GO_HIDDEN_COLOR__ :
+ return SurfaceProperty.HIDDENCOLOR;
+ case __GO_AMBIENTCOLOR__ :
+ return ColorTriplet.ColorTripletProperty.AMBIENTCOLOR;
+ case __GO_DIFFUSECOLOR__ :
+ return ColorTriplet.ColorTripletProperty.DIFFUSECOLOR;
+ case __GO_SPECULARCOLOR__ :
+ return ColorTriplet.ColorTripletProperty.SPECULARCOLOR;
+ case __GO_COLOR_MATERIAL__ :
+ return Material.MaterialProperty.COLOR_MATERIAL;
+ case __GO_MATERIAL_SHININESS__ :
+ return Material.MaterialProperty.SHININESS;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property instanceof SurfaceProperty) {
+ SurfaceProperty sp = (SurfaceProperty)property;
+ switch (sp) {
+ case SURFACEMODE:
+ return getSurfaceMode();
+ case COLORMODE:
+ return getColorMode();
+ case COLORFLAG:
+ return getColorFlag();
+ case HIDDENCOLOR:
+ return getHiddenColor();
+ }
+ } else if (property instanceof Material.MaterialProperty) {
+ Material.MaterialProperty mp = (Material.MaterialProperty)property;
+ switch (mp) {
+ case COLOR_MATERIAL:
+ return getColorMaterialMode();
+ case SHININESS:
+ return getMaterialShininess();
+ }
+ } else if (property instanceof ColorTriplet.ColorTripletProperty) {
+ ColorTriplet.ColorTripletProperty cp = (ColorTriplet.ColorTripletProperty)property;
+ switch (cp) {
+ case AMBIENTCOLOR:
+ return getMaterialAmbientColor();
+ case DIFFUSECOLOR:
+ return getMaterialDiffuseColor();
+ case SPECULARCOLOR:
+ return getMaterialSpecularColor();
+ }
+ }
+ return super.getProperty(property);
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property instanceof SurfaceProperty) {
+ SurfaceProperty sp = (SurfaceProperty)property;
+ switch (sp) {
+ case SURFACEMODE:
+ setSurfaceMode((Boolean) value);
+ break;
+ case COLORMODE:
+ setColorMode((Integer) value);
+ break;
+ case COLORFLAG:
+ setColorFlag((Integer) value);
+ break;
+ case HIDDENCOLOR:
+ setHiddenColor((Integer) value);
+ break;
+ }
+ } else if (property instanceof Material.MaterialProperty) {
+ Material.MaterialProperty mp = (Material.MaterialProperty)property;
+ switch (mp) {
+ case COLOR_MATERIAL:
+ return setColorMaterialMode((Boolean)value);
+ case SHININESS:
+ return setMaterialShininess((Double)value);
+ }
+ } else if (property instanceof ColorTriplet.ColorTripletProperty) {
+ ColorTriplet.ColorTripletProperty cp = (ColorTriplet.ColorTripletProperty)property;
+ switch (cp) {
+ case AMBIENTCOLOR:
+ return setMaterialAmbientColor((Double[])value);
+ case DIFFUSECOLOR:
+ return setMaterialDiffuseColor((Double[])value);
+ case SPECULARCOLOR:
+ return setMaterialSpecularColor((Double[])value);
+ }
+ } else {
+ return super.setProperty(property, value);
+ }
+ return UpdateStatus.Success;
+ }
+
+
+ /**
+ * @return the surfaceMode
+ */
+ public Boolean getSurfaceMode() {
+ return surfaceMode;
+ }
+
+ /**
+ * @param surfaceMode the surfaceMode to set
+ */
+ public UpdateStatus setSurfaceMode(Boolean surfaceMode) {
+ this.surfaceMode = surfaceMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the colorMode
+ */
+ public Integer getColorMode() {
+ return colorMode;
+ }
+
+ /**
+ * @param colorMode the colorMode to set
+ */
+ public UpdateStatus setColorMode(Integer colorMode) {
+ this.colorMode = colorMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the colorFlag
+ */
+ public Integer getColorFlag() {
+ return colorFlag;
+ }
+
+ /**
+ * @param colorFlag the colorFlag to set
+ */
+ public UpdateStatus setColorFlag(Integer colorFlag) {
+ this.colorFlag = colorFlag;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the hiddenColor
+ */
+ public Integer getHiddenColor() {
+ return hiddenColor;
+ }
+
+ /**
+ * @param hiddenColor the hiddenColor to set
+ */
+ public UpdateStatus setHiddenColor(Integer hiddenColor) {
+ this.hiddenColor = hiddenColor;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Sets the color-material mode, that is,
+ * use the surface color as diffuse color
+ * @param status if true enables color-material
+ */
+ public UpdateStatus setColorMaterialMode(Boolean status) {
+ return material.setColorMaterialMode(status);
+ }
+
+ /**
+ * @return if color-material is enabled.
+ */
+ public Boolean getColorMaterialMode() {
+ return material.getColorMaterialMode();
+ }
+
+ /**
+ * @return the ambient color of the material.
+ */
+ public Double[] getMaterialAmbientColor() {
+ return material.getAmbientColor();
+ }
+
+ /**
+ * @param the new ambient color of the material.
+ */
+ public UpdateStatus setMaterialAmbientColor(Double[] color) {
+ return material.setAmbientColor(color);
+ }
+
+ /**
+ * @return the diffuse color of the material.
+ */
+ public Double[] getMaterialDiffuseColor() {
+ return material.getDiffuseColor();
+ }
+
+ /**
+ * @param the new diffuse color of the material.
+ */
+ public UpdateStatus setMaterialDiffuseColor(Double[] color) {
+ return material.setDiffuseColor(color);
+ }
+
+ /**
+ * @return the specular color of the material.
+ */
+ public Double[] getMaterialSpecularColor() {
+ return material.getSpecularColor();
+ }
+
+ /**
+ * @param the new specular color of the material.
+ */
+ public UpdateStatus setMaterialSpecularColor(Double[] color) {
+ return material.setSpecularColor(color);
+ }
+
+ /**
+ * @return the shininess level of the material.
+ */
+ public Double getMaterialShininess() {
+ return material.getShininess();
+ }
+
+ /**
+ * @param the new shininess level of the material.
+ */
+ public UpdateStatus setMaterialShininess(Double s) {
+ return material.setShininess(s);
+ }
+
+ /**
+ * @return the material.
+ */
+ public Material getMaterial() {
+ return material;
+ }
+
+ /**
+ * @param the new material.
+ */
+ public UpdateStatus setMaterial(Material material) {
+ if (material != null) {
+ this.material = material;
+ }
+ return UpdateStatus.Success;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.java
new file mode 100755
index 000000000..e264a2282
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/ClippableTextObject.java
@@ -0,0 +1,170 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.textObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClippablePropertyType;
+import org.scilab.modules.graphic_objects.graphicObject.ClippableProperty.ClipStateType;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * ClippableTextObject
+ * @author Manuel JULIACHS
+ */
+public abstract class ClippableTextObject extends TextObject {
+ /** ClippableTextObject properties names */
+ private enum ClippableTextObjectProperty { CLIPPROPERTY };
+
+ /** Clipping state */
+ private ClippableProperty clipProperty;
+
+ /** Constructor */
+ public ClippableTextObject() {
+ clipProperty = new ClippableProperty();
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_CLIP_PROPERTY__ :
+ return ClippableTextObjectProperty.CLIPPROPERTY;
+ case __GO_CLIP_STATE__ :
+ return ClippablePropertyType.CLIPSTATE;
+ case __GO_CLIP_BOX__ :
+ return ClippablePropertyType.CLIPBOX;
+ case __GO_CLIP_BOX_SET__ :
+ return ClippablePropertyType.CLIPBOXSET;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ClippableTextObjectProperty.CLIPPROPERTY) {
+ return getClipProperty();
+ } else if (property == ClippablePropertyType.CLIPSTATE) {
+ return getClipState();
+ } else if (property == ClippablePropertyType.CLIPBOX) {
+ return getClipBox();
+ } else if (property == ClippablePropertyType.CLIPBOXSET) {
+ return getClipBoxSet();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ClippableTextObjectProperty.CLIPPROPERTY) {
+ setClipProperty((ClippableProperty) value);
+ } else if (property == ClippablePropertyType.CLIPSTATE) {
+ setClipState((Integer) value);
+ } else if (property == ClippablePropertyType.CLIPBOX) {
+ setClipBox((Double[]) value);
+ } else if (property == ClippablePropertyType.CLIPBOXSET) {
+ setClipBoxSet((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the clipProperty
+ */
+ public ClippableProperty getClipProperty() {
+ return clipProperty;
+ }
+
+ /**
+ * @param clipProperty the clipProperty to set
+ */
+ public UpdateStatus setClipProperty(ClippableProperty clipProperty) {
+ this.clipProperty = clipProperty;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the clipBox
+ */
+ public Double[] getClipBox() {
+ return clipProperty.getClipBox();
+ }
+
+ /**
+ * @param clipBox the clipBox to set
+ */
+ public UpdateStatus setClipBox(Double[] clipBox) {
+ return clipProperty.setClipBox(clipBox);
+ }
+
+ /**
+ * @return the clipState
+ */
+ public Integer getClipState() {
+ return getClipStateAsEnum().ordinal();
+ }
+
+ /**
+ * @return the clipState
+ */
+ public ClipStateType getClipStateAsEnum() {
+ return clipProperty.getClipState();
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public UpdateStatus setClipState(Integer clipState) {
+ return setClipStateAsEnum(ClipStateType.intToEnum(clipState));
+ }
+
+ /**
+ * @param clipState the clipState to set
+ */
+ public UpdateStatus setClipStateAsEnum(ClipStateType clipState) {
+ return clipProperty.setClipState(clipState);
+ }
+
+ /**
+ * @return the clipBoxSet
+ */
+ public Boolean getClipBoxSet() {
+ return clipProperty.getClipBoxSet();
+ }
+
+ /**
+ * @param clipBoxSet the clipBoxSet to set
+ */
+ public UpdateStatus setClipBoxSet(Boolean clipBoxSet) {
+ return clipProperty.setClipBoxSet(clipBoxSet);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Font.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Font.java
new file mode 100755
index 000000000..1ac76aaf6
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Font.java
@@ -0,0 +1,179 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.textObject;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_FRACTIONAL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_STYLE__;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Font class
+ * @author Manuel JULIACHS
+ */
+public class Font {
+ /** Font properties names */
+ public enum FontProperty { STYLE, SIZE, COLOR, FRACTIONAL, UNKNOWNPROPERTY };
+
+ /** Font style */
+ private int style;
+
+ /** Font size */
+ private double size;
+
+ /** Font color */
+ private int color;
+
+ /** Specifies whether fractional font sizes are used or not */
+ private boolean fractional;
+
+ /** Constructor */
+ public Font() {
+ this.style = 6;
+ this.size = 1.0;
+ this.color = -1;
+ this.fractional = false;
+ }
+
+ /**
+ * Copy constructor
+ * @param
+ */
+ public Font(Font font) {
+ style = font.style;
+ size = font.size;
+ color = font.color;
+ fractional = font.fractional;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(String propertyName) {
+ if (propertyName.equals(__GO_FONT_STYLE__)) {
+ return FontProperty.STYLE;
+ } else if (propertyName.equals(__GO_FONT_SIZE__)) {
+ return FontProperty.SIZE;
+ } else if (propertyName.equals(__GO_FONT_COLOR__)) {
+ return FontProperty.COLOR;
+ } else if (propertyName.equals(__GO_FONT_FRACTIONAL__)) {
+ return FontProperty.FRACTIONAL;
+ } else {
+ return FontProperty.UNKNOWNPROPERTY;
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == FontProperty.STYLE) {
+ return getStyle();
+ } else if (property == FontProperty.SIZE) {
+ return getSize();
+ } else if (property == FontProperty.COLOR) {
+ return getColor();
+ } else if (property == FontProperty.FRACTIONAL) {
+ return getFractional();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public boolean setProperty(Object property, Object value) {
+ if (property == FontProperty.STYLE) {
+ setStyle((Integer) value);
+ } else if (property == FontProperty.SIZE) {
+ setSize((Double) value);
+ } else if (property == FontProperty.COLOR) {
+ setColor((Integer) value);
+ } else if (property == FontProperty.FRACTIONAL) {
+ setFractional((Boolean) value);
+ }
+
+ return true;
+ }
+
+ /**
+ * @return the color
+ */
+ public Integer getColor() {
+ return color;
+ }
+
+ /**
+ * @param color the color to set
+ */
+ public UpdateStatus setColor(Integer color) {
+ this.color = color;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the fractional
+ */
+ public Boolean getFractional() {
+ return fractional;
+ }
+
+ /**
+ * @param fractional the fractional to set
+ */
+ public UpdateStatus setFractional(Boolean fractional) {
+ this.fractional = fractional;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the size
+ */
+ public Double getSize() {
+ return size;
+ }
+
+ /**
+ * @param size the size to set
+ */
+ public UpdateStatus setSize(Double size) {
+ this.size = size;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the style
+ */
+ public Integer getStyle() {
+ return style;
+ }
+
+ /**
+ * @param style the style to set
+ */
+ public UpdateStatus setStyle(Integer style) {
+ this.style = style;
+ return UpdateStatus.Success;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/FormattedText.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/FormattedText.java
new file mode 100755
index 000000000..fbd48e896
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/FormattedText.java
@@ -0,0 +1,92 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.textObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * FormattedText class
+ * @author Manuel JULIACHS
+ */
+public class FormattedText {
+ /** FormattedText properties names */
+ public enum FormattedTextProperty { TEXT, FONT };
+
+ /** Text */
+ private String text;
+
+ /** Font */
+ private Font font;
+
+ /** Constructor */
+ public FormattedText() {
+ text = "";
+ font = new Font();
+ }
+
+ /** Constructor */
+ public FormattedText(String text, Font font) {
+ this.text = text == null ? "" : text;
+ this.font = font;
+ }
+
+ /**
+ * Copy constructor
+ * @param formText the formatted text to copy
+ */
+ public FormattedText(FormattedText formText) {
+ this.text = new String(formText.getText());
+ this.font = new Font(formText.getFont());
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof FormattedText) {
+ FormattedText ft = (FormattedText) o;
+ return ft.text.equals(text) && ft.font.equals(font);
+ }
+
+ return false;
+ }
+
+ /**
+ * @return the font
+ */
+ public Font getFont() {
+ return font;
+ }
+
+ /**
+ * @param font the font to set
+ */
+ public UpdateStatus setFont(Font font) {
+ this.font = font;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the text
+ */
+ public String getText() {
+ return text;
+ }
+
+ /**
+ * @param text the text to set
+ */
+ public UpdateStatus setText(String text) {
+ this.text = text == null ? "" : text;
+ return UpdateStatus.Success;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Text.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Text.java
new file mode 100755
index 000000000..65ad8a5ba
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/Text.java
@@ -0,0 +1,408 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.textObject;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Text class
+ * @author Manuel JULIACHS
+ */
+public class Text extends ClippableTextObject {
+ /** Text properties names */
+ private enum TextProperty { FONTANGLE, POSITION, CORNERS, ALIGNMENT, BOX, TEXTBOX, TEXTBOXMODE, AUTODIMENSIONING };
+
+ /** Alignment */
+ public enum Alignment { LEFT, CENTER, RIGHT;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the alignment enum
+ */
+ public static Alignment intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return Alignment.LEFT;
+ case 1:
+ return Alignment.CENTER;
+ case 2:
+ return Alignment.RIGHT;
+ default:
+ return null;
+ }
+ }
+
+ };
+
+ /** Text box mode */
+ private enum TextBoxMode { OFF, CENTERED, FILLED;
+
+ /**
+ * Converts an integer to the corresponding enum
+ * @param intValue the integer value
+ * @return the text box mode enum
+ */
+ public static TextBoxMode intToEnum(Integer intValue) {
+ switch (intValue) {
+ case 0:
+ return TextBoxMode.OFF;
+ case 1:
+ return TextBoxMode.CENTERED;
+ case 2:
+ return TextBoxMode.FILLED;
+ default:
+ return null;
+ }
+ }
+
+ };
+
+ /** Text angle */
+ private double fontAngle;
+
+ /** 3D coordinates position (3-element array) */
+ private double[] position;
+
+ /**
+ * The 3D coordinates of the Text's four corners.
+ * They are stored in clockwise order, starting from the lower-left corner.
+ */
+ private double[][] corners;
+
+ /** Text alignment */
+ private Alignment alignment;
+
+ /** Specifies whether a box is drawn */
+ private boolean box;
+
+ /** Text box dimensions (2-element array) */
+ private double[] textBox;
+
+ /** Text box mode */
+ private TextBoxMode textBoxMode;
+
+ /** Auto-dimensioning */
+ private boolean autoDimensioning;
+
+ /** Constructor */
+ public Text() {
+ super();
+ fontAngle = 0.0;
+ position = new double[3];
+ corners = new double[4][3];
+ alignment = Alignment.CENTER;
+ box = false;
+ textBox = new double[2];
+ textBoxMode = TextBoxMode.OFF;
+ autoDimensioning = false;
+ }
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_FONT_ANGLE__ :
+ return TextProperty.FONTANGLE;
+ case __GO_POSITION__ :
+ return TextProperty.POSITION;
+ case __GO_CORNERS__ :
+ return TextProperty.CORNERS;
+ case __GO_ALIGNMENT__ :
+ return TextProperty.ALIGNMENT;
+ case __GO_BOX__ :
+ return TextProperty.BOX;
+ case __GO_TEXT_BOX__ :
+ return TextProperty.TEXTBOX;
+ case __GO_TEXT_BOX_MODE__ :
+ return TextProperty.TEXTBOXMODE;
+ case __GO_AUTO_DIMENSIONING__ :
+ return TextProperty.AUTODIMENSIONING;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == TextProperty.FONTANGLE) {
+ return getFontAngle();
+ } else if (property == TextProperty.POSITION) {
+ return getPosition();
+ } else if (property == TextProperty.CORNERS) {
+ return getCorners();
+ } else if (property == TextProperty.ALIGNMENT) {
+ return getAlignment();
+ } else if (property == TextProperty.BOX) {
+ return getBox();
+ } else if (property == TextProperty.TEXTBOX) {
+ return getTextBox();
+ } else if (property == TextProperty.TEXTBOXMODE) {
+ return getTextBoxMode();
+ } else if (property == TextProperty.AUTODIMENSIONING) {
+ return getAutoDimensioning();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == TextProperty.FONTANGLE) {
+ setFontAngle((Double) value);
+ } else if (property == TextProperty.POSITION) {
+ setPosition((Double[]) value);
+ } else if (property == TextProperty.CORNERS) {
+ setCorners((Double[]) value);
+ } else if (property == TextProperty.ALIGNMENT) {
+ setAlignment((Integer) value);
+ } else if (property == TextProperty.BOX) {
+ setBox((Boolean) value);
+ } else if (property == TextProperty.TEXTBOX) {
+ setTextBox((Double[]) value);
+ } else if (property == TextProperty.TEXTBOXMODE) {
+ setTextBoxMode((Integer) value);
+ } else if (property == TextProperty.AUTODIMENSIONING) {
+ setAutoDimensioning((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the alignment
+ */
+ public Integer getAlignment() {
+ return getAlignmentAsEnum().ordinal();
+ }
+
+ /**
+ * @return the alignment
+ */
+ public Alignment getAlignmentAsEnum() {
+ return alignment;
+ }
+
+ /**
+ * @param alignment the alignment to set
+ */
+ public UpdateStatus setAlignment(Integer alignment) {
+ return setAlignmentAsEnum(Alignment.intToEnum(alignment));
+ }
+
+ /**
+ * @param alignment the alignment to set
+ */
+ public UpdateStatus setAlignmentAsEnum(Alignment alignment) {
+ this.alignment = alignment;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the autoDimensioning
+ */
+ public Boolean getAutoDimensioning() {
+ return autoDimensioning;
+ }
+
+ /**
+ * @param autoDimensioning the autoDimensioning to set
+ */
+ public UpdateStatus setAutoDimensioning(Boolean autoDimensioning) {
+ this.autoDimensioning = autoDimensioning;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the box
+ */
+ public Boolean getBox() {
+ return box;
+ }
+
+ /**
+ * @param box the box to set
+ */
+ public UpdateStatus setBox(Boolean box) {
+ this.box = box;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the fontAngle
+ */
+ public Double getFontAngle() {
+ return fontAngle;
+ }
+
+ /**
+ * @param fontAngle the fontAngle to set
+ */
+ public UpdateStatus setFontAngle(Double fontAngle) {
+ this.fontAngle = fontAngle;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the position
+ */
+ public Double[] getPosition() {
+ Double[] retPosition = new Double[3];
+ retPosition[0] = position[0];
+ retPosition[1] = position[1];
+ retPosition[2] = position[2];
+
+ return retPosition;
+ }
+
+ /**
+ * @param position the position to set
+ */
+ public UpdateStatus setPosition(Double[] position) {
+ this.position[0] = position[0];
+ this.position[1] = position[1];
+ this.position[2] = position[2];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Returns the coordinates of the Text's corners
+ * Coordinates are returned as consecutive (x,y,z) triplets, each triplet
+ * corresponding to one corner, starting from the lower-left one and
+ * going in clockwise order.
+ * @return the corners' coordinates (12-element array)
+ */
+ public Double[] getCorners() {
+ Double[] retCorners = new Double[12];
+
+ for (int i = 0; i < 4; i++) {
+ for (int j = 0; j < 3; j++) {
+ retCorners[3 * i + j] = corners[i][j];
+ }
+ }
+
+ return retCorners;
+ }
+
+ /**
+ * Sets the coordinates of the Text's corners
+ * The coordinates to set are given as consecutive (x,y,z) triplets, each triplet
+ * corresponding to one corner, starting from the lower-left one and going in
+ * clockwise order.
+ * @param coordinates the corners' coordinates (12-element array)
+ */
+ public UpdateStatus setCorners(Double[] coordinates) {
+ if (coordinates.length != 12) {
+ return UpdateStatus.NoChange;
+ }
+
+ corners[0][0] = coordinates[0];
+ corners[0][1] = coordinates[1];
+ corners[0][2] = coordinates[2];
+
+ corners[1][0] = coordinates[3];
+ corners[1][1] = coordinates[4];
+ corners[1][2] = coordinates[5];
+
+ corners[2][0] = coordinates[6];
+ corners[2][1] = coordinates[7];
+ corners[2][2] = coordinates[8];
+
+ corners[3][0] = coordinates[9];
+ corners[3][1] = coordinates[10];
+ corners[3][2] = coordinates[11];
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the textBox
+ */
+ public Double[] getTextBox() {
+ Double[] retTextBox = new Double[2];
+ retTextBox[0] = textBox[0];
+ retTextBox[1] = textBox[1];
+
+ return retTextBox;
+ }
+
+ /**
+ * @param textBox the textBox to set
+ */
+ public UpdateStatus setTextBox(Double[] textBox) {
+ this.textBox[0] = textBox[0];
+ this.textBox[1] = textBox[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the textBoxMode
+ */
+ public Integer getTextBoxMode() {
+ return getTextBoxModeAsEnum().ordinal();
+ }
+
+ /**
+ * @return the textBoxMode
+ */
+ public TextBoxMode getTextBoxModeAsEnum() {
+ return textBoxMode;
+ }
+
+ /**
+ * @param textBoxMode the textBoxMode to set
+ */
+ public UpdateStatus setTextBoxMode(Integer textBoxMode) {
+ return setTextBoxModeAsEnum(TextBoxMode.intToEnum(textBoxMode));
+ }
+
+ /**
+ * @param textBoxMode the textBoxMode to set
+ */
+ public UpdateStatus setTextBoxModeAsEnum(TextBoxMode textBoxMode) {
+ this.textBoxMode = textBoxMode;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_TEXT__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/TextObject.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/TextObject.java
new file mode 100755
index 000000000..728872d77
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/textObject/TextObject.java
@@ -0,0 +1,340 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.textObject;
+
+import org.scilab.modules.graphic_objects.contouredObject.ContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_FRACTIONAL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FONT_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FORMATTED_TEXT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TEXT_ARRAY_DIMENSIONS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TEXT_STRINGS__;
+
+
+/**
+ * TextObject class
+ * @author Manuel JULIACHS
+ */
+public abstract class TextObject extends ContouredObject {
+ /** TextObject properties names */
+ protected enum TextObjectProperty { TEXT, TEXT_ARRAY_DIMENSIONS };
+
+ /**
+ * Formatted text objects array, row-major order.
+ * For now, elements are supposed to have identical font properties values,
+ * hence the current associated get/set methods implementation.
+ */
+ protected FormattedText[] text;
+
+ /** Text array dimensions (number of rows, number of columns) */
+ private int[] dimensions;
+
+ /** Constructor */
+ public TextObject() {
+ super();
+
+ dimensions = new int[2];
+ dimensions[0] = 1;
+ dimensions[1] = 1;
+
+ text = new FormattedText[1];
+ text[0] = new FormattedText();
+ }
+
+ /**
+ * Clone method
+ */
+ public TextObject clone() {
+ TextObject copy = (TextObject) super.clone();
+
+ copy.dimensions = new int[2];
+ copy.dimensions[0] = dimensions[0];
+ copy.dimensions[1] = dimensions[1];
+ copy.text = new FormattedText[dimensions[0] * dimensions[1]];
+
+ /* Actually copies the FormattedText objects */
+ copy.setText(text);
+
+ return copy;
+ }
+
+ /**
+ * @return true if we have an empty label
+ */
+ public boolean isEmpty() {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ String s = text[i].getText();
+ if (s != null && !s.isEmpty()) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_FORMATTED_TEXT__ :
+ return TextObjectProperty.TEXT;
+ case __GO_TEXT_ARRAY_DIMENSIONS__ :
+ return TextObjectProperty.TEXT_ARRAY_DIMENSIONS;
+ case __GO_TEXT_STRINGS__ :
+ return FormattedText.FormattedTextProperty.TEXT;
+ case __GO_FONT_STYLE__ :
+ return Font.FontProperty.STYLE;
+ case __GO_FONT_SIZE__ :
+ return Font.FontProperty.SIZE;
+ case __GO_FONT_COLOR__ :
+ return Font.FontProperty.COLOR;
+ case __GO_FONT_FRACTIONAL__ :
+ return Font.FontProperty.FRACTIONAL;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == TextObjectProperty.TEXT) {
+ return getText();
+ } else if (property == TextObjectProperty.TEXT_ARRAY_DIMENSIONS) {
+ return getTextArrayDimensions();
+ } else if (property == FormattedText.FormattedTextProperty.TEXT) {
+ return getTextStrings();
+ } else if (property == Font.FontProperty.STYLE) {
+ return getFontStyle();
+ } else if (property == Font.FontProperty.SIZE) {
+ return getFontSize();
+ } else if (property == Font.FontProperty.COLOR) {
+ return getFontColor();
+ } else if (property == Font.FontProperty.FRACTIONAL) {
+ return getFontFractional();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == TextObjectProperty.TEXT) {
+ setText((FormattedText[]) value);
+ } else if (property == TextObjectProperty.TEXT_ARRAY_DIMENSIONS) {
+ setTextArrayDimensions((Integer[]) value);
+ } else if (property == FormattedText.FormattedTextProperty.TEXT) {
+ setTextStrings((String[]) value);
+ } else if (property == Font.FontProperty.STYLE) {
+ setFontStyle((Integer) value);
+ } else if (property == Font.FontProperty.SIZE) {
+ setFontSize((Double) value);
+ } else if (property == Font.FontProperty.COLOR) {
+ setFontColor((Integer) value);
+ } else if (property == Font.FontProperty.FRACTIONAL) {
+ setFontFractional((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the text array dimensions
+ */
+ public Integer[] getTextArrayDimensions() {
+ Integer retDimensions[] = new Integer[2];
+ retDimensions[0] = dimensions[0];
+ retDimensions[1] = dimensions[1];
+
+ return retDimensions;
+ }
+
+ /**
+ * Sets the text array dimensions
+ * Recreates an array of formatted text objects.
+ * If there was an existing array, the new array's objects' font properties
+ * are set to those of the existing array's first element, as all the array's objects
+ * are supposed to have the same font properties for now.
+ *
+ * @param dimensions the text array dimensions to set
+ */
+ public UpdateStatus setTextArrayDimensions(Integer[] dimensions) {
+ int currentSize = this.dimensions[0] * this.dimensions[1];
+
+ if (dimensions[0] * dimensions[1] != currentSize) {
+ FormattedText[] newText = new FormattedText[dimensions[0] * dimensions[1]];
+
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ newText[i] = new FormattedText();
+
+ if (currentSize >= 1) {
+ newText[i].setFont(new Font(text[0].getFont()));
+ }
+ }
+
+ text = newText;
+ }
+
+ this.dimensions[0] = dimensions[0];
+ this.dimensions[1] = dimensions[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the text
+ */
+ public FormattedText[] getText() {
+ FormattedText[] retText = new FormattedText[dimensions[0] * dimensions[1]];
+
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ retText[i] = new FormattedText(text[i]);
+ }
+
+ return retText;
+ }
+
+ /**
+ * @param textArray the textArray to set
+ */
+ public UpdateStatus setText(FormattedText[] textArray) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i] = new FormattedText(textArray[i]);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the text strings
+ */
+ public String[] getTextStrings() {
+ String[] textStrings = new String[dimensions[0] * dimensions[1]];
+
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ textStrings[i] = new String(text[i].getText());
+ }
+
+ return textStrings;
+ }
+
+ /**
+ * @param textStrings the text strings array to set
+ */
+ public UpdateStatus setTextStrings(String[] textStrings) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i].setText(textStrings[i]);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font
+ */
+ public Font getFont() {
+ return text[0].getFont();
+ }
+
+ /**
+ * @param font the font to set
+ */
+ public UpdateStatus setFont(Font font) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i].setFont(font);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font style
+ */
+ public Integer getFontStyle() {
+ return text[0].getFont().getStyle();
+ }
+
+ /**
+ * @param style the font style to set
+ */
+ public UpdateStatus setFontStyle(Integer style) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i].getFont().setStyle(style);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font color
+ */
+ public Integer getFontColor() {
+ return text[0].getFont().getColor();
+ }
+
+ /**
+ * @param color the font color to set
+ */
+ public UpdateStatus setFontColor(Integer color) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i].getFont().setColor(color);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font size
+ */
+ public Double getFontSize() {
+ return text[0].getFont().getSize();
+ }
+
+ /**
+ * @param size the font size to set
+ */
+ public UpdateStatus setFontSize(Double size) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i].getFont().setSize(size);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the font fractional
+ */
+ public Boolean getFontFractional() {
+ return text[0].getFont().getFractional();
+ }
+
+ /**
+ * @param fractional the font fractional to set
+ */
+ public UpdateStatus setFontFractional(Boolean fractional) {
+ for (int i = 0; i < dimensions[0] * dimensions[1]; i++) {
+ text[i].getFont().setFractional(fractional);
+ }
+ return UpdateStatus.Success;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/Uibar.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/Uibar.java
new file mode 100755
index 000000000..290e05dc6
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/Uibar.java
@@ -0,0 +1,143 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uibar;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MESSAGE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MESSAGE_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * @author Vincent COUVERT
+ */
+public abstract class Uibar extends GraphicObject {
+
+ private String[] message = {""};
+ private int value;
+
+ /**
+ * All uibar properties
+ */
+ private enum UibarProperty {
+ MESSAGE,
+ MESSAGE_SIZE,
+ VALUE
+ };
+
+ /**
+ * Constructor
+ */
+ public Uibar() {
+ super();
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_UI_MESSAGE__ :
+ return UibarProperty.MESSAGE;
+ case __GO_UI_MESSAGE_SIZE__ :
+ return UibarProperty.MESSAGE_SIZE;
+ case __GO_UI_VALUE__ :
+ return UibarProperty.VALUE;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ Object propertyValue = null;
+ if (property == UibarProperty.MESSAGE) {
+ propertyValue = getMessage();
+ } else if (property == UibarProperty.MESSAGE_SIZE) {
+ propertyValue = getMessage().length;
+ } else if (property == UibarProperty.VALUE) {
+ propertyValue = getValue();
+ } else {
+ propertyValue = super.getProperty(property);
+ }
+ return propertyValue;
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == UibarProperty.MESSAGE) {
+ setMessage((String[]) value);
+ } else if (property == UibarProperty.VALUE) {
+ setValue((Integer) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the uibar message
+ * @return the message
+ */
+ public String[] getMessage() {
+ return this.message;
+ }
+
+ /**
+ * Set the uibar message
+ * @param message the message
+ */
+ public UpdateStatus setMessage(String[] message) {
+ this.message = message;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the uibar value
+ * @return the value
+ */
+ public Integer getValue() {
+ return this.value;
+ }
+
+ /**
+ * Set the uibar value
+ * @param value the value
+ */
+ public UpdateStatus setValue(Integer value) {
+ this.value = value;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Accept method
+ * @param visitor the visitor
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#accept(org.scilab.modules.graphic_objects.graphicObject.Visitor)
+ */
+ public void accept(Visitor visitor) {
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.java
new file mode 100755
index 000000000..bf49e584e
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/progressionbar/Progressionbar.java
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uibar.progressionbar;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PROGRESSIONBAR__;
+
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.uibar.Uibar;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Progressionbar extends Uibar {
+
+ /**
+ * Constructor
+ */
+ public Progressionbar() {
+ super();
+ }
+
+ /**
+ * Get this object type
+ * @return waitbar
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
+ */
+ public Integer getType() {
+ return __GO_PROGRESSIONBAR__;
+ }
+
+ /**
+ * Accept method
+ * @param visitor the visitor
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#accept(org.scilab.modules.graphic_objects.graphicObject.Visitor)
+ */
+ public void accept(Visitor visitor) {
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.java
new file mode 100755
index 000000000..8be7b800d
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uibar/waitbar/Waitbar.java
@@ -0,0 +1,48 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uibar.waitbar;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_WAITBAR__;
+
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.uibar.Uibar;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Waitbar extends Uibar {
+
+ /**
+ * Constructor
+ */
+ public Waitbar() {
+ super();
+ }
+
+ /**
+ * Get this object type
+ * @return waitbar
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
+ */
+ public Integer getType() {
+ return __GO_WAITBAR__;
+ }
+
+ /**
+ * Accept method
+ * @param visitor the visitor
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#accept(org.scilab.modules.graphic_objects.graphicObject.Visitor)
+ */
+ public void accept(Visitor visitor) {
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.java
new file mode 100755
index 000000000..0dfcbe96f
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontextmenu/Uicontextmenu.java
@@ -0,0 +1,49 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontextmenu;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTEXTMENU__;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Uicontextmenu extends GraphicObject {
+
+ /**
+ * Constructor
+ */
+ public Uicontextmenu() {
+ super();
+ }
+
+ /**
+ * Get this object type
+ * @return uicontextmenu
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
+ */
+ public Integer getType() {
+ return __GO_UICONTEXTMENU__;
+ }
+
+ /**
+ * Accept method
+ * @param visitor the visitor
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#accept(org.scilab.modules.graphic_objects.graphicObject.Visitor)
+ */
+ public void accept(Visitor visitor) {
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java
new file mode 100755
index 000000000..96713db17
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java
@@ -0,0 +1,1777 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Bruno JOFRET
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ * Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BORDER_OPT_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_EVENTHANDLER_ENABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_EVENTHANDLER_NAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_GRID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT_SET__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARGINS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTROL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BACKGROUNDCOLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BORDER_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BORDER_PREFERREDSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTANGLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTNAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTUNITS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTWEIGHT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FOREGROUNDCOLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_ANCHOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_FILL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_GRID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_PREFERREDSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_WEIGHT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GROUP_NAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_HORIZONTALALIGNMENT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ICON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOXTOP_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOXTOP__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MAX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MIN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RELIEF__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SCROLLABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDERSTEP__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SPINNER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_COLNB__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TITLE_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TITLE_SCROLL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TOOLTIPSTRING_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TOOLTIPSTRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_UNITS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VERTICALALIGNMENT__;
+
+import java.awt.Font;
+import java.util.Arrays;
+import java.util.StringTokenizer;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.event.EventHandler;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+
+/**
+ * @author Bruno JOFRET
+ * @author Vincent COUVERT
+ */
+public class Uicontrol extends GraphicObject {
+
+ public enum TitlePositionType {
+ TOP, LEFT, BOTTOM, RIGHT;
+ public static TitlePositionType intToEnum(Integer value) {
+ switch (value) {
+ default:
+ case 0:
+ return TOP;
+ case 1:
+ return LEFT;
+ case 2:
+ return BOTTOM;
+ case 3:
+ return RIGHT;
+ }
+ }
+
+ public static TitlePositionType stringToEnum(String value) {
+ if (value.equals("left")) {
+ return LEFT;
+ }
+
+ if (value.equals("bottom")) {
+ return BOTTOM;
+ }
+
+ if (value.equals("right")) {
+ return RIGHT;
+ }
+
+ return TOP;
+ }
+
+ public static String enumToString(TitlePositionType value) {
+ switch (value) {
+ case BOTTOM:
+ return "bottom";
+ case LEFT:
+ return "left";
+ case RIGHT:
+ return "right";
+ default:
+ case TOP:
+ return "top";
+ }
+ }
+ }
+
+ public enum BorderLayoutType {
+ BOTTOM, TOP, CENTER, LEFT, RIGHT;
+ public static BorderLayoutType intToEnum(Integer value) {
+ switch (value) {
+ case 0:
+ return BorderLayoutType.BOTTOM;
+ case 1:
+ return BorderLayoutType.TOP;
+ default:
+ case 2:
+ return BorderLayoutType.CENTER;
+ case 3:
+ return BorderLayoutType.LEFT;
+ case 4:
+ return BorderLayoutType.RIGHT;
+ }
+ }
+
+ public static BorderLayoutType stringToEnum2(String value) {
+ if (value == null || value.equals("")) {
+ return CENTER;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'n' || chars[0] == 'N') {
+ return TOP;
+ }
+
+ if (chars[0] == 'e' || chars[0] == 'E') {
+ return RIGHT;
+ }
+
+ if (chars[0] == 's' || chars[0] == 'S') {
+ return BOTTOM;
+ }
+
+ if (chars[0] == 'w' || chars[0] == 'W') {
+ return LEFT;
+ }
+
+ return CENTER;
+ }
+
+ public static String enumToString(BorderLayoutType value) {
+ switch (value) {
+ case BOTTOM:
+ return "bottom";
+ default:
+ case CENTER:
+ return "center";
+ case LEFT:
+ return "left";
+ case RIGHT:
+ return "right";
+ case TOP:
+ return "top";
+ }
+ }
+
+ public static BorderLayoutType stringToEnum(String value) {
+ if (value.equals("bottom")) {
+ return BOTTOM;
+ }
+
+ if (value.equals("left")) {
+ return LEFT;
+ }
+
+ if (value.equals("right")) {
+ return RIGHT;
+ }
+
+ if (value.equals("top")) {
+ return TOP;
+ }
+
+ return CENTER;
+ }
+ }
+
+ public enum FillType {
+ NONE, VERTICAL, HORIZONTAL, BOTH;
+ public static FillType intToEnum(Integer value) {
+ switch (value) {
+ default:
+ case 0:
+ return FillType.NONE;
+ case 1:
+ return FillType.VERTICAL;
+ case 2:
+ return FillType.HORIZONTAL;
+ case 3:
+ return FillType.BOTH;
+ }
+ }
+
+ public static FillType stringToEnum(String value) {
+ if (value == null || value.equals("")) {
+ return NONE;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'v' || chars[0] == 'V') {
+ return VERTICAL;
+ }
+
+ if (chars[0] == 'h' || chars[0] == 'H') {
+ return HORIZONTAL;
+ }
+
+ if (chars[0] == 'b' || chars[0] == 'B') {
+ return BOTH;
+ }
+
+ return NONE;
+ }
+
+ public static String enumToString(FillType value) {
+ switch (value) {
+ case BOTH:
+ return "both";
+ case HORIZONTAL:
+ return "horizontal";
+ case NONE:
+ default:
+ return "none";
+ case VERTICAL:
+ return "vertical";
+ }
+ }
+ }
+
+ public enum AnchorType {
+ CENTER, UPPER, LOWER, RIGHT, LEFT, UPPER_RIGHT, UPPER_LEFT, LOWER_RIGHT, LOWER_LEFT;
+ //c,e,w,n,s,ne,nw,se,sw
+ public static AnchorType intToEnum(Integer value) {
+ switch (value) {
+ default:
+ case 0:
+ return CENTER;
+ case 1:
+ return UPPER;
+ case 2:
+ return LOWER;
+ case 3:
+ return RIGHT;
+ case 4:
+ return LEFT;
+ case 5:
+ return UPPER_RIGHT;
+ case 6:
+ return UPPER_LEFT;
+ case 7:
+ return LOWER_RIGHT;
+ case 8:
+ return LOWER_LEFT;
+ }
+ }
+
+ public static AnchorType stringToEnum2(String value) {
+ if (value == null || value.equals("")) {
+ return CENTER;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'e' || chars[0] == 'E') {
+ return RIGHT;
+ }
+
+ if (chars[0] == 'w' || chars[0] == 'W') {
+ return LEFT;
+ }
+
+ if (chars[0] == 'n' || chars[0] == 'N') {
+ if (chars.length == 1) {
+ return UPPER;
+ }
+
+ if (chars[1] == 'e' || chars[1] == 'E') {
+ return UPPER_RIGHT;
+ }
+
+ if (chars[1] == 'w' || chars[1] == 'W') {
+ return UPPER_LEFT;
+ }
+ return UPPER;
+ }
+
+ if (chars[0] == 's' || chars[0] == 'S') {
+ if (chars.length == 1) {
+ return LOWER;
+ }
+
+ if (chars[1] == 'e' || chars[1] == 'E') {
+ return LOWER_RIGHT;
+ }
+
+ if (chars[1] == 'w' || chars[1] == 'W') {
+ return LOWER_LEFT;
+ }
+ return LOWER;
+ }
+
+ return CENTER;
+ }
+
+ public static String enumToString(AnchorType value) {
+ switch (value) {
+ default:
+ case CENTER:
+ return "center";
+ case LEFT:
+ return "left";
+ case LOWER:
+ return "lower";
+ case LOWER_LEFT:
+ return "lower_left";
+ case LOWER_RIGHT:
+ return "lower_right";
+ case RIGHT:
+ return "right";
+ case UPPER:
+ return "upper";
+ case UPPER_LEFT:
+ return "upper_left";
+ case UPPER_RIGHT:
+ return "upper_right";
+ }
+ }
+
+ public static AnchorType stringToEnum(String value) {
+ if (value.equals("left")) {
+ return LEFT;
+ }
+
+ if (value.equals("lower")) {
+ return LOWER;
+ }
+
+ if (value.equals("lower_left")) {
+ return LOWER_LEFT;
+ }
+
+ if (value.equals("lower_right")) {
+ return LOWER_RIGHT;
+ }
+
+ if (value.equals("right")) {
+ return RIGHT;
+ }
+
+ if (value.equals("upper")) {
+ return UPPER;
+ }
+
+ if (value.equals("upper_left")) {
+ return UPPER_LEFT;
+ }
+
+ if (value.equals("upper_right")) {
+ return UPPER_RIGHT;
+ }
+
+ return CENTER;
+ }
+ }
+
+ protected static final String RELIEF_DEFAULT = "default";
+ protected static final String RELIEF_FLAT = "flat";
+ protected static final String RELIEF_RAISED = "raised";
+ protected static final String RELIEF_SUNKEN = "sunken";
+ protected static final String RELIEF_GROOVE = "groove";
+ protected static final String RELIEF_RIDGE = "ridge";
+ protected static final String RELIEF_SOLID = "solid";
+
+ protected static final double DEFAULT_RED_BACKGROUND = 0.8;
+ protected static final double DEFAULT_GREEN_BACKGROUND = 0.8;
+ protected static final double DEFAULT_BLUE_BACKGROUND = 0.8;
+
+ private static final double DEFAULT_X = 20.0;
+ private static final double DEFAULT_Y = 40.0;
+ private static final double DEFAULT_WIDTH = 40.0;
+ private static final double DEFAULT_HEIGHT = 20.0;
+
+ protected static final double DEFAULT_FONTSIZE = 10;
+ protected static final String DEFAULT_FONTNAME = "helvetica";
+ protected static final String DEFAULT_FONTWEIGHT = "normal";
+ protected static final String DEFAULT_FONTANGLE = "normal";
+ private static final String STRING_SEPARATOR = "|";
+
+ private UicontrolStyle style;
+ private Double[] backgroundColor = { -1.0, -1.0, -1.0};
+ private Boolean enable = true;
+ private String fontAngle = "";
+ private String fontName = "";
+ private double fontSize = 0;
+ private String fontUnits = "points";
+ private String fontWeight = "";
+ private Double[] foregroundColor = { -1.0, -1.0, -1.0};
+ private String horizontalAlignment = "";
+ private String verticalAlignment = "";
+ private Integer[] listboxTop;
+ private double max = 1.0;
+ private double min;
+ private Double[] position = {DEFAULT_X, DEFAULT_Y, DEFAULT_WIDTH, DEFAULT_HEIGHT};
+ private String relief = RELIEF_DEFAULT;
+ private Double[] sliderStep = {0.01, 0.1};
+ private String[] string = new String[] {};
+ private int stringColNb = 1; // Used for tables
+ private String[] tooltipString = {""};
+ private String units = "pixels";
+ private Double[] value;
+ private Boolean scrollable = false;
+ private LayoutType layout = LayoutType.NONE;
+ private Double[] margins = new Double[] {0.0, 0.0, 0.0, 0.0};
+ private Integer[] gridbagGrid = new Integer[] { -1, -1, 1, 1};
+ private Double[] gridbagWeight = new Double[] {0.0, 0.0};
+ private FillType gridbagFill = FillType.NONE;
+ private AnchorType gridbagAnchor = AnchorType.CENTER;
+ private Integer[] gridbagPadding = new Integer[] {0, 0};
+ private Integer[] gridbagPreferredSize = new Integer[] { -1, -1};
+ private BorderLayoutType borderPosition = BorderLayoutType.CENTER;
+ private Integer[] borderPreferredSize = new Integer[] { -1, -1};
+ private String icon = "";
+
+ /** layout options */
+ private Integer[] gridOptGrid = new Integer[] {0, 0};
+ private Integer[] gridOptPadding = new Integer[] {0, 0};
+ private Integer[] borderOptPadding = new Integer[] {0, 0};
+
+ /** border options */
+ private Integer frameBorder = 0;
+
+ /** groupname for radiobutton */
+ private String groupName = "";
+
+ /** tab properties */
+ private Boolean titleScroll = false;
+ private TitlePositionType titlePosition = TitlePositionType.TOP;
+
+ private EventHandler eventHandler;
+
+ /**
+ * All uicontrol properties
+ */
+ private enum UicontrolProperty {
+ STYLE,
+ BACKGROUNDCOLOR,
+ ENABLE,
+ FONTANGLE,
+ FONTNAME,
+ FONTSIZE,
+ FONTUNITS,
+ FONTWEIGHT,
+ FOREGROUNDCOLOR,
+ HORIZONTALALIGNMENT,
+ LISTBOXTOP,
+ LISTBOXTOP_SIZE,
+ MAX,
+ MIN,
+ POSITION,
+ SCALE,
+ SHEAR,
+ SLIDERSTEP,
+ STRING,
+ STRING_SIZE,
+ STRING_COLNB,
+ RELIEF,
+ TOOLTIPSTRING,
+ TOOLTIPSTRING_SIZE,
+ UNITS,
+ VALUE,
+ VALUE_SIZE,
+ VERTICALALIGNMENT,
+ LAYOUT,
+ LAYOUT_SET,
+ MARGINS,
+ GRIDBAG_GRID,
+ GRIDBAG_WEIGHT,
+ GRIDBAG_FILL,
+ GRIDBAG_ANCHOR,
+ GRIDBAG_PADDING,
+ GRIDBAG_PREFERREDSIZE,
+ BORDER_POSITION,
+ BORDER_PREFERREDSIZE,
+ GRIDOPT_GRID,
+ GRIDOPT_PADDING,
+ BORDEROPT_PADDING,
+ FRAMEBORDER,
+ GROUPNAME,
+ TITLE_POSITION,
+ TITLE_SCROLL,
+ SCROLLABLE,
+ ICON,
+ EVENTHANDLER,
+ EVENTHANDLERENABLE
+ };
+
+ /**
+ * All uicontrol styles
+ */
+ public enum UicontrolStyle {
+ CHECKBOX,
+ EDIT,
+ FRAME,
+ IMAGE,
+ LISTBOX,
+ POPUPMENU,
+ PUSHBUTTON,
+ RADIOBUTTON,
+ SLIDER,
+ TABLE,
+ TEXT,
+ TABGROUP,
+ TAB,
+ LAYER,
+ SPINNER
+ };
+
+ /**
+ * Constructor
+ */
+ public Uicontrol() {
+ super();
+ eventHandler = new EventHandler();
+ setVisible(false); /* To avoid to see the object rendered before all its properties to be set (See bug #10346) */
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setBackgroundColor(new Double[] {
+ DEFAULT_RED_BACKGROUND,
+ DEFAULT_GREEN_BACKGROUND,
+ DEFAULT_BLUE_BACKGROUND
+ });
+
+ setHorizontalAlignment("center");
+ setVerticalAlignment("middle");
+
+ setFontName(DEFAULT_FONTNAME);
+ setFontSize(DEFAULT_FONTSIZE);
+ setFontAngle(DEFAULT_FONTANGLE);
+ setFontWeight(DEFAULT_FONTWEIGHT);
+ }
+ }
+
+ /**
+ * Get style as a string
+ * @param style the uicontrol style
+ * @return the uicontrol style as a string
+ */
+ private int styleEnumToInt(UicontrolStyle style) {
+ switch (style) {
+ case CHECKBOX:
+ return __GO_UI_CHECKBOX__;
+ case EDIT:
+ return __GO_UI_EDIT__;
+ case FRAME:
+ return __GO_UI_FRAME__;
+ case IMAGE:
+ return __GO_UI_IMAGE__;
+ case LISTBOX:
+ return __GO_UI_LISTBOX__;
+ case POPUPMENU:
+ return __GO_UI_POPUPMENU__;
+ case PUSHBUTTON:
+ return __GO_UI_PUSHBUTTON__;
+ case RADIOBUTTON:
+ return __GO_UI_RADIOBUTTON__;
+ case SLIDER:
+ return __GO_UI_SLIDER__;
+ case TABLE:
+ return __GO_UI_TABLE__;
+ case TEXT:
+ return __GO_UI_TEXT__;
+ case TAB:
+ return __GO_UI_TAB__;
+ case LAYER:
+ return __GO_UI_LAYER__;
+ case SPINNER:
+ return __GO_UI_SPINNER__;
+ default :
+ return -1;
+ }
+ }
+
+ /**
+ * Get style as an enum element
+ * @param style the uicontrol style
+ * @return the uicontrol style as an enum element
+ */
+ private UicontrolStyle intToStyleEnum(int style) {
+ switch (style) {
+ case __GO_UI_CHECKBOX__ :
+ return UicontrolStyle.CHECKBOX;
+ case __GO_UI_EDIT__ :
+ return UicontrolStyle.EDIT;
+ case __GO_UI_FRAME__ :
+ return UicontrolStyle.FRAME;
+ case __GO_UI_IMAGE__ :
+ return UicontrolStyle.IMAGE;
+ case __GO_UI_LISTBOX__ :
+ return UicontrolStyle.LISTBOX;
+ case __GO_UI_POPUPMENU__ :
+ return UicontrolStyle.POPUPMENU;
+ case __GO_UI_PUSHBUTTON__ :
+ return UicontrolStyle.PUSHBUTTON;
+ case __GO_UI_RADIOBUTTON__ :
+ return UicontrolStyle.RADIOBUTTON;
+ case __GO_UI_SLIDER__ :
+ return UicontrolStyle.SLIDER;
+ case __GO_UI_TABLE__ :
+ return UicontrolStyle.TABLE;
+ case __GO_UI_TEXT__ :
+ return UicontrolStyle.TEXT;
+ case __GO_UI_TAB__:
+ return UicontrolStyle.TAB;
+ case __GO_UI_LAYER__:
+ return UicontrolStyle.LAYER;
+ case __GO_UI_SPINNER__:
+ return UicontrolStyle.SPINNER;
+ default :
+ return null;
+ }
+ }
+
+ /**
+ * Get this object type
+ * @return uicontrol
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
+ */
+ public Integer getType() {
+ return __GO_UICONTROL__;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_STYLE__ :
+ return UicontrolProperty.STYLE;
+ case __GO_UI_BACKGROUNDCOLOR__ :
+ return UicontrolProperty.BACKGROUNDCOLOR;
+ case __GO_UI_ENABLE__ :
+ return UicontrolProperty.ENABLE;
+ case __GO_UI_FONTANGLE__ :
+ return UicontrolProperty.FONTANGLE;
+ case __GO_UI_FONTNAME__ :
+ return UicontrolProperty.FONTNAME;
+ case __GO_UI_FONTSIZE__ :
+ return UicontrolProperty.FONTSIZE;
+ case __GO_UI_FONTUNITS__ :
+ return UicontrolProperty.FONTUNITS;
+ case __GO_UI_FONTWEIGHT__ :
+ return UicontrolProperty.FONTWEIGHT;
+ case __GO_UI_FOREGROUNDCOLOR__ :
+ return UicontrolProperty.FOREGROUNDCOLOR;
+ case __GO_UI_HORIZONTALALIGNMENT__ :
+ return UicontrolProperty.HORIZONTALALIGNMENT;
+ case __GO_UI_LISTBOXTOP__ :
+ return UicontrolProperty.LISTBOXTOP;
+ case __GO_UI_LISTBOXTOP_SIZE__ :
+ return UicontrolProperty.LISTBOXTOP_SIZE;
+ case __GO_UI_MAX__ :
+ return UicontrolProperty.MAX;
+ case __GO_UI_MIN__ :
+ return UicontrolProperty.MIN;
+ case __GO_POSITION__ :
+ return UicontrolProperty.POSITION;
+ case __GO_UI_RELIEF__ :
+ return UicontrolProperty.RELIEF;
+ case __GO_UI_SLIDERSTEP__ :
+ return UicontrolProperty.SLIDERSTEP;
+ case __GO_UI_STRING__ :
+ return UicontrolProperty.STRING;
+ case __GO_UI_STRING_SIZE__ :
+ return UicontrolProperty.STRING_SIZE;
+ case __GO_UI_STRING_COLNB__ :
+ return UicontrolProperty.STRING_COLNB;
+ case __GO_UI_TOOLTIPSTRING__ :
+ return UicontrolProperty.TOOLTIPSTRING;
+ case __GO_UI_TOOLTIPSTRING_SIZE__ :
+ return UicontrolProperty.TOOLTIPSTRING_SIZE;
+ case __GO_UI_UNITS__ :
+ return UicontrolProperty.UNITS;
+ case __GO_UI_VALUE__ :
+ return UicontrolProperty.VALUE;
+ case __GO_UI_VALUE_SIZE__ :
+ return UicontrolProperty.VALUE_SIZE;
+ case __GO_UI_VERTICALALIGNMENT__ :
+ return UicontrolProperty.VERTICALALIGNMENT;
+ case __GO_LAYOUT__ :
+ return UicontrolProperty.LAYOUT;
+ case __GO_LAYOUT_SET__ :
+ return UicontrolProperty.LAYOUT_SET;
+ case __GO_MARGINS__:
+ return UicontrolProperty.MARGINS;
+ case __GO_UI_GRIDBAG_GRID__:
+ return UicontrolProperty.GRIDBAG_GRID;
+ case __GO_UI_GRIDBAG_WEIGHT__:
+ return UicontrolProperty.GRIDBAG_WEIGHT;
+ case __GO_UI_GRIDBAG_FILL__:
+ return UicontrolProperty.GRIDBAG_FILL;
+ case __GO_UI_GRIDBAG_ANCHOR__:
+ return UicontrolProperty.GRIDBAG_ANCHOR;
+ case __GO_UI_GRIDBAG_PADDING__:
+ return UicontrolProperty.GRIDBAG_PADDING;
+ case __GO_UI_GRIDBAG_PREFERREDSIZE__:
+ return UicontrolProperty.GRIDBAG_PREFERREDSIZE;
+ case __GO_UI_BORDER_POSITION__:
+ return UicontrolProperty.BORDER_POSITION;
+ case __GO_UI_BORDER_PREFERREDSIZE__:
+ return UicontrolProperty.BORDER_PREFERREDSIZE;
+ case __GO_GRID_OPT_GRID__:
+ return UicontrolProperty.GRIDOPT_GRID;
+ case __GO_GRID_OPT_PADDING__:
+ return UicontrolProperty.GRIDOPT_PADDING;
+ case __GO_BORDER_OPT_PADDING__:
+ return UicontrolProperty.BORDEROPT_PADDING;
+ case __GO_UI_FRAME_BORDER__:
+ return UicontrolProperty.FRAMEBORDER;
+ case __GO_UI_GROUP_NAME__:
+ return UicontrolProperty.GROUPNAME;
+ case __GO_UI_TITLE_POSITION__:
+ return UicontrolProperty.TITLE_POSITION;
+ case __GO_UI_TITLE_SCROLL__:
+ return UicontrolProperty.TITLE_SCROLL;
+ case __GO_UI_SCROLLABLE__:
+ return UicontrolProperty.SCROLLABLE;
+ case __GO_UI_ICON__:
+ return UicontrolProperty.ICON;
+ case __GO_EVENTHANDLER_NAME__:
+ return UicontrolProperty.EVENTHANDLER;
+ case __GO_EVENTHANDLER_ENABLE__:
+ return UicontrolProperty.EVENTHANDLERENABLE;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == UicontrolProperty.STYLE) {
+ return getStyle();
+ } else if (property == UicontrolProperty.BACKGROUNDCOLOR) {
+ return getBackgroundColor();
+ } else if (property == UicontrolProperty.ENABLE) {
+ return getEnable();
+ } else if (property == UicontrolProperty.FONTANGLE) {
+ return getFontAngle();
+ } else if (property == UicontrolProperty.FONTNAME) {
+ return getFontName();
+ } else if (property == UicontrolProperty.FONTSIZE) {
+ return getFontSize();
+ } else if (property == UicontrolProperty.FONTUNITS) {
+ return getFontUnits();
+ } else if (property == UicontrolProperty.FONTWEIGHT) {
+ return getFontWeight();
+ } else if (property == UicontrolProperty.FOREGROUNDCOLOR) {
+ return getForegroundColor();
+ } else if (property == UicontrolProperty.HORIZONTALALIGNMENT) {
+ return getHorizontalAlignment();
+ } else if (property == UicontrolProperty.LISTBOXTOP) {
+ return getListboxTop();
+ } else if (property == UicontrolProperty.LISTBOXTOP_SIZE) {
+ return getListboxTopSize();
+ } else if (property == UicontrolProperty.MAX) {
+ return getMax();
+ } else if (property == UicontrolProperty.MIN) {
+ return getMin();
+ } else if (property == UicontrolProperty.POSITION) {
+ return getUiPosition();
+ } else if (property == UicontrolProperty.RELIEF) {
+ return getRelief();
+ } else if (property == UicontrolProperty.SLIDERSTEP) {
+ return getSliderStep();
+ } else if (property == UicontrolProperty.STRING) {
+ return getString();
+ } else if (property == UicontrolProperty.STRING_SIZE) {
+ return getString().length;
+ } else if (property == UicontrolProperty.STRING_COLNB) {
+ return getStringColNb();
+ } else if (property == UicontrolProperty.TOOLTIPSTRING) {
+ return getTooltipString();
+ } else if (property == UicontrolProperty.TOOLTIPSTRING_SIZE) {
+ return getTooltipString().length;
+ } else if (property == UicontrolProperty.UNITS) {
+ return getUnits();
+ } else if (property == UicontrolProperty.VALUE) {
+ return getUiValue();
+ } else if (property == UicontrolProperty.VALUE_SIZE) {
+ return getUiValueSize();
+ } else if (property == UicontrolProperty.VERTICALALIGNMENT) {
+ return getVerticalAlignment();
+ } else if (property == UicontrolProperty.LAYOUT) {
+ return getLayout();
+ } else if (property == UicontrolProperty.LAYOUT_SET) {
+ return isLayoutSettable();
+ } else if (property == UicontrolProperty.MARGINS) {
+ return getMargins();
+ } else if (property == UicontrolProperty.GRIDBAG_GRID) {
+ return getGridBagGrid();
+ } else if (property == UicontrolProperty.GRIDBAG_WEIGHT) {
+ return getGridBagWeight();
+ } else if (property == UicontrolProperty.GRIDBAG_FILL) {
+ return getGridBagFill();
+ } else if (property == UicontrolProperty.GRIDBAG_ANCHOR) {
+ return getGridBagAnchor();
+ } else if (property == UicontrolProperty.GRIDBAG_PADDING) {
+ return getGridBagPadding();
+ } else if (property == UicontrolProperty.GRIDBAG_PREFERREDSIZE) {
+ return getGridBagPreferredSize();
+ } else if (property == UicontrolProperty.BORDER_POSITION) {
+ return getBorderPosition();
+ } else if (property == UicontrolProperty.BORDER_PREFERREDSIZE) {
+ return getBorderPreferredSize();
+ } else if (property == UicontrolProperty.GRIDOPT_GRID) {
+ return getGridOptGrid();
+ } else if (property == UicontrolProperty.GRIDOPT_PADDING) {
+ return getGridOptPadding();
+ } else if (property == UicontrolProperty.BORDEROPT_PADDING) {
+ return getBorderOptPadding();
+ } else if (property == UicontrolProperty.FRAMEBORDER) {
+ return getFrameBorder();
+ } else if (property == UicontrolProperty.GROUPNAME) {
+ return getGroupName();
+ } else if (property == UicontrolProperty.TITLE_POSITION) {
+ return getTitlePosition();
+ } else if (property == UicontrolProperty.TITLE_SCROLL) {
+ return getTitleScroll();
+ } else if (property == UicontrolProperty.SCROLLABLE) {
+ return getScrollable();
+ } else if (property == UicontrolProperty.ICON) {
+ return getIcon();
+ } else if (property == UicontrolProperty.EVENTHANDLER) {
+ return getEventHandler();
+ } else if (property == UicontrolProperty.EVENTHANDLERENABLE) {
+ return getEventHandlerEnable();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (!(property instanceof UicontrolProperty)) {
+ return super.setProperty(property, value);
+ }
+
+ UicontrolProperty p = (UicontrolProperty) property;
+ switch (p) {
+ case STYLE:
+ return setStyle((Integer) value);
+ case BACKGROUNDCOLOR:
+ return setBackgroundColor((Double[]) value);
+ case ENABLE:
+ return setEnable((Boolean) value);
+ case FONTANGLE:
+ return setFontAngle((String) value);
+ case FONTNAME:
+ return setFontName((String) value);
+ case FONTSIZE:
+ return setFontSize((Double) value);
+ case FONTUNITS:
+ return setFontUnits((String) value);
+ case FONTWEIGHT:
+ return setFontWeight((String) value);
+ case FOREGROUNDCOLOR:
+ return setForegroundColor((Double[]) value);
+ case HORIZONTALALIGNMENT:
+ return setHorizontalAlignment((String) value);
+ case LISTBOXTOP:
+ return setListboxTop((Integer[]) value);
+ case MAX:
+ return setMax((Double) value);
+ case MIN:
+ return setMin((Double) value);
+ case POSITION:
+ return setUiPosition((Double[]) value);
+ case RELIEF:
+ return setRelief((String) value);
+ case SLIDERSTEP:
+ return setSliderStep((Double[]) value);
+ case STRING:
+ return setString((String[]) value);
+ case STRING_COLNB:
+ return setStringColNb((Integer) value);
+ case TOOLTIPSTRING:
+ return setTooltipString((String[]) value);
+ case UNITS:
+ return setUnits((String) value);
+ case VALUE:
+ return setUiValue((Double[]) value);
+ case VERTICALALIGNMENT:
+ return setVerticalAlignment((String) value);
+ case LAYOUT:
+ return setLayout((Integer) value);
+ case MARGINS:
+ return setMargins((Double[]) value);
+ case GRIDBAG_GRID:
+ return setGridBagGrid((Integer[]) value);
+ case GRIDBAG_WEIGHT:
+ return setGridBagWeight((Double[]) value);
+ case GRIDBAG_FILL:
+ return setGridBagFill((Integer) value);
+ case GRIDBAG_ANCHOR:
+ return setGridBagAnchor((Integer) value);
+ case GRIDBAG_PADDING:
+ return setGridBagPadding((Integer[]) value);
+ case GRIDBAG_PREFERREDSIZE:
+ return setGridBagPreferredSize((Integer[]) value);
+ case BORDER_POSITION:
+ return setBorderPosition((Integer) value);
+ case BORDER_PREFERREDSIZE:
+ return setBorderPreferredSize((Integer[]) value);
+ case GRIDOPT_GRID:
+ return setGridOptGrid((Integer[]) value);
+ case GRIDOPT_PADDING:
+ return setGridOptPadding((Integer[]) value);
+ case BORDEROPT_PADDING:
+ return setBorderOptPadding((Integer[]) value);
+ case FRAMEBORDER:
+ return setFrameBorder((Integer) value);
+ case GROUPNAME:
+ return setGroupName((String) value);
+ case TITLE_POSITION:
+ return setTitlePosition((Integer) value);
+ case TITLE_SCROLL:
+ return setTitleScroll((Boolean) value);
+ case SCROLLABLE:
+ return setScrollable((Boolean) value);
+ case ICON:
+ return setIcon((String) value);
+ case EVENTHANDLER:
+ return setEventHandler((String) value);
+ case EVENTHANDLERENABLE:
+ return setEventHandlerEnable((Boolean) value);
+ default:
+ return super.setProperty(property, value);
+ }
+ }
+
+ /**
+ * Get the style
+ * @return the style
+ */
+ public Integer getStyle() {
+ return styleEnumToInt(style);
+ }
+
+ public UicontrolStyle getStyleAsEnum() {
+ return style;
+ }
+
+ /**
+ * Set the style
+ * @param style the style
+ */
+ public UpdateStatus setStyle(int style) {
+ UicontrolStyle val = intToStyleEnum(style);
+ if (val == this.style) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.style = val;
+ return UpdateStatus.Success;
+ }
+
+ /* Background Color */
+ public Double[] getBackgroundColor() {
+ return this.backgroundColor;
+ }
+
+ public UpdateStatus setBackgroundColor(Double[] colors) {
+ if (Arrays.equals(colors, this.backgroundColor)) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.backgroundColor = colors;
+ return UpdateStatus.Success;
+ }
+
+ /* Enable */
+ public Boolean getEnable() {
+ return enable;
+ }
+
+ public UpdateStatus setEnable(Boolean status) {
+ if (enable.equals(status)) {
+ return UpdateStatus.NoChange;
+ }
+ enable = status;
+ return UpdateStatus.Success;
+ }
+
+ /* FontAngle */
+ public String getFontAngle() {
+ return this.fontAngle;
+ }
+
+ public UpdateStatus setFontAngle(String fontAngle) {
+ if (this.fontAngle.equals(fontAngle)) {
+ return UpdateStatus.NoChange;
+ }
+ this.fontAngle = fontAngle;
+ return UpdateStatus.Success;
+ }
+
+ /* FontName */
+ public String getFontName() {
+ return this.fontName;
+ }
+
+ public UpdateStatus setFontName(String fontName) {
+ if (this.fontName.equals(fontName)) {
+ return UpdateStatus.NoChange;
+ }
+ this.fontName = fontName;
+ return UpdateStatus.Success;
+ }
+
+ /* FontSize */
+ public double getFontSize() {
+ return this.fontSize;
+ }
+
+ public UpdateStatus setFontSize(double fontSize) {
+ if (this.fontSize == fontSize) {
+ return UpdateStatus.NoChange;
+ }
+ this.fontSize = fontSize;
+ return UpdateStatus.Success;
+ }
+
+ /* FontUnits */
+ public String getFontUnits() {
+ return this.fontUnits;
+ }
+
+ public UpdateStatus setFontUnits(String fontUnits) {
+ if (this.fontUnits.equals(fontUnits)) {
+ return UpdateStatus.NoChange;
+ }
+ this.fontUnits = fontUnits;
+ return UpdateStatus.Success;
+ }
+
+ /* FontWeight */
+ public String getFontWeight() {
+ return this.fontWeight;
+ }
+
+ public UpdateStatus setFontWeight(String fontWeight) {
+ if (this.fontWeight.equals(fontWeight)) {
+ return UpdateStatus.NoChange;
+ }
+ this.fontWeight = fontWeight;
+ return UpdateStatus.Success;
+ }
+
+ /* Foreground Color */
+ public Double[] getForegroundColor() {
+ return this.foregroundColor;
+ }
+
+ public UpdateStatus setForegroundColor(Double[] colors) {
+ if (Arrays.equals(this.foregroundColor, colors)) {
+ return UpdateStatus.NoChange;
+ }
+ this.foregroundColor = colors;
+ return UpdateStatus.Success;
+ }
+
+ /* Horizontal Alignment */
+ public String getHorizontalAlignment() {
+ return this.horizontalAlignment;
+ }
+
+ public UpdateStatus setHorizontalAlignment(String alignment) {
+ if (this.horizontalAlignment.equals(alignment)) {
+ return UpdateStatus.NoChange;
+ }
+ this.horizontalAlignment = alignment;
+ return UpdateStatus.Success;
+ }
+
+ /* Listbox Top */
+ public Integer getListboxTopSize() {
+ return (listboxTop != null ? listboxTop.length : 0);
+ }
+
+ public Integer[] getListboxTop() {
+ return this.listboxTop;
+ }
+
+ public UpdateStatus setListboxTop(Integer[] listboxTop) {
+ if (Arrays.equals(this.listboxTop, listboxTop)) {
+ return UpdateStatus.NoChange;
+ }
+ this.listboxTop = listboxTop;
+ return UpdateStatus.Success;
+ }
+
+ /* Max */
+ public Double getMax() {
+ return this.max;
+ }
+
+ public UpdateStatus setMax(double max) {
+ if (this.max == max) {
+ return UpdateStatus.NoChange;
+ }
+ this.max = max;
+ return UpdateStatus.Success;
+ }
+
+ /* Min */
+ public Double getMin() {
+ return this.min;
+ }
+
+ public UpdateStatus setMin(double min) {
+ if (this.min == min) {
+ return UpdateStatus.NoChange;
+ }
+ this.min = min;
+ return UpdateStatus.Success;
+ }
+
+ /* Position */
+ public Double[] getUiPosition() {
+ return this.position;
+ }
+
+ public UpdateStatus setUiPosition(Double[] position) {
+ if (Arrays.equals(this.position, position)) {
+ return UpdateStatus.NoChange;
+ }
+ this.position = position;
+ return UpdateStatus.Success;
+ }
+
+ /* Relief */
+ public String getRelief() {
+ return this.relief;
+ }
+
+ public UpdateStatus setRelief(String relief) {
+ if (this.relief.equals(relief)) {
+ return UpdateStatus.NoChange;
+ }
+ this.relief = relief;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the string
+ * @return the string
+ */
+ public String[] getString() {
+ return this.string;
+ }
+
+ /**
+ * Set the string
+ * @param string the string
+ */
+ public UpdateStatus setString(String[] string) {
+ //update needed ?
+
+ //both null or same object
+ if (this.string == string) {
+ return UpdateStatus.NoChange;
+ }
+
+ boolean needUpdate = false;
+ if (this.string.length == string.length) {
+ for (int i = 0 ; i < string.length ; i++) {
+
+ if (this.string[i] == null && string[i] == null) {
+ continue;
+ }
+
+ //only one null
+ if ((this.string[i] == null || string[i] == null) &&
+ this.string[i] != string[i]) {
+ needUpdate = true;
+ break;
+ }
+
+ if (this.string[i].equals(string[i]) == false) {
+ needUpdate = true;
+ break;
+ }
+ }
+ } else {
+ needUpdate = true;
+ }
+
+ if (needUpdate == false) {
+ return UpdateStatus.NoChange;
+ }
+
+ if (this.style == UicontrolStyle.LISTBOX || this.style == UicontrolStyle.POPUPMENU) {
+ /* String can be set using a|b|c|d */
+ if (string.length == 0) {
+ if (this.string.length == 0) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.string = string;
+ return UpdateStatus.Success;
+ } else if (string.length == 1 && string[0].contains(STRING_SEPARATOR)) {
+ StringTokenizer strTok = new StringTokenizer(string[0], STRING_SEPARATOR);
+ String[] stringTab = new String[strTok.countTokens()];
+ while (strTok.hasMoreTokens()) {
+ stringTab[stringTab.length - strTok.countTokens()] = strTok.nextToken();
+ }
+ this.string = stringTab;
+ return UpdateStatus.Success;
+ }
+ }
+
+ this.string = string;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the string column number
+ * @return the number of columns
+ */
+ public int getStringColNb() {
+ return stringColNb;
+ }
+
+ /**
+ * Set the string column number
+ * @param stringColNb the number of columns
+ */
+ public UpdateStatus setStringColNb(Integer stringColNb) {
+ if (this.stringColNb == stringColNb) {
+ return UpdateStatus.NoChange;
+ }
+ this.stringColNb = stringColNb;
+ return UpdateStatus.Success;
+ }
+
+
+ /**
+ * Get the tooltip string
+ * @return the tooltip string
+ */
+ public String[] getTooltipString() {
+ return this.tooltipString;
+ }
+
+ /**
+ * Set the tooltip string
+ * @param tooltipString the tooltip string
+ */
+ public UpdateStatus setTooltipString(String[] tooltipString) {
+ if (Arrays.equals(this.tooltipString, tooltipString)) {
+ return UpdateStatus.NoChange;
+ }
+ this.tooltipString = tooltipString;
+ return UpdateStatus.Success;
+ }
+
+ /* Slider Step */
+ public Double[] getSliderStep() {
+ return this.sliderStep;
+ }
+
+ public UpdateStatus setSliderStep(Double[] sliderStep) {
+ if (Arrays.equals(this.sliderStep, sliderStep)) {
+ return UpdateStatus.NoChange;
+ }
+ this.sliderStep = sliderStep;
+ return UpdateStatus.Success;
+ }
+
+ /* Units */
+ public String getUnits() {
+ return this.units;
+ }
+
+ public UpdateStatus setUnits(String units) {
+ if (this.units.equals(units)) {
+ return UpdateStatus.NoChange;
+ }
+ this.units = units;
+ return UpdateStatus.Success;
+ }
+
+ /* Value */
+ public Integer getUiValueSize() {
+ return (value != null ? value.length : 0);
+ }
+
+ public Double[] getUiValue() {
+ return this.value;
+ }
+
+ public UpdateStatus setUiValue(Double[] value) {
+ if (Arrays.equals(this.value, value)) {
+ return UpdateStatus.NoChange;
+ }
+ this.value = value;
+ return UpdateStatus.Success;
+ }
+
+ /* Vertical Alignment */
+ public String getVerticalAlignment() {
+ return this.verticalAlignment;
+ }
+
+ public UpdateStatus setVerticalAlignment(String alignment) {
+ if (this.verticalAlignment.equals(alignment)) {
+ return UpdateStatus.NoChange;
+ }
+ this.verticalAlignment = alignment;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getLayout() {
+ return layout.ordinal();
+ }
+
+ public LayoutType getLayoutAsEnum() {
+ return layout;
+ }
+
+ public boolean isLayoutSettable() {
+ return (this.layout == LayoutType.NONE);
+ }
+
+ public UpdateStatus setLayout(Integer value) {
+ return setLayout(LayoutType.intToEnum(value));
+ }
+
+ public UpdateStatus setLayout(LayoutType layout) {
+ //avoid to set layout twice
+ if (this.layout == LayoutType.NONE) {
+ if (layout == LayoutType.NONE) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.layout = layout;
+ return UpdateStatus.Success;
+ }
+
+ return UpdateStatus.Fail;
+ }
+
+ public Double[] getMargins() {
+ return margins;
+ }
+
+ public UpdateStatus setMargins(Double[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (value.length != 4) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < 4 ; i++) {
+ if (margins[i].equals(value[i]) == false) {
+ margins[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer getBorderPosition() {
+ return borderPosition.ordinal();
+ }
+
+ public BorderLayoutType getBorderPositionAsEnum() {
+ return borderPosition;
+ }
+
+ public UpdateStatus setBorderPosition(Integer value) {
+ return setBorderPosition(BorderLayoutType.intToEnum(value));
+ }
+
+ public UpdateStatus setBorderPosition(BorderLayoutType value) {
+ if (borderPosition == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ borderPosition = value;
+ return UpdateStatus.Success;
+ }
+
+ public Integer[] getGridBagPadding() {
+ return gridbagPadding;
+ }
+
+ public UpdateStatus setGridBagPadding(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridbagPadding.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (gridbagPadding[i] != value[i]) {
+ gridbagPadding[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getGridBagPreferredSize() {
+ return gridbagPreferredSize;
+ }
+
+ public UpdateStatus setGridBagPreferredSize(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridbagPreferredSize.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (gridbagPreferredSize[i] != value[i]) {
+ gridbagPreferredSize[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getBorderPreferredSize() {
+ return borderPreferredSize;
+ }
+
+ public UpdateStatus setBorderPreferredSize(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (borderPreferredSize.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (borderPreferredSize[i] != value[i]) {
+ borderPreferredSize[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer getGridBagAnchor() {
+ return gridbagAnchor.ordinal();
+ }
+
+ public AnchorType getGridBagAnchorAsEnum() {
+ return gridbagAnchor;
+ }
+
+ public UpdateStatus setGridBagAnchor(Integer value) {
+ return setGridBagAnchor(AnchorType.intToEnum(value));
+ }
+
+ public UpdateStatus setGridBagAnchor(AnchorType value) {
+ if (gridbagAnchor == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ gridbagAnchor = value;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getGridBagFill() {
+ return gridbagFill.ordinal();
+ }
+
+ public FillType getGridBagFillAsEnum() {
+ return gridbagFill;
+ }
+
+ public UpdateStatus setGridBagFill(Integer value) {
+ return setGridBagFill(FillType.intToEnum(value));
+ }
+
+ public UpdateStatus setGridBagFill(FillType value) {
+ if (gridbagFill == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ gridbagFill = value;
+ return UpdateStatus.Success;
+ }
+
+ public Double[] getGridBagWeight() {
+ return gridbagWeight;
+ }
+
+ public UpdateStatus setGridBagWeight(Double[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridbagWeight.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (gridbagWeight[i] != value[i]) {
+ gridbagWeight[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getGridBagGrid() {
+ return gridbagGrid;
+ }
+
+ public UpdateStatus setGridBagGrid(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridbagGrid.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (gridbagGrid[i] != value[i]) {
+ gridbagGrid[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getBorderOptPadding() {
+ return borderOptPadding;
+ }
+
+ public UpdateStatus setBorderOptPadding(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (borderOptPadding.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (borderOptPadding[i] != value[i]) {
+ borderOptPadding[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getGridOptPadding() {
+ return gridOptPadding;
+ }
+
+ public UpdateStatus setGridOptPadding(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridOptPadding.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (gridOptPadding[i] != value[i]) {
+ gridOptPadding[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer[] getGridOptGrid() {
+ return gridOptGrid;
+ }
+
+ public UpdateStatus setGridOptGrid(Integer[] value) {
+ UpdateStatus status = UpdateStatus.NoChange;
+ if (gridOptGrid.length != value.length) {
+ return UpdateStatus.Fail;
+ }
+
+ for (int i = 0 ; i < value.length ; i++) {
+ if (gridOptGrid[i] != value[i]) {
+ gridOptGrid[i] = value[i];
+ status = UpdateStatus.Success;
+ }
+ }
+
+ return status;
+ }
+
+ public Integer getFrameBorder() {
+ return frameBorder;
+ }
+
+ public UpdateStatus setFrameBorder(Integer value) {
+ if (frameBorder.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ frameBorder = value;
+ return UpdateStatus.Success;
+ }
+
+ public String getGroupName() {
+ return groupName;
+ }
+
+ public UpdateStatus setGroupName(String value) {
+ if (groupName.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ groupName = value;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getTitleScroll() {
+ return titleScroll;
+ }
+
+ public UpdateStatus setTitleScroll(Boolean value) {
+ if (titleScroll == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ titleScroll = value;
+ return UpdateStatus.Success;
+ }
+
+ public Integer getTitlePosition() {
+ return titlePosition.ordinal();
+ }
+
+ public TitlePositionType getTitlePositionAsEnum() {
+ return titlePosition;
+ }
+
+
+ public UpdateStatus setTitlePosition(Integer value) {
+ return setTitlePosition(TitlePositionType.intToEnum(value));
+ }
+
+ public UpdateStatus setTitlePosition(TitlePositionType value) {
+ if (titlePosition == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ titlePosition = value;
+ return UpdateStatus.Success;
+ }
+
+ public UpdateStatus setScrollable(Boolean scrollable) {
+ if (this.scrollable == scrollable) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.scrollable = scrollable;
+ return UpdateStatus.Success;
+ }
+
+ public Boolean getScrollable() {
+ return scrollable;
+ }
+
+ public void setFont(Font font) {
+ if (font == null) {
+ return;
+ }
+
+ setFontName(font.getName());
+ setFontSize(font.getSize());
+
+ if (font.isItalic()) {
+ setFontAngle("italic");
+ } else {
+ setFontAngle("normal");
+ }
+
+ if (font.isBold()) {
+ setFontWeight("bold");
+ } else {
+ setFontWeight("normal");
+ }
+ }
+
+ public UpdateStatus setIcon(String icon) {
+ if (this.icon.equals(icon)) {
+ return UpdateStatus.NoChange;
+ }
+
+ this.icon = icon;
+ return UpdateStatus.Success;
+ }
+
+ public String getIcon() {
+ return icon;
+ }
+
+ public UpdateStatus setEventHandler(String eventHandlerName) {
+ return eventHandler.setEventHandlerString(eventHandlerName);
+ }
+
+ public String getEventHandler() {
+ return eventHandler.getEventHandlerString();
+ }
+
+ public UpdateStatus setEventHandlerEnable(Boolean eventHandlerEnabled) {
+ return eventHandler.setEventHandlerEnabled(eventHandlerEnabled);
+ }
+
+ public boolean getEventHandlerEnable() {
+ return eventHandler.getEventHandlerEnabled();
+ }
+
+ public void accept(Visitor visitor) {
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.java
new file mode 100755
index 000000000..3dbaa4065
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/checkbox/CheckBox.java
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.checkbox;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class CheckBox extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public CheckBox() {
+ super();
+ setStyle(__GO_UI_CHECKBOX__);
+
+ // Default value is the min value (not checked)
+ Double[] value = new Double[1];
+ value[0] = getMin();
+ setUiValue(value);
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("CheckBox.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.java
new file mode 100755
index 000000000..13b5e1f03
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Edit.java
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.edit;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Edit extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public Edit() {
+ super();
+ setStyle(__GO_UI_EDIT__);
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_SUNKEN);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("TextField.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.java
new file mode 100755
index 000000000..5b6ea3fcf
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/edit/Spinner.java
@@ -0,0 +1,32 @@
+package org.scilab.modules.graphic_objects.uicontrol.edit;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SPINNER__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+public class Spinner extends Uicontrol {
+
+ public Spinner() {
+ super();
+ setStyle(__GO_UI_SPINNER__);
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_SUNKEN);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Spinner.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.java
new file mode 100755
index 000000000..4a2fe37f8
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/Frame.java
@@ -0,0 +1,80 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.frame;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.axes.AxesContainer;
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.figure.ColorMap;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Frame extends Uicontrol implements AxesContainer {
+
+ /**
+ * Constructor
+ */
+ public Frame() {
+ super();
+ setStyle(__GO_UI_FRAME__);
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_RIDGE);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Panel.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+
+ public Integer getAntialiasing() {
+ return 0;
+ }
+
+ public Integer getBackground() {
+ Figure figure = (Figure) GraphicModel.getModel().getObjectFromId(getParentFigure());
+ if (figure != null) {
+ return figure.getBackground();
+ }
+ return -2;
+ }
+
+ public ColorMap getColorMap() {
+ Figure figure = (Figure) GraphicModel.getModel().getObjectFromId(getParentFigure());
+ if (figure != null) {
+ return figure.getColorMap();
+ }
+
+ return new ColorMap();
+ }
+
+ public Integer[] getAxesSize() {
+ Double[] pos = getUiPosition();
+ return new Integer[] {pos[2].intValue(), pos[3].intValue()};
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.java
new file mode 100755
index 000000000..a57abd436
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorder.java
@@ -0,0 +1,675 @@
+package org.scilab.modules.graphic_objects.uicontrol.frame.border;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TITLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTANGLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTNAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTWEIGHT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_HIGHLIGHT_IN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_IN_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_JUSTIFICATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_OUT_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_ROUNDED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_SHADOW_IN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_SHADOW_OUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_TITLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
+
+import java.util.Arrays;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+public class FrameBorder extends GraphicObject {
+ enum FrameBorderProperty {
+ TYPE, //RAISED or LOWERED
+ COLOR, //string
+ THICKNESS, //int
+ ROUNDED, //boolean
+ STYLE, //FrameBorderType
+ HIGHLIGHT_OUT, //string
+ HIGHLIGHT_IN, //string
+ SHADOW_OUT, //string
+ SHADOW_IN, //string
+ TITLE_BORDER,
+ TITLE, //string
+ JUSTIFICATION, //JustificationType
+ FONTNAME, //string
+ FONTANGLE, // string
+ FONT_SIZE, //int
+ FONT_WEIGHT, //string
+ TITLE_POSITION, // TitlePostionType
+ POSITION, //tlbr
+ IN_BORDER,
+ OUT_BORDER,
+ };
+
+ public enum BorderType {
+ RAISED, LOWERED;
+ public static BorderType intToEnum(Integer value) {
+ switch (value) {
+ default:
+ case 0:
+ return RAISED;
+ case 1:
+ return LOWERED;
+ }
+ }
+
+ public static BorderType stringToEnum(String value) {
+ if (value == null || value.equals("")) {
+ return null;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'l' || chars[0] == 'L') {
+ return LOWERED;
+ }
+
+ return RAISED;
+ }
+ }
+
+ public enum JustificationType {
+ LEADING, LEFT, CENTER, RIGHT, TRAILING;
+
+ public static JustificationType intToEnum(Integer val) {
+ switch (val) {
+ default :
+ case 0:
+ return LEADING;
+ case 1:
+ return LEFT;
+ case 2:
+ return CENTER;
+ case 3:
+ return RIGHT;
+ case 4:
+ return TRAILING;
+ }
+ }
+
+ public static JustificationType stringToEnum(String value) {
+ if (value == null || value.equals("")) {
+ return null;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'l' || chars[0] == 'L') {
+ if (chars[3] == 'f' || chars[3] == 'F') {
+ return LEFT;
+ }
+ return LEADING;
+ }
+
+ if (chars[0] == 'c' || chars[0] == 'C') {
+ return CENTER;
+ }
+
+ if (chars[0] == 'r' || chars[0] == 'R') {
+ return RIGHT;
+ }
+
+ if (chars[0] == 't' || chars[0] == 'T') {
+ return TRAILING;
+ }
+
+
+ return LEADING;
+ }
+
+ };
+
+ public enum TitlePositionType {
+ TOP, ABOVE_TOP, BELOW_TOP, BOTTOM, ABOVE_BOTTOM, BELOW_BOTTOM;
+
+ public static TitlePositionType intToEnum(Integer val) {
+ switch (val) {
+ default :
+ case 0:
+ return TOP;
+ case 1:
+ return ABOVE_TOP;
+ case 2:
+ return BELOW_TOP;
+ case 3:
+ return BOTTOM;
+ case 4:
+ return ABOVE_BOTTOM;
+ case 5:
+ return BELOW_BOTTOM;
+ }
+ }
+
+ public static TitlePositionType stringToEnum(String value) {
+ if (value == null || value.equals("")) {
+ return null;
+ }
+
+ if (value.equalsIgnoreCase("above_top")) {
+ return ABOVE_TOP;
+ }
+
+ if (value.equalsIgnoreCase("below_top")) {
+ return BELOW_TOP;
+ }
+
+ if (value.equalsIgnoreCase("bottom")) {
+ return BOTTOM;
+ }
+
+ if (value.equalsIgnoreCase("above_bottom")) {
+ return ABOVE_BOTTOM;
+ }
+
+ if (value.equalsIgnoreCase("below_bottom")) {
+ return BELOW_BOTTOM;
+ }
+
+ return TOP;
+ }
+ };
+
+ private BorderType type = null;//BorderType.NONE;
+ private String color = null;
+ private String hlOutColor = null;
+ private String hlInColor = null;
+ private String shadowOutColor = null;
+ private String shadowInColor = null;
+ private Integer thickness = null;
+ private Boolean rounded = null;
+ private FrameBorderType style = null;//FrameBorderType.ETCHED;
+ private String title = null;
+ private JustificationType justification = null;//JustificationType.LEADING;
+ private String fontAngle = null;
+ private String fontName = null;
+ private Integer fontSize = null;
+ private String fontWeight = null;
+ private TitlePositionType titlePosition = TitlePositionType.TOP;
+ private Double[] position = null;//new Double[] {0.0, 0.0, 0.0, 0.0};//TLBR
+
+ private Integer titleBorder = null;
+ private Integer inBorder = null;
+ private Integer outBorder = null;
+
+ public FrameBorder() {
+
+ }
+
+ /**
+ * Get style as a string
+ * @param style the uicontrol style
+ * @return the uicontrol style as a string
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_UI_FRAME_BORDER_COLOR__:
+ return FrameBorderProperty.COLOR;
+ case __GO_UI_FONTANGLE__:
+ return FrameBorderProperty.FONTANGLE;
+ case __GO_UI_FONTNAME__:
+ return FrameBorderProperty.FONTNAME;
+ case __GO_UI_FONTSIZE__:
+ return FrameBorderProperty.FONT_SIZE;
+ case __GO_UI_FONTWEIGHT__:
+ return FrameBorderProperty.FONT_WEIGHT;
+ case __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__:
+ return FrameBorderProperty.HIGHLIGHT_IN;
+ case __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__:
+ return FrameBorderProperty.HIGHLIGHT_OUT;
+ case __GO_UI_FRAME_BORDER_IN_BORDER__:
+ return FrameBorderProperty.IN_BORDER;
+ case __GO_UI_FRAME_BORDER_JUSTIFICATION__:
+ return FrameBorderProperty.JUSTIFICATION;
+ case __GO_UI_FRAME_BORDER_OUT_BORDER__:
+ return FrameBorderProperty.OUT_BORDER;
+ case __GO_POSITION__:
+ return FrameBorderProperty.POSITION;
+ case __GO_UI_FRAME_BORDER_ROUNDED__:
+ return FrameBorderProperty.ROUNDED;
+ case __GO_UI_FRAME_BORDER_SHADOW_IN__:
+ return FrameBorderProperty.SHADOW_IN;
+ case __GO_UI_FRAME_BORDER_SHADOW_OUT__:
+ return FrameBorderProperty.SHADOW_OUT;
+ case __GO_UI_FRAME_BORDER_STYLE__:
+ return FrameBorderProperty.STYLE;
+ case __GO_LINE_THICKNESS__:
+ return FrameBorderProperty.THICKNESS;
+ case __GO_TITLE__:
+ return FrameBorderProperty.TITLE;
+ case __GO_UI_FRAME_BORDER_TITLE__:
+ return FrameBorderProperty.TITLE_BORDER;
+ case __GO_UI_FRAME_BORDER_POSITION__:
+ return FrameBorderProperty.TITLE_POSITION;
+ case __GO_UI_FRAME_BORDER_TYPE__:
+ return FrameBorderProperty.TYPE;
+ default:
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ public Object getProperty(Object property) {
+ if (property instanceof FrameBorderProperty) {
+ switch ((FrameBorderProperty)property) {
+ case COLOR:
+ return getColor();
+ case FONTANGLE:
+ return getFontAngle();
+ case FONTNAME:
+ return getFontName();
+ case FONT_SIZE:
+ return getFontSize();
+ case FONT_WEIGHT:
+ return getFontWeight();
+ case HIGHLIGHT_IN:
+ return getHlIn();
+ case HIGHLIGHT_OUT:
+ return getHlOut();
+ case IN_BORDER:
+ return getInBorder();
+ case JUSTIFICATION:
+ return getJustification();
+ case OUT_BORDER:
+ return getOutBorder();
+ case POSITION:
+ return getPosition();
+ case ROUNDED:
+ return getRounded();
+ case SHADOW_IN:
+ return getShadowIn();
+ case SHADOW_OUT:
+ return getShadowOut();
+ case STYLE:
+ return getStyle();
+ case THICKNESS:
+ return getThickness();
+ case TITLE:
+ return getTitle();
+ case TITLE_BORDER:
+ return getTitleBorder();
+ case TITLE_POSITION:
+ return getTitlePosition();
+ case TYPE:
+ return getBorderType();
+ }
+ }
+
+ return super.getProperty(property);
+ }
+
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property instanceof FrameBorderProperty) {
+ switch ((FrameBorderProperty) property) {
+ case COLOR:
+ return setColor((String)value);
+ case FONTANGLE:
+ return setFontAngle((String)value);
+ case FONTNAME:
+ return setFontName((String)value);
+ case FONT_SIZE:
+ return setFontSize((Integer)value);
+ case FONT_WEIGHT:
+ return setFontWeight((String)value);
+ case HIGHLIGHT_IN:
+ return setHlIn((String)value);
+ case HIGHLIGHT_OUT:
+ return setHlOut((String)value);
+ case IN_BORDER:
+ return setInBorder((Integer)value);
+ case JUSTIFICATION:
+ return setJustification((Integer)value);
+ case OUT_BORDER:
+ return setOutBorder((Integer)value);
+ case POSITION:
+ return setPosition((Double[])value);
+ case ROUNDED:
+ return setRounded((Boolean)value);
+ case SHADOW_IN:
+ return setShadowIn((String)value);
+ case SHADOW_OUT:
+ return setShadowOut((String)value);
+ case STYLE:
+ return setStyle((Integer)value);
+ case THICKNESS:
+ return setThickness((Integer)value);
+ case TITLE:
+ return setTitle((String)value);
+ case TITLE_BORDER:
+ return setTitleBorder((Integer)value);
+ case TITLE_POSITION:
+ return setTitlePosition((Integer)value);
+ case TYPE:
+ return setBorderType((Integer)value);
+ }
+ }
+ return super.setProperty(property, value);
+ }
+
+ /** type */
+ public Integer getBorderType() {
+ return type == null ? null : type.ordinal();
+ }
+
+ public BorderType getBorderTypeAsEnum() {
+ return type;
+ }
+
+ public UpdateStatus setBorderType(BorderType value) {
+ if (value == type) {
+ return UpdateStatus.NoChange;
+ }
+
+ type = value;
+ return UpdateStatus.Success;
+ }
+
+ public UpdateStatus setBorderType(Integer value) {
+ return setBorderType(BorderType.intToEnum(value));
+ }
+
+ /** titleposition */
+ public Integer getTitlePosition() {
+ return titlePosition == null ? null : titlePosition.ordinal();
+ }
+
+ public TitlePositionType getTitlePositionAsEnum() {
+ return titlePosition;
+ }
+
+ public UpdateStatus setTitlePosition(Integer value) {
+ return setTitlePosition(TitlePositionType.intToEnum(value));
+ }
+
+ public UpdateStatus setTitlePosition(TitlePositionType value) {
+ if (titlePosition == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ titlePosition = value;
+ return UpdateStatus.Success;
+ }
+
+ /** titleborder */
+ public Integer getTitleBorder() {
+ return titleBorder;
+ }
+
+ public UpdateStatus setTitleBorder(Integer value) {
+ if (titleBorder != null && titleBorder.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ titleBorder = value;
+ return UpdateStatus.Success;
+ }
+
+ /** title */
+ public String getTitle() {
+ return title;
+ }
+
+ public UpdateStatus setTitle(String value) {
+ if (title != null && title.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ title = value;
+ return UpdateStatus.Success;
+ }
+
+ /** thickness */
+ public Integer getThickness() {
+ return thickness;
+ }
+
+ public UpdateStatus setThickness(Integer value) {
+ if (thickness != null && thickness.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ thickness = value;
+ return UpdateStatus.Success;
+ }
+
+ /** style */
+ public Integer getStyle() {
+ return style == null ? null : style.ordinal();
+ }
+
+ public FrameBorderType getStyleAsEnum() {
+ return style;
+ }
+
+ public UpdateStatus setStyle(Integer value) {
+ return setStyle(FrameBorderType.intToEnum(value));
+ }
+
+ public UpdateStatus setStyle(FrameBorderType value) {
+ if (style != null && style.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ style = value;
+ return UpdateStatus.Success;
+ }
+
+ /** shadowOut */
+ public String getShadowOut() {
+ return shadowOutColor;
+ }
+
+ public UpdateStatus setShadowOut(String value) {
+ if (shadowOutColor != null && shadowOutColor.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ shadowOutColor = value;
+ return UpdateStatus.Success;
+ }
+
+ /** shadowIn */
+ public String getShadowIn() {
+ return shadowInColor;
+ }
+
+ public UpdateStatus setShadowIn(String value) {
+ if (shadowInColor != null && shadowInColor.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ shadowInColor = value;
+ return UpdateStatus.Success;
+ }
+
+ /** rounded */
+ public Boolean getRounded() {
+ return rounded;
+ }
+
+ public UpdateStatus setRounded(Boolean value) {
+ if (rounded != null && rounded.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ rounded = value;
+ return UpdateStatus.Success;
+ }
+
+ /** position */
+ public Double[] getPosition() {
+ return position;
+ }
+
+ public UpdateStatus setPosition(Double[] value) {
+ if (position != null && Arrays.equals(position, value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ position = value;
+ return UpdateStatus.Success;
+ }
+
+ /** outBorder */
+ public Integer getOutBorder() {
+ return outBorder;
+ }
+
+ public UpdateStatus setOutBorder(Integer value) {
+ if (outBorder != null && outBorder.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ outBorder = value;
+ return UpdateStatus.Success;
+ }
+
+ /** justification */
+ public Integer getJustification() {
+ return justification == null ? null : justification.ordinal();
+ }
+
+ public JustificationType getJustificationAsEnum() {
+ return justification;
+ }
+
+ public UpdateStatus setJustification(Integer value) {
+ return setJustification(JustificationType.intToEnum(value));
+ }
+
+ public UpdateStatus setJustification(JustificationType value) {
+ if (justification == value) {
+ return UpdateStatus.NoChange;
+ }
+
+ justification = value;
+ return UpdateStatus.Success;
+ }
+
+ /** inBorder */
+ public Integer getInBorder() {
+ return inBorder;
+ }
+
+ public UpdateStatus setInBorder(Integer value) {
+ if (inBorder != null && inBorder.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ inBorder = value;
+ return UpdateStatus.Success;
+ }
+
+ /** hlOutColor */
+ public String getHlOut() {
+ return hlOutColor;
+ }
+
+ public UpdateStatus setHlOut(String value) {
+ if (hlOutColor != null && hlOutColor.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ hlOutColor = value;
+ return UpdateStatus.Success;
+ }
+
+ /** hlInColor */
+ public String getHlIn() {
+ return hlInColor;
+ }
+
+ public UpdateStatus setHlIn(String value) {
+ if (hlInColor != null && hlInColor.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ hlInColor = value;
+ return UpdateStatus.Success;
+ }
+
+ /** fontWeight */
+ public String getFontWeight() {
+ return fontWeight;
+ }
+
+ public UpdateStatus setFontWeight(String value) {
+ if (fontWeight != null && fontWeight.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ fontWeight = value;
+ return UpdateStatus.Success;
+ }
+
+ /** fontSize */
+ public Integer getFontSize() {
+ return fontSize;
+ }
+
+ public UpdateStatus setFontSize(Integer value) {
+ if (fontSize != null && fontSize.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ fontSize = value;
+ return UpdateStatus.Success;
+ }
+
+ /** fontName */
+ public String getFontName() {
+ return fontName;
+ }
+
+ public UpdateStatus setFontName(String value) {
+ if (fontName != null && fontName.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ fontName = value;
+ return UpdateStatus.Success;
+ }
+
+ /** fontAngle */
+ public String getFontAngle() {
+ return fontAngle;
+ }
+
+ public UpdateStatus setFontAngle(String value) {
+ if (fontAngle != null && fontAngle.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ fontAngle = value;
+ return UpdateStatus.Success;
+ }
+
+ /** color */
+ public String getColor() {
+ return color;
+ }
+
+ public UpdateStatus setColor(String value) {
+ if (color != null && color.equals(value)) {
+ return UpdateStatus.NoChange;
+ }
+
+ color = value;
+ return UpdateStatus.Success;
+ }
+
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ }
+
+ public Integer getType() {
+ return __GO_UI_FRAME_BORDER__;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.java
new file mode 100755
index 000000000..34e6af265
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/frame/border/FrameBorderType.java
@@ -0,0 +1,73 @@
+package org.scilab.modules.graphic_objects.uicontrol.frame.border;
+
+public enum FrameBorderType {
+ NONE, LINE, BEVEL, SOFTBEVEL, ETCHED, TITLED, EMPTY, COMPOUND, MATTE;
+
+ public static FrameBorderType intToEnum(Integer value) {
+ if (value == null) {
+ return null;
+ }
+
+ switch (value) {
+ default :
+ case 0 :
+ return NONE;
+ case 1 :
+ return LINE;
+ case 2 :
+ return BEVEL;
+ case 3 :
+ return SOFTBEVEL;
+ case 4 :
+ return ETCHED;
+ case 5 :
+ return TITLED;
+ case 6 :
+ return EMPTY;
+ case 7 :
+ return COMPOUND;
+ case 8 :
+ return MATTE;
+ }
+ }
+
+ public static FrameBorderType stringToEnum(String value) {
+ if (value == null || value.equals("")) {
+ return null;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'l' || chars[0] == 'L') {
+ return LINE;
+ }
+
+ if (chars[0] == 'b' || chars[0] == 'B') {
+ return BEVEL;
+ }
+
+ if (chars[0] == 's' || chars[0] == 'S') {
+ return SOFTBEVEL;
+ }
+
+ if (chars[0] == 'e' || chars[0] == 'E') {
+ if (chars[1] == 'm' || chars[1] == 'M') {
+ return EMPTY;
+ }
+ return ETCHED;
+ }
+
+ if (chars[0] == 't' || chars[0] == 'T') {
+ return TITLED;
+ }
+
+ if (chars[0] == 'c' || chars[0] == 'C') {
+ return COMPOUND;
+ }
+
+ if (chars[0] == 'm' || chars[0] == 'M') {
+ return MATTE;
+ }
+
+ return NONE;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.java
new file mode 100755
index 000000000..b10b23834
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/layer/Layer.java
@@ -0,0 +1,92 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab enterprises - Antoine ELIAS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.layer;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_VALUE__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Layer extends Uicontrol {
+ private enum LayerProperty {
+ LAYER_VALUE,
+ LAYER_STRING
+ };
+
+
+ /**
+ * Constructor
+ */
+ public Layer() {
+ super();
+ setStyle(__GO_UI_LAYER__);
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Panel.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+
+ //layout
+ setLayout(LayoutType.BORDER);
+ }
+
+ public Object getPropertyFromName(int property) {
+ if (property == __GO_UI_TAB_VALUE__) {
+ return LayerProperty.LAYER_VALUE;
+ } else if (property == __GO_UI_TAB_STRING__) {
+ return LayerProperty.LAYER_STRING;
+ } else {
+ return super.getPropertyFromName(property);
+ }
+ }
+
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (!(property instanceof LayerProperty)) {
+ return super.setProperty(property, value);
+ }
+
+ LayerProperty p = (LayerProperty) property;
+ switch (p) {
+ case LAYER_STRING:
+ return setUiTabString((String[])value);
+ case LAYER_VALUE:
+ return setUiTabValue((Double[])value);
+ default:
+ return super.setProperty(property, value);
+ }
+ }
+
+ public UpdateStatus setUiTabString(String[] value) {
+ setString(value);
+ return UpdateStatus.NoChange;
+ }
+
+ public UpdateStatus setUiTabValue(Double[] value) {
+ setUiValue(value);
+ return UpdateStatus.NoChange;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.java
new file mode 100755
index 000000000..0cb236c81
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/listbox/ListBox.java
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.listbox;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class ListBox extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public ListBox() {
+ super();
+ setStyle(__GO_UI_LISTBOX__);
+ setUiValue(new Double[] {});
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("List.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+
+ public UpdateStatus setUiValue(Double[] value) {
+ return super.setUiValue(value);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.java
new file mode 100755
index 000000000..4534d492b
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/popupmenu/PopupMenu.java
@@ -0,0 +1,53 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.popupmenu;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class PopupMenu extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public PopupMenu() {
+ super();
+ setStyle(__GO_UI_POPUPMENU__);
+ setString(new String[] {});
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("ComboBox.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.java
new file mode 100755
index 000000000..a72e48058
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/pushbutton/PushButton.java
@@ -0,0 +1,61 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.pushbutton;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Bruno JOFRET
+ */
+public class PushButton extends Uicontrol {
+
+ private static final double BUTTON_RED_BACKGROUND = 0.6;
+ private static final double BUTTON_GREEN_BACKGROUND = 0.6;
+ private static final double BUTTON_BLUE_BACKGROUND = 0.6;
+
+ /**
+ * Constructor
+ */
+ public PushButton() {
+ super();
+ setStyle(__GO_UI_PUSHBUTTON__);
+
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_RAISED);
+ setBackgroundColor(new Double[] {
+ BUTTON_RED_BACKGROUND,
+ BUTTON_GREEN_BACKGROUND,
+ BUTTON_BLUE_BACKGROUND
+ });
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Button.font"));
+
+ //h-alignment
+ setHorizontalAlignment("center");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.java
new file mode 100755
index 000000000..8da298607
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/radiobutton/RadioButton.java
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.radiobutton;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Bruno JOFRET
+ */
+public class RadioButton extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public RadioButton() {
+ super();
+ setStyle(__GO_UI_RADIOBUTTON__);
+
+ // Default value is the min value (not checked)
+ Double[] value = new Double[1];
+ value[0] = getMin();
+ setUiValue(value);
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("RadioButton.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.java
new file mode 100755
index 000000000..a31e61190
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/slider/Slider.java
@@ -0,0 +1,55 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.slider;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Slider extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public Slider() {
+ super();
+ setStyle(__GO_UI_SLIDER__);
+
+ // Default value is the min value
+ Double[] value = new Double[1];
+ value[0] = getMin();
+ setUiValue(value);
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Slider.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.java
new file mode 100755
index 000000000..55938533f
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/tab/Tab.java
@@ -0,0 +1,95 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab enterprises - Antoine ELIAS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.tab;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB_VALUE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Tab extends Uicontrol {
+ private enum TabProperty {
+ TAB_VALUE,
+ TAB_STRING
+ };
+
+ /**
+ * Constructor
+ */
+ public Tab() {
+ super();
+ setStyle(__GO_UI_TAB__);
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("TabbedPane.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+
+ //layout
+ setLayout(LayoutType.BORDER);
+ }
+ }
+
+ public Object getPropertyFromName(int property) {
+ if (property == __GO_UI_TAB_VALUE__) {
+ return TabProperty.TAB_VALUE;
+ } else if (property == __GO_UI_TAB_STRING__) {
+ return TabProperty.TAB_STRING;
+ } else {
+ return super.getPropertyFromName(property);
+ }
+ }
+
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (!(property instanceof TabProperty)) {
+ return super.setProperty(property, value);
+ }
+
+ TabProperty p = (TabProperty) property;
+ switch (p) {
+ case TAB_STRING:
+ return setUiTabString((String[])value);
+ case TAB_VALUE:
+ return setUiTabValue((Double[])value);
+ default:
+ return super.setProperty(property, value);
+ }
+ }
+
+ public UpdateStatus setUiTabString(String[] value) {
+ setString(value);
+ return UpdateStatus.NoChange;
+ }
+
+ public UpdateStatus setUiTabValue(Double[] value) {
+ setUiValue(value);
+ return UpdateStatus.NoChange;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/table/Table.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/table/Table.java
new file mode 100755
index 000000000..567cd4c5b
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/table/Table.java
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.table;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TABLE__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Table extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public Table() {
+ super();
+ setStyle(__GO_UI_TABLE__);
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Table.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.java
new file mode 100755
index 000000000..92ec3d9f0
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uiimage/UiImage.java
@@ -0,0 +1,52 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.uiimage;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGE__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class UiImage extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public UiImage() {
+ super();
+ setStyle(__GO_UI_IMAGE__);
+ Double[] imageInfos = {1.0, 1.0, 0.0, 0.0, 0.0}; // {XScale, YScale, XShear, YShear, RotationAngle}
+ setUiValue(imageInfos);
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_RAISED);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Panel.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.java
new file mode 100755
index 000000000..81753a933
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/uitext/UiText.java
@@ -0,0 +1,50 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uicontrol.uitext;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
+
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class UiText extends Uicontrol {
+
+ /**
+ * Constructor
+ */
+ public UiText() {
+ super();
+ setStyle(__GO_UI_TEXT__);
+
+ if (Console.getConsole().getUseDeprecatedLF()) {
+ setRelief(RELIEF_FLAT);
+ } else {
+ UIDefaults defaults = UIManager.getDefaults();
+
+ //font
+ setFont(defaults.getFont("Label.font"));
+
+ //h-alignment
+ setHorizontalAlignment("left");
+
+ //v-alignement
+ setVerticalAlignment("middle");
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uimenu/Uimenu.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uimenu/Uimenu.java
new file mode 100755
index 000000000..679ccaf26
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uimenu/Uimenu.java
@@ -0,0 +1,313 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.uimenu;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UIMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ACCELERATOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FOREGROUNDCOLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ICON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MNEMONIC__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SEPARATOR__;
+
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+
+/**
+ * @author Vincent COUVERT
+ */
+public class Uimenu extends GraphicObject {
+
+ private boolean checked;
+ private boolean enable = true;
+ private Double[] foregroundColor = {0.0, 0.0, 0.0};
+ private String icon = "";
+ private String label = "";
+ private String mnemonic = "";
+ private String accelerator = "";
+ private boolean separator;
+
+ /**
+ * All uimenu properties
+ */
+ private enum UimenuProperty {
+ ACCELERATOR,
+ CHECKED,
+ ENABLE,
+ FOREGROUNDCOLOR,
+ ICON,
+ LABEL,
+ MNEMONIC,
+ SEPARATOR
+ };
+
+ /**
+ * Constructor
+ */
+ public Uimenu() {
+ super();
+ setCallbackString("");
+ setCallbackType(0);
+ }
+
+ /**
+ * Get this object type
+ * @return uicontrol
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#getType()
+ */
+ public Integer getType() {
+ return __GO_UIMENU__;
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_UI_ACCELERATOR__ :
+ return UimenuProperty.ACCELERATOR;
+ case __GO_UI_CHECKED__ :
+ return UimenuProperty.CHECKED;
+ case __GO_UI_ENABLE__ :
+ return UimenuProperty.ENABLE;
+ case __GO_UI_FOREGROUNDCOLOR__ :
+ return UimenuProperty.FOREGROUNDCOLOR;
+ case __GO_UI_ICON__ :
+ return UimenuProperty.ICON;
+ case __GO_UI_LABEL__ :
+ return UimenuProperty.LABEL;
+ case __GO_UI_MNEMONIC__ :
+ return UimenuProperty.MNEMONIC;
+ case __GO_UI_SEPARATOR__ :
+ return UimenuProperty.SEPARATOR;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ Object propertyValue = null;
+ if (property == UimenuProperty.ACCELERATOR) {
+ propertyValue = getAccelerator();
+ } else if (property == UimenuProperty.CHECKED) {
+ propertyValue = getChecked();
+ } else if (property == UimenuProperty.ENABLE) {
+ propertyValue = getEnable();
+ } else if (property == UimenuProperty.FOREGROUNDCOLOR) {
+ propertyValue = getForegroundColor();
+ } else if (property == UimenuProperty.ICON) {
+ propertyValue = getIcon();
+ } else if (property == UimenuProperty.LABEL) {
+ propertyValue = getLabel();
+ } else if (property == UimenuProperty.MNEMONIC) {
+ propertyValue = getMnemonic();
+ } else if (property == UimenuProperty.SEPARATOR) {
+ propertyValue = getSeparator();
+ } else {
+ propertyValue = super.getProperty(property);
+ }
+ return propertyValue;
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == UimenuProperty.ACCELERATOR) {
+ setAccelerator((String) value);
+ } else if (property == UimenuProperty.CHECKED) {
+ setChecked((Boolean) value);
+ } else if (property == UimenuProperty.ENABLE) {
+ setEnable((Boolean) value);
+ } else if (property == UimenuProperty.FOREGROUNDCOLOR) {
+ setForegroundColor((Double[]) value);
+ } else if (property == UimenuProperty.ICON) {
+ setIcon((String) value);
+ } else if (property == UimenuProperty.LABEL) {
+ setLabel((String) value);
+ } else if (property == UimenuProperty.MNEMONIC) {
+ setMnemonic((String) value);
+ } else if (property == UimenuProperty.SEPARATOR) {
+ setSeparator((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu checked status
+ * @return the status
+ */
+ public Boolean getChecked() {
+ return this.checked;
+ }
+
+ /**
+ * Set the menu checked status
+ * @param checked the status
+ */
+ public UpdateStatus setChecked(Boolean checked) {
+ this.checked = checked;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu enable status
+ * @return the status
+ */
+ public Boolean getEnable() {
+ return this.enable;
+ }
+
+ /**
+ * Set the menu enable status
+ * @param enable the status
+ */
+ public UpdateStatus setEnable(Boolean enable) {
+ this.enable = enable;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu Foreground Color
+ * @return the RGB color
+ */
+ public Double[] getForegroundColor() {
+ return this.foregroundColor;
+ }
+
+ /**
+ * Set the menu Foreground Color
+ * @param colors the RGB color
+ */
+ public UpdateStatus setForegroundColor(Double[] colors) {
+ this.foregroundColor = colors;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu icon
+ * @return the icon
+ */
+ public String getIcon() {
+ return this.icon;
+ }
+
+ /**
+ * Set the menu icon
+ * @param icon the icon
+ */
+ public UpdateStatus setIcon(String icon) {
+ this.icon = icon;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu label
+ * @return the label
+ */
+ public String getLabel() {
+ return this.label;
+ }
+
+ /**
+ * Set the menu label
+ * @param label the label
+ */
+ public UpdateStatus setLabel(String label) {
+ this.label = label;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu mnemonic
+ * @return the mnemonic
+ */
+ public String getMnemonic() {
+ return this.mnemonic;
+ }
+
+ /**
+ * Set the menu mnemonic
+ * @param mnemonic the mnemonic
+ */
+ public UpdateStatus setMnemonic(String mnemonic) {
+ this.mnemonic = mnemonic;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu accelerator
+ * @return the accelerator
+ */
+ public String getAccelerator() {
+ return this.accelerator;
+ }
+
+ /**
+ * Set the menu accelerator
+ * @param accelerator the accelerator
+ */
+ public UpdateStatus setAccelerator(String accelerator) {
+ this.accelerator = accelerator;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Get the menu separator mode
+ * @return the separator mode
+ */
+ public Boolean getSeparator() {
+ return this.separator;
+ }
+
+ /**
+ * Set the menu separator mode
+ * @param separator the separator mode
+ */
+ public UpdateStatus setSeparator(Boolean separator) {
+ this.separator = separator;
+ return UpdateStatus.Success;
+ }
+
+ @Override
+ public Uimenu clone() {
+ Uimenu copy = (Uimenu) super.clone();
+ copy.setValid(true);
+ return copy;
+ }
+
+ /**
+ * Accept method
+ * @param visitor the visitor
+ * @see org.scilab.modules.graphic_objects.graphicObject.GraphicObject#accept(org.scilab.modules.graphic_objects.graphicObject.Visitor)
+ */
+ public void accept(Visitor visitor) {
+
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/LayoutType.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/LayoutType.java
new file mode 100755
index 000000000..c9e78afbd
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/LayoutType.java
@@ -0,0 +1,68 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.utils;
+
+
+public enum LayoutType {
+ NONE, GRIDBAG, GRID, BORDER;
+
+ public static LayoutType intToEnum(Integer value) {
+ switch (value) {
+ default:
+ case 0:
+ return NONE;
+ case 1:
+ return GRIDBAG;
+ case 2:
+ return GRID;
+ case 3:
+ return BORDER;
+ }
+ }
+
+ public static LayoutType stringToEnum(String value) {
+
+ if (value == null || value.equals("")) {
+ return NONE;
+ }
+
+ char[] chars = value.toCharArray();
+ if (chars[0] == 'g' || chars[0] == 'G') {
+ if (value.equalsIgnoreCase("grid")) {
+ return GRID;
+ } else if (value.equalsIgnoreCase("gridbag")) {
+ return GRIDBAG;
+ }
+ }
+
+ if (chars[0] == 'b' || chars[0] == 'B') {
+ return BORDER;
+ }
+
+ return NONE;
+ }
+
+ public static String enumToString(LayoutType value) {
+ switch (value) {
+ default:
+ case NONE:
+ return "none";
+ case GRIDBAG:
+ return "gridbag";
+ case GRID:
+ return "grid";
+ case BORDER:
+ return "border";
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.java
new file mode 100755
index 000000000..fbbc86064
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarBuilder.java
@@ -0,0 +1,433 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent Couvert
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.utils;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACKTYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACK__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_HIDDEN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ACCELERATOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ICON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MNEMONIC__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SEPARATOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UIMENU__;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Collection;
+import java.util.TreeSet;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.scilab.modules.commons.OS;
+import org.scilab.modules.commons.ScilabConstants;
+import org.scilab.modules.commons.xml.ScilabDocumentBuilderFactory;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.CallBack;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.localization.Messages;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+
+/**
+ * Create a menuBar from an XML file
+ * @author Vincent COUVERT
+ */
+public final class MenuBarBuilder {
+
+ private static final String MAINMENUBARXMLFILE = ScilabConstants.SCI + "/modules/gui/etc/main_menubar.xml";
+ private static final String GRAPHICSMENUBARXMLFILE = ScilabConstants.SCI + "/modules/gui/etc/graphics_menubar.xml";
+
+ private static final String FILE_NOT_FOUND = "Could not find file: ";
+
+ private static final String CANNOT_CREATE_MENUBAR = "Cannot create MenuBar.\n"
+ + "Check if file *_menubar.xml is available and valid.";
+
+ private static boolean isParentValid = true;;
+
+ /**
+ * Default constructor
+ */
+ private MenuBarBuilder() {
+ throw new UnsupportedOperationException();
+ }
+
+ /**
+ * Create a proxy to access a XML file
+ * @param resultClass class for the return value
+ * @param fileToLoad XML file to load
+ * @return a proxy used to read the XML file
+ * @throws SAXException can be thrown when an error occurs while reading the file
+ * @throws IOException can be thrown when an error occurs while accessing the file
+ * @throws ParserConfigurationException can be thrown when an error occurs while parsing the file
+ */
+ public static Object buildMenuBar(Class[] resultClass, String fileToLoad) throws SAXException, IOException, ParserConfigurationException {
+
+ InvocationHandler invocationHandler = new MenuBarConfigurationHandler(fileToLoad);
+
+ return Proxy.newProxyInstance(invocationHandler.getClass().getClassLoader(), resultClass, invocationHandler);
+ }
+
+ /**
+ * Create console menubar from data in a XML file
+ * @param consoleId the console
+ */
+ public static void buildConsoleMenuBar(Integer consoleId) {
+ buildMenuBar(MAINMENUBARXMLFILE, consoleId);
+ }
+
+ /**
+ * Create graphic figure menubar from data in a XML file
+ * @param figureId the figure
+ */
+ public static void buildFigureMenuBar(Integer figureId) {
+ boolean isheadless = false;
+
+ try {
+ Class clazz = ClassLoader.getSystemClassLoader().loadClass("org.scilab.modules.gui.SwingView");
+ Method meth = clazz.getMethod("isHeadless");
+ isheadless = (Boolean) meth.invoke(null);
+ } catch (Exception e) {
+ System.err.println(e);
+ }
+
+ if (!isheadless) {
+ MenuBarBuilder.isParentValid = false;
+ buildMenuBar(GRAPHICSMENUBARXMLFILE, figureId);
+ }
+ }
+
+ /**
+ * Create children used in the menubar from data in a XML file
+ * @param fileToLoad XML file to load
+ * @param parentId the menubar parent
+ */
+ public static void buildMenuBar(String fileToLoad, Integer parentId) {
+
+ try {
+ MenuBarConfiguration menuBarConfig =
+ (MenuBarConfiguration) buildMenuBar(new Class[] {MenuBarConfiguration.class}, fileToLoad);
+ menuBarConfig.addMenus(parentId);
+ } catch (IllegalArgumentException e) {
+ System.err.println(CANNOT_CREATE_MENUBAR);
+ System.err.println(FILE_NOT_FOUND + e.getLocalizedMessage());
+ } catch (SAXException e) {
+ System.err.println(CANNOT_CREATE_MENUBAR);
+ System.err.println(FILE_NOT_FOUND + e.getLocalizedMessage());
+ } catch (IOException e) {
+ System.err.println(CANNOT_CREATE_MENUBAR);
+ System.err.println(FILE_NOT_FOUND + e.getLocalizedMessage());
+ } catch (ParserConfigurationException e) {
+ System.err.println(CANNOT_CREATE_MENUBAR);
+ System.err.println(FILE_NOT_FOUND + e.getLocalizedMessage());
+ }
+ }
+
+ /**
+ * Class used to read the XMl file
+ */
+ private static class MenuBarConfigurationHandler implements InvocationHandler {
+ protected static final String LABEL = "label";
+ protected static final String MENU = "menu";
+ protected static final String MNEMONIC = "mnemonic";
+ protected static final String SUBMENU = "submenu";
+ protected static final String SEPARATOR = "separator";
+ protected static final String ENABLED = "enabled";
+ protected static final String ACCELERATOR = "accelerator";
+ protected static final String CALLBACK = "callback";
+ protected static final String TYPE = "type";
+ protected static final String INSTRUCTION = "instruction";
+ protected static final String TRUE = "true";
+ protected static final String ICON = "icon";
+ protected static final String MACOSX = "macosx";
+
+ private Document dom;
+ private Collection<String> internalMethodNames;
+
+
+ /**
+ * Constructor
+ * @param xmlFile XML file to load
+ * @throws SAXException can be thrown when an error occurs while reading the file
+ * @throws IOException can be thrown when an error occurs while accessing the file
+ * @throws ParserConfigurationException can be thrown when an error occurs while parsing the file
+ */
+ public MenuBarConfigurationHandler(String xmlFile) throws SAXException, IOException, ParserConfigurationException {
+
+ if (!new File(xmlFile).exists()) {
+ throw new java.io.IOException();
+ }
+
+ // Build dictionary for internal method
+ internalMethodNames = new TreeSet<String>();
+ Method[] internalMethodes = this.getClass().getMethods();
+ for (Method method : internalMethodes) {
+ internalMethodNames.add(method.getName());
+ }
+
+ // Build xml document for request
+ dom = ScilabDocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(xmlFile));
+ }
+
+ /**
+ * Invoke a proxy to get data
+ * @param proxy the proxy to call
+ * @param method the method to call
+ * @param args the arguments for the method
+ * @return the object read
+ * @throws IllegalAccessException thrown when the method called is inaccessible
+ * @throws InvocationTargetException thorwn when the method called threw an exception
+ * @throws NoSuchMethodException thrown when invoking a non-existing method
+ * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])
+ */
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
+ if (internalMethodNames.contains(method.getName())) {
+ return getClass().getMethod(method.getName(), method.getParameterTypes()).invoke(this, args);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Add menus to a menubar using Scilab MVC
+ * @param parentId the tab ID to which the menus will be added to
+ * @see org.scilab.modules.MenuBarConfiguration.utils.MenuBarConfiguration#addMenus(org.scilab.modules.gui.menubar.MenuBar)
+ */
+ public void addMenus(Integer parentId) {
+
+ // delete old menus
+ for (Integer childId : (Integer []) GraphicController.getController().getProperty(parentId, GraphicObjectProperties.__GO_CHILDREN__)) {
+ if (GraphicController.getController().getProperty(childId, GraphicObjectProperties.__GO_TYPE__).equals(__GO_UIMENU__)) {
+ GraphicController.getController().removeRelationShipAndDelete(childId);
+ }
+ }
+
+ NodeList menus = dom.getElementsByTagName(MENU);
+
+ for (int i = 0; i < menus.getLength(); i++) {
+ // Create the menu
+ Integer menuId = null;
+ if (isParentValid) {
+ menuId = GraphicController.getController().askObject(Type.UIMENU);
+ } else {
+ menuId = GraphicController.getController().askObject(Type.UIMENUMODEL);
+ }
+
+ // The menu is not visible in Scilab view by default
+ GraphicController.getController().setProperty(menuId, __GO_HIDDEN__, true);
+
+ // Set the label
+ String menuLabel = Messages.gettext(menus.item(i).getAttributes().getNamedItem(LABEL).getNodeValue());
+ GraphicController.getController().setProperty(menuId, __GO_UI_LABEL__, menuLabel);
+
+ // Set the mnemonic if given
+ if (menus.item(i).getAttributes().getNamedItem(MNEMONIC) != null) {
+ String mnemonicString = menus.item(i).getAttributes().getNamedItem(MNEMONIC).getNodeValue();
+ GraphicController.getController().setProperty(menuId, __GO_UI_MNEMONIC__, mnemonicString);
+ }
+
+ // Set the icon if given
+ if (menus.item(i).getAttributes().getNamedItem(ICON) != null) {
+ String iconName = menus.item(i).getNodeValue();
+ GraphicController.getController().setProperty(menuId, __GO_UI_ICON__, iconName);
+ }
+
+ // Set the enable status if given
+ if (menus.item(i).getAttributes().getNamedItem(ENABLED) != null) {
+ boolean enabled = menus.item(i).getAttributes().getNamedItem(ENABLED).getNodeValue().equals(TRUE);
+ GraphicController.getController().setProperty(menuId, __GO_UI_ENABLE__, enabled);
+ }
+ // Set the menu parent
+ GraphicController.getController().setGraphicObjectRelationship(parentId, menuId);
+ addSubMenus(menuId, i);
+ }
+ }
+
+ /**
+ * Read submenus data in the XML file and create them using Scilab MVC
+ * @param parentMenuId the parent menu UID for submenus
+ * @param index the index of the parent in menu list
+ */
+ public void addSubMenus(Integer parentMenuId, int index) {
+ Node submenu = dom.getElementsByTagName(MENU).item(index).getFirstChild();
+
+ boolean separator = false;
+ boolean macosx = true;
+
+ while (submenu != null) {
+ if (submenu.getNodeName() == SEPARATOR) {
+ // Add a separator
+ separator = true;
+ } else if (submenu.getNodeName() == SUBMENU) {
+ // Create the menu
+ Integer menuId = null;
+ if (isParentValid) {
+ menuId = GraphicController.getController().askObject(Type.UIMENU);
+ } else {
+ menuId = GraphicController.getController().askObject(Type.UIMENUMODEL);
+ }
+
+ // The menu is not visible in Scilab view by default
+ GraphicController.getController().setProperty(menuId, __GO_HIDDEN__, true);
+
+ // Set the menu parent
+ GraphicController.getController().setGraphicObjectRelationship(parentMenuId, menuId);
+
+ // First we have to read its attributes
+ NamedNodeMap attributes = submenu.getAttributes();
+
+ for (int i = 0; i < attributes.getLength(); i++) {
+ if (attributes.item(i).getNodeName() == LABEL) {
+ // Set the label
+ String menuLabel = Messages.gettext(attributes.item(i).getNodeValue());
+ GraphicController.getController().setProperty(menuId, __GO_UI_LABEL__, menuLabel);
+ } else if (attributes.item(i).getNodeName() == MNEMONIC) {
+ // Set the mnemonic
+ String mnemonicString = attributes.item(i).getNodeValue();
+ GraphicController.getController().setProperty(menuId, __GO_UI_MNEMONIC__, mnemonicString);
+ } else if (attributes.item(i).getNodeName() == ENABLED) {
+ // Set the enable status
+ boolean enabled = attributes.item(i).getNodeValue().equals(TRUE);
+ GraphicController.getController().setProperty(menuId, __GO_UI_ENABLE__, enabled);
+ } else if (attributes.item(i).getNodeName() == ICON) {
+ // Set the icon
+ String iconName = attributes.item(i).getNodeValue();
+ GraphicController.getController().setProperty(menuId, __GO_UI_ICON__, iconName);
+ } else if (attributes.item(i).getNodeName() == ACCELERATOR) {
+ // Set the accelerator
+ String acceleratorString = attributes.item(i).getNodeValue();
+ GraphicController.getController().setProperty(menuId, __GO_UI_ACCELERATOR__, acceleratorString);
+ } else if (attributes.item(i).getNodeName() == MACOSX) {
+ macosx = attributes.item(i).getNodeValue().equals(TRUE);
+ if (!macosx && OS.get() == OS.MAC) {
+ GraphicController.getController().removeRelationShipAndDelete(menuId);
+ separator = false;
+ }
+ }
+ }
+
+ // Then we get its callback (if exists)
+ Node callback = submenu.getFirstChild();
+ while (callback != null) {
+ if (callback.getNodeName() == CALLBACK) {
+ NamedNodeMap cbAttributes = callback.getAttributes();
+ String command = null;
+ int commandType = CallBack.UNTYPED;
+ for (int j = 0; j < cbAttributes.getLength(); j++) {
+ if (cbAttributes.item(j).getNodeName() == INSTRUCTION) {
+ command = cbAttributes.item(j).getNodeValue();
+ } else if (cbAttributes.item(j).getNodeName() == TYPE) {
+ commandType = Integer.parseInt(cbAttributes.item(j).getNodeValue());
+ }
+ }
+ if (command != null && commandType != CallBack.UNTYPED) {
+ GraphicController.getController().setProperty(menuId, __GO_CALLBACK__, command);
+ GraphicController.getController().setProperty(menuId, __GO_CALLBACKTYPE__, commandType);
+ }
+ } else if (callback.getNodeName() == SUBMENU) {
+ addSubMenuItem(menuId, callback);
+ }
+ // Read next child
+ callback = callback.getNextSibling();
+ }
+ // Manage separators
+ if (separator) {
+ GraphicController.getController().setProperty(menuId, __GO_UI_SEPARATOR__, true);
+ separator = false;
+ }
+ }
+ // Read next child
+ submenu = submenu.getNextSibling();
+ }
+ }
+
+ /**
+ * Add submenu for menu
+ * @param parentMenuItemId object with this id will become a menu with subMenuItems
+ * @param node to get attributs of the menu
+ */
+ public void addSubMenuItem(Integer parentMenuItemId, Node node) {
+
+ NamedNodeMap attributes = node.getAttributes();
+
+ // Create the menu
+ Integer subMenuItemId = null;
+ if (isParentValid) {
+ subMenuItemId = GraphicController.getController().askObject(Type.UIMENU);
+ } else {
+ subMenuItemId = GraphicController.getController().askObject(Type.UIMENUMODEL);
+ }
+
+ // The menu is not visible in Scilab view by default
+ GraphicController.getController().setProperty(subMenuItemId, __GO_HIDDEN__, true);
+
+ // Set the menu parent
+ GraphicController.getController().setGraphicObjectRelationship(parentMenuItemId, subMenuItemId);
+
+ for (int i = 0; i < attributes.getLength(); i++) {
+ if (attributes.item(i).getNodeName() == LABEL) {
+ // Set the label
+ String menuLabel = Messages.gettext(attributes.item(i).getNodeValue());
+ GraphicController.getController().setProperty(subMenuItemId, __GO_UI_LABEL__, menuLabel);
+ } else if (attributes.item(i).getNodeName() == MNEMONIC) {
+ // Set the mnemonic
+ String mnemonicString = attributes.item(i).getNodeValue();
+ GraphicController.getController().setProperty(subMenuItemId, __GO_UI_MNEMONIC__, mnemonicString);
+ } else if (attributes.item(i).getNodeName() == ICON) {
+ String iconName = attributes.item(i).getNodeValue();
+ GraphicController.getController().setProperty(subMenuItemId, __GO_UI_ICON__, iconName);
+ } else if (attributes.item(i).getNodeName() == ENABLED) {
+ // Set the enable status
+ boolean enabled = attributes.item(i).getNodeValue().equals(TRUE);
+ GraphicController.getController().setProperty(subMenuItemId, __GO_UI_ENABLE__, enabled);
+ }
+ }
+
+ // Then we get its callback (if exists)
+ Node callback = node.getFirstChild();
+ while (callback != null) {
+ if (callback.getNodeName() == CALLBACK) {
+ NamedNodeMap cbAttributes = callback.getAttributes();
+ String command = null;
+ int commandType = CallBack.UNTYPED;
+ for (int j = 0; j < cbAttributes.getLength(); j++) {
+ if (cbAttributes.item(j).getNodeName() == INSTRUCTION) {
+ command = cbAttributes.item(j).getNodeValue();
+ } else if (cbAttributes.item(j).getNodeName() == TYPE) {
+ commandType = Integer.parseInt(cbAttributes.item(j).getNodeValue());
+ }
+ }
+ if (command != null && commandType != CallBack.UNTYPED) {
+ GraphicController.getController().setProperty(subMenuItemId, __GO_CALLBACK__, command);
+ GraphicController.getController().setProperty(subMenuItemId, __GO_CALLBACKTYPE__, commandType);
+ }
+ } else if (callback.getNodeName() == SUBMENU) {
+ addSubMenuItem(subMenuItemId, callback);
+ }
+ // Read next child
+ callback = callback.getNextSibling();
+ }
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.java
new file mode 100755
index 000000000..b4a369975
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/MenuBarConfiguration.java
@@ -0,0 +1,34 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Vincent Couvert
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.utils;
+
+/**
+ * Scilab menubar configuration
+ * All methods needed to create a menubar
+ * @author Vincent COUVERT
+ */
+public interface MenuBarConfiguration {
+
+ /**
+ * Add menus to a menubar
+ * @param parentId the parent figure UID
+ */
+ void addMenus(Integer parentId);
+
+ /**
+ * Read submenus data in the XML file
+ * @param parentId the parent figure UID
+ * @param index the index of the parent in menu list
+ */
+ void addSubMenus(Integer parentId, int index);
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/Utils.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/Utils.java
new file mode 100755
index 000000000..cd98977a0
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/utils/Utils.java
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.utils;
+
+/**
+ * Class Utils
+ * A set of static methods used to determine the validity of points or values.
+ * @author Manuel JULIACHS
+ */
+public class Utils {
+
+ /**
+ * Tests whether a scalar value is valid.
+ * The value is valid if it is neither infinite nor a NaN.
+ * @param the scalar value to test.
+ * @return true if the value is valid, false if it is not.
+ */
+ public static boolean isValid(double x) {
+ if (Double.isNaN(x) || Double.isInfinite(x)) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ /**
+ * Tests whether a point is valid.
+ * The point is valid if none of its coordinates is infinite or a NaN.
+ * @param the point's x-coordinate.
+ * @param the point's y-coordinate.
+ * @param the point's z-coordinate.
+ * @return true if the point is valid, false if it is not.
+ */
+ public static boolean isValid(double x, double y, double z) {
+ if (Double.isNaN(x) || Double.isNaN(y) || Double.isNaN(z) || Double.isInfinite(x) || Double.isInfinite(y) || Double.isInfinite(z)) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ /**
+ * Determines if a single-component point is valid in logarithmic scale.
+ * @param x the point's coordinate.
+ * @return true if the point is valid, false if it is not.
+ */
+ public static boolean isLogValid(double x) {
+ if (x > 0.0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Determines if a point is valid in logarithmic scale.
+ * It checks whether any of its coordinates is strictly less than 0 (if the
+ * logarithmic scale applies). In the event of the former, the point is
+ * determined as not valid.
+ * @param the point's x-coordinate.
+ * @param the point's y-coordinate.
+ * @param the point's z-coordinate.
+ * @param the bit mask specifying for which coordinates the logarithmic scale is used.
+ * @return true if the point is valid, false if it is not.
+ */
+ public static boolean isLogValid(double x, double y, double z, int logMask) {
+ boolean valid = true;
+
+ if ((logMask & 0x1) != 0) {
+ valid = valid && (x > 0.0);
+ }
+
+ if ((logMask & 0x2) != 0) {
+ valid = valid && (y > 0.0);
+ }
+
+ if ((logMask & 0x4) != 0) {
+ valid = valid && (z > 0.0);
+ }
+
+ return valid;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Arrow.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Arrow.java
new file mode 100755
index 000000000..eb7254819
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Arrow.java
@@ -0,0 +1,185 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARROW_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BASE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DIRECTION__;
+
+import org.scilab.modules.graphic_objects.contouredObject.ContouredObject;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+
+/**
+ * Arrow class
+ * @author Manuel JULIACHS
+ */
+public class Arrow extends ContouredObject {
+ /** Arrow properties names */
+ public enum ArrowProperty { BASE, BASEX, BASEY, BASEZ, DIRECTION, DIRECTIONX, DIRECTIONY, DIRECTIONZ, ARROWSIZE };
+
+ /** Arrow base (x,y,z) coordinates */
+ private double[] base;
+
+ /** Arrow vector (x,y,z) coordinates */
+ private double[] direction;
+
+ /** Arrow size */
+ private double arrowSize;
+
+ /** Constructor */
+ public Arrow() {
+ super();
+ base = new double[] {0.0, 0.0, 0.0};
+ direction = new double[] {0.0, 0.0, 0.0};
+ arrowSize = -1.0;
+ }
+
+ /** Clone method */
+ public Arrow clone() {
+ Arrow copy = (Arrow) super.clone();
+
+ copy.base = new double[] {0.0, 0.0, 0.0};
+ copy.direction = new double[] {0.0, 0.0, 0.0};
+
+ return copy;
+ }
+
+
+ @Override
+ public void accept(Visitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_BASE__ :
+ return ArrowProperty.BASE;
+ case __GO_DIRECTION__ :
+ return ArrowProperty.DIRECTION;
+ case __GO_ARROW_SIZE__ :
+ return ArrowProperty.ARROWSIZE;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ArrowProperty.BASE) {
+ return getBase();
+ } else if (property == ArrowProperty.DIRECTION) {
+ return getDirection();
+ } else if (property == ArrowProperty.ARROWSIZE) {
+ return getArrowSize();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ArrowProperty.BASE) {
+ setBase((Double[]) value);
+ } else if (property == ArrowProperty.DIRECTION) {
+ setDirection((Double[]) value);
+ } else if (property == ArrowProperty.ARROWSIZE) {
+ setArrowSize((Double) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrowSize
+ */
+ public Double getArrowSize() {
+ return arrowSize;
+ }
+
+ /**
+ * @param arrowSize the arrowSize to set
+ */
+ public UpdateStatus setArrowSize(Double arrowSize) {
+ this.arrowSize = arrowSize;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the base
+ */
+ public Double[] getBase() {
+ Double[] retBase = new Double[3];
+
+ retBase[0] = base[0];
+ retBase[1] = base[1];
+ retBase[2] = base[2];
+
+ return retBase;
+ }
+
+ /**
+ * @param base the base to set
+ */
+ public UpdateStatus setBase(Double[] base) {
+ this.base[0] = base[0];
+ this.base[1] = base[1];
+ this.base[2] = base[2];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the direction
+ */
+ public Double[] getDirection() {
+ Double[] retDirection = new Double[3];
+
+ retDirection[0] = direction[0];
+ retDirection[1] = direction[1];
+ retDirection[2] = direction[2];
+
+ return retDirection;
+ }
+
+ /**
+ * @param direction the direction to set
+ */
+ public UpdateStatus setDirection(Double[] direction) {
+ this.direction[0] = direction[0];
+ this.direction[1] = direction[1];
+ this.direction[2] = direction[2];
+ return UpdateStatus.Success;
+ }
+
+ public Integer getType() {
+ return -1;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Champ.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Champ.java
new file mode 100755
index 000000000..237ff6859
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Champ.java
@@ -0,0 +1,480 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+import org.scilab.modules.graphic_objects.utils.Utils;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Champ class
+ * Stores the arrows in row-major order, all the arrows of
+ * row j having the same y-coordinate.
+ * @author Manuel JULIACHS
+ */
+public class Champ extends VectField {
+ /** Champ properties names */
+ private enum ChampProperty { DIMENSIONS, COLORED, BOUNDINGBOX, MAXLENGTH, MAXUSABLELENGTH };
+
+ /** Dimensions: 2-element array (number of columns Ni, number of rows Nj) */
+ private int[] dimensions;
+
+ /** Specifies whether vectors are colored or not */
+ private boolean colored;
+
+ /** Constructor */
+ public Champ() {
+ super();
+ colored = false;
+ dimensions = new int[2];
+ dimensions[0] = 0;
+ dimensions[1] = 0;
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_CHAMP_DIMENSIONS__ :
+ return ChampProperty.DIMENSIONS;
+ case __GO_BASE_X__ :
+ return Arrow.ArrowProperty.BASEX;
+ case __GO_BASE_Y__ :
+ return Arrow.ArrowProperty.BASEY;
+ case __GO_COLORED__ :
+ return ChampProperty.COLORED;
+ case __GO_BOUNDING_BOX__ :
+ return ChampProperty.BOUNDINGBOX;
+ case __GO_MAX_LENGTH__ :
+ return ChampProperty.MAXLENGTH;
+ case __GO_MAX_USABLE_LENGTH__ :
+ return ChampProperty.MAXUSABLELENGTH;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == ChampProperty.DIMENSIONS) {
+ return getDimensions();
+ } else if (property == Arrow.ArrowProperty.BASEX) {
+ return getBaseX();
+ } else if (property == Arrow.ArrowProperty.BASEY) {
+ return getBaseY();
+ } else if (property == ChampProperty.COLORED) {
+ return getColored();
+ } else if (property == ChampProperty.BOUNDINGBOX) {
+ return getBoundingBox();
+ } else if (property == ChampProperty.MAXLENGTH) {
+ return getMaxLength();
+ } else if (property == ChampProperty.MAXUSABLELENGTH) {
+ return getMaxUsableLength();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == ChampProperty.DIMENSIONS) {
+ setDimensions((Integer[]) value);
+ } else if (property == Arrow.ArrowProperty.BASEX) {
+ setBaseX((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.BASEY) {
+ setBaseY((Double[]) value);
+ } else if (property == ChampProperty.COLORED) {
+ setColored((Boolean) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the field's dimensions
+ */
+ public Integer[] getDimensions() {
+ Integer[] retDimensions = new Integer[2];
+ retDimensions[0] = dimensions[0];
+ retDimensions[1] = dimensions[1];
+
+ return retDimensions;
+ }
+
+ /**
+ * @param dimensions the field dimensions to set
+ */
+ public UpdateStatus setDimensions(Integer[] dimensions) {
+ this.dimensions[0] = dimensions[0];
+ this.dimensions[1] = dimensions[1];
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Returns the arrow bases y coordinates (Ni-element array)
+ * @return the arrow bases x coordinates
+ */
+ public Double[] getBaseX() {
+ Double[] retArrowBaseX;
+
+ retArrowBaseX = new Double[dimensions[0]];
+
+ for (int i = 0; i < dimensions[0]; i++) {
+ Double[] base = getArrow(i, 0).getBase();
+ retArrowBaseX[i] = base[0];
+ }
+
+ return retArrowBaseX;
+ }
+
+ /**
+ * Sets the arrow bases x coordinates
+ * The arrows part of column i have the same base x-coordinate
+ * @param baseX the array of x coordinates (Ni elements)
+ */
+ public UpdateStatus setBaseX(Double[] baseX) {
+ for (int j = 0; j < dimensions[1]; j++) {
+ for (int i = 0; i < dimensions[0]; i++) {
+ Double[] base = getArrow(i, j).getBase();
+
+ base[0] = baseX[i];
+ getArrow(i, j).setBase(base);
+ }
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Returns the arrow bases y coordinates (Nj-element array)
+ * @return the arrow bases y coordinates
+ */
+ public Double[] getBaseY() {
+ Double[] retArrowBaseY;
+
+ retArrowBaseY = new Double[dimensions[1]];
+
+ for (int j = 0; j < dimensions[1]; j++) {
+ Double[] base = getArrow(0, j).getBase();
+ retArrowBaseY[j] = base[1];
+ }
+
+ return retArrowBaseY;
+ }
+
+ /**
+ * Sets the arrow bases y coordinates
+ * The arrows part of row j have the same base y-coordinate
+ * @param baseY the array of y coordinates (Nj elements)
+ */
+ public UpdateStatus setBaseY(Double[] baseY) {
+ for (int j = 0; j < dimensions[1]; j++) {
+ for (int i = 0; i < dimensions[0]; i++) {
+ Double[] base = getArrow(i, j).getBase();
+
+ base[1] = baseY[j];
+ getArrow(i, j).setBase(base);
+ }
+ }
+ return UpdateStatus.Success;
+ }
+
+
+
+ /**
+ * @return the colored
+ */
+ public Boolean getColored() {
+ return colored;
+ }
+
+ /**
+ * @param colored the colored to set
+ */
+ public UpdateStatus setColored(Boolean colored) {
+ this.colored = colored;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * Returns the champ's bounding box, which is required by
+ * its builder function.
+ * @return the bounding box [xmin, xmax, ymin, ymax, zmin, zmax]
+ */
+ public Double[] getBoundingBox() {
+ Double[] retBoundingBox;
+
+ retBoundingBox = computeBoundingBox();
+
+ return retBoundingBox;
+ }
+
+ /**
+ * Returns the champ's maximum vector length
+ * @return the maximum length
+ */
+ public Double getMaxLength() {
+ Double retMaxLength;
+
+ retMaxLength = computeMaxLength();
+
+ return retMaxLength;
+ }
+
+ /**
+ * Returns the champ's maximum usable vector length
+ * @return the maximum usable length
+ */
+ public Double getMaxUsableLength() {
+ Double retMaxUsableLength;
+
+ retMaxUsableLength = computeMaxUsableLength();
+
+ return retMaxUsableLength;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_CHAMP__;
+ }
+
+ /**
+ * Computes the bounding box, which is required by the Champ
+ * builder function.
+ * @return the computed bounding box [xmin, xmax, ymin, ymax, zmin, zmax]
+ */
+ private Double[] computeBoundingBox() {
+ double maxLength = 0.0;
+ double maxUsableLength = 0.0;
+
+ double[] min = new double[3];
+ double[] max = new double[3];
+ double[] tmp = new double[3];
+
+ double[] base = new double[3];
+ double[] direction = new double[3];
+
+ Double[] boundingBox = new Double[6];
+
+ if (colored == false) {
+ maxLength = computeMaxLength();
+ }
+
+ maxUsableLength = computeMaxUsableLength();
+
+ /* Compute the bounding box points using the previously computed lengths */
+
+ base[0] = arrows.get(0).getBase()[0];
+ base[1] = arrows.get(0).getBase()[1];
+ base[2] = arrows.get(0).getBase()[2];
+
+ direction[0] = arrows.get(0).getDirection()[0];
+ direction[1] = arrows.get(0).getDirection()[1];
+ direction[2] = arrows.get(0).getDirection()[2];
+
+ if (colored == true) {
+ maxLength = Math.sqrt(direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2]);
+
+ if (maxLength <= Double.MIN_VALUE) {
+ maxLength = 1.0;
+ }
+ }
+
+ direction[0] = base[0] + direction[0] * maxUsableLength / maxLength;
+ direction[1] = base[1] + direction[1] * maxUsableLength / maxLength;
+ direction[2] = base[2] + direction[2] * maxUsableLength / maxLength;
+
+ computeMin(min, base, direction);
+ computeMax(max, base, direction);
+
+ for (int i = 1; i < arrows.size(); i++) {
+ base[0] = arrows.get(i).getBase()[0];
+ base[1] = arrows.get(i).getBase()[1];
+ base[2] = arrows.get(i).getBase()[2];
+
+ direction[0] = arrows.get(i).getDirection()[0];
+ direction[1] = arrows.get(i).getDirection()[1];
+ direction[2] = arrows.get(i).getDirection()[2];
+
+ if (colored == true) {
+ maxLength = Math.sqrt(direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2]);
+
+ if (maxLength <= Double.MIN_VALUE) {
+ maxLength = 1.0;
+ }
+ }
+
+ direction[0] = base[0] + direction[0] * maxUsableLength / maxLength;
+ direction[1] = base[1] + direction[1] * maxUsableLength / maxLength;
+ direction[2] = base[2] + direction[2] * maxUsableLength / maxLength;
+
+ computeMin(tmp, min, direction);
+ computeMin(min, tmp, base);
+
+ computeMax(tmp, max, direction);
+ computeMax(max, tmp, base);
+ }
+
+ boundingBox[0] = min[0];
+ boundingBox[1] = max[0];
+ boundingBox[2] = min[1];
+ boundingBox[3] = max[1];
+ boundingBox[4] = min[2];
+ boundingBox[5] = max[2];
+
+ return boundingBox;
+ }
+
+ /**
+ * Computes the maximum usable length
+ * @return the maximum usable length
+ */
+ private double computeMaxUsableLength() {
+ double minX;
+ double minY;
+
+ /*
+ * Determines the minimum distance between two consecutive abscissas
+ * Only the first row needs to be examined
+ */
+ if (dimensions[0] < 2) {
+ minX = 1.0;
+ } else {
+ minX = Double.MAX_VALUE;
+
+ for (int i = 0; i < dimensions[0] - 1; i++) {
+ double length = Math.abs(getArrow(i + 1, 0).getBase()[0] - getArrow(i, 0).getBase()[0]);
+
+ if (Utils.isValid(length)) {
+ if (length < minX) {
+ minX = length;
+ }
+ }
+ }
+
+ }
+
+ /*
+ * Determines the minimum distance between two consecutive ordinates
+ * Only the first column needs to be examined
+ */
+ if (dimensions[1] < 2) {
+ minY = 1.0;
+ } else {
+ minY = Double.MAX_VALUE;
+
+ for (int j = 0; j < dimensions[1] - 1; j++) {
+ double length = Math.abs(getArrow(0, j + 1).getBase()[1] - getArrow(0, j).getBase()[1]);
+
+ if (Utils.isValid(length)) {
+ if (length < minY) {
+ minY = length;
+ }
+ }
+ }
+
+ }
+
+ return Math.min(minX, minY);
+ }
+
+ /**
+ * Computes the maximum arrow length
+ * @return the maximum arrow length
+ */
+ private double computeMaxLength() {
+ double length;
+ double maxLength;
+ double[] direction = new double[3];
+
+ direction[0] = arrows.get(0).getDirection()[0];
+ direction[1] = arrows.get(0).getDirection()[1];
+ direction[2] = arrows.get(0).getDirection()[2];
+
+ maxLength = direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2];
+
+ for (int i = 1; i < arrows.size(); i++) {
+ direction[0] = arrows.get(i).getDirection()[0];
+ direction[1] = arrows.get(i).getDirection()[1];
+ direction[2] = arrows.get(i).getDirection()[2];
+
+ length = direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2];
+
+ if (length > maxLength) {
+ maxLength = length;
+ }
+ }
+
+ maxLength = Math.sqrt(maxLength);
+
+ return maxLength;
+ }
+
+ /**
+ * Computes the component-wise minimum of two 3-element arrays
+ * @param result the component-wise minimum (3-element array)
+ * @param first the first 3-element array
+ * @param second the second 3-element array
+ */
+ private void computeMin(double[] result, double[] first, double[] second) {
+ result[0] = Math.min(first[0], second[0]);
+ result[1] = Math.min(first[1], second[1]);
+ result[2] = Math.min(first[2], second[2]);
+ }
+
+ /**
+ * Computes the component-wise maximum of two 3-element arrays
+ * @param result the component-wise maximum (3-element array)
+ * @param first the first 3-element array
+ * @param second the second 3-element array
+ */
+ private void computeMax(double[] result, double[] first, double[] second) {
+ result[0] = Math.max(first[0], second[0]);
+ result[1] = Math.max(first[1], second[1]);
+ result[2] = Math.max(first[2], second[2]);
+ }
+
+ /**
+ * Returns the arrow specified by a pair of indices
+ * @param firstDimIndex the first dimension index
+ * @param secondDimIndex the second dimension index
+ * @return the Arrow
+ */
+ private Arrow getArrow(int firstDimIndex, int secondDimIndex) {
+ return arrows.get(dimensions[0] * secondDimIndex + firstDimIndex);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.java
new file mode 100755
index 000000000..9185e9689
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/ChampDecomposer.java
@@ -0,0 +1,448 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import org.scilab.modules.graphic_objects.figure.ColorMap;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.utils.Utils;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Class ChampDecomposer
+ * A set of static methods decomposing a Champ object (vector field) into a set of line segments.
+ * It takes into account the additional buffer space needed for arrow tip vertices and colors,
+ * fills tip colors, and outputs their triangle indices. Arrow tip coordinates are, however,
+ * computed at drawing time as they are projection-dependent.
+ * @author Manuel JULIACHS
+ */
+public class ChampDecomposer extends VectFieldDecomposer {
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param id the id of the given object.
+ * @return the number of data elements.
+ */
+ public static int getDataSize(Integer id) {
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ /* 2 vertices per segment plus 3 vertices for the arrow tip */
+ return 5 * numberArrows;
+ }
+
+ /**
+ * Fills the input buffer with vertex data from the given object.
+ * To do: optimize, as the test on colored's value is performed for each segment.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param elementsSize the number of coordinates taken by one element in the buffer.
+ * @param coordinateMask the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param scale the conversion scale factor to apply to data.
+ * @param translation the conversion translation value to apply to data.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ */
+ public static void fillVertices(FloatBuffer buffer, Integer id, int elementsSize,
+ int coordinateMask, double[] scale, double[] translation, int logMask) {
+ int bufferOffset = 0;
+
+ /* The coordinates of a segment's base */
+ double[] base;
+
+ /* The coordinates of a segment's tip */
+ double[] tip;
+
+ base = new double[3];
+ tip = new double[3];
+
+ /* The direction vector */
+ double[] direction = new double[3];
+
+ GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ Double[] zBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ double maxLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_LENGTH__);
+ double maxUsableLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_USABLE_LENGTH__);
+
+ boolean colored = (Boolean) GraphicController.getController().getProperty(id, __GO_COLORED__);
+
+ if (maxLength <= Double.MIN_VALUE) {
+ maxLength = 1.0;
+ }
+
+ for (int j = 0; j < yBase.length; j++) {
+ for (int i = 0; i < xBase.length; i++) {
+ base[0] = xBase[i];
+ base[1] = yBase[j];
+ base[2] = zBase[j * xBase.length + i];
+
+ direction[0] = xDirection[j * xBase.length + i];
+ direction[1] = yDirection[j * xBase.length + i];
+ direction[2] = zDirection[j * xBase.length + i];
+
+ /* Compute the segment tip */
+ tip = computeSegmentTip(base, direction, colored, maxUsableLength, maxLength);
+
+ /* Vertices are output in the following order: the segment's base and then its tip */
+ if ((coordinateMask & 0x1) != 0) {
+ if ((logMask & 0x1) != 0) {
+ base[0] = Math.log10(base[0]);
+ tip[0] = Math.log10(tip[0]);
+ }
+
+ base[0] = base[0] * scale[0] + translation[0];
+ tip[0] = tip[0] * scale[0] + translation[0];
+
+ buffer.put(bufferOffset, (float) base[0]);
+ buffer.put(bufferOffset + elementsSize, (float) tip[0]);
+ }
+
+ if ((coordinateMask & 0x2) != 0) {
+ if ((logMask & 0x2) != 0) {
+ base[1] = Math.log10(base[1]);
+ tip[1] = Math.log10(tip[1]);
+ }
+
+ base[1] = base[1] * scale[1] + translation[1];
+ tip[1] = tip[1] * scale[1] + translation[1];
+
+ buffer.put(bufferOffset + 1, (float) base[1]);
+ buffer.put(bufferOffset + elementsSize + 1, (float) tip[1]);
+ }
+
+ if ((coordinateMask & 0x4) != 0) {
+ if ((logMask & 0x4) != 0) {
+ base[2] = Math.log10(base[2] + DEFAULT_LOG_COORD_Z);
+ tip[2] = Math.log10(tip[2] + DEFAULT_LOG_COORD_Z);
+ }
+
+ base[2] = base[2] * scale[2] + translation[2];
+ tip[2] = tip[2] * scale[2] + translation[2];
+
+ buffer.put(bufferOffset + 2, (float) base[2]);
+ buffer.put(bufferOffset + elementsSize + 2, (float) tip[2]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8) != 0) {
+ buffer.put(bufferOffset + 3, 1.0f);
+ buffer.put(bufferOffset + elementsSize + 3, 1.0f);
+ }
+
+ bufferOffset += 2 * elementsSize;
+ }
+ }
+ }
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param elementsSize the number of components taken by one element in the buffer (3 or 4).
+ */
+ public static void fillColors(FloatBuffer buffer, Integer id, int elementsSize) {
+ int bufferOffset = 0;
+
+ Integer parentFigureId = (Integer) GraphicController.getController().getProperty(id, __GO_PARENT_FIGURE__);
+
+ /* To be sure that the object has a parent Figure, though it should not occur. */
+ if (parentFigureId == 0) {
+ return;
+ }
+
+ Figure parentFigure = (Figure) GraphicController.getController().getObjectFromId(parentFigureId);
+ ColorMap colorMap = parentFigure.getColorMap();
+ int colorMapSize = colorMap.getSize();
+
+ GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ double maxLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_LENGTH__);
+
+ boolean colored = (Boolean) GraphicController.getController().getProperty(id, __GO_COLORED__);
+
+ if (!colored) {
+ return;
+ }
+
+ if (maxLength <= Double.MIN_VALUE) {
+ maxLength = 1.0;
+ }
+
+ GraphicController.getController().getProperty(id, __GO_ARROW_SIZE__);
+
+ double[] direction = new double[3];
+
+ /* Colors are output in the same order as vertices: first the base's color and then the tip's */
+ for (int j = 0; j < yBase.length; j++) {
+ for (int i = 0; i < xBase.length; i++) {
+ direction[0] = xDirection[j * xBase.length + i];
+ direction[1] = yDirection[j * xBase.length + i];
+ direction[2] = zDirection[j * xBase.length + i];
+
+ double norm = Math.sqrt(direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2]);
+
+ int colorIndex = (int) Math.floor((((double) colorMapSize - 1.0) * norm / maxLength) + 0.5);
+
+ float[] color = colorMap.getScilabColor(colorIndex);
+
+ writeSegmentColors(buffer, elementsSize, bufferOffset, color);
+
+ bufferOffset += 2 * elementsSize;
+ }
+ }
+
+ /* Arrow colors */
+ for (int j = 0; j < yBase.length; j++) {
+ for (int i = 0; i < xBase.length; i++) {
+ direction[0] = xDirection[j * xBase.length + i];
+ direction[1] = yDirection[j * xBase.length + i];
+ direction[2] = zDirection[j * xBase.length + i];
+
+ double norm = Math.sqrt(direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2]);
+
+ int colorIndex = (int) Math.floor((((double) colorMapSize - 1.0) * norm / maxLength) + 0.5);
+
+ float[] color = colorMap.getScilabColor(colorIndex);
+
+ writeArrowColors(buffer, elementsSize, bufferOffset, color);
+
+ bufferOffset += 3 * elementsSize;
+ }
+ }
+
+ }
+
+ /**
+ * Returns the number of triangle indices for the given object.
+ * Triangle indices correspond to arrow tips.
+ * @param id the id of the given object.
+ * @return the number of triangle indices.
+ */
+ public static int getIndicesSize(Integer id) {
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ /* 3 indices per arrow */
+ return 3 * numberArrows;
+ }
+
+ /**
+ * Fills the input buffer with triangle index data from the given object.
+ * Triangle indices are the indices of arrow tips.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid;
+ int bufferOffset = 0;
+ int segmentOffset;
+
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ if (numberArrows == 0) {
+ return 0;
+ }
+
+ segmentOffset = 2 * numberArrows;
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ Double[] zBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ double maxLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_LENGTH__);
+ double maxUsableLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_USABLE_LENGTH__);
+
+ boolean colored = (Boolean) GraphicController.getController().getProperty(id, __GO_COLORED__);
+
+ /* The base and tip of a segment */
+ double[] base = new double[3];
+ double[] direction = new double[3];
+
+ for (int j = 0; j < yBase.length; j++) {
+ for (int i = 0; i < xBase.length; i++) {
+ int tipIndex = 3 * (xBase.length * j + i) + segmentOffset;
+ int leftIndex = tipIndex + 1;
+ int rightIndex = tipIndex + 2;
+
+ base[0] = xBase[i];
+ base[1] = yBase[j];
+ base[2] = zBase[j * xBase.length + i];
+
+ direction[0] = xDirection[j * xBase.length + i];
+ direction[1] = yDirection[j * xBase.length + i];
+ direction[2] = zDirection[j * xBase.length + i];
+
+ /* Compute the segment tip */
+ direction = computeSegmentTip(base, direction, colored, maxUsableLength, maxLength);
+
+ if (Utils.isValid(base[0], base[1], base[2])
+ && Utils.isValid(direction[0], direction[1], direction[2])) {
+ valid = true;
+ } else {
+ valid = false;
+ }
+
+ if (logMask != 0) {
+ valid = valid && Utils.isLogValid(base[0], base[1], base[2] + DEFAULT_LOG_COORD_Z, logMask);
+ valid = valid && Utils.isLogValid(direction[0], direction[1], direction[2] + DEFAULT_LOG_COORD_Z, logMask);
+ }
+
+ if (valid) {
+ buffer.put(bufferOffset, tipIndex);
+ buffer.put(bufferOffset + 1, leftIndex);
+ buffer.put(bufferOffset + 2, rightIndex);
+ bufferOffset += 3;
+ }
+
+ }
+ }
+
+ if (bufferOffset > 0) {
+ return bufferOffset;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Computes and returns the coordinates of a vector segment's tip.
+ * @param base the vector base's (x,y,z) coordinates (3-element array).
+ * @param direction the vector's (x,y,z) direction (3-element array).
+ * @param colored specifies whether the vector is colored or not.
+ * @param maxUsableLength the maximum usable vector length.
+ * @param maxLength the maximum vector length.
+ * @return the (x,y,z) coordinates of the tip (3-element array).
+ */
+ private static double[] computeSegmentTip(double[] base, double[] direction, boolean colored, double maxUsableLength, double maxLength) {
+ double[] tip = new double[3];
+
+ /* The current vector's norm is used to normalize for colored Champ objects instead of the maximum length. */
+ if (colored) {
+ double norm = Math.sqrt(direction[0] * direction[0] + direction[1] * direction[1] + direction[2] * direction[2]);
+
+ if (norm <= Double.MIN_VALUE) {
+ norm = 1.0;
+ }
+
+ tip[0] = base[0] + direction[0] * maxUsableLength / norm;
+ tip[1] = base[1] + direction[1] * maxUsableLength / norm;
+ tip[2] = base[2] + direction[2] * maxUsableLength / norm;
+ } else {
+ tip[0] = base[0] + direction[0] * maxUsableLength / maxLength;
+ tip[1] = base[1] + direction[1] * maxUsableLength / maxLength;
+ tip[2] = base[2] + direction[2] * maxUsableLength / maxLength;
+ }
+
+ return tip;
+ }
+
+ /**
+ * Fills the input buffer with segment index data from the given object.
+ * To do: optimize, as the test on colored's value is performed for each segment.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillWireIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid;
+ int bufferOffset = 0;
+
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ if (numberArrows == 0) {
+ return 0;
+ }
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ Double[] zBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ double maxLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_LENGTH__);
+ double maxUsableLength = (Double) GraphicController.getController().getProperty(id, __GO_MAX_USABLE_LENGTH__);
+
+ boolean colored = (Boolean) GraphicController.getController().getProperty(id, __GO_COLORED__);
+
+ /* The base and tip of a segment */
+ double[] base = new double[3];
+ double[] direction = new double[3];
+
+ for (int j = 0; j < yBase.length; j++) {
+ for (int i = 0; i < xBase.length; i++) {
+ int baseIndex = 2 * (xBase.length * j + i);
+ int tipIndex = baseIndex + 1;
+
+ base[0] = xBase[i];
+ base[1] = yBase[j];
+ base[2] = zBase[j * xBase.length + i];
+
+ direction[0] = xDirection[j * xBase.length + i];
+ direction[1] = yDirection[j * xBase.length + i];
+ direction[2] = zDirection[j * xBase.length + i];
+
+ /* Compute the segment tip */
+ direction = computeSegmentTip(base, direction, colored, maxUsableLength, maxLength);
+
+ if (Utils.isValid(base[0], base[1], base[2])
+ && Utils.isValid(direction[0], direction[1], direction[2])) {
+ valid = true;
+ } else {
+ valid = false;
+ }
+
+ if (logMask != 0) {
+ valid = valid && Utils.isLogValid(base[0], base[1], base[2] + DEFAULT_LOG_COORD_Z, logMask);
+ valid = valid && Utils.isLogValid(direction[0], direction[1], direction[2] + DEFAULT_LOG_COORD_Z, logMask);
+ }
+
+ if (valid) {
+ buffer.put(bufferOffset, baseIndex);
+ buffer.put(bufferOffset + 1, tipIndex);
+ bufferOffset += 2;
+ }
+
+ }
+ }
+
+ if (bufferOffset > 0) {
+ return bufferOffset;
+ } else {
+ return 0;
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Segs.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Segs.java
new file mode 100755
index 000000000..dffa9b413
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/Segs.java
@@ -0,0 +1,317 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_BACKGROUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_FOREGROUND__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_SIZE_UNIT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARK_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SEGS_COLORS__;
+
+import org.scilab.modules.graphic_objects.ObjectRemovedException;
+import org.scilab.modules.graphic_objects.contouredObject.Mark;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.graphicObject.Visitor;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * Segs class
+ * @author Manuel JULIACHS
+ */
+public class Segs extends VectField {
+ /** Sets properties names */
+ private enum SegsProperty { COLORS };
+
+ /** Constructor */
+ public Segs() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_SEGS_COLORS__ :
+ return SegsProperty.COLORS;
+ case __GO_MARK_MODE__ :
+ return Mark.MarkPropertyType.MODE;
+ case __GO_MARK_STYLE__ :
+ return Mark.MarkPropertyType.STYLE;
+ case __GO_MARK_SIZE_UNIT__ :
+ return Mark.MarkPropertyType.SIZEUNIT;
+ case __GO_MARK_SIZE__ :
+ return Mark.MarkPropertyType.SIZE;
+ case __GO_MARK_FOREGROUND__ :
+ return Mark.MarkPropertyType.FOREGROUND;
+ case __GO_MARK_BACKGROUND__ :
+ return Mark.MarkPropertyType.BACKGROUND;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == SegsProperty.COLORS) {
+ return getColors();
+ } else if (property == Mark.MarkPropertyType.MODE) {
+ return getMarkMode();
+ } else if (property == Mark.MarkPropertyType.STYLE) {
+ return getMarkStyle();
+ } else if (property == Mark.MarkPropertyType.SIZEUNIT) {
+ return getMarkSizeUnit();
+ } else if (property == Mark.MarkPropertyType.SIZE) {
+ return getMarkSize();
+ } else if (property == Mark.MarkPropertyType.FOREGROUND) {
+ return getMarkForeground();
+ } else if (property == Mark.MarkPropertyType.BACKGROUND) {
+ return getMarkBackground();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == SegsProperty.COLORS) {
+ setColors((Integer[]) value);
+ } else if (property == Mark.MarkPropertyType.MODE) {
+ setMarkMode((Boolean) value);
+ } else if (property == Mark.MarkPropertyType.STYLE) {
+ setMarkStyle((Integer) value);
+ } else if (property == Mark.MarkPropertyType.SIZEUNIT) {
+ setMarkSizeUnit((Integer) value);
+ } else if (property == Mark.MarkPropertyType.SIZE) {
+ setMarkSize((Integer) value);
+ } else if (property == Mark.MarkPropertyType.FOREGROUND) {
+ setMarkForeground((Integer) value);
+ } else if (property == Mark.MarkPropertyType.BACKGROUND) {
+ setMarkBackground((Integer) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ @Override
+ public void accept(Visitor visitor) throws ObjectRemovedException {
+ visitor.visit(this);
+ }
+
+ /**
+ * Sets the number of arrows and resizes the arrow array
+ * The actual resizing of the arrow array is performed in
+ * the parent class' method.
+ * The color of each arrow is reset to 0 in case of a size
+ * change for compatibility with the previous behaviour of Segs.
+ * To be modified
+ * @param number the number of arrows to set
+ */
+ public UpdateStatus setNumberArrows(Integer number) {
+ int currentNumber;
+
+ currentNumber = arrows.size();
+
+ super.setNumberArrows(number);
+
+ if (currentNumber != number) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineColor(0);
+ }
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the segs colors
+ */
+ public Integer[] getColors() {
+ Integer[] retSegsColors = new Integer[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ retSegsColors[i] = arrows.get(i).getLineColor();
+ }
+
+ return retSegsColors;
+ }
+
+ /**
+ * Sets the segment colors
+ * If the input color array contains only one element, each arrow's color is set to the latter.
+ * @param colors the segs colors to set (number of elements either 1 or equal to the number of arrows)
+ */
+ public UpdateStatus setColors(Integer[] colors) {
+ if (colors.length == 1) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineColor(colors[0]);
+ }
+ } else {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineColor(colors[i]);
+ }
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All segments are supposed to have the same mark mode
+ * To be done: return an array of Boolean
+ * @return the mark mode
+ */
+ public Boolean getMarkMode() {
+ return arrows.get(0).getMarkMode();
+ }
+
+ /**
+ * All segments are supposed to have the same mark mode
+ * To be done: change the argument to an array of Boolean
+ * @param mode the mark mode to set
+ */
+ public UpdateStatus setMarkMode(Boolean mode) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setMarkMode(mode);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All segments are supposed to have the same mark style
+ * To be done: return an array of Integer
+ * @return the mark style
+ */
+ public Integer getMarkStyle() {
+ return arrows.get(0).getMarkStyle();
+ }
+
+ /**
+ * All segments are supposed to have the same mark style
+ * To be done: change the argument to an array of Integer
+ * @param style the mark style to set
+ */
+ public UpdateStatus setMarkStyle(Integer style) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setMarkStyle(style);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All segments are supposed to have the same mark size unit
+ * To be done: return an array of Integer
+ * @return the mark size unit
+ */
+ public Integer getMarkSizeUnit() {
+ return arrows.get(0).getMarkSizeUnit();
+ }
+
+ /**
+ * All segments are supposed to have the same mark size unit
+ * To be done: change the argument to an array of Integer
+ * @param style the mark size unit to set
+ */
+ public UpdateStatus setMarkSizeUnit(Integer sizeUnit) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setMarkSizeUnit(sizeUnit);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All segments are supposed to have the same mark size
+ * To be done: return an array of Integer
+ * @return the mark size
+ */
+ public Integer getMarkSize() {
+ return arrows.get(0).getMarkSize();
+ }
+
+ /**
+ * All segments are supposed to have the same mark size
+ * To be done: change the argument to an array of Integer
+ * @param style the mark size to set
+ */
+ public UpdateStatus setMarkSize(Integer size) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setMarkSize(size);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All segments are supposed to have the same mark foreground
+ * To be done: return an array of Integer
+ * @return the mark foreground
+ */
+ public Integer getMarkForeground() {
+ return arrows.get(0).getMarkForeground();
+ }
+
+ /**
+ * All segments are supposed to have the same mark foreground
+ * To be done: change the argument to an array of Integer
+ * @param style the mark foreground to set
+ */
+ public UpdateStatus setMarkForeground(Integer foreground) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setMarkForeground(foreground);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All segments are supposed to have the same mark background
+ * To be done: return an array of Integer
+ * @return the mark background
+ */
+ public Integer getMarkBackground() {
+ return arrows.get(0).getMarkBackground();
+ }
+
+ /**
+ * All segments are supposed to have the same mark background
+ * To be done: change the argument to an array of Integer
+ * @param style the mark background to set
+ */
+ public UpdateStatus setMarkBackground(Integer background) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setMarkBackground(background);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return Type as String
+ */
+ public Integer getType() {
+ return GraphicObjectProperties.__GO_SEGS__;
+ }
+
+}
+
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.java
new file mode 100755
index 000000000..a4c949b1c
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/SegsDecomposer.java
@@ -0,0 +1,175 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import java.nio.IntBuffer;
+import java.nio.FloatBuffer;
+import org.scilab.modules.graphic_objects.figure.ColorMap;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.utils.Utils;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Class SegsDecomposer
+ * A set of static methods decomposing a Segs object into a set of line segments.
+ * It takes into account the additional buffer space needed for arrow tip vertices and colors,
+ * fills tip colors, and outputs their triangle indices. Arrow tip coordinates are, however,
+ * computed at drawing time as they are projection-dependent.
+ * @author Manuel JULIACHS
+ */
+public class SegsDecomposer extends VectFieldDecomposer {
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param id the id of the given object.
+ * @return the number of data elements.
+ */
+ public static int getDataSize(Integer id) {
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ /* 2 vertices per segment plus 3 vertices for the arrow tip */
+ return 5 * numberArrows;
+ }
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param elementsSize the number of components taken by one element in the buffer (3 or 4).
+ */
+ public static void fillColors(FloatBuffer buffer, Integer id, int elementsSize) {
+ int bufferOffset = 0;
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ Integer[] segmentColors = (Integer[]) GraphicController.getController().getProperty(id, __GO_SEGS_COLORS__);
+
+ Integer parentFigureId = (Integer) GraphicController.getController().getProperty(id, __GO_PARENT_FIGURE__);
+
+ /* To be sure that the object has a parent Figure, though it should not occur. */
+ if (parentFigureId == 0) {
+ return;
+ }
+
+ Figure parentFigure = (Figure) GraphicController.getController().getObjectFromId(parentFigureId);
+ ColorMap colorMap = parentFigure.getColorMap();
+
+ GraphicController.getController().getProperty(id, __GO_ARROW_SIZE__);
+
+ /* Colors are output in the following order: first the base's color and then the tip's */
+ for (int i = 0; i < numberArrows; i++) {
+ float[] color = colorMap.getScilabColor(segmentColors[i]);
+
+ bufferOffset = 2 * elementsSize * i;
+
+ writeSegmentColors(buffer, elementsSize, bufferOffset, color);
+ }
+
+ /* Arrow colors */
+ for (int i = 0; i < numberArrows; i++) {
+ float[] color = colorMap.getScilabColor(segmentColors[i]);
+
+ bufferOffset = 2 * elementsSize * numberArrows + 3 * elementsSize * i;
+
+ writeArrowColors(buffer, elementsSize, bufferOffset, color);
+ }
+ }
+
+ /**
+ * Returns the number of triangle indices for the given object.
+ * Triangle indices correspond to arrow tips.
+ * @param id the object id.
+ * @return the number of triangle indices.
+ */
+ public static int getIndicesSize(Integer id) {
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ /* 3 indices per arrow */
+ return 3 * numberArrows;
+ }
+
+ /**
+ * Fills the input buffer with triangle index data from the given object.
+ * Triangle indices are the indices of arrow tips.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid;
+ int bufferOffset = 0;
+ int segmentOffset;
+
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ if (numberArrows == 0) {
+ return 0;
+ }
+
+ segmentOffset = 2 * numberArrows;
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ Double[] zBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ double[] base = new double[3];
+ double[] direction = new double[3];
+
+ for (int i = 0; i < numberArrows; i++) {
+ int tipIndex = segmentOffset + 3 * i;
+ int leftIndex = tipIndex + 1;
+ int rightIndex = tipIndex + 2;
+
+ base[0] = xBase[i];
+ base[1] = yBase[i];
+ base[2] = zBase[i];
+
+ direction[0] = xDirection[i];
+ direction[1] = yDirection[i];
+ direction[2] = zDirection[i];
+
+ if (Utils.isValid(base[0], base[1], base[2])
+ && Utils.isValid(direction[0], direction[1], direction[2])) {
+ valid = true;
+ } else {
+ valid = false;
+ }
+
+ if (logMask != 0) {
+ valid = valid && Utils.isLogValid(base[0], base[1], base[2], logMask);
+ valid = valid && Utils.isLogValid(direction[0], direction[1], direction[2], logMask);
+ }
+
+ if (valid) {
+ buffer.put(bufferOffset, tipIndex);
+ buffer.put(bufferOffset + 1, leftIndex);
+ buffer.put(bufferOffset + 2, rightIndex);
+
+ bufferOffset += 3;
+ }
+ }
+
+ if (bufferOffset > 0) {
+ return bufferOffset;
+ } else {
+ return 0;
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectField.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectField.java
new file mode 100755
index 000000000..a6044f8d3
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectField.java
@@ -0,0 +1,610 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARROWS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_ARROW_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BASE_X__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BASE_Y__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BASE_Z__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BASE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DIRECTION_X__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DIRECTION_Y__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DIRECTION_Z__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_DIRECTION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_MODE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_NUMBER_ARROWS__;
+
+import java.util.ArrayList;
+
+import org.scilab.modules.graphic_objects.contouredObject.Line;
+import org.scilab.modules.graphic_objects.contouredObject.Line.LineType;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicClippableObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.UpdateStatus;
+
+/**
+ * VectField class
+ * @author Manuel JULIACHS
+ */
+public abstract class VectField extends GraphicClippableObject {
+ /** VectField properties names */
+ private enum VectFieldProperty { ARROWS, NUMBERARROWS };
+
+ /** List of arrows composing the field */
+ protected ArrayList <Arrow> arrows;
+
+ /** Constructor */
+ public VectField() {
+ super();
+ arrows = new ArrayList<Arrow>(0);
+ }
+
+ /**
+ * Returns the enum associated to a property name
+ * @param propertyName the property name
+ * @return the property enum
+ */
+ public Object getPropertyFromName(int propertyName) {
+ switch (propertyName) {
+ case __GO_ARROWS__ :
+ return VectFieldProperty.ARROWS;
+ case __GO_NUMBER_ARROWS__ :
+ return VectFieldProperty.NUMBERARROWS;
+ case __GO_BASE__ :
+ return Arrow.ArrowProperty.BASE;
+ case __GO_BASE_X__ :
+ return Arrow.ArrowProperty.BASEX;
+ case __GO_BASE_Y__ :
+ return Arrow.ArrowProperty.BASEY;
+ case __GO_BASE_Z__ :
+ return Arrow.ArrowProperty.BASEZ;
+ case __GO_DIRECTION__ :
+ return Arrow.ArrowProperty.DIRECTION;
+ case __GO_DIRECTION_X__ :
+ return Arrow.ArrowProperty.DIRECTIONX;
+ case __GO_DIRECTION_Y__ :
+ return Arrow.ArrowProperty.DIRECTIONY;
+ case __GO_DIRECTION_Z__ :
+ return Arrow.ArrowProperty.DIRECTIONZ;
+ case __GO_ARROW_SIZE__ :
+ return Arrow.ArrowProperty.ARROWSIZE;
+ case __GO_LINE_MODE__ :
+ return Line.LinePropertyType.MODE;
+ case __GO_LINE_STYLE__ :
+ return Line.LinePropertyType.LINESTYLE;
+ case __GO_LINE_THICKNESS__ :
+ return Line.LinePropertyType.THICKNESS;
+ default :
+ return super.getPropertyFromName(propertyName);
+ }
+ }
+
+ /**
+ * Fast property get method
+ * @param property the property to get
+ * @return the property value
+ */
+ public Object getProperty(Object property) {
+ if (property == VectFieldProperty.ARROWS) {
+ return getArrows();
+ } else if (property == VectFieldProperty.NUMBERARROWS) {
+ return getNumberArrows();
+ } else if (property == Arrow.ArrowProperty.BASE) {
+ return getBase();
+ } else if (property == Arrow.ArrowProperty.BASEX) {
+ return getBaseX();
+ } else if (property == Arrow.ArrowProperty.BASEY) {
+ return getBaseY();
+ } else if (property == Arrow.ArrowProperty.BASEZ) {
+ return getBaseZ();
+ } else if (property == Arrow.ArrowProperty.DIRECTION) {
+ return getDirection();
+ } else if (property == Arrow.ArrowProperty.DIRECTIONX) {
+ return getDirectionX();
+ } else if (property == Arrow.ArrowProperty.DIRECTIONY) {
+ return getDirectionY();
+ } else if (property == Arrow.ArrowProperty.DIRECTIONZ) {
+ return getDirectionZ();
+ } else if (property == Arrow.ArrowProperty.ARROWSIZE) {
+ return getArrowSize();
+ } else if (property == Line.LinePropertyType.MODE) {
+ return getLineMode();
+ } else if (property == Line.LinePropertyType.LINESTYLE) {
+ return getLineStyle();
+ } else if (property == Line.LinePropertyType.THICKNESS) {
+ return getLineThickness();
+ } else {
+ return super.getProperty(property);
+ }
+ }
+
+ /**
+ * Fast property set method
+ * @param property the property to set
+ * @param value the property value
+ * @return true if the property has been set, false otherwise
+ */
+ public UpdateStatus setProperty(Object property, Object value) {
+ if (property == VectFieldProperty.ARROWS) {
+ setArrows((ArrayList<Arrow>) value);
+ } else if (property == VectFieldProperty.NUMBERARROWS) {
+ setNumberArrows((Integer) value);
+ } else if (property == Arrow.ArrowProperty.BASE) {
+ setBase((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.BASEX) {
+ setBaseX((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.BASEY) {
+ setBaseY((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.BASEZ) {
+ setBaseZ((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.DIRECTION) {
+ setDirection((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.DIRECTIONX) {
+ setDirectionX((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.DIRECTIONY) {
+ setDirectionY((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.DIRECTIONZ) {
+ setDirectionZ((Double[]) value);
+ } else if (property == Arrow.ArrowProperty.ARROWSIZE) {
+ setArrowSize((Double) value);
+ } else if (property == Line.LinePropertyType.MODE) {
+ setLineMode((Boolean) value);
+ } else if (property == Line.LinePropertyType.LINESTYLE) {
+ setLineStyle((Integer) value);
+ } else if (property == Line.LinePropertyType.THICKNESS) {
+ setLineThickness((Double) value);
+ } else {
+ return super.setProperty(property, value);
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrows
+ */
+ public ArrayList<Arrow> getArrows() {
+ return arrows;
+ }
+
+ /**
+ * @param arrows the arrows to set
+ */
+ public UpdateStatus setArrows(ArrayList<Arrow> arrows) {
+ this.arrows = arrows;
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the number of arrows
+ */
+ public Integer getNumberArrows() {
+ return arrows.size();
+ }
+
+ /**
+ * Sets the number of arrows
+ * Empties the current arrow array, if required, and creates the
+ * specified number of arrows, which are added to the array.
+ * If the new number is equal to the current number, the
+ * array is left unmodified.
+ * If the existing array is not empty, the newly created
+ * arrows are cloned from the latter's first arrow,
+ * as all arrows are considered to have identical Contour values for now.
+ * To be modified when Contour values can be specified independently
+ * for each Arrow.
+ * @param number the number of arrows to set
+ * @return
+ */
+ public UpdateStatus setNumberArrows(Integer number) {
+ if (!arrows.isEmpty() && number != arrows.size()) {
+ ArrayList <Arrow> newArrows = new ArrayList<Arrow>(0);
+
+ /* Clones the Contour properties of the first arrow */
+ for (int i = 0; i < number; i++) {
+ Arrow clonedArrow = arrows.get(0).clone();
+ newArrows.add(clonedArrow);
+ }
+
+ arrows.clear();
+ arrows = newArrows;
+
+ } else if (arrows.isEmpty()) {
+ for (int i = 0; i < number; i++) {
+ arrows.add(new Arrow());
+ }
+ }
+
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow bases
+ */
+ public Double[] getBase() {
+ Double[] retBase;
+
+ retBase = new Double[3 * arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] base = arrows.get(i).getBase();
+ retBase[3 * i] = base[0];
+ retBase[3 * i + 1] = base[1];
+ retBase[3 * i + 2] = base[2];
+ }
+
+ return retBase;
+ }
+
+ /**
+ * @param bases the arrow bases to set
+ */
+ public UpdateStatus setBase(Double[] bases) {
+ Double[] arrowBase = new Double[3];
+
+ final int len = Math.min(bases.length / 3, arrows.size());
+ for (int i = 0; i < len; i++) {
+ arrowBase[0] = bases[3 * i];
+ arrowBase[1] = bases[3 * i + 1];
+ arrowBase[2] = bases[3 * i + 2];
+ arrows.get(i).setBase(arrowBase);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow bases x coordinates
+ */
+ public Double[] getBaseX() {
+ Double[] retArrowBaseX;
+
+ retArrowBaseX = new Double[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] base = arrows.get(i).getBase();
+ retArrowBaseX[i] = base[0];
+ }
+
+ return retArrowBaseX;
+ }
+
+ /**
+ * @param baseX the arrow base x coordinates to set
+ */
+ public UpdateStatus setBaseX(Double[] baseX) {
+ final int len = Math.min(baseX.length, arrows.size());
+ for (int i = 0; i < len; i++) {
+ Double[] base = arrows.get(i).getBase();
+ base[0] = baseX[i];
+ arrows.get(i).setBase(base);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow bases y coordinates
+ */
+ public Double[] getBaseY() {
+ Double[] retArrowBaseY;
+
+ retArrowBaseY = new Double[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] base = arrows.get(i).getBase();
+ retArrowBaseY[i] = base[1];
+ }
+
+ return retArrowBaseY;
+ }
+
+ /**
+ * @param baseY the arrow base y coordinates to set
+ */
+ public UpdateStatus setBaseY(Double[] baseY) {
+ final int len = Math.min(baseY.length, arrows.size());
+ for (int i = 0; i < len; i++) {
+ Double[] base = arrows.get(i).getBase();
+ base[1] = baseY[i];
+ arrows.get(i).setBase(base);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow bases z coordinates
+ */
+ public Double[] getBaseZ() {
+ Double[] retArrowBaseZ;
+
+ retArrowBaseZ = new Double[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] base = arrows.get(i).getBase();
+ retArrowBaseZ[i] = base[2];
+ }
+
+ return retArrowBaseZ;
+ }
+
+ /**
+ * @param baseZ the arrow base z coordinates to set
+ */
+ public UpdateStatus setBaseZ(Double[] baseZ) {
+ final int len = Math.min(baseZ.length, arrows.size());
+ for (int i = 0; i < len; i++) {
+ Double[] base = arrows.get(i).getBase();
+ base[2] = baseZ[i];
+ arrows.get(i).setBase(base);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow directions
+ */
+ public Double[] getDirection() {
+ Double[] retDirection;
+
+ retDirection = new Double[3 * arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] base = arrows.get(i).getDirection();
+ retDirection[3 * i] = base[0];
+ retDirection[3 * i + 1] = base[1];
+ retDirection[3 * i + 2] = base[2];
+ }
+
+ return retDirection;
+ }
+
+ /**
+ * @param directions the arrow directions to set
+ */
+ public UpdateStatus setDirection(Double[] directions) {
+ Double[] arrowDirection = new Double[3];
+
+ final int len = Math.min(directions.length / 3, arrows.size());
+ for (int i = 0; i < len; i++) {
+ arrowDirection[0] = directions[3 * i];
+ arrowDirection[1] = directions[3 * i + 1];
+ arrowDirection[2] = directions[3 * i + 2];
+ arrows.get(i).setDirection(arrowDirection);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow directions x coordinates
+ */
+ public Double[] getDirectionX() {
+ Double[] retArrowDirectionX;
+
+ retArrowDirectionX = new Double[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] direction = arrows.get(i).getDirection();
+ retArrowDirectionX[i] = direction[0];
+ }
+
+ return retArrowDirectionX;
+ }
+
+ /**
+ * @param directionX the arrow direction x coordinates to set
+ */
+ public UpdateStatus setDirectionX(Double[] directionX) {
+ final int len = Math.min(directionX.length, arrows.size());
+ for (int i = 0; i < len; i++) {
+ Double[] direction = arrows.get(i).getDirection();
+ direction[0] = directionX[i];
+ arrows.get(i).setDirection(direction);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * @return the arrow directions y coordinates
+ */
+ public Double[] getDirectionY() {
+ Double[] retArrowDirectionY;
+
+ retArrowDirectionY = new Double[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] direction = arrows.get(i).getDirection();
+ retArrowDirectionY[i] = direction[1];
+ }
+
+ return retArrowDirectionY;
+ }
+
+ /**
+ * @param directionY the arrow direction y coordinates to set
+ */
+ public UpdateStatus setDirectionY(Double[] directionY) {
+ final int len = Math.min(directionY.length, arrows.size());
+ for (int i = 0; i < len; i++) {
+ Double[] direction = arrows.get(i).getDirection();
+ direction[1] = directionY[i];
+ arrows.get(i).setDirection(direction);
+ }
+ return UpdateStatus.Success;
+ }
+
+
+ /**
+ * @return the arrow directions z coordinates
+ */
+ public Double[] getDirectionZ() {
+ Double[] retArrowDirectionZ;
+
+ retArrowDirectionZ = new Double[arrows.size()];
+
+ for (int i = 0; i < arrows.size(); i++) {
+ Double[] direction = arrows.get(i).getDirection();
+ retArrowDirectionZ[i] = direction[2];
+ }
+
+ return retArrowDirectionZ;
+ }
+
+
+ /**
+ * @param directionZ the arrow direction z coordinates to set
+ */
+ public UpdateStatus setDirectionZ(Double[] directionZ) {
+ final int len = Math.min(directionZ.length, arrows.size());
+ for (int i = 0; i < len; i++) {
+ Double[] direction = arrows.get(i).getDirection();
+ direction[2] = directionZ[i];
+ arrows.get(i).setDirection(direction);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All arrows are supposed to have the same size
+ * To be done: return an array of Double
+ * @return the arrow size
+ */
+ public Double getArrowSize() {
+ Double retArrowSize;
+
+ retArrowSize = arrows.get(0).getArrowSize();
+
+ return retArrowSize;
+ }
+
+ /**
+ * All arrows are supposed to have the same size
+ * To be done: change the argument to an array of Double
+ * @param size the arrow size to set
+ */
+ public UpdateStatus setArrowSize(Double size) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setArrowSize(size);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All arrows are supposed to have the same line mode
+ * To be done: return an array of Boolean
+ * @return the arrow line mode
+ */
+ public Boolean getLineMode() {
+ Boolean retLineMode;
+
+ retLineMode = arrows.get(0).getLineMode();
+ return retLineMode;
+ }
+
+ /**
+ * All arrows are supposed to have the same line mode
+ * To be done: change the argument to an array of Boolean
+ * @param lineMode the arrow line mode to set
+ */
+ public UpdateStatus setLineMode(Boolean lineMode) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineMode(lineMode);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All arrows are supposed to have the same line style
+ * To be done: return an array of Integer
+ * @return the arrow line style
+ */
+ public Integer getLineStyle() {
+ Integer retLineStyle;
+
+ retLineStyle = arrows.get(0).getLineStyle();
+ return retLineStyle;
+ }
+
+ /**
+ * All arrows are supposed to have the same line style
+ * To be done: change the argument to an array of Integer
+ * @param lineStyle the arrow line style to set
+ */
+ public UpdateStatus setLineStyle(Integer lineStyle) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineStyle(lineStyle);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All arrows are supposed to have the same line style
+ * To be done: return an array of LineType
+ * @return the arrow line style
+ */
+ public LineType getLineStyleAsEnum() {
+ LineType retLineStyle;
+
+ retLineStyle = arrows.get(0).getLineStyleAsEnum();
+ return retLineStyle;
+ }
+
+ /**
+ * All arrows are supposed to have the same line thickness
+ * To be done: return an array of Double
+ * @return the arrow line thickness
+ */
+ public Double getLineThickness() {
+ Double retLineThickness;
+
+ retLineThickness = arrows.get(0).getLineThickness();
+ return retLineThickness;
+ }
+
+ /**
+ * All arrows are supposed to have the same line thickness
+ * To be done: change the argument to an array of Double
+ * @param lineThickness the arrow line thickness to set
+ */
+ public UpdateStatus setLineThickness(Double lineThickness) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineThickness(lineThickness);
+ }
+ return UpdateStatus.Success;
+ }
+
+ /**
+ * All arrows are supposed to have the same line color
+ * To be done: return an array of Integer
+ * @return the arrow line color
+ */
+ public Integer getLineColor() {
+ Integer retLineColor;
+
+ retLineColor = arrows.get(0).getLineColor();
+ return retLineColor;
+ }
+
+ /**
+ * All arrows are supposed to have the same line color
+ * To be done: change the argument to an array of Integer
+ * @param lineColor the arrow line color to set
+ */
+ public UpdateStatus setLineColor(Integer lineColor) {
+ for (int i = 0; i < arrows.size(); i++) {
+ arrows.get(i).setLineColor(lineColor);
+ }
+ return UpdateStatus.Success;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.java
new file mode 100755
index 000000000..1df02400f
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/vectfield/VectFieldDecomposer.java
@@ -0,0 +1,293 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.vectfield;
+
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.utils.Utils;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+/**
+ * Class VectFieldDecomposer
+ * A set of static methods decomposing a vector field into a set of line segments.
+ * @author Manuel JULIACHS
+ */
+public class VectFieldDecomposer {
+
+ /** The default z-coordinate value when the logarithmic scale is used. */
+ protected static final double DEFAULT_LOG_COORD_Z = 1.0;
+
+ /**
+ * Returns the number of data elements for the given object.
+ * @param id the id of the given object.
+ * @return the number of data elements.
+ */
+ public static int getDataSize(Integer id) {
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ /* 2 vertices per arrow */
+ return 2 * numberArrows;
+ }
+
+ /**
+ * Fills the input buffer with vertex data from the given object.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param elementsSize the number of coordinates taken by one element in the buffer.
+ * @param coordinateMask the byte mask specifying which coordinates are filled (1 for X, 2 for Y, 4 for Z).
+ * @param scale the conversion scale factor to apply to data.
+ * @param translation the conversion translation value to apply to data.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ */
+ public static void fillVertices(FloatBuffer buffer, Integer id, int elementsSize,
+ int coordinateMask, double[] scale, double[] translation, int logMask) {
+ int bufferOffset = 0;
+
+ /* The x coordinates of a segment's base and direction */
+ double[] xcoords;
+ /* The y coordinates of a segment's base and direction */
+ double[] ycoords;
+ /* The z coordinates of a segment's base and direction */
+ double[] zcoords;
+
+ xcoords = new double[2];
+ ycoords = new double[2];
+ zcoords = new double[2];
+
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ Double[] zBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ for (int i = 0; i < numberArrows; i++) {
+ xcoords[0] = xBase[i];
+ xcoords[1] = xDirection[i];
+ ycoords[0] = yBase[i];
+ ycoords[1] = yDirection[i];
+ zcoords[0] = zBase[i];
+ zcoords[1] = zDirection[i];
+
+ /* Vertices are output in the following order: the segment's base and then its tip */
+ if ((coordinateMask & 0x1) != 0) {
+ if ((logMask & 0x1) != 0) {
+ xcoords[0] = Math.log10(xcoords[0]);
+ xcoords[1] = Math.log10(xcoords[1]);
+ }
+
+ xcoords[0] = xcoords[0] * scale[0] + translation[0];
+ xcoords[1] = xcoords[1] * scale[0] + translation[0];
+
+ buffer.put(bufferOffset, (float) xcoords[0]);
+ buffer.put(bufferOffset + elementsSize, (float) xcoords[1]);
+ }
+
+ if ((coordinateMask & 0x2) != 0) {
+ if ((logMask & 0x2) != 0) {
+ ycoords[0] = Math.log10(ycoords[0]);
+ ycoords[1] = Math.log10(ycoords[1]);
+ }
+
+ ycoords[0] = ycoords[0] * scale[1] + translation[1];
+ ycoords[1] = ycoords[1] * scale[1] + translation[1];
+
+ buffer.put(bufferOffset + 1, (float) ycoords[0]);
+ buffer.put(bufferOffset + elementsSize + 1, (float) ycoords[1]);
+ }
+
+ if ((coordinateMask & 0x4) != 0) {
+ if ((logMask & 0x4) != 0) {
+ zcoords[0] = Math.log10(zcoords[0]);
+ zcoords[1] = Math.log10(zcoords[1]);
+ }
+
+ zcoords[0] = zcoords[0] * scale[2] + translation[2];
+ zcoords[1] = zcoords[1] * scale[2] + translation[2];
+
+ buffer.put(bufferOffset + 2, (float) zcoords[0]);
+ buffer.put(bufferOffset + elementsSize + 2, (float) zcoords[1]);
+ }
+
+ if (elementsSize == 4 && (coordinateMask & 0x8) != 0) {
+ buffer.put(bufferOffset + 3, 1.0f);
+ buffer.put(bufferOffset + elementsSize + 3, 1.0f);
+ }
+
+ bufferOffset += 2 * elementsSize;
+ }
+ }
+
+ /**
+ * Fills the given buffer with color data from the given object.
+ * @param the buffer to fill.
+ * @param the id of the given object.
+ * @param the number of components taken by one element in the buffer (3 or 4).
+ */
+ public static void fillColors(FloatBuffer buffer, String id, int elementsSize) {
+ return;
+ }
+
+ /**
+ * Writes the colors of a segment's vertices into a buffer.
+ * The colors of the 2 vertices are written consecutively starting from the specified offset.
+ * @param buffer the buffer written to.
+ * @param elementsSize the number of components taken by a color (3 or 4).
+ * @param bufferOffset the offset of the first segment vertex's color.
+ * @color the arrow color (3 elements: r, g, b components).
+ */
+ protected static void writeSegmentColors(FloatBuffer buffer, int elementsSize, int bufferOffset, float[] color) {
+ buffer.put(bufferOffset, color[0]);
+ buffer.put(bufferOffset + 1, color[1]);
+ buffer.put(bufferOffset + 2, color[2]);
+
+ buffer.put(bufferOffset + elementsSize, color[0]);
+ buffer.put(bufferOffset + elementsSize + 1, color[1]);
+ buffer.put(bufferOffset + elementsSize + 2, color[2]);
+
+ if (elementsSize == 4) {
+ buffer.put(bufferOffset + 3, 1.0f);
+ buffer.put(bufferOffset + elementsSize + 3, 1.0f);
+ }
+ }
+
+ /**
+ * Writes the colors of an arrow's vertices into a buffer.
+ * The colors of the 3 vertices are written consecutively starting from the specified offset.
+ * @param buffer the buffer written to.
+ * @param elementsSize the number of components taken by a color (3 or 4).
+ * @param bufferOffset the offset of the first arrow vertex's color.
+ * @color the arrow color (3 elements: r, g, b components).
+ */
+ protected static void writeArrowColors(FloatBuffer buffer, int elementsSize, int bufferOffset, float[] color) {
+ buffer.put(bufferOffset, color[0]);
+ buffer.put(bufferOffset + 1, color[1]);
+ buffer.put(bufferOffset + 2, color[2]);
+
+ buffer.put(bufferOffset + elementsSize, color[0]);
+ buffer.put(bufferOffset + elementsSize + 1, color[1]);
+ buffer.put(bufferOffset + elementsSize + 2, color[2]);
+
+ buffer.put(bufferOffset + 2 * elementsSize, color[0]);
+ buffer.put(bufferOffset + 2 * elementsSize + 1, color[1]);
+ buffer.put(bufferOffset + 2 * elementsSize + 2, color[2]);
+
+ if (elementsSize == 4) {
+ buffer.put(bufferOffset + 3, 1.0f);
+ buffer.put(bufferOffset + elementsSize + 3, 1.0f);
+ buffer.put(bufferOffset + 2 * elementsSize + 3, 1.0f);
+ }
+ }
+
+ /**
+ * Returns the number of triangle indices.
+ * @return the number of triangle indices.
+ */
+ public static int getIndicesSize() {
+ return 0;
+ }
+
+ /**
+ * Fills the input buffer with triangle index data from the given object.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillIndices(IntBuffer buffer, String id, int logMask) {
+ return 0;
+ }
+
+ /**
+ * Returns the number of wireframe indices for the given object.
+ * @param id the id of the given object.
+ * @return the number of line segment indices.
+ */
+ public static int getWireIndicesSize(Integer id) {
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ /* 2 segment indices per arrow */
+ return 2 * numberArrows;
+ }
+
+ /**
+ * Fills the input buffer with segment index data from the given object.
+ * @param buffer the buffer to fill.
+ * @param id the id of the given object.
+ * @param logMask the bit mask specifying whether logarithmic coordinates are used.
+ * @return the number of indices actually written.
+ */
+ public static int fillWireIndices(IntBuffer buffer, Integer id, int logMask) {
+ boolean valid;
+ int bufferOffset = 0;
+
+ int numberArrows = (Integer) GraphicController.getController().getProperty(id, __GO_NUMBER_ARROWS__);
+
+ if (numberArrows == 0) {
+ return 0;
+ }
+
+ Double[] xBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_X__);
+ Double[] yBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Y__);
+ Double[] zBase = (Double[]) GraphicController.getController().getProperty(id, __GO_BASE_Z__);
+
+ Double[] xDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_X__);
+ Double[] yDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Y__);
+ Double[] zDirection = (Double[]) GraphicController.getController().getProperty(id, __GO_DIRECTION_Z__);
+
+ double[] base = new double[3];
+ double[] direction = new double[3];
+
+ for (int i = 0; i < numberArrows; i++) {
+ base[0] = xBase[i];
+ base[1] = yBase[i];
+ base[2] = zBase[i];
+
+ direction[0] = xDirection[i];
+ direction[1] = yDirection[i];
+ direction[2] = zDirection[i];
+
+ if (Utils.isValid(base[0], base[1], base[2])
+ && Utils.isValid(direction[0], direction[1], direction[2])) {
+ valid = true;
+ } else {
+ valid = false;
+ }
+
+ if (logMask != 0) {
+ valid = valid && Utils.isLogValid(base[0], base[1], base[2], logMask);
+ valid = valid && Utils.isLogValid(direction[0], direction[1], direction[2], logMask);
+ }
+
+ if (valid) {
+ buffer.put(bufferOffset, 2 * i);
+ buffer.put(bufferOffset + 1, 2 * i + 1);
+
+ bufferOffset += 2;
+ }
+
+ }
+
+ if (bufferOffset > 0) {
+ return bufferOffset;
+ } else {
+ return 0;
+ }
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParser.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParser.java
new file mode 100755
index 000000000..be3de802c
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParser.java
@@ -0,0 +1,1131 @@
+/* The following code was generated by JFlex 1.4.3 on 22/11/12 18:50 */
+
+// jflex --nobak -d ../java/org.scilab.modules.gui.uiwidget/ css.jflex
+
+//CHECKSTYLE:OFF
+
+package org.scilab.modules.graphic_objects.xmlloader;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+@javax.annotation.Generated("JFlex")
+@SuppressWarnings("fallthrough")
+
+/**
+ * This class is a scanner generated by
+ * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
+ * on 22/11/12 18:50 from the specification file
+ * <tt>css.jflex</tt>
+ */
+public final class CSSParser {
+
+ /** This character denotes the end of file */
+ public static final int YYEOF = -1;
+
+ /** initial size of the lookahead buffer */
+ private static final int ZZ_BUFFERSIZE = 16384;
+
+ /** lexical states */
+ public static final int YYINITIAL = 0;
+ public static final int VALUELINE = 8;
+ public static final int LINE = 6;
+ public static final int VALUE = 4;
+ public static final int BLOCK = 2;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static final int ZZ_LEXSTATE[] = {
+ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4
+ };
+
+ /**
+ * Translates characters to character classes
+ */
+ private static final String ZZ_CMAP_PACKED =
+ "\11\0\1\1\1\2\1\0\1\4\1\3\22\0\1\1\2\0\1\5" +
+ "\6\0\1\13\2\0\1\7\1\5\1\12\12\7\1\10\1\11\5\0" +
+ "\32\6\4\0\1\7\1\0\32\6\1\14\1\0\1\15\uff82\0";
+
+ /**
+ * Translates characters to character classes
+ */
+ private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static final int [] ZZ_ACTION = zzUnpackAction();
+
+ private static final String ZZ_ACTION_PACKED_0 =
+ "\2\1\1\0\1\1\1\0\1\2\1\1\1\3\1\2" +
+ "\1\4\1\1\1\5\1\6\1\7\1\10\1\2\2\11" +
+ "\1\10\1\11\1\1\1\12\1\2\1\0\1\10\1\13" +
+ "\6\0\1\1";
+
+ private static int [] zzUnpackAction() {
+ int [] result = new int[33];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do {
+ result[j++] = value;
+ } while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private static final int ZZ_UNKNOWN_ERROR = 0;
+ private static final int ZZ_NO_MATCH = 1;
+ private static final int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static final String ZZ_ERROR_MSG[] = {
+ "Unkown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /** the input device */
+ private java.io.Reader zzReader;
+
+ /** the current state of the DFA */
+ private int zzState;
+
+ /** the current lexical state */
+ private int zzLexicalState = YYINITIAL;
+
+ /** this buffer contains the current text to be matched and is
+ the source of the yytext() string */
+ private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+
+ /** the textposition at the last accepting state */
+ private int zzMarkedPos;
+
+ /** the current text position in the buffer */
+ private int zzCurrentPos;
+
+ /** startRead marks the beginning of the yytext() string in the buffer */
+ private int zzStartRead;
+
+ /** endRead marks the last character in the buffer, that has been read
+ from input */
+ private int zzEndRead;
+
+ /** number of newlines encountered up to the start of the matched text */
+ private int yyline;
+
+ /** the number of characters up to the start of the matched text */
+ private int yychar;
+
+ /**
+ * the number of characters from the last newline up to the start of the
+ * matched text
+ */
+ private int yycolumn;
+
+ /**
+ * zzAtBOL == true <=> the scanner is currently at the beginning of a line
+ */
+ private boolean zzAtBOL = true;
+
+ /** zzAtEOF == true <=> the scanner is at the EOF */
+ private boolean zzAtEOF;
+
+ /** denotes if the user-EOF-code has already been executed */
+ private boolean zzEOFDone;
+
+ /* user code: */
+ private String identifier;
+ private String key;
+ private String value;
+ private Map<String, Map<String, String>> map;
+ private Map<String, String> kv;
+
+ public static Map<String, Map<String, String>> parseFile(String file) throws CSSParserException {
+ try {
+ return parse(new FileReader(new File(file)));
+ } catch (IOException e) {
+ throw new CSSParserException(e.getMessage());
+ }
+ }
+
+ public static Map<String, Map<String, String>> parseBlock(String block) throws CSSParserException {
+ return parse(new StringReader(block));
+ }
+
+ private static Map<String, Map<String, String>> parse(Reader reader) throws CSSParserException {
+ try {
+ CSSParser parser = new CSSParser(reader);
+ parser.map = new HashMap<String, Map<String, String>>();
+ parser.yybegin(YYINITIAL);
+ int ret = parser.yylex();
+
+ if (ret == -1) {
+ parser.yyclose();
+ throw new CSSParserException("Invalid CSS file");
+ }
+
+ parser.yyclose();
+
+ return parser.map;
+ } catch (IOException e) {
+ throw new CSSParserException(e.getMessage());
+ }
+ }
+
+ public static Map<String, String> parseLine(String str) throws CSSParserException {
+ try {
+ CSSParser parser = new CSSParser(new StringReader(str));
+ parser.kv = new HashMap<String, String>();
+ parser.yybegin(LINE);
+ int ret = parser.yylex();
+
+ if (ret == -1) {
+ parser.yyclose();
+ throw new CSSParserException("Invalid CSS instructions");
+ }
+
+ parser.yyclose();
+
+ return parser.kv;
+ } catch (IOException e) {
+ throw new CSSParserException(e.getMessage());
+ }
+ }
+
+ private void openBlock() {
+ kv = new HashMap<String, String>();
+ map.put(identifier, kv);
+ }
+
+ private void closeBlock() {
+ kv = null;
+ }
+
+ public void pushKeyValue() {
+ kv.put(key.toLowerCase(), value);
+ key = null;
+ value = null;
+ }
+
+
+ /**
+ * Creates a new scanner
+ * There is also a java.io.InputStream version of this constructor.
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+ public CSSParser(java.io.Reader in) {
+ this.zzReader = in;
+ }
+
+ /**
+ * Creates a new scanner.
+ * There is also java.io.Reader version of this constructor.
+ *
+ * @param in the java.io.Inputstream to read input from.
+ */
+ public CSSParser(java.io.InputStream in) {
+ this(new java.io.InputStreamReader(in));
+ }
+
+ /**
+ * Unpacks the compressed character translation table.
+ *
+ * @param packed the packed character translation table
+ * @return the unpacked character translation table
+ */
+ private static char [] zzUnpackCMap(String packed) {
+ char [] map = new char[0x10000];
+ int i = 0; /* index in packed string */
+ int j = 0; /* index in unpacked array */
+ while (i < 58) {
+ int count = packed.charAt(i++);
+ char value = packed.charAt(i++);
+ do {
+ map[j++] = value;
+ } while (--count > 0);
+ }
+ return map;
+ }
+
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return <code>false</code>, iff there was new input.
+ *
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ private boolean zzRefill() throws java.io.IOException {
+
+ /* first: make room (if you can) */
+ if (zzStartRead > 0) {
+ System.arraycopy(zzBuffer, zzStartRead,
+ zzBuffer, 0,
+ zzEndRead - zzStartRead);
+
+ /* translate stored positions */
+ zzEndRead -= zzStartRead;
+ zzCurrentPos -= zzStartRead;
+ zzMarkedPos -= zzStartRead;
+ zzStartRead = 0;
+ }
+
+ /* is the buffer big enough? */
+ if (zzCurrentPos >= zzBuffer.length) {
+ /* if not: blow it up */
+ char newBuffer[] = new char[zzCurrentPos * 2];
+ System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+ zzBuffer = newBuffer;
+ }
+
+ /* finally: fill the buffer with new input */
+ int numRead = zzReader.read(zzBuffer, zzEndRead,
+ zzBuffer.length - zzEndRead);
+
+ if (numRead > 0) {
+ zzEndRead += numRead;
+ return false;
+ }
+ // unlikely but not impossible: read 0 characters, but not at end of stream
+ if (numRead == 0) {
+ int c = zzReader.read();
+ if (c == -1) {
+ return true;
+ } else {
+ zzBuffer[zzEndRead++] = (char) c;
+ return false;
+ }
+ }
+
+ // numRead < 0
+ return true;
+ }
+
+
+ /**
+ * Closes the input stream.
+ */
+ public final void yyclose() throws java.io.IOException {
+ zzAtEOF = true; /* indicate end of file */
+ zzEndRead = zzStartRead; /* invalidate buffer */
+
+ if (zzReader != null) {
+ zzReader.close();
+ }
+ }
+
+
+ /**
+ * Resets the scanner to read from a new input stream.
+ * Does not close the old reader.
+ *
+ * All internal variables are reset, the old input stream
+ * <b>cannot</b> be reused (internal buffer is discarded and lost).
+ * Lexical state is set to <tt>ZZ_INITIAL</tt>.
+ *
+ * @param reader the new input stream
+ */
+ public final void yyreset(java.io.Reader reader) {
+ zzReader = reader;
+ zzAtBOL = true;
+ zzAtEOF = false;
+ zzEOFDone = false;
+ zzEndRead = zzStartRead = 0;
+ zzCurrentPos = zzMarkedPos = 0;
+ yyline = yychar = yycolumn = 0;
+ zzLexicalState = YYINITIAL;
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public final int yystate() {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public final void yybegin(int newState) {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public final String yytext() {
+ return new String( zzBuffer, zzStartRead, zzMarkedPos - zzStartRead );
+ }
+
+
+ /**
+ * Returns the character at position <tt>pos</tt> from the
+ * matched text.
+ *
+ * It is equivalent to yytext().charAt(pos), but faster
+ *
+ * @param pos the position of the character to fetch.
+ * A value from 0 to yylength()-1.
+ *
+ * @return the character at position pos
+ */
+ public final char yycharat(int pos) {
+ return zzBuffer[zzStartRead + pos];
+ }
+
+
+ /**
+ * Returns the length of the matched text region.
+ */
+ public final int yylength() {
+ return zzMarkedPos - zzStartRead;
+ }
+
+
+ /**
+ * Reports an error that occured while scanning.
+ *
+ * In a wellformed scanner (no or only correct usage of
+ * yypushback(int) and a match-all fallback rule) this method
+ * will only be called with things that "Can't Possibly Happen".
+ * If this method is called, something is seriously wrong
+ * (e.g. a JFlex bug producing a faulty scanner etc.).
+ *
+ * Usual syntax/scanner level error handling should be done
+ * in error fallback rules.
+ *
+ * @param errorCode the code of the errormessage to display
+ */
+ private void zzScanError(int errorCode) {
+ String message;
+ try {
+ message = ZZ_ERROR_MSG[errorCode];
+ } catch (ArrayIndexOutOfBoundsException e) {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Error(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ public void yypushback(int number) {
+ if ( number > yylength() ) {
+ zzScanError(ZZ_PUSHBACK_2BIG);
+ }
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ public int yylex() throws java.io.IOException {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char [] zzBufferL = zzBuffer;
+ char [] zzCMapL = ZZ_CMAP;
+
+
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
+
+ yychar += zzMarkedPosL - zzStartRead;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+
+ zzForAction: {
+ while (true) {
+
+ if (zzCurrentPosL < zzEndReadL) {
+ zzInput = zzBufferL[zzCurrentPosL++];
+ } else if (zzAtEOF) {
+ zzInput = YYEOF;
+ break zzForAction;
+ } else {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ boolean eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof) {
+ zzInput = YYEOF;
+ break zzForAction;
+ } else {
+ zzInput = zzBufferL[zzCurrentPosL++];
+ }
+ }
+ zzInput = zzCMapL[zzInput];
+
+ boolean zzIsFinal = false;
+ boolean zzNoLookAhead = false;
+
+ zzForNext: {
+ switch (zzState) {
+ case 0:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ zzState = 6;
+ break zzForNext;
+ case 5:
+ case 6:
+ zzIsFinal = true;
+ zzState = 7;
+ break zzForNext;
+ case 10:
+ zzIsFinal = true;
+ zzState = 8;
+ break zzForNext;
+ case 12:
+ zzIsFinal = true;
+ zzState = 9;
+ break zzForNext;
+ default:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 5;
+ break zzForNext;
+ }
+
+ case 1:
+ switch (zzInput) {
+ case 10:
+ zzIsFinal = true;
+ zzState = 8;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ zzState = 10;
+ break zzForNext;
+ case 6:
+ case 7:
+ zzIsFinal = true;
+ zzState = 11;
+ break zzForNext;
+ case 8:
+ zzIsFinal = true;
+ zzState = 12;
+ break zzForNext;
+ case 13:
+ zzIsFinal = true;
+ zzState = 13;
+ break zzForNext;
+ default:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 5;
+ break zzForNext;
+ }
+
+ case 2:
+ switch (zzInput) {
+ case 8:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 5;
+ break zzForNext;
+ case 1:
+ zzIsFinal = true;
+ zzState = 15;
+ break zzForNext;
+ case 2:
+ zzIsFinal = true;
+ zzState = 16;
+ break zzForNext;
+ case 3:
+ zzIsFinal = true;
+ zzState = 17;
+ break zzForNext;
+ case 4:
+ zzIsFinal = true;
+ zzState = 18;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 3:
+ switch (zzInput) {
+ case 6:
+ case 7:
+ zzIsFinal = true;
+ zzState = 11;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ zzState = 20;
+ break zzForNext;
+ case 8:
+ zzIsFinal = true;
+ zzState = 21;
+ break zzForNext;
+ default:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 5;
+ break zzForNext;
+ }
+
+ case 4:
+ switch (zzInput) {
+ case 8:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 5;
+ break zzForNext;
+ case 1:
+ case 3:
+ zzIsFinal = true;
+ zzState = 22;
+ break zzForNext;
+ case 2:
+ zzState = 23;
+ break zzForNext;
+ case 4:
+ zzIsFinal = true;
+ zzState = 24;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 25;
+ break zzForNext;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 6:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ case 12:
+ zzIsFinal = true;
+ zzState = 9;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 7:
+ switch (zzInput) {
+ case 6:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 8:
+ switch (zzInput) {
+ case 11:
+ zzState = 26;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 9:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 10:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ case 13:
+ zzIsFinal = true;
+ zzState = 13;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 11:
+ switch (zzInput) {
+ case 6:
+ case 7:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 12:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 13:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 14:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ zzState = 27;
+ break zzForNext;
+ case 8:
+ case 9:
+ break zzForAction;
+ default:
+ zzIsFinal = true;
+ break zzForNext;
+ }
+
+ case 15:
+ switch (zzInput) {
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzState = 28;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 16:
+ switch (zzInput) {
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzState = 28;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 17:
+ switch (zzInput) {
+ case 2:
+ zzIsFinal = true;
+ zzState = 16;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ case 1:
+ case 3:
+ case 4:
+ zzState = 28;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 18:
+ switch (zzInput) {
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ zzState = 29;
+ break zzForNext;
+ case 8:
+ break zzForAction;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 20:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 21:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 22:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ zzState = 23;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 25;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 23:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 25;
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 24:
+ switch (zzInput) {
+ case 4:
+ zzIsFinal = true;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 25;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ zzState = 30;
+ break zzForNext;
+ case 8:
+ break zzForAction;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 26:
+ switch (zzInput) {
+ case 11:
+ zzState = 31;
+ break zzForNext;
+ default:
+ break zzForNext;
+ }
+
+ case 27:
+ switch (zzInput) {
+ case 1:
+ case 2:
+ case 3:
+ break zzForNext;
+ case 8:
+ case 9:
+ break zzForAction;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 28:
+ switch (zzInput) {
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ break zzForNext;
+ default:
+ break zzForAction;
+ }
+
+ case 29:
+ switch (zzInput) {
+ case 4:
+ zzIsFinal = true;
+ zzState = 18;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 19;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ break zzForNext;
+ case 8:
+ break zzForAction;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 30:
+ switch (zzInput) {
+ case 4:
+ zzIsFinal = true;
+ zzState = 24;
+ break zzForNext;
+ case 9:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 25;
+ break zzForNext;
+ case 1:
+ case 2:
+ case 3:
+ break zzForNext;
+ case 8:
+ break zzForAction;
+ default:
+ zzIsFinal = true;
+ zzState = 14;
+ break zzForNext;
+ }
+
+ case 31:
+ switch (zzInput) {
+ case 11:
+ break zzForNext;
+ case 10:
+ zzIsFinal = true;
+ zzNoLookAhead = true;
+ zzState = 32;
+ break zzForNext;
+ default:
+ zzState = 26;
+ break zzForNext;
+ }
+
+ default:
+ // if this is ever reached, there is a serious bug in JFlex
+ zzScanError(ZZ_UNKNOWN_ERROR);
+ break;
+ }
+ }
+
+ if ( zzIsFinal ) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ( zzNoLookAhead ) {
+ break zzForAction;
+ }
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 9 : {
+ yybegin(BLOCK);
+ }
+ case 12:
+ break;
+ case 4: {
+ openBlock();
+ yybegin(BLOCK);
+ }
+ case 13:
+ break;
+ case 8: {
+ value = yytext();
+ pushKeyValue();
+ }
+ case 14:
+ break;
+ case 10: {
+ yybegin(VALUELINE);
+ }
+ case 15:
+ break;
+ case 2: {
+ return -1;
+ }
+ case 16:
+ break;
+ case 11: {
+ yybegin(LINE);
+ }
+ case 17:
+ break;
+ case 6: {
+ yybegin(VALUE);
+ }
+ case 18:
+ break;
+ case 5: {
+ key = yytext();
+ }
+ case 19:
+ break;
+ case 7: {
+ closeBlock();
+ yybegin(YYINITIAL);
+ }
+ case 20:
+ break;
+ case 3: {
+ identifier = yytext();
+ }
+ case 21:
+ break;
+ case 1: {
+ }
+ case 22:
+ break;
+ default:
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ {
+ return 0;
+ }
+ } else {
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.java
new file mode 100755
index 000000000..29c49e8cc
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/CSSParserException.java
@@ -0,0 +1,27 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.xmlloader;
+
+/**
+ * CSS parser exception
+ */
+public class CSSParserException extends Exception {
+
+ /**
+ * Default constructor
+ * @param msg the error message
+ */
+ public CSSParserException(String msg) {
+ super(msg);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.java
new file mode 100755
index 000000000..32a6c71a8
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/GOBuilder.java
@@ -0,0 +1,871 @@
+package org.scilab.modules.graphic_objects.xmlloader;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_BORDER_OPT_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACKTYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CALLBACK__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CLOSEREQUESTFCN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FIGURE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_GRID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_GRID_OPT_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_HIDDEN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_INFOBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LINE_THICKNESS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MARGINS__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MENUBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_MENUBAR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_NAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_RESIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_SIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TITLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TOOLBAR_VISIBLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TOOLBAR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UIMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BACKGROUNDCOLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BORDER_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_BORDER_PREFERREDSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ENABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTANGLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTNAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FONTWEIGHT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FOREGROUNDCOLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_COLOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_HIGHLIGHT_IN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_IN_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_JUSTIFICATION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_OUT_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_POSITION__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_ROUNDED__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_SHADOW_IN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_SHADOW_OUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_STYLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_TITLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_SCROLLABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_ANCHOR__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_FILL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_GRID__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_PADDING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_PREFERREDSIZE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GRIDBAG_WEIGHT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_GROUP_NAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_HORIZONTALALIGNMENT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_ICON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LABEL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MAX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MIN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SCROLLABLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SPINNER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_VISIBLE__;
+
+import java.awt.Color;
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.scilab.modules.graphic_objects.builder.Builder;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorder;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorder.BorderType;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorderType;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+import org.xml.sax.Attributes;
+
+public class GOBuilder {
+ public static Integer figureBuilder(GraphicController controller, Attributes attributes) {
+ Integer fig = Builder.createFigure(false, 0, 0, false, false);
+ String item = null;
+
+ // id
+ XmlTools.setPropAsString(fig, __GO_TAG__, attributes.getValue("id"));
+
+ // position
+ Integer[] position = (Integer[]) controller.getProperty(fig, __GO_POSITION__);
+
+ // posX
+ item = attributes.getValue("posX");
+ if (item != null) {
+ position[0] = Integer.parseInt(item);
+ }
+
+ // posY
+ item = attributes.getValue("posY");
+ if (item != null) {
+ position[1] = Integer.parseInt(item);
+ }
+
+ // set position
+ controller.setProperty(fig, __GO_POSITION__, position);
+
+ Integer[] size = (Integer[]) controller.getProperty(fig, __GO_SIZE__);
+ // width
+ item = attributes.getValue("width");
+ if (item != null) {
+ size[0] = Integer.parseInt(item);
+ }
+
+ // height
+ item = attributes.getValue("height");
+ if (item != null) {
+ size[1] = Integer.parseInt(item);
+ }
+
+ // set size
+ controller.setProperty(fig, __GO_SIZE__, size);
+
+ // title
+ XmlTools.setPropAsString(fig, __GO_NAME__, attributes.getValue("title"));
+
+ // resizable
+ XmlTools.setPropAsBoolean(fig, __GO_RESIZE__, attributes.getValue("resizable"));
+
+ // layout and layout_options
+ item = attributes.getValue("layout");
+ if (item == null) {
+ item = "name:border"; //default layout is border
+ }
+
+ setLayoutProperty(controller, fig, item);
+
+
+ //icon
+ item = attributes.getValue("icon");
+ if (item != null) {
+ controller.setProperty(fig, __GO_UI_ICON__, item);
+ }
+
+ item = attributes.getValue("onclose");
+ if (item != null) {
+ controller.setProperty(fig, __GO_CLOSEREQUESTFCN__, item);
+ }
+
+ //set default value for menu/info/tool bars and visibility
+ controller.setProperty(fig, __GO_MENUBAR__, 0);
+ controller.setProperty(fig, __GO_TOOLBAR__, 0);
+
+ controller.setProperty(fig, __GO_MENUBAR_VISIBLE__, false);
+ controller.setProperty(fig, __GO_TOOLBAR_VISIBLE__, false);
+ controller.setProperty(fig, __GO_INFOBAR_VISIBLE__, false);
+
+
+ // visible
+ XmlTools.setPropAsBoolean(fig, __GO_VISIBLE__, attributes.getValue("visible"));
+
+ return fig;
+ }
+
+ public static Integer axesBuilder(GraphicController controller, Attributes attributes) {
+ Integer axes = GraphicController.getController().askObject(Type.AXES);
+ String id = attributes.getValue("id");
+ if (id != null) {
+ controller.setProperty(axes, __GO_TAG__, id);
+ }
+ return axes;
+ }
+
+ public static Integer uicontrolBuilder(GraphicController controller, int type, Attributes attributes, int parent) {
+ if (type == __GO_UI_FRAME__) {
+ String item = attributes.getValue("scrollable");
+ if (item != null && item.equals("true")) {
+ type = __GO_UI_FRAME_SCROLLABLE__;
+ }
+ }
+
+ Integer uic = 0;
+ if (type == -1) { //label latex
+ uic = controller.askObject(GraphicObject.getTypeFromName(__GO_UI_TEXT__));
+ controller.setProperty(uic, __GO_UI_STRING__, new String[] {"$$"});
+ } else if (type == -2) {
+ uic = controller.askObject(GraphicObject.getTypeFromName(__GO_UI_EDIT__));
+ controller.setProperty(uic, __GO_UI_MIN__, 0.0);
+ controller.setProperty(uic, __GO_UI_MAX__, 2.0);
+ } else {
+ uic = controller.askObject(GraphicObject.getTypeFromName(type));
+ }
+
+ return uicontrolUpdater(controller, uic, attributes, parent);
+ }
+
+ public static Integer uicontrolUpdater(GraphicController controller, int uic, Attributes attributes, int parent) {
+ return uicontrolUpdater(controller, uic, attributes, parent, null);
+ }
+
+ public static Integer uicontrolUpdater(GraphicController controller, int uic, Attributes attributes, int parent, Map<String, String> fromModel) {
+ String item = null;
+
+ try {
+ Map<String, String> xmlAttributes = new HashMap<String, String>();
+ Map<String, String> map = null;
+ // Common attributes
+
+ if (fromModel != null) {
+ for (Map.Entry<String, String> prop : fromModel.entrySet()) {
+ xmlAttributes.put(prop.getKey(), prop.getValue());
+ }
+ }
+
+ for (int i = 0; i < attributes.getLength(); i++) {
+ String name = attributes.getLocalName(i);
+ String value = attributes.getValue(i);
+ xmlAttributes.put(name, value);
+ }
+
+ // id
+ XmlTools.setPropAsString(uic, __GO_TAG__, xmlAttributes.get("id"));
+
+ // layout and layout_options
+ item = xmlAttributes.get("layout");
+
+ if (item == null) {
+ item = "name:none";
+ }
+ setLayoutProperty(controller, uic, item);
+
+ //visible
+ item = xmlAttributes.get("visible");
+ if (item == null || item.equals("true") || item.equals("on")) {
+ controller.setProperty(uic, __GO_VISIBLE__, true);
+ } else {
+ controller.setProperty(uic, __GO_VISIBLE__, false);
+ }
+
+ //enable
+ boolean enable = true;
+ item = attributes.getValue("enable");
+ if (item != null && (item.equals("false") || item.equals("off"))) {
+ enable = false;
+ }
+
+ //enabled
+ item = attributes.getValue("enabled");
+ if (item != null && (item.equals("false") || item.equals("off"))) {
+ enable = false;
+ }
+
+ controller.setProperty(uic, __GO_UI_ENABLE__, enable);
+
+ //backgroundcolor
+ item = xmlAttributes.get("background");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_BACKGROUNDCOLOR__, getColor(item));
+ }
+
+ // constraints
+
+ // get parent layout
+ LayoutType layout = LayoutType.NONE;
+ if (parent != 0) {
+ layout = LayoutType.intToEnum((Integer) controller.getProperty(parent, __GO_LAYOUT__));
+ }
+
+
+ //font properties
+
+ //fontname
+ item = xmlAttributes.get("font-name");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_FONTNAME__, item);
+ }
+
+ item = xmlAttributes.get("fontname");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_FONTNAME__, item);
+ }
+
+ //fontsize
+ item = xmlAttributes.get("font-size");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_FONTSIZE__, Double.parseDouble(item));
+ }
+
+ item = xmlAttributes.get("fontsize");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_FONTSIZE__, Double.parseDouble(item));
+ }
+
+ //units and position
+ String[] units = null;
+ item = xmlAttributes.get("units");
+ if (item != null) {
+ units = item.split("[,;]");
+ }
+
+ //position, take care of units values
+ item = xmlAttributes.get("position");
+ if (item != null) {
+ Double[] pos = new Double[4];
+ Double[] parentSize = new Double[] {934.0, 511.0};
+ String[] strPos = item.split("[,;]");
+ for (int i = 0 ; i < strPos.length ; i++) {
+ pos[i] = Double.parseDouble(strPos[i]);
+ if (units != null && units[i].equals("n")) {
+ //convert %age to pixel
+ pos[i] = parentSize[i % 2] * pos[i];
+ }
+ }
+
+ controller.setProperty(uic, __GO_POSITION__, pos);
+ }
+
+ item = xmlAttributes.get("opaque");
+ if (item != null && (item.equals("false") || item.equals("off"))) {
+ controller.setProperty(uic, __GO_UI_BACKGROUNDCOLOR__, new Double[] { -2.0, -2.0, -2.0});
+ }
+
+ if (layout != LayoutType.NONE) {
+ item = xmlAttributes.get("constraint");
+ if (item != null) {
+ map = CSSParser.parseLine(item);
+ }
+
+ switch (layout) {
+ case BORDER: {
+ item = XmlTools.getFromMap(map, "position", "center");
+ controller.setProperty(uic, __GO_UI_BORDER_POSITION__, Uicontrol.BorderLayoutType.stringToEnum2(item).ordinal());
+ Integer[] preferredsize = new Integer[] { -1, -1};
+ item = xmlAttributes.get("preferred-size");
+ if (item != null) {
+ String[] pref = item.split("[,;]");
+ for (int i = 0; i < pref.length && i < 4; i++) {
+ preferredsize[i] = Integer.parseInt(pref[i]);
+ }
+ }
+
+ controller.setProperty(uic, __GO_UI_BORDER_PREFERREDSIZE__, preferredsize);
+ break;
+ }
+ case GRIDBAG: {
+ Integer[] grid = new Integer[] { 0, 0, 0, 0 };
+ grid[0] = Integer.parseInt(XmlTools.getFromMap(map, "gridx", "0"));
+ grid[1] = Integer.parseInt(XmlTools.getFromMap(map, "gridy", "0"));
+ grid[2] = Integer.parseInt(XmlTools.getFromMap(map, "gridwidth", "1"));
+ grid[3] = Integer.parseInt(XmlTools.getFromMap(map, "gridheight", "1"));
+
+ Double[] weight = new Double[] { 0.0, 0.0 };
+ weight[0] = Double.parseDouble(XmlTools.getFromMap(map, "weightx", "1.0"));
+ weight[1] = Double.parseDouble(XmlTools.getFromMap(map, "weighty", "1.0"));
+
+ Integer fill = Uicontrol.FillType.stringToEnum(XmlTools.getFromMap(map, "fill", "none")).ordinal();
+ Integer anchor = Uicontrol.AnchorType.stringToEnum2(XmlTools.getFromMap(map, "anchor", "center")).ordinal();
+
+ Integer[] padding = new Integer[] { 0, 0 };
+ padding[0] = Integer.parseInt(XmlTools.getFromMap(map, "ipadx", "0"));
+ padding[1] = Integer.parseInt(XmlTools.getFromMap(map, "ipady", "0"));
+
+ Integer[] preferredsize = new Integer[] { -1, -1};
+ item = xmlAttributes.get("preferred-size");
+ if (item != null) {
+ String[] pref = item.split("[,;]");
+ for (int i = 0; i < pref.length && i < 4; i++) {
+ preferredsize[i] = Integer.parseInt(pref[i]);
+ }
+ }
+ controller.setProperty(uic, __GO_UI_GRIDBAG_GRID__, grid);
+ controller.setProperty(uic, __GO_UI_GRIDBAG_WEIGHT__, weight);
+ controller.setProperty(uic, __GO_UI_GRIDBAG_FILL__, fill);
+ controller.setProperty(uic, __GO_UI_GRIDBAG_ANCHOR__, anchor);
+ controller.setProperty(uic, __GO_UI_GRIDBAG_PADDING__, padding);
+ controller.setProperty(uic, __GO_UI_GRIDBAG_PREFERREDSIZE__, preferredsize);
+ break;
+ }
+ default:
+ break;
+ }
+
+ // insets -> marging
+ String insets = XmlTools.getFromMap(map, "insets", "0,0,0,0");
+ Double[] margins = new Double[] { 0.0, 0.0, 0.0, 0.0 };
+ String[] inset = insets.split("[,;]");
+ for (int i = 0; i < inset.length && i < 4; i++) {
+ margins[i] = Double.parseDouble(inset[i]);
+ }
+
+ controller.setProperty(uic, __GO_MARGINS__, margins);
+ }
+
+ // specific attributes
+ Integer type = (Integer) controller.getProperty(uic, __GO_STYLE__);
+ switch (type) {
+ case __GO_UI_FRAME__: {
+ // border
+ item = xmlAttributes.get("border");
+ if (item != null) {
+ map = CSSParser.parseLine(item);
+ }
+
+ FrameBorderType borderType = FrameBorderType.stringToEnum(XmlTools.getFromMap(map, "name", "none"));
+ Integer border = createBorder(controller, uic, borderType, map);
+ controller.setProperty(uic, __GO_UI_FRAME_BORDER__, border);
+
+ String[] text = new String[1];
+ text[0] = xmlAttributes.get("tab-title");
+ if (text[0] != null) {
+ controller.setProperty(uic, __GO_UI_STRING__, text);
+ }
+
+ item = xmlAttributes.get("scrollable");
+ if (item == null || item.equals("false")) {
+ controller.setProperty(uic, __GO_UI_SCROLLABLE__, false);
+ } else {
+ controller.setProperty(uic, __GO_UI_SCROLLABLE__, true);
+ }
+
+ break;
+ }
+
+ case __GO_UI_TAB__: {
+ item = xmlAttributes.get("ui-style");
+ if (item != null) {
+ map = CSSParser.parseLine(item);
+ item = XmlTools.getFromMap(map, "bold", "false");
+ if (item.equals("true")) {
+ controller.setProperty(uic, __GO_UI_FONTWEIGHT__, "bold");
+ }
+
+ item = XmlTools.getFromMap(map, "italic", "false");
+ if (item.equals("true")) {
+ controller.setProperty(uic, __GO_UI_FONTANGLE__, "italic");
+ }
+ }
+ break;
+ }
+ case __GO_UI_IMAGE__: {
+ String[] text = new String[1];
+ text[0] = xmlAttributes.get("image");
+ if (text[0] != null) {
+ controller.setProperty(uic, __GO_UI_STRING__, text);
+ }
+ break;
+ }
+ case __GO_UI_CHECKBOX__: {
+ String[] text = new String[1];
+ text[0] = xmlAttributes.get("text");
+ if (text[0] != null) {
+ controller.setProperty(uic, __GO_UI_STRING__, text);
+ }
+
+ //groupname
+ item = xmlAttributes.get("button-group");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_UI_GROUP_NAME__, item);
+ }
+
+ //callback
+ item = xmlAttributes.get("onclick");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ break;
+ }
+ case __GO_UI_RADIOBUTTON__: {
+ String[] text = new String[1];
+ text[0] = xmlAttributes.get("text");
+ if (text[0] != null) {
+ controller.setProperty(uic, __GO_UI_STRING__, text);
+ }
+
+ //groupname
+ item = xmlAttributes.get("button-group");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_UI_GROUP_NAME__, item);
+ }
+
+ //callback
+ item = xmlAttributes.get("onclick");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ break;
+ }
+ case __GO_UI_PUSHBUTTON__: {
+
+ //string
+ String[] text = new String[1];
+ text[0] = xmlAttributes.get("text");
+ if (text[0] != null) {
+ controller.setProperty(uic, __GO_UI_STRING__, text);
+ }
+
+
+ //icon
+ item = xmlAttributes.get("icon");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_ICON__, item);
+ }
+
+ //callback
+ item = xmlAttributes.get("onclick");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ break;
+ }
+ case __GO_UI_TEXT__: { //label
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "left");
+ item = xmlAttributes.get("alignment");
+ if (item != null) {
+ if (item.equals("left")) {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "left");
+ } else if (item.equals("center")) {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "center");
+ } else if (item.equals("right")) {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "right");
+ }
+ }
+
+ String[] text = new String[1];
+ text[0] = xmlAttributes.get("text");
+ if (text[0] != null) {
+ String[] old = (String[])controller.getProperty(uic, __GO_UI_STRING__);
+ if (old != null && old[0] != null && old[0].equals("$$")) {
+ text[0] = "$" + text[0] + "$";
+ }
+ controller.setProperty(uic, __GO_UI_STRING__, text);
+ }
+
+ //icon
+ item = xmlAttributes.get("icon");
+ if (item != null) {
+ controller.setProperty(uic, __GO_UI_ICON__, item);
+ }
+
+ //color
+ item = xmlAttributes.get("color");
+ if (item != null) {
+ Color color = Color.decode(item);
+ Double[] val = new Double[] {(double) color.getRed() / 255, (double) color.getGreen() / 255, (double) color.getBlue() / 255};
+ controller.setProperty(uic, __GO_UI_FOREGROUNDCOLOR__, val);
+ }
+
+ item = xmlAttributes.get("ui-style");
+ if (item != null) {
+ map = CSSParser.parseLine(item);
+ item = XmlTools.getFromMap(map, "bold", "false");
+ if (item.equals("true")) {
+ controller.setProperty(uic, __GO_UI_FONTWEIGHT__, "bold");
+ }
+
+ item = XmlTools.getFromMap(map, "italic", "false");
+ if (item.equals("true")) {
+ controller.setProperty(uic, __GO_UI_FONTANGLE__, "italic");
+ }
+ }
+
+ break;
+ }
+ case __GO_UI_EDIT__ : {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "left");
+ item = xmlAttributes.get("alignment");
+ if (item != null) {
+ if (item.equals("left")) {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "left");
+ } else if (item.equals("center")) {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "center");
+ } else if (item.equals("right")) {
+ controller.setProperty(uic, __GO_UI_HORIZONTALALIGNMENT__, "right");
+ }
+ }
+
+ item = xmlAttributes.get("scrollable");
+ if (item != null && (item.equals("true") || item.equals("on"))) {
+ controller.setProperty(uic, __GO_UI_SCROLLABLE__, true);
+ }
+
+ //callback
+ item = xmlAttributes.get("onenter");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ item = xmlAttributes.get("onfocusloss");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ break;
+ }
+ case __GO_UI_POPUPMENU__ : {
+ item = xmlAttributes.get("items");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_UI_STRING__, new String[] {item});
+ }
+
+ item = xmlAttributes.get("prototype-display-value");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_UI_MAX__, new Double(item.length()));
+ }
+
+ //callback
+ item = xmlAttributes.get("onchange");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ break;
+ }
+ case __GO_UI_LISTBOX__ : {
+ item = xmlAttributes.get("items");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_UI_STRING__, new String[] {item});
+ }
+
+ item = xmlAttributes.get("multiple");
+ if (item != null && item.equals("true")) {
+ controller.setProperty(uic, __GO_UI_MIN__, 0.0);
+ controller.setProperty(uic, __GO_UI_MAX__, 2.0);
+ }
+
+ //callback
+ item = xmlAttributes.get("onclick");
+ if (item != null && item.equals("") == false) {
+ controller.setProperty(uic, __GO_CALLBACK__, item);
+ controller.setProperty(uic, __GO_CALLBACKTYPE__, 0);
+ }
+
+ break;
+ }
+ case __GO_UI_SPINNER__: {
+
+ }
+ }
+
+ } catch (CSSParserException e) {
+ e.printStackTrace();
+ }
+
+ return uic;
+ }
+
+ private static void setLayoutProperty(GraphicController controller, Integer uid, String item) {
+ try {
+ Map<String, String> map = null;
+ map = CSSParser.parseLine(item);
+ item = map.get("name");
+ LayoutType layout = LayoutType.stringToEnum(item);
+
+ // layout_options
+ switch (layout) {
+ case BORDER: {
+ Integer[] pad = new Integer[] { 0, 0 };
+ pad[0] = Integer.parseInt(XmlTools.getFromMap(map, "hgap", "0"));
+ pad[1] = Integer.parseInt(XmlTools.getFromMap(map, "vgap", "0"));
+
+ controller.setProperty(uid, __GO_BORDER_OPT_PADDING__, pad);
+ break;
+ }
+ case GRID: {
+ Integer[] grid = new Integer[] { 0, 0 };
+ grid[0] = Integer.parseInt(XmlTools.getFromMap(map, "rows", "0"));
+ grid[1] = Integer.parseInt(XmlTools.getFromMap(map, "cols", "0"));
+
+ Integer[] pad = new Integer[] { 0, 0 };
+ pad[0] = Integer.parseInt(XmlTools.getFromMap(map, "hgap", "0"));
+ pad[1] = Integer.parseInt(XmlTools.getFromMap(map, "vgap", "0"));
+
+ controller.setProperty(uid, __GO_GRID_OPT_GRID__, grid);
+ controller.setProperty(uid, __GO_GRID_OPT_PADDING__, pad);
+ break;
+ }
+ default:
+ case GRIDBAG:
+ case NONE:
+ // nothing to do
+ break;
+ }
+ controller.setProperty(uid, __GO_LAYOUT__, layout.ordinal());
+ } catch (CSSParserException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public static Integer uimenuBuilder(GraphicController controller, Attributes attributes, int parent) {
+ Integer parentType = (Integer)controller.getProperty(parent, __GO_TYPE__);
+ if (parentType == __GO_FIGURE__) {
+ controller.setProperty(parent, __GO_MENUBAR_VISIBLE__, true);
+ }
+
+ Integer uim = controller.askObject(GraphicObject.getTypeFromName(__GO_UIMENU__));
+
+ String item = null;
+
+ item = attributes.getValue("id");
+ if (item != null) {
+ controller.setProperty(uim, __GO_TAG__, item);
+ }
+
+ item = attributes.getValue("text");
+ if (item != null) {
+ controller.setProperty(uim, __GO_UI_LABEL__, item);
+ }
+
+ item = attributes.getValue("onclick");
+ if (item != null) {
+ controller.setProperty(uim, __GO_CALLBACK__, item);
+ controller.setProperty(uim, __GO_CALLBACKTYPE__, 0);
+ }
+
+ item = attributes.getValue("checked");
+ if (item != null && (item.equals("true") || item.equals("on"))) {
+ controller.setProperty(uim, __GO_UI_CHECKED__, true);
+ }
+
+ item = attributes.getValue("icon");
+ if (item != null) {
+ controller.setProperty(uim, __GO_UI_ICON__, item);
+ }
+
+ return uim;
+ }
+
+ private static Integer createBorder(GraphicController controller, Integer uic, FrameBorderType borderType, Map<String, String> map) {
+ Integer border = controller.askObject(GraphicObject.getTypeFromName(__GO_UI_FRAME_BORDER__));
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_STYLE__, borderType.ordinal());
+ controller.setProperty(border, __GO_HIDDEN__, true);
+
+ switch (borderType) {
+ case SOFTBEVEL:
+ case BEVEL: {
+ BorderType etching = BorderType.stringToEnum(XmlTools.getFromMap(map, "type", "none"));
+ String color = XmlTools.getFromMap(map, "color", "black");
+
+ controller.setProperty(border, __GO_TYPE__, etching.ordinal());
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__, color);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__, color);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_SHADOW_OUT__, color);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_SHADOW_IN__, color);
+ break;
+ }
+ case COMPOUND: {
+ FrameBorderType borderOut = FrameBorderType.stringToEnum(XmlTools.getFromMap(map, "border-out", "none"));
+ FrameBorderType borderIn = FrameBorderType.stringToEnum(XmlTools.getFromMap(map, "border-in", "none"));
+
+ Integer out = createBorder(controller, border, borderOut, map);
+ Integer in = createBorder(controller, border, borderIn, map);
+
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_OUT_BORDER__, out);
+
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_IN_BORDER__, in);
+
+ break;
+ }
+ case EMPTY: {
+ Double[] position = new Double[4];
+ position[0] = Double.parseDouble(XmlTools.getFromMap(map, "top", "0"));
+ position[1] = Double.parseDouble(XmlTools.getFromMap(map, "left", "0"));
+ position[2] = Double.parseDouble(XmlTools.getFromMap(map, "right", "0"));
+ position[3] = Double.parseDouble(XmlTools.getFromMap(map, "bottom", "0"));
+
+ controller.setProperty(border, __GO_POSITION__, position);
+ break;
+ }
+ case ETCHED: {
+ BorderType etching = BorderType.stringToEnum(XmlTools.getFromMap(map, "type", "none"));
+ String color = XmlTools.getFromMap(map, "color", "black");
+
+ controller.setProperty(border, __GO_TYPE__, etching.ordinal());
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__, color);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__, color);
+ break;
+ }
+ case LINE: {
+ String color = XmlTools.getFromMap(map, "color", "black");
+ Integer thickness = Integer.parseInt(XmlTools.getFromMap(map, "thickness", "1"));
+ Boolean rounded = Boolean.parseBoolean(XmlTools.getFromMap(map, "rounded", "false"));
+
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_COLOR__, color);
+ controller.setProperty(border, __GO_LINE_THICKNESS__, thickness);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_ROUNDED__, rounded);
+ break;
+ }
+ case MATTE: {
+ Double[] position = new Double[4];
+ position[0] = Double.parseDouble(XmlTools.getFromMap(map, "top", "0"));
+ position[1] = Double.parseDouble(XmlTools.getFromMap(map, "left", "0"));
+ position[2] = Double.parseDouble(XmlTools.getFromMap(map, "right", "0"));
+ position[3] = Double.parseDouble(XmlTools.getFromMap(map, "bottom", "0"));
+ String color = XmlTools.getFromMap(map, "color", "black");
+
+ controller.setProperty(border, __GO_POSITION__, position);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_COLOR__, color);
+ break;
+ }
+ case TITLED: {
+
+ String title = XmlTools.getFromMap(map, "title", "");
+ FrameBorder.JustificationType justify = FrameBorder.JustificationType.stringToEnum(XmlTools.getFromMap(map, "justify", "leading"));
+ String fontName = XmlTools.getFromMap(map, "font-name", "");
+ String fontAngle = XmlTools.getFromMap(map, "italic", "false") == "false" ? "normal" : "italic";
+ Integer fontSize = Integer.parseInt(XmlTools.getFromMap(map, "font-size", "0"));
+ String fontWeight = XmlTools.getFromMap(map, "bold", "false") == "false" ? "normal" : "bold";
+
+ FrameBorder.TitlePositionType position = FrameBorder.TitlePositionType.stringToEnum(XmlTools.getFromMap(map, "position", "leading"));
+
+ String color = XmlTools.getFromMap(map, "color", "black");
+
+ FrameBorderType borderOut = FrameBorderType.stringToEnum(XmlTools.getFromMap(map, "border", ""));
+ if (borderOut != null) {
+ Integer out = createBorder(controller, border, borderOut, map);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_TITLE__, out);
+ }
+
+ controller.setProperty(border, __GO_TITLE__, title);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_JUSTIFICATION__, justify.ordinal());
+ controller.setProperty(border, __GO_UI_FONTNAME__, fontName);
+ controller.setProperty(border, __GO_UI_FONTANGLE__, fontAngle);
+ controller.setProperty(border, __GO_UI_FONTSIZE__, fontSize);
+ controller.setProperty(border, __GO_UI_FONTWEIGHT__, fontWeight);
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_POSITION__, position.ordinal());
+ controller.setProperty(border, __GO_UI_FRAME_BORDER_COLOR__, color);
+
+ break;
+ }
+ case NONE:
+ default:
+ break;
+ }
+
+ controller.setGraphicObjectRelationship(uic, border);
+ return border;
+ }
+
+ private static Double[] getColor(String str) {
+ try {
+ Field field = Class.forName("java.awt.Color").getField(str);
+ Color color = (Color) field.get(null);
+ return new Double[] {(double) color.getRed() / 255, (double) color.getGreen() / 255, (double) color.getBlue() / 255};
+ } catch (Exception e) {
+ return new Double[] {(double) Color.black.getRed() / 255, (double) Color.black.getGreen() / 255, (double) Color.black.getBlue() / 255};
+ }
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/Pair.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/Pair.java
new file mode 100755
index 000000000..b346191b1
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/Pair.java
@@ -0,0 +1,62 @@
+package org.scilab.modules.graphic_objects.xmlloader;
+
+
+public class Pair<First, Second> {
+ private First first;
+ private Second second;
+
+ public Pair(First first, Second second) {
+ this.first = first;
+ this.second = second;
+ }
+
+ public void setFirst(First first) {
+ this.first = first;
+ }
+
+ public void setSecond(Second second) {
+ this.second = second;
+ }
+
+ public First getFirst() {
+ return first;
+ }
+
+ public Second getSecond() {
+ return second;
+ }
+
+ public void set(First first, Second second) {
+ setFirst(first);
+ setSecond(second);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ Pair <? , ? > pair = (Pair <? , ? >) o;
+
+ if (first != null ? !first.equals(pair.first) : pair.first != null) {
+ return false;
+ }
+ if (second != null ? !second.equals(pair.second) : pair.second != null) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = first != null ? first.hashCode() : 0;
+ result = 31 * result + (second != null ? second.hashCode() : 0);
+ return result;
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java
new file mode 100755
index 000000000..d71fcb71d
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java
@@ -0,0 +1,949 @@
+package org.scilab.modules.graphic_objects.xmlloader;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+import java.awt.Color;
+import java.io.File;
+import java.util.HashMap;
+import java.util.StringTokenizer;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.scilab.modules.commons.CommonFileUtils;
+import org.scilab.modules.commons.gui.FindIconHelper;
+import org.scilab.modules.graphic_objects.ScilabNativeView;
+import org.scilab.modules.graphic_objects.builder.Builder;
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorderType;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class XMLDomLoader {
+
+ private enum ModelType {
+ BOOLEAN, BOOLEAN_ARRAY, DOUBLE, DOUBLE_ARRAY, STRING, STRING_ARRAY, INTEGER, INTEGER_ARRAY, ROTATIONTYPE, BARTYPE, LAYOUTTYPE, FILLTYPE, ANCHORTYPE, POSITIONTYPE;
+ };
+
+ private static final int __NODE_SCILABGUI__ = -10;
+ private static final int __NODE_OUT__ = -20;
+ private static final int __NODE_IN__ = -30;
+ private static final int __NODE_TITLE__ = -40;
+ private static final int __NODE_STRING__ = -50;
+ private static final int __NODE_STRINGITEM__ = -50;
+ private static final int __NODE_COLORMAP__ = -60;
+ private static final int __NODE_COLORMAPITEM__ = -70;
+
+ private static HashMap<String, Integer> nameToGO = new HashMap<String, Integer>();
+
+ private static HashMap<String, Pair<Integer, ModelType>> figPropToGO = new HashMap<String, Pair<Integer, ModelType>>();
+ private static HashMap<String, Pair<Integer, ModelType>> UiPropToGO = new HashMap<String, Pair<Integer, ModelType>>();
+ private static HashMap<String, Pair<Integer, ModelType>> MenuPropToGO = new HashMap<String, Pair<Integer, ModelType>>();
+ private static HashMap<String, Pair<Integer, ModelType>> BorderPropToGO = new HashMap<String, Pair<Integer, ModelType>>();
+
+ static {
+ // init map to convert control name to id
+ nameToGO.put("figure", __GO_FIGURE__);
+ nameToGO.put("frame", __GO_UI_FRAME__);
+ nameToGO.put("layer", __GO_UI_LAYER__);
+ nameToGO.put("pushbutton", __GO_UI_PUSHBUTTON__);
+ nameToGO.put("text", __GO_UI_TEXT__);
+ nameToGO.put("checkbox", __GO_UI_CHECKBOX__);
+ nameToGO.put("textfield", __GO_UI_EDIT__);
+ nameToGO.put("spinner", __GO_UI_SPINNER__);
+ nameToGO.put("edit", __GO_UI_EDIT__);
+ nameToGO.put("image", __GO_UI_IMAGE__);
+ nameToGO.put("picture", __GO_UI_IMAGE__);
+ nameToGO.put("listbox", __GO_UI_LISTBOX__);
+ nameToGO.put("popupmenu", __GO_UI_POPUPMENU__);
+ nameToGO.put("radiobutton", __GO_UI_RADIOBUTTON__);
+ nameToGO.put("slider", __GO_UI_SLIDER__);
+ nameToGO.put("table", __GO_UI_TABLE__);
+ nameToGO.put("tab", __GO_UI_TAB__);
+
+ nameToGO.put("menu", __GO_UIMENU__);
+ nameToGO.put("contextmenu", __GO_UICONTEXTMENU__);
+
+ nameToGO.put("axes", __GO_AXES__);
+
+ nameToGO.put("border", __GO_UI_FRAME_BORDER__);
+
+ /* internal */
+ nameToGO.put("out", __NODE_OUT__);
+ nameToGO.put("in", __NODE_IN__);
+ nameToGO.put("title", __NODE_TITLE__);
+ nameToGO.put("string", __NODE_STRING__);
+ nameToGO.put("stringitem", __NODE_STRINGITEM__);
+ nameToGO.put("colormap", __NODE_COLORMAP__);
+ nameToGO.put("colormapitem", __NODE_COLORMAPITEM__);
+
+ /* system */
+ nameToGO.put("scilabgui", __NODE_SCILABGUI__);
+
+ //fill map of property -> {GO, ModelType}
+
+ //figure property list
+ figPropToGO.put("figure_position", new Pair<Integer, ModelType>(__GO_POSITION__, ModelType.INTEGER_ARRAY));
+ figPropToGO.put("figure_size", new Pair<Integer, ModelType>(__GO_SIZE__, ModelType.INTEGER_ARRAY));
+ figPropToGO.put("axes_size", new Pair<Integer, ModelType>(__GO_AXES_SIZE__, ModelType.INTEGER_ARRAY));
+ figPropToGO.put("auto_resize", new Pair<Integer, ModelType>(__GO_AUTORESIZE__, ModelType.BOOLEAN));
+ figPropToGO.put("view_port", new Pair<Integer, ModelType>(__GO_VIEWPORT__, ModelType.INTEGER_ARRAY));
+ figPropToGO.put("figure_name", new Pair<Integer, ModelType>(__GO_NAME__, ModelType.STRING));
+ figPropToGO.put("figure_id", new Pair<Integer, ModelType>(__GO_ID__, ModelType.INTEGER));
+ figPropToGO.put("info_message", new Pair<Integer, ModelType>(__GO_INFO_MESSAGE__, ModelType.STRING));
+ figPropToGO.put("pixel_drawing_mode", new Pair<Integer, ModelType>(__GO_PIXEL_DRAWING_MODE__, ModelType.STRING));
+ figPropToGO.put("anti_aliasing", new Pair<Integer, ModelType>(__GO_ANTIALIASING__, ModelType.BOOLEAN));
+ figPropToGO.put("immediate_drawing", new Pair<Integer, ModelType>(__GO_IMMEDIATE_DRAWING__, ModelType.BOOLEAN));
+ figPropToGO.put("background", new Pair<Integer, ModelType>(__GO_BACKGROUND__, ModelType.INTEGER));
+ figPropToGO.put("visible", new Pair<Integer, ModelType>(__GO_VISIBLE__, ModelType.BOOLEAN));
+ figPropToGO.put("rotation_style", new Pair<Integer, ModelType>(__GO_ROTATION_TYPE__, ModelType.ROTATIONTYPE));
+ figPropToGO.put("event_handler", new Pair<Integer, ModelType>(__GO_EVENTHANDLER_NAME__, ModelType.STRING));
+ figPropToGO.put("event_handler_enable", new Pair<Integer, ModelType>(__GO_EVENTHANDLER_ENABLE__, ModelType.BOOLEAN));
+ figPropToGO.put("resizefcn", new Pair<Integer, ModelType>(__GO_RESIZEFCN__, ModelType.STRING));
+ figPropToGO.put("closerequestfcn", new Pair<Integer, ModelType>(__GO_CLOSEREQUESTFCN__, ModelType.STRING));
+ figPropToGO.put("resize", new Pair<Integer, ModelType>(__GO_RESIZE__, ModelType.BOOLEAN));
+ figPropToGO.put("toolbar", new Pair<Integer, ModelType>(__GO_TOOLBAR__, ModelType.BARTYPE));
+ figPropToGO.put("toolbar_visible", new Pair<Integer, ModelType>(__GO_TOOLBAR_VISIBLE__, ModelType.BOOLEAN));
+ figPropToGO.put("menubar", new Pair<Integer, ModelType>(__GO_MENUBAR__, ModelType.BARTYPE));
+ figPropToGO.put("menubar_visible", new Pair<Integer, ModelType>(__GO_MENUBAR_VISIBLE__, ModelType.BOOLEAN));
+ figPropToGO.put("infobar_visible", new Pair<Integer, ModelType>(__GO_INFOBAR_VISIBLE__, ModelType.BOOLEAN));
+ figPropToGO.put("dockable", new Pair<Integer, ModelType>(__GO_DOCKABLE__, ModelType.BOOLEAN));
+ figPropToGO.put("layout", new Pair<Integer, ModelType>(__GO_LAYOUT__, ModelType.LAYOUTTYPE));
+ figPropToGO.put("default_axes", new Pair<Integer, ModelType>(__GO_DEFAULT_AXES__, ModelType.BOOLEAN));
+ figPropToGO.put("icon", new Pair<Integer, ModelType>(__GO_UI_ICON__, ModelType.STRING));
+ figPropToGO.put("tag", new Pair<Integer, ModelType>(__GO_TAG__, ModelType.STRING));
+ figPropToGO.put("grid_opt_grid", new Pair<Integer, ModelType>(__GO_GRID_OPT_GRID__, ModelType.INTEGER_ARRAY));
+ figPropToGO.put("grid_opt_padding", new Pair<Integer, ModelType>(__GO_GRID_OPT_PADDING__, ModelType.INTEGER_ARRAY));
+ figPropToGO.put("border_opt_padding", new Pair<Integer, ModelType>(__GO_BORDER_OPT_PADDING__, ModelType.INTEGER_ARRAY));
+
+ //uicontrol property list
+ UiPropToGO.put("position", new Pair<Integer, ModelType>(__GO_POSITION__, ModelType.INTEGER));
+ UiPropToGO.put("backgroundcolor", new Pair<Integer, ModelType>(__GO_UI_BACKGROUNDCOLOR__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("enable", new Pair<Integer, ModelType>(__GO_UI_ENABLE__, ModelType.BOOLEAN));
+ UiPropToGO.put("fontangle", new Pair<Integer, ModelType>(__GO_UI_FONTANGLE__, ModelType.STRING));
+ UiPropToGO.put("fontname", new Pair<Integer, ModelType>(__GO_UI_FONTNAME__, ModelType.STRING));
+ UiPropToGO.put("fontsize", new Pair<Integer, ModelType>(__GO_UI_FONTSIZE__, ModelType.DOUBLE));
+ UiPropToGO.put("fontunits", new Pair<Integer, ModelType>(__GO_UI_FONTUNITS__, ModelType.STRING));
+ UiPropToGO.put("fontweight", new Pair<Integer, ModelType>(__GO_UI_FONTWEIGHT__, ModelType.STRING));
+ UiPropToGO.put("foregroundcolor", new Pair<Integer, ModelType>(__GO_UI_FOREGROUNDCOLOR__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("horizontalalignment", new Pair<Integer, ModelType>(__GO_UI_HORIZONTALALIGNMENT__, ModelType.STRING));
+ UiPropToGO.put("listboxtop", new Pair<Integer, ModelType>(__GO_UI_LISTBOXTOP__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("max", new Pair<Integer, ModelType>(__GO_UI_MAX__, ModelType.DOUBLE));
+ UiPropToGO.put("min", new Pair<Integer, ModelType>(__GO_UI_MIN__, ModelType.DOUBLE));
+ UiPropToGO.put("position", new Pair<Integer, ModelType>(__GO_POSITION__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("relief", new Pair<Integer, ModelType>(__GO_UI_RELIEF__, ModelType.STRING));
+ UiPropToGO.put("sliderstep", new Pair<Integer, ModelType>(__GO_UI_SLIDERSTEP__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("units", new Pair<Integer, ModelType>(__GO_UI_UNITS__, ModelType.STRING));
+ UiPropToGO.put("value", new Pair<Integer, ModelType>(__GO_UI_VALUE__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("verticalalignment", new Pair<Integer, ModelType>(__GO_UI_VERTICALALIGNMENT__, ModelType.STRING));
+ UiPropToGO.put("string", new Pair<Integer, ModelType>(__GO_UI_STRING__, ModelType.STRING_ARRAY));
+ UiPropToGO.put("tooltipstring", new Pair<Integer, ModelType>(__GO_UI_TOOLTIPSTRING__, ModelType.STRING_ARRAY));
+ UiPropToGO.put("visible", new Pair<Integer, ModelType>(__GO_VISIBLE__, ModelType.BOOLEAN));
+ UiPropToGO.put("layout", new Pair<Integer, ModelType>(__GO_LAYOUT__, ModelType.LAYOUTTYPE));
+ UiPropToGO.put("callback", new Pair<Integer, ModelType>(__GO_CALLBACK__, ModelType.STRING));
+ UiPropToGO.put("callback_type", new Pair<Integer, ModelType>(__GO_CALLBACKTYPE__, ModelType.INTEGER));
+ UiPropToGO.put("gridbaggrid", new Pair<Integer, ModelType>(__GO_UI_GRIDBAG_GRID__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("gridbagweight", new Pair<Integer, ModelType>(__GO_UI_GRIDBAG_WEIGHT__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("gridbagfill", new Pair<Integer, ModelType>(__GO_UI_GRIDBAG_FILL__, ModelType.FILLTYPE));
+ UiPropToGO.put("gridbaganchor", new Pair<Integer, ModelType>(__GO_UI_GRIDBAG_ANCHOR__, ModelType.ANCHORTYPE));
+ UiPropToGO.put("gridbagpadding", new Pair<Integer, ModelType>(__GO_UI_GRIDBAG_PADDING__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("gridbagpreferredsize", new Pair<Integer, ModelType>(__GO_UI_GRIDBAG_PREFERREDSIZE__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("borderposition", new Pair<Integer, ModelType>(__GO_UI_BORDER_POSITION__, ModelType.POSITIONTYPE));
+ UiPropToGO.put("borderpreferredsize", new Pair<Integer, ModelType>(__GO_UI_BORDER_PREFERREDSIZE__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("margins", new Pair<Integer, ModelType>(__GO_MARGINS__, ModelType.DOUBLE_ARRAY));
+ UiPropToGO.put("groupname", new Pair<Integer, ModelType>(__GO_UI_GROUP_NAME__, ModelType.STRING));
+ UiPropToGO.put("icon", new Pair<Integer, ModelType>(__GO_UI_ICON__, ModelType.STRING));
+ UiPropToGO.put("scrollable", new Pair<Integer, ModelType>(__GO_UI_SCROLLABLE__, ModelType.BOOLEAN));
+ UiPropToGO.put("gridoptgrid", new Pair<Integer, ModelType>(__GO_GRID_OPT_GRID__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("gridoptpadding", new Pair<Integer, ModelType>(__GO_GRID_OPT_PADDING__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("borderoptpadding", new Pair<Integer, ModelType>(__GO_BORDER_OPT_PADDING__, ModelType.INTEGER_ARRAY));
+ UiPropToGO.put("tag", new Pair<Integer, ModelType>(__GO_TAG__, ModelType.STRING));
+
+ //border property list
+ BorderPropToGO.put("style", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_STYLE__, ModelType.INTEGER));
+ BorderPropToGO.put("type", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_TYPE__, ModelType.INTEGER));
+ BorderPropToGO.put("position", new Pair<Integer, ModelType>(__GO_POSITION__, ModelType.DOUBLE_ARRAY));
+ BorderPropToGO.put("hlout", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__, ModelType.STRING));
+ BorderPropToGO.put("hlin", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_HIGHLIGHT_IN__, ModelType.STRING));
+ BorderPropToGO.put("shadowout", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_SHADOW_OUT__, ModelType.STRING));
+ BorderPropToGO.put("shadowin", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_SHADOW_IN__, ModelType.STRING));
+ BorderPropToGO.put("titleposition", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_POSITION__, ModelType.DOUBLE_ARRAY));
+ BorderPropToGO.put("hl", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__, ModelType.STRING));
+ BorderPropToGO.put("shadow", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_SHADOW_OUT__, ModelType.STRING));
+ BorderPropToGO.put("color", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_COLOR__, ModelType.STRING));
+ BorderPropToGO.put("thickness", new Pair<Integer, ModelType>(__GO_LINE_THICKNESS__, ModelType.INTEGER));
+ BorderPropToGO.put("rounded", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_ROUNDED__, ModelType.BOOLEAN));
+ BorderPropToGO.put("title", new Pair<Integer, ModelType>(__GO_TITLE__, ModelType.STRING));
+ BorderPropToGO.put("justification", new Pair<Integer, ModelType>(__GO_UI_FRAME_BORDER_JUSTIFICATION__, ModelType.INTEGER));
+ BorderPropToGO.put("fontangle", new Pair<Integer, ModelType>(__GO_UI_FONTANGLE__, ModelType.STRING));
+ BorderPropToGO.put("fontname", new Pair<Integer, ModelType>(__GO_UI_FONTNAME__, ModelType.STRING));
+ BorderPropToGO.put("fontsize", new Pair<Integer, ModelType>(__GO_UI_FONTSIZE__, ModelType.INTEGER));
+ BorderPropToGO.put("fontweight", new Pair<Integer, ModelType>(__GO_UI_FONTWEIGHT__, ModelType.STRING));
+
+ MenuPropToGO.put("enable", new Pair<Integer, ModelType>(__GO_UI_ENABLE__, ModelType.BOOLEAN));
+ MenuPropToGO.put("foreground", new Pair<Integer, ModelType>(__GO_UI_FOREGROUNDCOLOR__, ModelType.DOUBLE_ARRAY));
+ MenuPropToGO.put("label", new Pair<Integer, ModelType>(__GO_UI_LABEL__, ModelType.STRING));
+ MenuPropToGO.put("hidden", new Pair<Integer, ModelType>(__GO_HIDDEN__, ModelType.BOOLEAN));
+ MenuPropToGO.put("visible", new Pair<Integer, ModelType>(__GO_VISIBLE__, ModelType.BOOLEAN));
+ MenuPropToGO.put("callback", new Pair<Integer, ModelType>(__GO_CALLBACK__, ModelType.STRING));
+ MenuPropToGO.put("callback_type", new Pair<Integer, ModelType>(__GO_CALLBACKTYPE__, ModelType.INTEGER));
+ MenuPropToGO.put("checked", new Pair<Integer, ModelType>(__GO_UI_CHECKED__, ModelType.BOOLEAN));
+ MenuPropToGO.put("icon", new Pair<Integer, ModelType>(__GO_UI_ICON__, ModelType.STRING));
+ MenuPropToGO.put("tag", new Pair<Integer, ModelType>(__GO_TAG__, ModelType.STRING));
+ }
+
+ private String filename = "";
+ private Integer figure = 0;
+ private Boolean figVisible = true;
+
+ public XMLDomLoader(String filename) {
+ this.filename = filename;
+ }
+
+ public int parse() {
+ return parse(filename);
+ }
+
+ public int parse(String filename) {
+ try {
+ this.filename = filename;
+ File f = new File(filename);
+ String currentPath = "";
+
+ if (f.exists()) {
+ //add filename filepath in ScilabSwingUtilities paths
+ if (f.isAbsolute()) {
+ String filePath = f.getAbsolutePath();
+ currentPath = filePath.substring(0, filePath.lastIndexOf(File.separator));
+ FindIconHelper.addThemePath(currentPath);
+ } else {
+ String initialDirectoryPath = CommonFileUtils.getCWD();
+ String filePath = "";
+ Integer index = filename.lastIndexOf(File.separator);
+ if (index != -1) {
+ filePath = filename.substring(0, index);
+ }
+
+ currentPath = initialDirectoryPath + File.separator + filePath;
+ FindIconHelper.addThemePath(currentPath);
+ FindIconHelper.addThemePath(initialDirectoryPath);
+
+ f = new File(initialDirectoryPath, filename);
+ }
+ } else {
+ //try to find file in currentPath
+ if (f.isAbsolute()) {
+ //failed
+ return 1;
+ } else {
+ String initialDirectoryPath = CommonFileUtils.getCWD();
+ String filePath = "";
+ Integer index = filename.lastIndexOf(File.separator);
+ if (index != -1) {
+ filePath = filename.substring(0, index);
+ }
+
+ currentPath = initialDirectoryPath + File.separator + filePath;
+ }
+
+ f = new File(currentPath + File.separator + filename);
+ if (f.exists() == false) {
+ return 1;
+ }
+ }
+
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+ // enable XInclude processing
+ factory.setNamespaceAware(true);
+ factory.setXIncludeAware(true);
+
+ DocumentBuilder parser = factory.newDocumentBuilder();
+ Document doc = parser.parse(f);
+ doc.getDocumentElement().normalize();
+
+ if (doc.hasChildNodes()) {
+ parseNode(0, doc.getChildNodes());
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ //update visible property of main window
+ GraphicController.getController().setProperty(figure, __GO_VISIBLE__, figVisible);
+ return figure;
+ }
+
+ private void parseNode(Integer parent, NodeList nodes) {
+ for (int i = nodes.getLength() - 1; i >= 0; i--) {
+ Node childNode = nodes.item(i);
+ Integer child = 0;
+
+ // make sure it's element node.
+ if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+ // get node name and value
+ int nodeType = nameToGO.get(childNode.getNodeName());
+ switch (nodeType) {
+ case __GO_FIGURE__: {
+ child = createFigure(childNode);
+ figure = child;
+ break;
+ }
+
+ case __GO_UI_CHECKBOX__:
+ case __GO_UI_EDIT__:
+ case __GO_UI_FRAME__:
+ case __GO_UI_IMAGE__:
+ case __GO_UI_LAYER__:
+ case __GO_UI_LISTBOX__:
+ case __GO_UI_POPUPMENU__:
+ case __GO_UI_PUSHBUTTON__:
+ case __GO_UI_RADIOBUTTON__:
+ case __GO_UI_SLIDER__:
+ case __GO_UI_TABLE__:
+ case __GO_UI_TAB__:
+ case __GO_UI_SPINNER__:
+ case __GO_UI_TEXT__: {
+ child = createUiControl(nodeType, parent, childNode);
+ break;
+ }
+
+ case __GO_AXES__: {
+ child = createAxes(parent, childNode);
+ break;
+ }
+
+ case __GO_UI_FRAME_BORDER__: {
+ child = createBorder(childNode);
+ GraphicController.getController().setProperty(parent, __GO_UI_FRAME_BORDER__, child);
+ break;
+ }
+
+ case __NODE_STRING__: {
+ //avoid relationship
+ child = 0;
+ createString(parent, childNode);
+ break;
+ }
+
+ case __NODE_COLORMAP__: {
+ //avoid relationship
+ child = 0;
+ createColorMap(parent, childNode);
+ break;
+ }
+
+ case __NODE_SCILABGUI__: {
+ //check version
+ Node nodeVersion = childNode.getAttributes().getNamedItem("version");
+ double version = Double.parseDouble(nodeVersion.getNodeValue());
+ if (version > 1.0) {
+ //call version manager ^^
+ }
+
+ Integer console = Console.getConsole().getIdentifier();
+ //set usedeprecatedskin flag
+ setBooleanAttribute(console, __GO_USEDEPRECATEDLF__, childNode.getAttributes(), "usedeprecatedskin");
+ break;
+ }
+
+ case __GO_UICONTEXTMENU__: {
+ break;
+ }
+ case __GO_UIMENU__: {
+ child = createUiMenu(parent, childNode);
+ break;
+ }
+
+ default: {
+ //ignore TITLED, IN, OUT, STRING_AARAY, COLORMAPITEM node
+ break;
+ }
+ }
+
+ if (parent != 0 && child != 0) {
+ GraphicController.getController().setGraphicObjectRelationship(parent, child);
+ }
+
+ if (childNode.hasChildNodes()) {
+ parseNode(child, childNode.getChildNodes());
+ }
+
+ }
+ }
+ }
+
+ private void createColorMap(Integer parent, Node node) {
+ NamedNodeMap attr = node.getAttributes();
+
+ Node rowNode = attr.getNamedItem("size");
+ if (rowNode == null) {
+ return;
+ }
+
+ Integer rows = Integer.parseInt(rowNode.getNodeValue());
+
+ if (node.hasChildNodes()) {
+ Double[] colorMap = new Double[rows * 3];
+ NodeList list = node.getChildNodes();
+ int index = 0;
+ for (int i = 0; i < list.getLength(); i++) {
+ Node childNode = list.item(i);
+ if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+ attr = childNode.getAttributes();
+ Node valueNode = attr.getNamedItem("color");
+ if (valueNode == null) {
+ colorMap[index] = 0.0;
+ colorMap[index + rows] = 0.0;
+ colorMap[index + 2 * rows] = 0.0;
+ } else {
+ try {
+ Color c = Color.decode(valueNode.getNodeValue());
+ colorMap[index] = c.getRed() / 255.0;
+ colorMap[index + rows] = c.getGreen() / 255.0;
+ colorMap[index + 2 * rows] = c.getBlue() / 255.0;
+ } catch (NumberFormatException e) {
+ colorMap[index] = 0.0;
+ colorMap[index + rows] = 0.0;
+ colorMap[index + 2 * rows] = 0.0;
+ }
+ }
+ index++;
+ }
+ }
+
+ GraphicController.getController().setProperty(parent, __GO_COLORMAP__, colorMap);
+ }
+ }
+
+ private void createString(Integer parent, Node node) {
+ NamedNodeMap attr = node.getAttributes();
+
+ Node propertyNode = attr.getNamedItem("property");
+ if (propertyNode == null) {
+ return;
+ }
+
+ String property = propertyNode.getNodeValue();
+
+ Node rowNode = attr.getNamedItem("rows");
+ if (rowNode == null) {
+ return;
+ }
+
+ Integer rows = Integer.parseInt(rowNode.getNodeValue());
+
+ Node colNode = attr.getNamedItem("cols");
+ if (colNode == null) {
+ return;
+ }
+
+ Integer cols = Integer.parseInt(colNode.getNodeValue());
+
+ if (node.hasChildNodes()) {
+ String[] str = new String[rows * cols];
+ NodeList list = node.getChildNodes();
+ int index = 0;
+ for (int i = 0; i < list.getLength(); i++) {
+ Node childNode = list.item(i);
+ if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+ attr = childNode.getAttributes();
+ Node valueNode = attr.getNamedItem("value");
+ if (valueNode == null) {
+ str[index++] = "";
+ } else {
+ str[index++] = valueNode.getNodeValue();
+ }
+ }
+ }
+
+ Integer propId = UiPropToGO.get(property).getFirst();
+
+ if (propId == __GO_UI_STRING__ && cols > 1) {
+ GraphicController.getController().setProperty(parent, __GO_UI_STRING_COLNB__, cols);
+ }
+ GraphicController.getController().setProperty(parent, propId, str);
+ }
+ }
+
+ private Integer createAxes(Integer parent, Node node) {
+ GraphicController controller = GraphicController.getController();
+ Integer axes = Builder.createSubWin(parent);
+
+ NamedNodeMap attr = node.getAttributes();
+ Node tagNode = attr.getNamedItem("tag");
+ if (tagNode != null) {
+ controller.setProperty(axes, __GO_TAG__, tagNode.getNodeValue());
+ attr.removeNamedItem("tag");
+ }
+
+ return axes;
+ }
+
+ private Integer createBorder(Node node) {
+ GraphicController controller = GraphicController.getController();
+ Integer uib = controller.askObject(GraphicObject.getTypeFromName(__GO_UI_FRAME_BORDER__));
+
+ NamedNodeMap attr = node.getAttributes();
+
+ Node styleNode = attr.getNamedItem("style");
+ if (styleNode != null) {
+ Integer style = FrameBorderType.stringToEnum(styleNode.getNodeValue()).ordinal();
+ controller.setProperty(uib, __GO_UI_FRAME_BORDER_STYLE__, style);
+ attr.removeNamedItem("style");
+ }
+
+ //frame borders are always hidden
+ controller.setProperty(uib, __GO_HIDDEN__, true);
+
+ for (int i = 0; i < attr.getLength(); i++) {
+ Node prop = attr.item(i);
+ Pair<Integer, ModelType> pair = BorderPropToGO.get(prop.getNodeName());
+
+ ModelType modelType = pair.getSecond();
+ switch (modelType) {
+ case BOOLEAN:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsBoolean(prop.getNodeValue()));
+ break;
+ case BOOLEAN_ARRAY:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsBooleanArray(prop.getNodeValue()));
+ break;
+ case DOUBLE:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsDouble(prop.getNodeValue()));
+ break;
+ case DOUBLE_ARRAY:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsDoubleArray(prop.getNodeValue()));
+ break;
+ case INTEGER:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsInteger(prop.getNodeValue()));
+ break;
+ case INTEGER_ARRAY:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsIntegerArray(prop.getNodeValue()));
+ break;
+ case STRING:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsString(prop.getNodeValue()));
+ break;
+ case STRING_ARRAY:
+ controller.setProperty(uib, pair.getFirst(), getAttributeAsStringArray(prop.getNodeValue()));
+ break;
+ default:
+ System.out.println("missing type");
+ break;
+ }
+ }
+
+ //manage children here to avoid trouble on draw without children in SwingView
+ if (node.hasChildNodes()) {
+ NodeList list = node.getChildNodes();
+ for (int i = 0; i < list.getLength(); i++) {
+ Node childNode = list.item(i);
+ if (childNode.getNodeType() == Node.ELEMENT_NODE) {
+ Integer child = createBorder(childNode);
+ String nodeName = childNode.getNodeName();
+ if (nodeName.equals("title")) {
+ GraphicController.getController().setProperty(uib, __GO_UI_FRAME_BORDER_TITLE__, child);
+ GraphicController.getController().setGraphicObjectRelationship(uib, child);
+ } else if (nodeName.equals("out")) {
+ GraphicController.getController().setProperty(uib, __GO_UI_FRAME_BORDER_OUT_BORDER__, child);
+ GraphicController.getController().setGraphicObjectRelationship(uib, child);
+ } else if (nodeName.equals("in")) {
+ GraphicController.getController().setProperty(uib, __GO_UI_FRAME_BORDER_IN_BORDER__, child);
+ GraphicController.getController().setGraphicObjectRelationship(uib, child);
+ }
+ }
+ }
+ }
+ return uib;
+ }
+
+ private Integer createFigure(Node node) {
+ GraphicController controller = GraphicController.getController();
+ Boolean dockable = true;
+ Integer menubar = 1;
+ Integer toolbar = 1;
+ Boolean default_axes = true;
+ Integer[] figureSize = null;
+ Integer[] axesSize = null;
+ boolean menubarVisisble = true;
+ boolean toolbarVisisble = true;
+ boolean infobarVisisble = true;
+
+ NamedNodeMap attr = node.getAttributes();
+ //dockable
+ Node tempnode = attr.getNamedItem("dockable");
+ if (tempnode != null) {
+ dockable = getAttributeAsBoolean(tempnode.getNodeValue());
+ attr.removeNamedItem("dockable");
+ }
+ //menubar
+ tempnode = attr.getNamedItem("menubar");
+ if (tempnode != null) {
+ menubar = Figure.BarType.stringToEnum(getAttributeAsString(tempnode.getNodeValue())).ordinal();
+ attr.removeNamedItem("menubar");
+ }
+ //toolbar
+ tempnode = attr.getNamedItem("toolbar");
+ if (tempnode != null) {
+ toolbar = Figure.BarType.stringToEnum(getAttributeAsString(tempnode.getNodeValue())).ordinal();
+ attr.removeNamedItem("toolbar");
+ }
+ //default_axes
+ tempnode = attr.getNamedItem("default_axes");
+ if (tempnode != null) {
+ default_axes = getAttributeAsBoolean(tempnode.getNodeValue());
+ attr.removeNamedItem("default_axes");
+ }
+ //visible
+ tempnode = attr.getNamedItem("visible");
+ if (tempnode != null) {
+ figVisible = getAttributeAsBoolean(tempnode.getNodeValue());
+ attr.removeNamedItem("visible");
+ }
+
+ //axesSize
+ tempnode = attr.getNamedItem("axes_size");
+ if (tempnode != null) {
+ axesSize = getAttributeAsIntegerArray(tempnode.getNodeValue());
+ attr.removeNamedItem("axes_size");
+ }
+
+ //figureSize
+ tempnode = attr.getNamedItem("figure_size");
+ if (axesSize == null && tempnode != null) {
+ figureSize = getAttributeAsIntegerArray(tempnode.getNodeValue());
+ attr.removeNamedItem("figure_size");
+ }
+
+ //menubar
+ tempnode = attr.getNamedItem("menubar_visible");
+ if (tempnode != null) {
+ menubarVisisble = getAttributeAsBoolean(tempnode.getNodeValue());
+ attr.removeNamedItem("menubar_visible");
+ }
+ //toolbar
+ tempnode = attr.getNamedItem("toolbar_visible");
+ if (tempnode != null) {
+ toolbarVisisble = getAttributeAsBoolean(tempnode.getNodeValue());
+ attr.removeNamedItem("toolbar_visible");
+ }
+ //infobar
+ tempnode = attr.getNamedItem("infobar_visible");
+ if (tempnode != null) {
+ infobarVisisble = getAttributeAsBoolean(tempnode.getNodeValue());
+ attr.removeNamedItem("infobar_visible");
+ }
+
+ Integer fig = Builder.createFigure(dockable, menubar, toolbar, default_axes, false);
+ //set new id
+ int newId = ScilabNativeView.ScilabNativeView__getValidDefaultFigureId();
+
+ controller.setProperty(fig, __GO_ID__, newId);
+ for (int i = 0; i < attr.getLength(); i++) {
+ Node prop = attr.item(i);
+ Pair<Integer, ModelType> pair = figPropToGO.get(prop.getNodeName());
+
+ ModelType type = pair.getSecond();
+ switch (type) {
+ case BOOLEAN:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsBoolean(prop.getNodeValue()));
+ break;
+ case BOOLEAN_ARRAY:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsBooleanArray(prop.getNodeValue()));
+ break;
+ case DOUBLE:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsDouble(prop.getNodeValue()));
+ break;
+ case DOUBLE_ARRAY:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsDoubleArray(prop.getNodeValue()));
+ break;
+ case INTEGER:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsInteger(prop.getNodeValue()));
+ break;
+ case INTEGER_ARRAY:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsIntegerArray(prop.getNodeValue()));
+ break;
+ case STRING:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsString(prop.getNodeValue()));
+ break;
+ case STRING_ARRAY:
+ controller.setProperty(fig, pair.getFirst(), getAttributeAsStringArray(prop.getNodeValue()));
+ break;
+ case ROTATIONTYPE:
+ controller.setProperty(fig, pair.getFirst(), Figure.RotationType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ case BARTYPE:
+ controller.setProperty(fig, pair.getFirst(), Figure.BarType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ case LAYOUTTYPE:
+ controller.setProperty(fig, pair.getFirst(), LayoutType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ default:
+ System.out.println("missing type");
+ break;
+ }
+ }
+
+ if (axesSize != null) {
+ controller.setProperty(fig, GraphicObjectProperties.__GO_AXES_SIZE__, axesSize);
+ } else if (figureSize != null) {
+ controller.setProperty(fig, GraphicObjectProperties.__GO_SIZE__, figureSize);
+ } else {
+ controller.setProperty(fig, GraphicObjectProperties.__GO_AXES_SIZE__, GraphicModel.getFigureModel().getAxesSize());
+ }
+
+ controller.setProperty(fig, __GO_MENUBAR_VISIBLE__, !menubarVisisble);
+ controller.setProperty(fig, __GO_TOOLBAR_VISIBLE__, !toolbarVisisble);
+ controller.setProperty(fig, __GO_INFOBAR_VISIBLE__, !infobarVisisble);
+
+ //set menubar, infobar, toolbar visibility
+ controller.setProperty(fig, __GO_MENUBAR_VISIBLE__, menubarVisisble);
+ controller.setProperty(fig, __GO_TOOLBAR_VISIBLE__, toolbarVisisble);
+ controller.setProperty(fig, __GO_INFOBAR_VISIBLE__, infobarVisisble);
+ return fig;
+ }
+
+ private Integer createUiControl(Integer type, Integer parent, Node node) {
+ GraphicController controller = GraphicController.getController();
+ NamedNodeMap attr = node.getAttributes();
+
+ /* for frame we have to take care of scrollable property */
+ if (type == __GO_UI_FRAME__) {
+ Node item = attr.getNamedItem("scrollable");
+ if (item != null && item.getNodeValue().equals("on")) {
+ type = __GO_UI_FRAME_SCROLLABLE__;
+ }
+ }
+
+ Integer uic = GraphicController.getController().askObject(GraphicObject.getTypeFromName(type));
+ controller.setProperty(uic, __GO_VISIBLE__, true);
+
+ for (int i = 0; i < attr.getLength(); i++) {
+ Node prop = attr.item(i);
+ Pair<Integer, ModelType> pair = UiPropToGO.get(prop.getNodeName());
+
+ if (pair == null) {
+ continue;
+ }
+
+ ModelType modelType = pair.getSecond();
+ switch (modelType) {
+ case BOOLEAN:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsBoolean(prop.getNodeValue()));
+ break;
+ case BOOLEAN_ARRAY:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsBooleanArray(prop.getNodeValue()));
+ break;
+ case DOUBLE:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsDouble(prop.getNodeValue()));
+ break;
+ case DOUBLE_ARRAY:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsDoubleArray(prop.getNodeValue()));
+ break;
+ case INTEGER:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsInteger(prop.getNodeValue()));
+ break;
+ case INTEGER_ARRAY:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsIntegerArray(prop.getNodeValue()));
+ break;
+ case STRING:
+ controller.setProperty(uic, pair.getFirst(), getAttributeAsString(prop.getNodeValue()));
+ break;
+ case STRING_ARRAY:
+ //nothing to do, manage as node instead of attributes
+ break;
+ case LAYOUTTYPE:
+ controller.setProperty(uic, pair.getFirst(), LayoutType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ case FILLTYPE:
+ controller.setProperty(uic, pair.getFirst(), Uicontrol.FillType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ case ANCHORTYPE:
+ controller.setProperty(uic, pair.getFirst(), Uicontrol.AnchorType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ case POSITIONTYPE:
+ controller.setProperty(uic, pair.getFirst(), Uicontrol.BorderLayoutType.stringToEnum(getAttributeAsString(prop.getNodeValue())).ordinal());
+ break;
+ default:
+ System.out.println("missing type");
+ break;
+ }
+ }
+
+ return uic;
+ }
+
+ private Integer createUiMenu(Integer parent, Node node) {
+ GraphicController controller = GraphicController.getController();
+ NamedNodeMap attr = node.getAttributes();
+
+ Integer uim = GraphicController.getController().askObject(GraphicObject.getTypeFromName(__GO_UIMENU__));
+ controller.setProperty(uim, __GO_VISIBLE__, true);
+
+ for (int i = 0; i < attr.getLength(); i++) {
+ Node prop = attr.item(i);
+ Pair<Integer, ModelType> pair = MenuPropToGO.get(prop.getNodeName());
+ ModelType modelType = pair.getSecond();
+ switch (modelType) {
+ case BOOLEAN:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsBoolean(prop.getNodeValue()));
+ break;
+ case BOOLEAN_ARRAY:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsBooleanArray(prop.getNodeValue()));
+ break;
+ case DOUBLE:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsDouble(prop.getNodeValue()));
+ break;
+ case DOUBLE_ARRAY:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsDoubleArray(prop.getNodeValue()));
+ break;
+ case INTEGER:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsInteger(prop.getNodeValue()));
+ break;
+ case INTEGER_ARRAY:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsIntegerArray(prop.getNodeValue()));
+ break;
+ case STRING:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsString(prop.getNodeValue()));
+ break;
+ case STRING_ARRAY:
+ controller.setProperty(uim, pair.getFirst(), getAttributeAsStringArray(prop.getNodeValue()));
+ break;
+ default:
+ System.out.println("missing type");
+ break;
+ }
+ }
+
+ return uim;
+ }
+
+ private Boolean getAttributeAsBoolean(String val) {
+ if (val == null) {
+ return null;
+ }
+
+ if (val.equals("on")) {
+ return true;
+ }
+
+ if (val.equals("off")) {
+ return false;
+ }
+
+ return false;
+ }
+
+ private void setBooleanAttribute(Integer id, int property, NamedNodeMap attributes, String attr) {
+ Node node = attributes.getNamedItem(attr);
+ if (node != null) {
+ Boolean b = getAttributeAsBoolean(node.getNodeValue());
+ if (b != null) {
+ GraphicController.getController().setProperty(id, property, b);
+ }
+ }
+ }
+
+ private Double getAttributeAsDouble(String val) {
+ if (val == null) {
+ return null;
+ }
+
+ return Double.parseDouble(val);
+ }
+
+ private Integer getAttributeAsInteger(String val) {
+ if (val == null) {
+ return null;
+ }
+
+ return Integer.parseInt(val);
+ }
+
+ private String getAttributeAsString(String val) {
+ return val;
+ }
+
+ private Boolean[] getAttributeAsBooleanArray(String val) {
+
+ if (val == null) {
+ return new Boolean[] {};
+ }
+
+ StringTokenizer token = new StringTokenizer(val, ",");
+
+ Boolean[] b = new Boolean[token.countTokens()];
+ int i = 0;
+ while (token.hasMoreElements()) {
+ String s = token.nextToken();
+ if (s.equals("on")) {
+ b[i++] = true;
+ } else {
+ b[i++] = false;
+ }
+ }
+
+ return b;
+ }
+
+ private Double[] getAttributeAsDoubleArray(String val) {
+
+ if (val == null) {
+ return new Double[] {};
+ }
+
+ StringTokenizer token = new StringTokenizer(val, ",");
+
+ Double[] d = new Double[token.countTokens()];
+ int i = 0;
+ while (token.hasMoreElements()) {
+ String s = token.nextToken();
+ d[i++] = Double.parseDouble(s);
+ }
+
+ return d;
+ }
+
+ private Integer[] getAttributeAsIntegerArray(String val) {
+
+ if (val == null) {
+ return new Integer[] {};
+ }
+
+ StringTokenizer token = new StringTokenizer(val, ",");
+
+ Integer[] integer = new Integer[token.countTokens()];
+ int i = 0;
+ while (token.hasMoreElements()) {
+ String s = token.nextToken();
+ integer[i++] = Integer.parseInt(s);
+ }
+
+ return integer;
+ }
+
+ private String[] getAttributeAsStringArray(String val) {
+
+ if (val == null) {
+ return null;
+ }
+
+ StringTokenizer token = new StringTokenizer(val, ",");
+
+ String[] s = new String[token.countTokens()];
+ int i = 0;
+ while (token.hasMoreElements()) {
+ s[i++] = token.nextToken();
+ }
+
+ return s;
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.java
new file mode 100755
index 000000000..19c68ff9b
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlLoader.java
@@ -0,0 +1,396 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2011 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.modules.graphic_objects.xmlloader;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTROL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_CHILDREN__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_FIGURE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UIMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TAG__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_CHECKBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_EDIT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_OUT_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_IN_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER_TITLE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_IMAGE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LISTBOX__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_POPUPMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_PUSHBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_RADIOBUTTON__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SPINNER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TEXT__;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.AbstractMap.SimpleEntry;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.Stack;
+
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.scilab.modules.commons.CommonFileUtils;
+import org.scilab.modules.commons.gui.FindIconHelper;
+import org.scilab.modules.graphic_objects.ScilabNativeView;
+import org.scilab.modules.graphic_objects.builder.Builder;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties;
+import org.xml.sax.Attributes;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class XmlLoader extends DefaultHandler {
+
+ private String filename = "";
+ private Locator locator;
+ private Integer uid = 0;
+ private String namespace = null;
+ private boolean isWaitingModelName = true;
+ private String myURI = "";
+ private boolean isFirst = false;
+
+ private static HashMap<String, Integer> nameToGO = new HashMap<String, Integer>();
+ private static HashMap<String, HashMap<String, Entry<Integer, Map<String, String>>>> models = new HashMap<String, HashMap<String, Entry<Integer, Map<String, String>>>>();
+ private Stack<Integer> stackGO = new Stack<Integer>();
+ private String currentPath = "";
+
+ private GraphicController controller;
+
+ static {
+ // init map to convert control name to id
+ nameToGO.put("UIScilabWindow", __GO_FIGURE__);
+
+ nameToGO.put("UIPanel", __GO_UI_FRAME__);
+ nameToGO.put("UIFrame", __GO_UI_FRAME__);
+ nameToGO.put("UILayer", __GO_UI_LAYER__);
+ nameToGO.put("UIButton", __GO_UI_PUSHBUTTON__);
+ nameToGO.put("UILabel", __GO_UI_TEXT__);
+ nameToGO.put("UILaTeXLabel", -1);
+ nameToGO.put("UICheckbox", __GO_UI_CHECKBOX__);
+ nameToGO.put("UITextfield", __GO_UI_EDIT__);
+ nameToGO.put("UISplashScreen", __GO_UI_IMAGE__);
+ nameToGO.put("UIList", __GO_UI_LISTBOX__);
+ nameToGO.put("UIComboBox", __GO_UI_POPUPMENU__);
+ nameToGO.put("UIComboColor", __GO_UI_POPUPMENU__);
+ nameToGO.put("UIRadio", __GO_UI_RADIOBUTTON__);
+ nameToGO.put("UISlider", __GO_UI_SLIDER__);
+ nameToGO.put("UITab", __GO_UI_TAB__);
+ nameToGO.put("UIScilabPlot", __GO_AXES__);
+ nameToGO.put("UINumberSpinner", __GO_UI_SPINNER__);
+
+
+ /** sdsdf*/
+ nameToGO.put("UITextarea", -2);
+
+ nameToGO.put("UIMenu", __GO_UIMENU__);
+ nameToGO.put("UIMenuItem", __GO_UIMENU__);
+
+ }
+
+ public XmlLoader(String filename) {
+ controller = GraphicController.getController();
+ this.filename = filename;
+ }
+
+ public int parse() throws SAXException {
+ int ret = 0;
+ if (filename != null && filename.equals("") == false) {
+ ret = parse(filename);
+ }
+
+ // clean model before leave.
+ Set<String> entries = models.keySet();
+ for (String key : entries) {
+ HashMap<String, Entry<Integer, Map<String, String>>> map = models.get(key);
+ Set<String> entries2 = map.keySet();
+ for (String key2 : entries2) {
+ deleteObject(map.get(key2).getKey());
+ }
+ }
+
+ return ret;
+ }
+
+ public int parse(String filename) throws SAXException {
+ this.filename = filename;
+ File f = new File(filename);
+ if (f.exists()) {
+ //add filename filepath in ScilabSwingUtilities paths
+ if (f.isAbsolute()) {
+ String filePath = f.getAbsolutePath();
+ currentPath = filePath.substring(0, filePath.lastIndexOf(File.separator));
+ FindIconHelper.addThemePath(currentPath);
+ } else {
+ String initialDirectoryPath = CommonFileUtils.getCWD();
+ String filePath = "";
+ Integer index = filename.lastIndexOf(File.separator);
+ if (index != -1) {
+ filePath = filename.substring(0, index);
+ }
+ currentPath = initialDirectoryPath + File.separator + filePath;
+ FindIconHelper.addThemePath(currentPath);
+ FindIconHelper.addThemePath(initialDirectoryPath);
+
+ f = new File(initialDirectoryPath, filename);
+ }
+ } else {
+ //try to find file in currentPath
+ if (f.isAbsolute()) {
+ //failed
+ return 1;
+ }
+
+ f = new File(currentPath + File.separator + filename);
+ if (f.exists() == false) {
+ return 1;
+ }
+ }
+
+ FileInputStream in = null;
+ try {
+ in = new FileInputStream(f);
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ return 1;
+ }
+
+ SAXParser parser;
+ try {
+ SAXParserFactory factory;
+ factory = SAXParserFactory.newInstance();
+ factory.setValidating(false);
+ factory.setNamespaceAware(true);
+ factory.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
+ parser = factory.newSAXParser();
+ } catch (Exception e) {
+ try {
+ in.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ return 1;
+ }
+ throw new SAXException(String.format("Cannot initialize the XML parser: %s", e.getMessage()));
+ }
+
+ try {
+ parser.parse(in, this);
+ } catch (SAXException e) {
+ if (locator != null) {
+ throw new SAXException(String.format("Parse error at line %d: %s", locator.getLineNumber(), e.getMessage()));
+ } else {
+ throw new SAXException(String.format("Parse error: %s", e.getMessage()));
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ in.close();
+ } catch (IOException e) {
+ }
+ }
+
+ return uid;
+ }
+
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ super.characters(ch, start, length);
+ }
+
+ public void endDocument() throws SAXException {
+ }
+
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+
+ if (localName.equals("modele")) {
+ namespace = null;
+ isWaitingModelName = false;
+ }
+
+ if (stackGO.size() != 0) {
+ Integer go = stackGO.pop();
+ if (go == null) {
+ //nothing to do
+ } else if (stackGO.size() > 0) {
+ Integer parent = stackGO.peek();
+
+ controller.setGraphicObjectRelationship(parent, go);
+ //controller.setProperty(go, __GO_VISIBLE__, true);
+ } else {
+ uid = go;
+ }
+ }
+ }
+
+ public void setDocumentLocator(Locator locator) {
+ this.locator = locator;
+ }
+
+ public void startDocument() throws SAXException {
+ isFirst = true;
+ }
+
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ if (localName.equals("interface")) {
+ if (isFirst) {
+ myURI = attributes.getValue("xmlns");
+ isFirst = false;
+ }
+ } else if (localName.equals("include")) {
+ String path = attributes.getValue("path");
+ parse(path);
+ } else if (localName.equals("modele")) {
+ namespace = attributes.getValue("namespace");
+ isWaitingModelName = true;
+ } else {
+ Integer uitype = getTypeFromName(localName);
+ Integer go = 0;
+ if (uitype != null) {
+ if (uitype == __GO_FIGURE__) {
+ // never create a new figure, clone figure model !
+ go = GOBuilder.figureBuilder(controller, attributes);
+ } else if (uitype == __GO_AXES__) {
+ go = GOBuilder.axesBuilder(controller, attributes);
+ } else if (uitype == __GO_UIMENU__) {
+ Integer parent = 0;
+ if (stackGO.isEmpty() == false) {
+ parent = stackGO.peek();
+ }
+
+ go = GOBuilder.uimenuBuilder(controller, attributes, parent);
+ } else {
+ Integer parent = 0;
+ if (stackGO.isEmpty() == false) {
+ parent = stackGO.peek();
+ }
+
+ go = GOBuilder.uicontrolBuilder(controller, uitype, attributes, parent);
+ }
+ } else { // namespace or bad name ...
+ if (myURI.equals(uri)) {
+ // bad name
+ } else {
+ HashMap<String, Entry<Integer, Map<String, String>>> m = models.get(uri);
+ if (m == null) {
+ // bad namespace
+ } else {
+ Entry<Integer, Map<String, String>> entry = m.get(localName);
+ go = entry.getKey();
+ // need to clone object and children
+ Integer newgo = cloneObject(go);
+ GOBuilder.uicontrolUpdater(controller, newgo, attributes, stackGO.peek(), entry.getValue());
+ go = newgo;
+ }
+ }
+ }
+
+ // we are in a model
+ // the first child must have field "model-name"
+ if (namespace != null) {
+ if (isWaitingModelName) {
+ String name = attributes.getValue("modele-name");
+ if (name == null) {
+ // unmaned model ? :s
+ } else {
+ if (models.get(namespace) == null) {
+ models.put(namespace, new HashMap<String, Entry<Integer, Map<String, String>>>());
+ }
+
+ // copy attributes to a Map, i do not know why a can use
+ // attributes ? Oo
+ Map<String, String> attrib = new HashMap<String, String>();
+ for (int i = 0; i < attributes.getLength(); i++) {
+ attrib.put(attributes.getLocalName(i), attributes.getValue(i));
+ }
+
+ // add root element in map model
+ models.get(namespace).put(name, new SimpleEntry<Integer, Map<String, String>>(go, attrib));
+ }
+ }
+ }
+
+ stackGO.add(go);
+ }
+ }
+
+ Integer cloneObject(Integer root) {
+ Integer newGo = controller.cloneObject(root);
+ Integer[] children = (Integer[]) controller.getProperty(root, __GO_CHILDREN__);
+ for (int i = children.length - 1; i >= 0 ; i--) {
+ Integer childType = (Integer)controller.getProperty(children[i], __GO_TYPE__);
+ if (childType == __GO_AXES__) {
+ Integer go = controller.cloneObject(GraphicModel.getAxesModel().getIdentifier());
+ Builder.createLabel(go, GraphicObjectProperties.__GO_X_AXIS_LABEL__);
+ Builder.createLabel(go, GraphicObjectProperties.__GO_Y_AXIS_LABEL__);
+ Builder.createLabel(go, GraphicObjectProperties.__GO_Z_AXIS_LABEL__);
+ Builder.createLabel(go, GraphicObjectProperties.__GO_TITLE__);
+
+ controller.setGraphicObjectRelationship(newGo, go);
+ controller.setProperty(newGo, GraphicObjectProperties.__GO_SELECTED_CHILD__, go);
+ controller.setProperty(go, GraphicObjectProperties.__GO_TAG__, controller.getProperty(children[i], __GO_TAG__));
+ ScilabNativeView.ScilabNativeView__setCurrentSubWin(go);
+ ScilabNativeView.ScilabNativeView__setCurrentObject(go);
+ } else if (childType == __GO_UI_FRAME_BORDER__) {
+ Integer newChild = cloneObject(children[i]);
+ controller.setGraphicObjectRelationship(newGo, newChild);
+
+ Integer rootType = (Integer)controller.getProperty(root, __GO_TYPE__);
+ if (rootType == __GO_UICONTROL__) {
+ controller.setProperty(newGo, __GO_UI_FRAME_BORDER__, newChild);
+ } else { //__GO_UI_FRAME_BORDER__
+ Integer border = (Integer) controller.getProperty(root, __GO_UI_FRAME_BORDER_TITLE__);
+ if (border == children[i]) {
+ controller.setProperty(newGo, __GO_UI_FRAME_BORDER_TITLE__, newChild);
+ } else {
+ border = (Integer) controller.getProperty(root, __GO_UI_FRAME_BORDER_OUT_BORDER__);
+ if (border == children[i]) {
+ controller.setProperty(newGo, __GO_UI_FRAME_BORDER_OUT_BORDER__, newChild);
+ } else {
+ border = (Integer) controller.getProperty(root, __GO_UI_FRAME_BORDER_OUT_BORDER__);
+ if (border == children[i]) {
+ controller.setProperty(newGo, __GO_UI_FRAME_BORDER_OUT_BORDER__, newChild);
+ }
+ }
+ }
+ }
+ } else {
+ Integer newChild = cloneObject(children[i]);
+ controller.setGraphicObjectRelationship(newGo, newChild);
+ }
+ }
+
+ return newGo;
+ }
+
+ private void deleteObject(Integer root) {
+ controller.removeRelationShipAndDelete(root);
+ }
+
+ private Integer getTypeFromName(String localName) {
+ return nameToGO.get(localName);
+ }
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.java
new file mode 100755
index 000000000..849c8a882
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlSaver.java
@@ -0,0 +1,665 @@
+package org.scilab.modules.graphic_objects.xmlloader;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_LAYOUT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_FRAME_BORDER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_AXES__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_PARENT__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_TYPE__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTEXTMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UICONTROL__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UIMENU__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_LAYER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_TAB__;
+
+import java.io.File;
+import java.util.Arrays;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.scilab.forge.scirenderer.shapes.appearance.Color;
+import org.scilab.modules.commons.CommonFileUtils;
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.console.Console;
+import org.scilab.modules.graphic_objects.figure.ColorMap;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicModel.GraphicModel;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol;
+import org.scilab.modules.graphic_objects.uicontrol.Uicontrol.UicontrolStyle;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorder;
+import org.scilab.modules.graphic_objects.uicontrol.frame.border.FrameBorderType;
+import org.scilab.modules.graphic_objects.uimenu.Uimenu;
+import org.scilab.modules.graphic_objects.utils.LayoutType;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+
+public class XmlSaver {
+ static private Figure defaultFig = null;
+ static private FrameBorder defaultBorder = null;
+
+ public static String save(int figure, String filename, boolean reverseChildren) {
+ try {
+ //init default values
+ defaultFig = GraphicModel.getFigureModel();
+ defaultBorder = new FrameBorder();
+
+ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
+
+ //root elements
+ Document doc = docBuilder.newDocument();
+ //standalone="yes"
+ doc.setXmlStandalone(true);
+
+ //scilab header
+ Element header = doc.createElement("scilabgui");
+ setAttribute(header, "version", "1.0", "");
+ setAttribute(header, "usedeprecatedskin", createAttribute(Console.getConsole().getUseDeprecatedLF()), "");
+
+ //figure
+ Element figureElement = createFigure(doc, figure, reverseChildren);
+ appendChild(header, figureElement);
+ appendChild(doc, header);
+
+ //write the content into xml file
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
+ doc.getDocumentElement().normalize();
+ DOMSource source = new DOMSource(doc);
+
+
+ //process filename
+ File f = new File(filename);
+ if (f.isAbsolute() == false) {
+ String initialDirectoryPath = CommonFileUtils.getCWD();
+ f = new File(initialDirectoryPath + File.separator + filename);
+ }
+
+ StreamResult result = new StreamResult(f);
+ transformer.transform(source, result);
+ } catch (ParserConfigurationException pce) {
+ return pce.getMessage();
+ } catch (TransformerException tfe) {
+ return tfe.getMessage();
+ }
+
+ defaultFig = null;
+ defaultBorder = null;
+ return ""; //all good
+ }
+
+ private static Element createFigure(Document doc, int figure, boolean reverseChildren) {
+ GraphicController controller = GraphicController.getController();
+ Figure fig = (Figure)controller.getObjectFromId(figure);
+ Element elemFig = doc.createElement("figure");
+
+ //figure_position
+ setAttribute(elemFig, "figure_position", createAttribute(fig.getPosition()), createAttribute(defaultFig.getPosition()));
+ //figure_size
+ //setAttribute(elemFig, "figure_size", createAttribute(fig.getSize()), createAttribute(defaultFig.getSize()));
+ //axes_size
+ setAttribute(elemFig, "axes_size", createAttribute(fig.getAxesSize()), createAttribute(defaultFig.getAxesSize()));
+ //auto_resize
+ setAttribute(elemFig, "auto_resize", createAttribute(fig.getAutoResize()), createAttribute(defaultFig.getAutoResize()));
+ //view_port
+ setAttribute(elemFig, "view_port", createAttribute(fig.getViewport()), createAttribute(defaultFig.getViewport()));
+ //figure_name
+ setAttribute(elemFig, "figure_name", createAttribute(fig.getName()), createAttribute(defaultFig.getName()));
+ //figure_id
+ setAttribute(elemFig, "figure_id", createAttribute(fig.getId()), createAttribute(defaultFig.getId()));
+ //info_message
+ setAttribute(elemFig, "info_message", createAttribute(fig.getInfoMessage()), createAttribute(defaultFig.getInfoMessage()));
+ //pixel_drawing_mode
+ setAttribute(elemFig, "pixel_drawing_mode", createAttribute(fig.getPixelDrawingMode()), createAttribute(defaultFig.getPixelDrawingMode()));
+ //anti_aliasing
+ setAttribute(elemFig, "anti_aliasing", createAttribute(fig.getAntialiasing()), createAttribute(defaultFig.getAntialiasing()));
+ //immediate_drawing
+ setAttribute(elemFig, "immediate_drawing", createAttribute(fig.getImmediateDrawing()), createAttribute(defaultFig.getImmediateDrawing()));
+ //background
+ setAttribute(elemFig, "background", createAttribute(fig.getBackground()), createAttribute(defaultFig.getBackground()));
+ //visible
+ setAttribute(elemFig, "visible", createAttribute(fig.getVisible()), createAttribute(defaultFig.getVisible()));
+ //rotation_style
+ setAttribute(elemFig, "rotation_style", createAttribute(Figure.RotationType.enumToString(fig.getRotationAsEnum())), createAttribute(Figure.RotationType.enumToString(defaultFig.getRotationAsEnum())));
+ //event_handler
+ setAttribute(elemFig, "event_handler", createAttribute(fig.getEventHandlerString()), createAttribute(defaultFig.getEventHandlerString()));
+ //event_handler_enable
+ setAttribute(elemFig, "event_handler_enable", createAttribute(fig.getEventHandlerEnable()), createAttribute(defaultFig.getEventHandlerEnable()));
+ //resizefcn
+ setAttribute(elemFig, "resizefcn", createAttribute(fig.getResizeFcn()), createAttribute(defaultFig.getResizeFcn()));
+ //closerequestfcn
+ setAttribute(elemFig, "closerequestfcn", createAttribute(fig.getCloseRequestFcn()), createAttribute(defaultFig.getCloseRequestFcn()));
+ //resize
+ setAttribute(elemFig, "resize", createAttribute(fig.getResize()), createAttribute(defaultFig.getResize()));
+ //toolbar
+ setAttribute(elemFig, "toolbar", createAttribute(Figure.BarType.enumToString(fig.getToolbarAsEnum())), createAttribute(Figure.BarType.enumToString(defaultFig.getToolbarAsEnum())));
+ //toolbar_visible
+ setAttribute(elemFig, "toolbar_visible", createAttribute(fig.getToolbarVisible()), createAttribute(defaultFig.getToolbarVisible()));
+ //menubar
+ setAttribute(elemFig, "menubar", createAttribute(Figure.BarType.enumToString(fig.getMenubarAsEnum())), createAttribute(Figure.BarType.enumToString(defaultFig.getMenubarAsEnum())));
+ //menubar_visible
+ setAttribute(elemFig, "menubar_visible", createAttribute(fig.getMenubarVisible()), createAttribute(defaultFig.getMenubarVisible()));
+ //infobar_visible
+ setAttribute(elemFig, "infobar_visible", createAttribute(fig.getInfobarVisible()), createAttribute(defaultFig.getInfobarVisible()));
+ //dockable
+ setAttribute(elemFig, "dockable", createAttribute(fig.getDockable()), createAttribute(defaultFig.getDockable()));
+ //layout
+ setAttribute(elemFig, "layout", createAttribute(LayoutType.enumToString(fig.getLayoutAsEnum())), createAttribute(LayoutType.enumToString(defaultFig.getLayoutAsEnum())));
+ //default_axes
+ setAttribute(elemFig, "default_axes", createAttribute(fig.hasDefaultAxes()), createAttribute(defaultFig.hasDefaultAxes()));
+ //icon
+ setAttribute(elemFig, "icon", createAttribute(fig.getIcon()), createAttribute(defaultFig.getIcon()));
+ //tag
+ setAttribute(elemFig, "tag", createAttribute(fig.getTag()), createAttribute(defaultFig.getTag()));
+ //layout_options
+ if (fig.getLayoutAsEnum() == LayoutType.GRID) {
+ setAttribute(elemFig, "grid_opt_grid", createAttribute(fig.getGridOptGrid()), createAttribute(defaultFig.getGridOptGrid()));
+ setAttribute(elemFig, "grid_opt_padding", createAttribute(fig.getGridOptPadding()), createAttribute(defaultFig.getGridOptPadding()));
+ } else if (fig.getLayoutAsEnum() == LayoutType.BORDER) {
+ setAttribute(elemFig, "border_opt_padding", createAttribute(fig.getBorderOptPadding()), createAttribute(defaultFig.getBorderOptPadding()));
+ }
+
+ //children
+ Integer[] children = fig.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ appendChild(elemFig, createElement(doc, children[i], reverseChildren));
+ }
+
+ //colormap
+ Double[] cm = fig.getColorMap().getData();
+ Double[] modelcm = defaultFig.getColorMap().getData();
+
+ if (Arrays.deepEquals(cm, modelcm) == false) {
+ createColorMap(doc, elemFig, fig.getColorMap().getData());
+ }
+
+ return elemFig;
+ }
+
+ public static void appendChild(Node parent, Node child) {
+ if (child != null) {
+ parent.appendChild(child);
+ }
+ }
+
+ private static Element createElement(Document doc, int id, boolean reverseChildren) {
+ GraphicController controller = GraphicController.getController();
+ Integer type = (Integer)controller.getProperty(id, __GO_TYPE__);
+
+ switch (type) {
+ case __GO_UICONTROL__ : {
+ return createUicontrol(doc, id, reverseChildren);
+ }
+ case __GO_UIMENU__ : {
+ //Uimenu uim = (Uimenu)controller.getObjectFromId(id);
+ return createUimenu(doc, id, reverseChildren);
+ }
+ case __GO_UICONTEXTMENU__ : {
+ //Uicontextmenu uicm = (Uicontextmenu)controller.getObjectFromId(id);
+ return doc.createElement("contextmenu");
+ }
+ case __GO_AXES__ : {
+ //Axes axes = (Axes)controller.getObjectFromId(id);
+ return createAxes(doc, id, reverseChildren);
+ }
+ }
+
+ return doc.createElement("fake");
+ }
+
+ private static Element createAxes(Document doc, Integer id, boolean reverseChildren) {
+ GraphicController controller = GraphicController.getController();
+ Axes axes = (Axes)controller.getObjectFromId(id);
+
+ Element elemAxes = doc.createElement("axes");
+ setAttribute(elemAxes, "tag", createAttribute(axes.getTag()), createAttribute(""));
+
+ return elemAxes;
+ }
+
+ private static Element createBorder(Document doc, Integer id) {
+ return createBorder(doc, id, "border");
+ }
+
+ private static Element createBorder(Document doc, Integer id, String borderName) {
+ GraphicController controller = GraphicController.getController();
+ FrameBorder border = (FrameBorder)controller.getObjectFromId(id);
+
+ if (border == null || border.getStyleAsEnum() == FrameBorderType.NONE) {
+ return null;
+ }
+
+ Element elemBorder = doc.createElement(borderName);
+
+ setAttribute(elemBorder, "style", createAttribute(border.getStyleAsEnum().toString().toLowerCase()), "");
+
+ switch (border.getStyleAsEnum()) {
+ case BEVEL: {
+ setAttribute(elemBorder, "type", createAttribute(border.getBorderType()), createAttribute(defaultBorder.getBorderType()));
+ setAttribute(elemBorder, "hlout", createAttribute(border.getHlOut()), createAttribute(defaultBorder.getHlOut()));
+ setAttribute(elemBorder, "hlin", createAttribute(border.getHlIn()), createAttribute(defaultBorder.getHlIn()));
+ setAttribute(elemBorder, "shadowout", createAttribute(border.getShadowOut()), createAttribute(defaultBorder.getShadowOut()));
+ setAttribute(elemBorder, "shadowin", createAttribute(border.getShadowIn()), createAttribute(defaultBorder.getShadowIn()));
+ break;
+ }
+ case COMPOUND: {
+ Element out = createBorder(doc, border.getOutBorder(), "out");
+ if (out != null) {
+ appendChild(elemBorder, out);
+ }
+
+ Element in = createBorder(doc, border.getInBorder(), "in");
+ if (in != null) {
+ appendChild(elemBorder, in);
+ }
+ break;
+ }
+ case EMPTY: {
+ setAttribute(elemBorder, "position", createAttribute(border.getPosition()), createAttribute(defaultBorder.getPosition()));
+ break;
+ }
+ case ETCHED: {
+ setAttribute(elemBorder, "type", createAttribute(border.getBorderType()), createAttribute(defaultBorder.getBorderType()));
+ setAttribute(elemBorder, "hl", createAttribute(border.getHlOut()), createAttribute(defaultBorder.getHlOut()));
+ setAttribute(elemBorder, "shadow", createAttribute(border.getShadowOut()), createAttribute(defaultBorder.getShadowOut()));
+ break;
+ }
+ case LINE: {
+ setAttribute(elemBorder, "color", createAttribute(border.getColor()), createAttribute(defaultBorder.getColor()));
+ setAttribute(elemBorder, "thickness", createAttribute(border.getThickness()), createAttribute(defaultBorder.getThickness()));
+ setAttribute(elemBorder, "rounded", createAttribute(border.getRounded()), createAttribute(defaultBorder.getRounded()));
+ break;
+ }
+ case MATTE: {
+ setAttribute(elemBorder, "position", createAttribute(border.getPosition()), createAttribute(defaultBorder.getPosition()));
+ setAttribute(elemBorder, "color", createAttribute(border.getColor()), createAttribute(defaultBorder.getColor()));
+ break;
+ }
+ case SOFTBEVEL: {
+ setAttribute(elemBorder, "type", createAttribute(border.getBorderType()), createAttribute(defaultBorder.getBorderType()));
+ setAttribute(elemBorder, "hlout", createAttribute(border.getHlOut()), createAttribute(defaultBorder.getHlOut()));
+ setAttribute(elemBorder, "hlin", createAttribute(border.getHlIn()), createAttribute(defaultBorder.getHlIn()));
+ setAttribute(elemBorder, "shadowout", createAttribute(border.getShadowOut()), createAttribute(defaultBorder.getShadowOut()));
+ setAttribute(elemBorder, "shadowin", createAttribute(border.getShadowIn()), createAttribute(defaultBorder.getShadowIn()));
+ break;
+ }
+ case TITLED: {
+ setAttribute(elemBorder, "title", createAttribute(border.getTitle()), createAttribute(defaultBorder.getTitle()));
+ setAttribute(elemBorder, "justification", createAttribute(border.getJustification()), createAttribute(defaultBorder.getJustification()));
+ setAttribute(elemBorder, "titleposition", createAttribute(border.getTitlePosition()), createAttribute(defaultBorder.getTitlePosition()));
+ setAttribute(elemBorder, "fontname", createAttribute(border.getFontName()), createAttribute(defaultBorder.getFontName()));
+ setAttribute(elemBorder, "fontangle", createAttribute(border.getFontAngle()), createAttribute(defaultBorder.getFontAngle()));
+ setAttribute(elemBorder, "fontsize", createAttribute(border.getFontSize()), createAttribute(defaultBorder.getFontSize()));
+ setAttribute(elemBorder, "fontweight", createAttribute(border.getFontWeight()), createAttribute(defaultBorder.getFontWeight()));
+ setAttribute(elemBorder, "color", createAttribute(border.getColor()), createAttribute(defaultBorder.getColor()));
+ Element title = createBorder(doc, border.getTitleBorder(), "title");
+ if (title != null) {
+ appendChild(elemBorder, title);
+ }
+ break;
+ }
+ case NONE:
+ default: {
+ break;
+ }
+ }
+ return elemBorder;
+ }
+
+ private static Element createUicontrol(Document doc, Integer id, boolean reverseChildren) {
+ GraphicController controller = GraphicController.getController();
+ Uicontrol uic = (Uicontrol)controller.getObjectFromId(id);
+ Uicontrol defaultUi = initDefaultui(uic.getStyle());
+ Element elemUi = doc.createElement(uic.getStyleAsEnum().toString().toLowerCase());
+
+ //BackgroundColor
+ setAttribute(elemUi, "backgroundcolor", createAttribute(uic.getBackgroundColor()), createAttribute(defaultUi.getBackgroundColor()));
+ //Enable
+ setAttribute(elemUi, "enable", createAttribute(uic.getEnable()), createAttribute(defaultUi.getEnable()));
+ //FontAngle
+ setAttribute(elemUi, "fontangle", createAttribute(uic.getFontAngle()), createAttribute(defaultUi.getFontAngle()));
+ //FontName
+ setAttribute(elemUi, "fontname", createAttribute(uic.getFontName()), createAttribute(defaultUi.getFontName()));
+ //FontSize
+ setAttribute(elemUi, "fontsize", createAttribute(uic.getFontSize()), createAttribute(defaultUi.getFontSize()));
+ //FontUnits
+ setAttribute(elemUi, "fontunits", createAttribute(uic.getFontUnits()), createAttribute(defaultUi.getFontUnits()));
+ //FontWeight
+ setAttribute(elemUi, "fontweight", createAttribute(uic.getFontWeight()), createAttribute(defaultUi.getFontWeight()));
+ //ForegroundColor
+ setAttribute(elemUi, "foregroundcolor", createAttribute(uic.getForegroundColor()), createAttribute(defaultUi.getForegroundColor()));
+ //HorizontalAlignment
+ setAttribute(elemUi, "horizontalalignment", createAttribute(uic.getHorizontalAlignment()), createAttribute(defaultUi.getHorizontalAlignment()));
+ //ListboxTop
+ setAttribute(elemUi, "listboxtop", createAttribute(uic.getListboxTop()), createAttribute(defaultUi.getListboxTop()));
+ //Max
+ setAttribute(elemUi, "max", createAttribute(uic.getMax()), createAttribute(defaultUi.getMax()));
+ //Min
+ setAttribute(elemUi, "min", createAttribute(uic.getMin()), createAttribute(defaultUi.getMin()));
+ //Relief
+ setAttribute(elemUi, "relief", createAttribute(uic.getRelief()), createAttribute(defaultUi.getRelief()));
+ //SliderStep
+ setAttribute(elemUi, "sliderstep", createAttribute(uic.getSliderStep()), createAttribute(defaultUi.getSliderStep()));
+ //String
+ //do not save string and value of tab/layer to avoid setting bad index during loading
+ if (uic.getStyle() != __GO_UI_TAB__ && uic.getStyle() != __GO_UI_LAYER__) {
+ String[] uicSstr = uic.getString();
+ String[] modelStr = defaultUi.getString();
+ if (Arrays.deepEquals(uicSstr, modelStr) == false) {
+ createStringArray(doc, elemUi, "string", uicSstr, uic.getStringColNb());
+ }
+ }
+ //TooltipString
+ String[] uicToolTip = uic.getTooltipString();
+ String[] modelToolTip = defaultUi.getTooltipString();
+ if (Arrays.deepEquals(uicToolTip, modelToolTip) == false) {
+ createStringArray(doc, elemUi, "tooltipstring", uicToolTip, 1);
+ }
+ //Units
+ setAttribute(elemUi, "units", createAttribute(uic.getUnits()), createAttribute(defaultUi.getUnits()));
+ //Value
+ //do not save string and value of tab/layer to avoid setting bad index during loading
+ if (uic.getStyle() != __GO_UI_TAB__ && uic.getStyle() != __GO_UI_LAYER__) {
+ setAttribute(elemUi, "value", createAttribute(uic.getUiValue()), createAttribute(defaultUi.getUiValue()));
+ }
+ //VerticalAlignment
+ setAttribute(elemUi, "verticalalignment", createAttribute(uic.getVerticalAlignment()), createAttribute(defaultUi.getVerticalAlignment()));
+ //Visible
+ setAttribute(elemUi, "visible", createAttribute(uic.getVisible()), createAttribute(!defaultUi.getVisible()));
+ //Callback
+ setAttribute(elemUi, "callback", createAttribute(uic.getCallbackString()), createAttribute(defaultUi.getCallbackString()));
+ //Callback_Type
+ setAttribute(elemUi, "callback_type", createAttribute(uic.getCallbackType()), createAttribute(defaultUi.getCallbackType()));
+
+ //Constraints
+ Integer parent = (Integer)controller.getProperty(uic.getIdentifier(), __GO_PARENT__);
+ Integer iLayout = (Integer)controller.getProperty(parent, __GO_LAYOUT__);
+ LayoutType layout = LayoutType.intToEnum(iLayout);
+
+ if (layout == LayoutType.GRIDBAG) {
+ setAttribute(elemUi, "gridbaggrid", createAttribute(uic.getGridBagGrid()), createAttribute(defaultUi.getGridBagGrid()));
+ setAttribute(elemUi, "gridbagweight", createAttribute(uic.getGridBagWeight()), createAttribute(defaultUi.getGridBagWeight()));
+ setAttribute(elemUi, "gridbagfill", createAttribute(Uicontrol.FillType.enumToString(uic.getGridBagFillAsEnum())), createAttribute(Uicontrol.FillType.enumToString(defaultUi.getGridBagFillAsEnum())));
+ setAttribute(elemUi, "gridbaganchor", createAttribute(Uicontrol.AnchorType.enumToString(uic.getGridBagAnchorAsEnum())), createAttribute(Uicontrol.AnchorType.enumToString(defaultUi.getGridBagAnchorAsEnum())));
+ setAttribute(elemUi, "gridbagpadding", createAttribute(uic.getGridBagPadding()), createAttribute(defaultUi.getGridBagPadding()));
+ setAttribute(elemUi, "gridbagpreferredsize", createAttribute(uic.getGridBagPreferredSize()), createAttribute(defaultUi.getGridBagPreferredSize()));
+ } else if (layout == LayoutType.BORDER) {
+ setAttribute(elemUi, "borderposition", createAttribute(Uicontrol.BorderLayoutType.enumToString(uic.getBorderPositionAsEnum())), createAttribute(Uicontrol.BorderLayoutType.enumToString(defaultUi.getBorderPositionAsEnum())));
+ setAttribute(elemUi, "borderpreferredsize", createAttribute(uic.getBorderPreferredSize()), createAttribute(defaultUi.getBorderPreferredSize()));
+ } else if (layout == LayoutType.NONE) {
+ //Position
+ setAttribute(elemUi, "position", createAttribute(uic.getUiPosition()), createAttribute(defaultUi.getUiPosition()));
+ }
+
+ //Margins
+ setAttribute(elemUi, "margins", createAttribute(uic.getMargins()), createAttribute(defaultUi.getMargins()));
+ //Groupname
+ setAttribute(elemUi, "groupname", createAttribute(uic.getGroupName()), createAttribute(defaultUi.getGroupName()));
+
+ //icon
+ setAttribute(elemUi, "icon", createAttribute(uic.getIcon()), createAttribute(defaultUi.getIcon()));
+ //Tag
+ setAttribute(elemUi, "tag", createAttribute(uic.getTag()), createAttribute(defaultUi.getTag()));
+
+ //only for frame type
+ if (uic.getStyleAsEnum() == UicontrolStyle.FRAME) {
+ //Border
+ Integer iBorder = uic.getFrameBorder();
+ Element border = createBorder(doc, iBorder);
+ if (border != null) {
+ appendChild(elemUi, createBorder(doc, iBorder));
+ }
+
+ //Layout
+ setAttribute(elemUi, "layout", createAttribute(LayoutType.enumToString(uic.getLayoutAsEnum())), createAttribute(LayoutType.enumToString(defaultUi.getLayoutAsEnum())));
+ //Layout_options
+ if (uic.getLayoutAsEnum() == LayoutType.GRID) {
+ setAttribute(elemUi, "gridoptgrid", createAttribute(uic.getGridOptGrid()), createAttribute(defaultUi.getGridOptGrid()));
+ setAttribute(elemUi, "gridoptpadding", createAttribute(uic.getGridOptPadding()), createAttribute(defaultUi.getGridOptPadding()));
+ } else if (uic.getLayoutAsEnum() == LayoutType.BORDER) {
+ setAttribute(elemUi, "borderoptpadding", createAttribute(uic.getBorderOptPadding()), createAttribute(defaultUi.getBorderOptPadding()));
+ }
+ }
+
+ if (uic.getStyleAsEnum() == UicontrolStyle.FRAME || uic.getStyleAsEnum() == UicontrolStyle.EDIT) {
+ //Scrollable
+ setAttribute(elemUi, "scrollable", createAttribute(uic.getScrollable()), createAttribute(defaultUi.getScrollable()));
+ }
+
+ controller.deleteObject(defaultUi.getIdentifier());
+ //children
+ Integer[] children = uic.getChildren();
+ if (reverseChildren) {
+ for (int i = children.length - 1 ; i >= 0 ; i--) {
+ if ((Integer)controller.getProperty(children[i], __GO_TYPE__) != __GO_UI_FRAME_BORDER__) {
+ appendChild(elemUi, createElement(doc, children[i], reverseChildren));
+ }
+ }
+ } else {
+ for (int i = 0 ; i < children.length ; i++) {
+ if ((Integer)controller.getProperty(children[i], __GO_TYPE__) != __GO_UI_FRAME_BORDER__) {
+ appendChild(elemUi, createElement(doc, children[i], reverseChildren));
+ }
+ }
+ }
+ return elemUi;
+ }
+
+ private static Element createUimenu(Document doc, Integer id, boolean reverseChildren) {
+ GraphicController controller = GraphicController.getController();
+ Uimenu uim = (Uimenu)controller.getObjectFromId(id);
+ //bypass hidden menu
+ if (uim.isHidden()) {
+ return null;
+ }
+
+ Uimenu defaultMenu = initDefaultMenu();
+ Element elemMenu = doc.createElement("menu");
+
+ //enable
+ setAttribute(elemMenu, "enable", createAttribute(uim.getEnable()), createAttribute(defaultMenu.getEnable()));
+ //foregroundcolor
+ setAttribute(elemMenu, "foregroundcolor", createAttribute(uim.getForegroundColor()), createAttribute(defaultMenu.getForegroundColor()));
+ //label
+ setAttribute(elemMenu, "label", createAttribute(uim.getLabel()), createAttribute(defaultMenu.getLabel()));
+ //handle_visible
+ setAttribute(elemMenu, "hidden", createAttribute(uim.isHidden()), createAttribute(defaultMenu.isHidden()));
+ //visible
+ setAttribute(elemMenu, "visible", createAttribute(uim.getVisible()), createAttribute(defaultMenu.getVisible()));
+ //callback
+ setAttribute(elemMenu, "callback", createAttribute(uim.getCallbackString()), createAttribute(defaultMenu.getCallbackString()));
+ //callback_type
+ setAttribute(elemMenu, "callback_type", createAttribute(uim.getCallbackType()), createAttribute(defaultMenu.getCallbackType()));
+ //checked
+ setAttribute(elemMenu, "checked", createAttribute(uim.getChecked()), createAttribute(defaultMenu.getChecked()));
+ //icon
+ setAttribute(elemMenu, "icon", createAttribute(uim.getIcon()), createAttribute(defaultMenu.getIcon()));
+ //tag
+ setAttribute(elemMenu, "tag", createAttribute(uim.getTag()), createAttribute(defaultMenu.getTag()));
+
+ //children
+ Integer[] children = uim.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ appendChild(elemMenu, createElement(doc, children[i], reverseChildren));
+ }
+
+ return elemMenu;
+ }
+
+ private static String createAttribute(Boolean val) {
+ if (val == null) {
+ return "off";
+ }
+
+ if (val) {
+ return "on";
+ } else {
+ return "off";
+ }
+ }
+
+ private static String createAttribute(Integer val) {
+ if (val == null) {
+ return null;
+ }
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(val.intValue());
+ return builder.toString();
+ }
+
+ private static String createAttribute(String val) {
+ if (val == null) {
+ return null;
+ }
+ return val;
+ }
+
+ private static String createAttribute(Double val) {
+ if (val == null) {
+ return null;
+ }
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(val.doubleValue());
+ return builder.toString();
+ }
+
+ // private static String createAttribute(Boolean[] val) {
+ // if(val == null || val.length == 0) {
+ // return null;
+ // }
+ //
+ // StringBuilder str = new StringBuilder();
+ //
+ // str.append(createAttribute(val[0]));
+ //
+ // for(int i = 1 ; i < val.length; i++)
+ // {
+ // str.append(",");
+ // str.append(createAttribute(val[i]));
+ // }
+ //
+ // return str.toString();
+ // }
+
+
+ private static String createAttribute(String[] val) {
+ if (val == null || val.length == 0) {
+ return null;
+ }
+
+ StringBuilder str = new StringBuilder();
+
+ str.append(createAttribute(val[0]));
+
+ for (int i = 1 ; i < val.length; i++) {
+ str.append(",");
+ str.append(createAttribute(val[i]));
+ }
+
+ return str.toString();
+ }
+
+ private static String createAttribute(Double[] val) {
+ if (val == null || val.length == 0) {
+ return null;
+ }
+
+ StringBuilder str = new StringBuilder();
+
+ str.append(createAttribute(val[0]));
+
+ for (int i = 1 ; i < val.length; i++) {
+ str.append(",");
+ str.append(createAttribute(val[i]));
+ }
+
+ return str.toString();
+ }
+
+ private static String createAttribute(Integer[] val) {
+ if (val == null || val.length == 0) {
+ return null;
+ }
+
+ StringBuilder str = new StringBuilder();
+
+ str.append(createAttribute(val[0]));
+
+ for (int i = 1 ; i < val.length; i++) {
+ str.append(",");
+ str.append(createAttribute(val[i]));
+ }
+
+ return str.toString();
+ }
+
+ private static void setAttribute(Element elem, String property, String value, String ref) {
+ if (value == null || property == null || elem == null || (ref != null && value.equals(ref))) {
+ return;
+ }
+
+ elem.setAttribute(property, value);
+ }
+
+ private static Uicontrol initDefaultui(Integer uicontrolStyle) {
+ Integer uic = GraphicController.getController().askObject(GraphicObject.getTypeFromName(uicontrolStyle));
+ return (Uicontrol) GraphicController.getController().getObjectFromId(uic);
+ }
+
+ private static Uimenu initDefaultMenu() {
+ Integer uic = GraphicController.getController().askObject(GraphicObject.getTypeFromName(__GO_UIMENU__));
+ return (Uimenu) GraphicController.getController().getObjectFromId(uic);
+ }
+
+ private static void createStringArray(Document doc, Element parent, String property, String[] value, Integer cols) {
+ //create a new Node to store string
+ Element elemString = doc.createElement("string");
+ Integer rows = value.length / cols;
+
+ setAttribute(elemString, "property", property, "");
+ setAttribute(elemString, "rows", rows.toString(), "");
+ setAttribute(elemString, "cols", cols.toString(), "");
+
+ for (int i = 0 ; i < rows * cols ; i++) {
+ Element elemSub = doc.createElement("stringitem");
+ setAttribute(elemSub, "value", value[i], null);
+ elemString.appendChild(elemSub);
+ }
+
+ parent.appendChild(elemString);
+ }
+
+ private static void createColorMap(Document doc, Element parent, Double[] value) {
+ //create a new Node to store string
+ Element elemString = doc.createElement("colormap");
+ Integer rows = value.length / 3;
+
+ setAttribute(elemString, "size", rows.toString(), "");
+
+ for (int i = 0 ; i < rows ; i++) {
+ Element elemSub = doc.createElement("colormapitem");
+ Color c = new Color(value[i].floatValue(), value[i + rows].floatValue(), value[i + 2 * rows].floatValue());
+ Integer color = c.getRGB();
+ setAttribute(elemSub, "color", color.toString(), null);
+ elemString.appendChild(elemSub);
+ }
+
+ parent.appendChild(elemString);
+ }
+
+}
diff --git a/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlTools.java b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlTools.java
new file mode 100755
index 000000000..c088c06a3
--- /dev/null
+++ b/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XmlTools.java
@@ -0,0 +1,162 @@
+package org.scilab.modules.graphic_objects.xmlloader;
+
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+
+public class XmlTools {
+ public static Boolean setPropAsDouble(Integer uid, Integer prop, String propString) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ GraphicController.getController().setProperty(uid, prop, Double.parseDouble(propString));
+ return true;
+ }
+
+ public static Boolean setPropAsDoubleVector(Integer uid, Integer prop, Map<String, String> map, String[] propString) {
+ if (propString == null || propString.length == 0) {
+ return false;
+ }
+
+ Double[] values = new Double[propString.length];
+ for (int i = 0; i < propString.length; i++) {
+ String value = map.get(propString[i]);
+ if (value == null || value.equals("")) {
+ values[i] = 0.0;
+ } else {
+ values[i] = Double.parseDouble(value);
+ }
+ }
+
+ GraphicController.getController().setProperty(uid, prop, values);
+ return true;
+ }
+
+ public static Boolean setPropAsDoubleVector(Integer uid, Integer prop, String propString, Integer size) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ Double[] values = new Double[size];
+
+ StringTokenizer tokens = new StringTokenizer(propString, ",");
+ if (tokens.countTokens() > size) {
+ return false;
+ }
+
+ int i = 0;
+ while (tokens.hasMoreTokens()) {
+ values[i++] = Double.parseDouble(tokens.nextToken());
+ }
+
+ GraphicController.getController().setProperty(uid, prop, values);
+ return true;
+ }
+
+ public static Boolean setPropAsBoolean(Integer uid, Integer prop, String propString) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ GraphicController.getController().setProperty(uid, prop, Boolean.parseBoolean(propString));
+ return true;
+ }
+
+ public static Boolean setPropAsBooleanVector(Integer uid, Integer prop, String propString, Integer size) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ Boolean[] values = new Boolean[size];
+
+ StringTokenizer tokens = new StringTokenizer(propString, ",");
+ if (tokens.countTokens() > size) {
+ return false;
+ }
+
+ int i = 0;
+ while (tokens.hasMoreTokens()) {
+ values[i++] = Boolean.parseBoolean(tokens.nextToken());
+ }
+
+ GraphicController.getController().setProperty(uid, prop, values);
+ return true;
+ }
+
+ public static Boolean setPropAsInteger(Integer uid, Integer prop, String propString) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ GraphicController.getController().setProperty(uid, prop, Integer.parseInt(propString));
+ return true;
+ }
+
+ public static Boolean setPropAsIntegerVector(Integer uid, Integer prop, String propString, Integer size) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ Integer[] values = new Integer[size];
+
+ StringTokenizer tokens = new StringTokenizer(propString, ",");
+ if (tokens.countTokens() > size) {
+ return false;
+ }
+
+ int i = 0;
+ while (tokens.hasMoreTokens()) {
+ values[i++] = Integer.parseInt(tokens.nextToken());
+ }
+
+ GraphicController.getController().setProperty(uid, prop, values);
+ return true;
+ }
+
+ public static Boolean setPropAsString(Integer uid, Integer prop, String propString) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ GraphicController.getController().setProperty(uid, prop, propString);
+ return true;
+ }
+
+ public static Boolean setPropAsStringVector(Integer uid, Integer prop, String propString, Integer size) {
+ if (propString == null || propString.equals("")) {
+ return false;
+ }
+
+ String[] values = new String[size];
+
+ StringTokenizer tokens = new StringTokenizer(propString, ",");
+ if (tokens.countTokens() > size) {
+ return false;
+ }
+
+ int i = 0;
+ while (tokens.hasMoreTokens()) {
+ values[i++] = tokens.nextToken();
+ }
+
+ GraphicController.getController().setProperty(uid, prop, values);
+ return true;
+ }
+
+ public static String getFromMap(Map<String, String> map, String field, String defaultValue) {
+ if (map != null) {
+ String ret = map.get(field);
+ if (ret != null) {
+ map.remove(field);
+ return ret;
+ }
+ }
+ return defaultValue;
+ }
+
+ public static String getFromMap(Map<String, String> map, String field) {
+ return getFromMap(map, field, "");
+ }
+}
diff --git a/modules/graphic_objects/src/jni/.deps/.dirstamp b/modules/graphic_objects/src/jni/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/.dirstamp
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-Builder.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-Builder.Plo
new file mode 100755
index 000000000..31503a5bf
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-Builder.Plo
@@ -0,0 +1,341 @@
+src/jni/libscigraphic_objects_la-Builder.lo: src/jni/Builder.cpp \
+ /usr/include/stdc-predef.h src/jni/Builder.hxx \
+ /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ ../../modules/commons/src/jni/GiwsException.hxx
+
+/usr/include/stdc-predef.h:
+
+src/jni/Builder.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallGraphicController.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallGraphicController.Plo
new file mode 100755
index 000000000..527ef9103
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallGraphicController.Plo
@@ -0,0 +1,341 @@
+src/jni/libscigraphic_objects_la-CallGraphicController.lo: \
+ src/jni/CallGraphicController.cpp /usr/include/stdc-predef.h \
+ src/jni/CallGraphicController.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ ../../modules/commons/src/jni/GiwsException.hxx
+
+/usr/include/stdc-predef.h:
+
+src/jni/CallGraphicController.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallXmlLoader.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallXmlLoader.Plo
new file mode 100755
index 000000000..b97fe14b7
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-CallXmlLoader.Plo
@@ -0,0 +1,341 @@
+src/jni/libscigraphic_objects_la-CallXmlLoader.lo: \
+ src/jni/CallXmlLoader.cpp /usr/include/stdc-predef.h \
+ src/jni/CallXmlLoader.hxx /usr/include/c++/5/iostream \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h \
+ /usr/include/c++/5/ostream /usr/include/c++/5/ios \
+ /usr/include/c++/5/iosfwd /usr/include/c++/5/bits/stringfwd.h \
+ /usr/include/c++/5/bits/memoryfwd.h /usr/include/c++/5/bits/postypes.h \
+ /usr/include/c++/5/cwchar /usr/include/wchar.h /usr/include/stdio.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/xlocale.h \
+ /usr/include/x86_64-linux-gnu/bits/wchar2.h /usr/include/c++/5/exception \
+ /usr/include/c++/5/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/5/bits/char_traits.h \
+ /usr/include/c++/5/bits/stl_algobase.h \
+ /usr/include/c++/5/bits/functexcept.h \
+ /usr/include/c++/5/bits/exception_defines.h \
+ /usr/include/c++/5/bits/cpp_type_traits.h \
+ /usr/include/c++/5/ext/type_traits.h \
+ /usr/include/c++/5/ext/numeric_traits.h \
+ /usr/include/c++/5/bits/stl_pair.h /usr/include/c++/5/bits/move.h \
+ /usr/include/c++/5/bits/concept_check.h \
+ /usr/include/c++/5/bits/stl_iterator_base_types.h \
+ /usr/include/c++/5/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/5/debug/debug.h /usr/include/c++/5/bits/stl_iterator.h \
+ /usr/include/c++/5/bits/ptr_traits.h \
+ /usr/include/c++/5/bits/predefined_ops.h \
+ /usr/include/c++/5/bits/localefwd.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h \
+ /usr/include/c++/5/clocale /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/5/cctype \
+ /usr/include/ctype.h /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/c++/5/bits/ios_base.h /usr/include/c++/5/ext/atomicity.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/bits/sched.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/timex.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
+ /usr/include/x86_64-linux-gnu/bits/setjmp.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h \
+ /usr/include/c++/5/bits/locale_classes.h /usr/include/c++/5/string \
+ /usr/include/c++/5/bits/allocator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h \
+ /usr/include/c++/5/ext/new_allocator.h /usr/include/c++/5/new \
+ /usr/include/c++/5/bits/ostream_insert.h \
+ /usr/include/c++/5/bits/cxxabi_forced.h \
+ /usr/include/c++/5/bits/stl_function.h \
+ /usr/include/c++/5/backward/binders.h \
+ /usr/include/c++/5/bits/range_access.h \
+ /usr/include/c++/5/bits/basic_string.h \
+ /usr/include/c++/5/ext/alloc_traits.h \
+ /usr/include/c++/5/bits/basic_string.tcc \
+ /usr/include/c++/5/bits/locale_classes.tcc /usr/include/c++/5/stdexcept \
+ /usr/include/c++/5/streambuf /usr/include/c++/5/bits/streambuf.tcc \
+ /usr/include/c++/5/bits/basic_ios.h \
+ /usr/include/c++/5/bits/locale_facets.h /usr/include/c++/5/cwctype \
+ /usr/include/wctype.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h \
+ /usr/include/c++/5/bits/streambuf_iterator.h \
+ /usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h \
+ /usr/include/c++/5/bits/locale_facets.tcc \
+ /usr/include/c++/5/bits/basic_ios.tcc \
+ /usr/include/c++/5/bits/ostream.tcc /usr/include/c++/5/istream \
+ /usr/include/c++/5/bits/istream.tcc /usr/include/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h /usr/include/stdlib.h \
+ /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ ../../modules/commons/src/jni/GiwsException.hxx
+
+/usr/include/stdc-predef.h:
+
+src/jni/CallXmlLoader.hxx:
+
+/usr/include/c++/5/iostream:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/cpu_defines.h:
+
+/usr/include/c++/5/ostream:
+
+/usr/include/c++/5/ios:
+
+/usr/include/c++/5/iosfwd:
+
+/usr/include/c++/5/bits/stringfwd.h:
+
+/usr/include/c++/5/bits/memoryfwd.h:
+
+/usr/include/c++/5/bits/postypes.h:
+
+/usr/include/c++/5/cwchar:
+
+/usr/include/wchar.h:
+
+/usr/include/stdio.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/wchar2.h:
+
+/usr/include/c++/5/exception:
+
+/usr/include/c++/5/bits/atomic_lockfree_defines.h:
+
+/usr/include/c++/5/bits/char_traits.h:
+
+/usr/include/c++/5/bits/stl_algobase.h:
+
+/usr/include/c++/5/bits/functexcept.h:
+
+/usr/include/c++/5/bits/exception_defines.h:
+
+/usr/include/c++/5/bits/cpp_type_traits.h:
+
+/usr/include/c++/5/ext/type_traits.h:
+
+/usr/include/c++/5/ext/numeric_traits.h:
+
+/usr/include/c++/5/bits/stl_pair.h:
+
+/usr/include/c++/5/bits/move.h:
+
+/usr/include/c++/5/bits/concept_check.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/5/bits/stl_iterator_base_funcs.h:
+
+/usr/include/c++/5/debug/debug.h:
+
+/usr/include/c++/5/bits/stl_iterator.h:
+
+/usr/include/c++/5/bits/ptr_traits.h:
+
+/usr/include/c++/5/bits/predefined_ops.h:
+
+/usr/include/c++/5/bits/localefwd.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++locale.h:
+
+/usr/include/c++/5/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/c++/5/cctype:
+
+/usr/include/ctype.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/c++/5/bits/ios_base.h:
+
+/usr/include/c++/5/ext/atomicity.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/sched.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/timex.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/x86_64-linux-gnu/bits/setjmp.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h:
+
+/usr/include/c++/5/bits/locale_classes.h:
+
+/usr/include/c++/5/string:
+
+/usr/include/c++/5/bits/allocator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/c++allocator.h:
+
+/usr/include/c++/5/ext/new_allocator.h:
+
+/usr/include/c++/5/new:
+
+/usr/include/c++/5/bits/ostream_insert.h:
+
+/usr/include/c++/5/bits/cxxabi_forced.h:
+
+/usr/include/c++/5/bits/stl_function.h:
+
+/usr/include/c++/5/backward/binders.h:
+
+/usr/include/c++/5/bits/range_access.h:
+
+/usr/include/c++/5/bits/basic_string.h:
+
+/usr/include/c++/5/ext/alloc_traits.h:
+
+/usr/include/c++/5/bits/basic_string.tcc:
+
+/usr/include/c++/5/bits/locale_classes.tcc:
+
+/usr/include/c++/5/stdexcept:
+
+/usr/include/c++/5/streambuf:
+
+/usr/include/c++/5/bits/streambuf.tcc:
+
+/usr/include/c++/5/bits/basic_ios.h:
+
+/usr/include/c++/5/bits/locale_facets.h:
+
+/usr/include/c++/5/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_base.h:
+
+/usr/include/c++/5/bits/streambuf_iterator.h:
+
+/usr/include/x86_64-linux-gnu/c++/5/bits/ctype_inline.h:
+
+/usr/include/c++/5/bits/locale_facets.tcc:
+
+/usr/include/c++/5/bits/basic_ios.tcc:
+
+/usr/include/c++/5/bits/ostream.tcc:
+
+/usr/include/c++/5/istream:
+
+/usr/include/c++/5/bits/istream.tcc:
+
+/usr/include/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+../../modules/commons/src/jni/GiwsException.hxx:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-DataLoader_wrap.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-DataLoader_wrap.Plo
new file mode 100755
index 000000000..acbafb239
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-DataLoader_wrap.Plo
@@ -0,0 +1,128 @@
+src/jni/libscigraphic_objects_la-DataLoader_wrap.lo: \
+ src/jni/DataLoader_wrap.c /usr/include/stdc-predef.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/DataLoader.hxx
+
+/usr/include/stdc-predef.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/DataLoader.hxx:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ObjectData_wrap.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ObjectData_wrap.Plo
new file mode 100755
index 000000000..0f13c6d0e
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ObjectData_wrap.Plo
@@ -0,0 +1,183 @@
+src/jni/libscigraphic_objects_la-ObjectData_wrap.lo: \
+ src/jni/ObjectData_wrap.c /usr/include/stdc-predef.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/returnType.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/setGraphicObjectProperty.h \
+ includes/graphicObjectProperties.h ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h
+
+/usr/include/stdc-predef.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/returnType.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-PolylineData_wrap.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-PolylineData_wrap.Plo
new file mode 100755
index 000000000..a00c1c065
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-PolylineData_wrap.Plo
@@ -0,0 +1,189 @@
+src/jni/libscigraphic_objects_la-PolylineData_wrap.lo: \
+ src/jni/PolylineData_wrap.c /usr/include/stdc-predef.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h \
+ includes/createGraphicObject.h includes/dynlib_graphic_objects.h \
+ ../../modules/core/includes/BOOL.h includes/deleteGraphicObject.h \
+ includes/returnType.h includes/getGraphicObjectProperty.h \
+ includes/returnType.h includes/CurrentObject.h \
+ includes/setGraphicObjectProperty.h includes/graphicObjectProperties.h \
+ ../../modules/core/includes/MALLOC.h \
+ ../../modules/core/includes/sci_mem_alloc.h /usr/include/math.h \
+ /usr/include/x86_64-linux-gnu/bits/math-vector.h \
+ /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_val.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_valf.h \
+ /usr/include/x86_64-linux-gnu/bits/huge_vall.h \
+ /usr/include/x86_64-linux-gnu/bits/inf.h \
+ /usr/include/x86_64-linux-gnu/bits/nan.h \
+ /usr/include/x86_64-linux-gnu/bits/mathdef.h \
+ /usr/include/x86_64-linux-gnu/bits/mathcalls.h \
+ /usr/include/x86_64-linux-gnu/bits/mathinline.h
+
+/usr/include/stdc-predef.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/createGraphicObject.h:
+
+includes/dynlib_graphic_objects.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/deleteGraphicObject.h:
+
+includes/returnType.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
+
+../../modules/core/includes/MALLOC.h:
+
+../../modules/core/includes/sci_mem_alloc.h:
+
+/usr/include/math.h:
+
+/usr/include/x86_64-linux-gnu/bits/math-vector.h:
+
+/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_val.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_valf.h:
+
+/usr/include/x86_64-linux-gnu/bits/huge_vall.h:
+
+/usr/include/x86_64-linux-gnu/bits/inf.h:
+
+/usr/include/x86_64-linux-gnu/bits/nan.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathdef.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathcalls.h:
+
+/usr/include/x86_64-linux-gnu/bits/mathinline.h:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ScilabNativeView_wrap.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ScilabNativeView_wrap.Plo
new file mode 100755
index 000000000..2ce6019a0
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-ScilabNativeView_wrap.Plo
@@ -0,0 +1,126 @@
+src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo: \
+ src/jni/ScilabNativeView_wrap.c /usr/include/stdc-predef.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h
+
+/usr/include/stdc-predef.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
diff --git a/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-SurfaceData_wrap.Plo b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-SurfaceData_wrap.Plo
new file mode 100755
index 000000000..fbdabe5d0
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.deps/libscigraphic_objects_la-SurfaceData_wrap.Plo
@@ -0,0 +1,146 @@
+src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo: \
+ src/jni/SurfaceData_wrap.c /usr/include/stdc-predef.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/jni.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
+ /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio.h \
+ /usr/include/x86_64-linux-gnu/bits/stdio2.h \
+ /usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h /usr/include/string.h \
+ /usr/include/xlocale.h /usr/include/x86_64-linux-gnu/bits/string.h \
+ /usr/include/x86_64-linux-gnu/bits/string2.h \
+ /usr/include/x86_64-linux-gnu/bits/string3.h includes/returnType.h \
+ includes/getGraphicObjectProperty.h includes/returnType.h \
+ includes/dynlib_graphic_objects.h includes/CurrentObject.h \
+ ../../modules/core/includes/BOOL.h includes/setGraphicObjectProperty.h \
+ includes/graphicObjectProperties.h
+
+/usr/include/stdc-predef.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio_lim.h:
+
+/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdio2.h:
+
+/usr/lib/jvm/java-8-openjdk-amd64/include/linux/jni_md.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/x86_64-linux-gnu/bits/string.h:
+
+/usr/include/x86_64-linux-gnu/bits/string2.h:
+
+/usr/include/x86_64-linux-gnu/bits/string3.h:
+
+includes/returnType.h:
+
+includes/getGraphicObjectProperty.h:
+
+includes/returnType.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/CurrentObject.h:
+
+../../modules/core/includes/BOOL.h:
+
+includes/setGraphicObjectProperty.h:
+
+includes/graphicObjectProperties.h:
diff --git a/modules/graphic_objects/src/jni/.dirstamp b/modules/graphic_objects/src/jni/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.dirstamp
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-Builder.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-Builder.o
new file mode 100755
index 000000000..ff8fa19c3
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-Builder.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallGraphicController.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallGraphicController.o
new file mode 100755
index 000000000..7dee9c5d8
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallGraphicController.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallXmlLoader.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallXmlLoader.o
new file mode 100755
index 000000000..94d008fa1
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-CallXmlLoader.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-DataLoader_wrap.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-DataLoader_wrap.o
new file mode 100755
index 000000000..bae8aab58
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-DataLoader_wrap.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ObjectData_wrap.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ObjectData_wrap.o
new file mode 100755
index 000000000..2f32f994a
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ObjectData_wrap.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-PolylineData_wrap.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-PolylineData_wrap.o
new file mode 100755
index 000000000..4ac3c04be
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-PolylineData_wrap.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ScilabNativeView_wrap.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ScilabNativeView_wrap.o
new file mode 100755
index 000000000..dd6843f7e
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-ScilabNativeView_wrap.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-SurfaceData_wrap.o b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-SurfaceData_wrap.o
new file mode 100755
index 000000000..bf1c11a14
--- /dev/null
+++ b/modules/graphic_objects/src/jni/.libs/libscigraphic_objects_la-SurfaceData_wrap.o
Binary files differ
diff --git a/modules/graphic_objects/src/jni/Builder.cpp b/modules/graphic_objects/src/jni/Builder.cpp
new file mode 100755
index 000000000..1d1521be0
--- /dev/null
+++ b/modules/graphic_objects/src/jni/Builder.cpp
@@ -0,0 +1,1199 @@
+#include "Builder.hxx"
+/* Generated by GIWS (version 2.0.2) with command:
+giws --disable-return-size-array --output-dir src\jni --throws-exception-on-error --description-file src\jni\builder.giws.xml
+*/
+/*
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software. You can use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors have only limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+namespace org_scilab_modules_graphic_objects_builder {
+
+ // Static declarations (if any)
+
+// Returns the current env
+
+JNIEnv * Builder::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+if (res != JNI_OK) {
+throw GiwsException::JniException(getCurrentEnv());
+}
+return curEnv;
+}
+// Destructor
+
+Builder::~Builder() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+curEnv->DeleteGlobalRef(this->stringArrayClass);}
+// Constructors
+Builder::Builder(JavaVM * jvm_) {
+jmethodID constructObject = NULL ;
+jobject localInstance ;
+jclass localClass ;
+
+const std::string construct="<init>";
+const std::string param="()V";
+jvm=jvm_;
+
+JNIEnv * curEnv = getCurrentEnv();
+
+localClass = curEnv->FindClass( this->className().c_str() ) ;
+if (localClass == NULL) {
+ throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+}
+
+this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+
+/* localClass is not needed anymore */
+curEnv->DeleteLocalRef(localClass);
+
+if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+
+constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
+if(constructObject == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
+if(localInstance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+this->instance = curEnv->NewGlobalRef(localInstance) ;
+if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+/* localInstance not needed anymore */
+curEnv->DeleteLocalRef(localInstance);
+
+ /* Methods ID set to NULL */
+jintcreateRectjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjintintjintintjintintID=NULL;
+jintcloneGraphicContextjintintjintintID=NULL;
+jintcloneFontContextjintintjintintID=NULL;
+jintcreateHiddenLabeljintintID=NULL;
+jbooleanisAxesRedrawingjintintID=NULL;
+jintcreateLabeljintintjintintID=NULL;
+jintcreateNewFigureWithAxesID=NULL;
+jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID=NULL;
+voidcloneMenusjintintjintintID=NULL;
+jintcloneAxesModeljintintID=NULL;
+jintcreateSubWinjintintID=NULL;
+jintcreateTextjintintjobjectArray_java_lang_Stringjava_lang_StringjintintjintintjdoubledoublejdoubledoublejbooleanbooleanjdoubleArray_doubledoublejintintjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjintintID=NULL;
+jintcreateArcjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanID=NULL;
+jintcreateAxisjintintjintintjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejintintjstringjava_lang_StringjintintjintintjintintjbooleanbooleanID=NULL;
+jintcreateCompoundjintintjintArray_intintID=NULL;
+jintcreateCompoundSeqjintintjintintID=NULL;
+jintcreateFecjintintjdoubleArray_doubledoublejintArray_intintjintArray_intintjbooleanbooleanID=NULL;
+jintcreateGrayplotjintintjintintjdoubleArray_doubledoublejintintjintintID=NULL;
+jintcreatePolylinejintintjbooleanbooleanjintintjintintjbooleanbooleanjintArray_intintjintintjbooleanbooleanjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanID=NULL;
+jintcreateLegendjintintjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintID=NULL;
+jintcreateSegsjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjintArray_intintjdoubledoubleID=NULL;
+jintcreateChampjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubledoublejbooleanbooleanID=NULL;
+jintcreateSurfacejintintjintintjintintjintintID=NULL;
+voidinitSubWinTo3djintintjstringjava_lang_StringjbooleanbooleanjintArray_intintjdoubledoublejdoubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID=NULL;
+jintcreateLightjintintjintintjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID=NULL;
+
+
+}
+
+Builder::Builder(JavaVM * jvm_, jobject JObj) {
+ jvm=jvm_;
+
+ JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+ this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+ curEnv->DeleteLocalRef(localClass);
+
+ if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+ }
+
+ this->instance = curEnv->NewGlobalRef(JObj) ;
+ if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+ }
+ /* Methods ID set to NULL */
+ jintcreateRectjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjintintjintintjintintID=NULL;
+jintcloneGraphicContextjintintjintintID=NULL;
+jintcloneFontContextjintintjintintID=NULL;
+jintcreateHiddenLabeljintintID=NULL;
+jbooleanisAxesRedrawingjintintID=NULL;
+jintcreateLabeljintintjintintID=NULL;
+jintcreateNewFigureWithAxesID=NULL;
+jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID=NULL;
+voidcloneMenusjintintjintintID=NULL;
+jintcloneAxesModeljintintID=NULL;
+jintcreateSubWinjintintID=NULL;
+jintcreateTextjintintjobjectArray_java_lang_Stringjava_lang_StringjintintjintintjdoubledoublejdoubledoublejbooleanbooleanjdoubleArray_doubledoublejintintjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjintintID=NULL;
+jintcreateArcjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanID=NULL;
+jintcreateAxisjintintjintintjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejintintjstringjava_lang_StringjintintjintintjintintjbooleanbooleanID=NULL;
+jintcreateCompoundjintintjintArray_intintID=NULL;
+jintcreateCompoundSeqjintintjintintID=NULL;
+jintcreateFecjintintjdoubleArray_doubledoublejintArray_intintjintArray_intintjbooleanbooleanID=NULL;
+jintcreateGrayplotjintintjintintjdoubleArray_doubledoublejintintjintintID=NULL;
+jintcreatePolylinejintintjbooleanbooleanjintintjintintjbooleanbooleanjintArray_intintjintintjbooleanbooleanjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanID=NULL;
+jintcreateLegendjintintjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintID=NULL;
+jintcreateSegsjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjintArray_intintjdoubledoubleID=NULL;
+jintcreateChampjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubledoublejbooleanbooleanID=NULL;
+jintcreateSurfacejintintjintintjintintjintintID=NULL;
+voidinitSubWinTo3djintintjstringjava_lang_StringjbooleanbooleanjintArray_intintjdoubledoublejdoubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID=NULL;
+jintcreateLightjintintjintintjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID=NULL;
+
+
+}
+
+// Generic methods
+
+void Builder::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "Builder");
+}
+}
+
+void Builder::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "Builder");
+}
+}
+// Method(s)
+
+int Builder::createRect (JavaVM * jvm_, int pparentsubwinUID, double x, double y, double height, double width, int foreground, int background, int isfilled, int isline){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateRectjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjintintjintintjintintID = curEnv->GetStaticMethodID(cls, "createRect", "(IDDDDIIII)I" ) ;
+if (jintcreateRectjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjintintjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createRect");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateRectjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjintintjintintjintintID ,pparentsubwinUID, x, y, height, width, foreground, background, isfilled, isline));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::cloneGraphicContext (JavaVM * jvm_, int sourceIdentifier, int destIdentifier){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcloneGraphicContextjintintjintintID = curEnv->GetStaticMethodID(cls, "cloneGraphicContext", "(II)I" ) ;
+if (jintcloneGraphicContextjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "cloneGraphicContext");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcloneGraphicContextjintintjintintID ,sourceIdentifier, destIdentifier));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::cloneFontContext (JavaVM * jvm_, int sourceIdentifier, int destIdentifier){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcloneFontContextjintintjintintID = curEnv->GetStaticMethodID(cls, "cloneFontContext", "(II)I" ) ;
+if (jintcloneFontContextjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "cloneFontContext");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcloneFontContextjintintjintintID ,sourceIdentifier, destIdentifier));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createHiddenLabel (JavaVM * jvm_, int parent){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateHiddenLabeljintintID = curEnv->GetStaticMethodID(cls, "createHiddenLabel", "(I)I" ) ;
+if (jintcreateHiddenLabeljintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createHiddenLabel");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateHiddenLabeljintintID ,parent));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+bool Builder::isAxesRedrawing (JavaVM * jvm_, int subWin){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleanisAxesRedrawingjintintID = curEnv->GetStaticMethodID(cls, "isAxesRedrawing", "(I)Z" ) ;
+if (jbooleanisAxesRedrawingjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "isAxesRedrawing");
+}
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleanisAxesRedrawingjintintID ,subWin));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+int Builder::createLabel (JavaVM * jvm_, int parent, int type){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateLabeljintintjintintID = curEnv->GetStaticMethodID(cls, "createLabel", "(II)I" ) ;
+if (jintcreateLabeljintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createLabel");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateLabeljintintjintintID ,parent, type));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createNewFigureWithAxes (JavaVM * jvm_){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateNewFigureWithAxesID = curEnv->GetStaticMethodID(cls, "createNewFigureWithAxes", "()I" ) ;
+if (jintcreateNewFigureWithAxesID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createNewFigureWithAxes");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateNewFigureWithAxesID ));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createFigure (JavaVM * jvm_, bool dockable, int menubarType, int toolbarType, bool defaultAxes, bool visible){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createFigure", "(ZIIZZ)I" ) ;
+if (jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createFigure");
+}
+
+jboolean dockable_ = (static_cast<bool>(dockable) ? JNI_TRUE : JNI_FALSE);
+
+jboolean defaultAxes_ = (static_cast<bool>(defaultAxes) ? JNI_TRUE : JNI_FALSE);
+
+jboolean visible_ = (static_cast<bool>(visible) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID ,dockable_, menubarType, toolbarType, defaultAxes_, visible_));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+void Builder::cloneMenus (JavaVM * jvm_, int model, int newParent){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidcloneMenusjintintjintintID = curEnv->GetStaticMethodID(cls, "cloneMenus", "(II)V" ) ;
+if (voidcloneMenusjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "cloneMenus");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voidcloneMenusjintintjintintID ,model, newParent);
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+int Builder::cloneAxesModel (JavaVM * jvm_, int parent){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcloneAxesModeljintintID = curEnv->GetStaticMethodID(cls, "cloneAxesModel", "(I)I" ) ;
+if (jintcloneAxesModeljintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "cloneAxesModel");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcloneAxesModeljintintID ,parent));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createSubWin (JavaVM * jvm_, int parent){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateSubWinjintintID = curEnv->GetStaticMethodID(cls, "createSubWin", "(I)I" ) ;
+if (jintcreateSubWinjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createSubWin");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateSubWinjintintID ,parent));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createText (JavaVM * jvm_, int parent, char const* const* text, int textSize, int rows, int cols, double x, double y, bool autoSize, double const* userSize, int userSizeSize, int centerPos, int foreground, bool isForeground, int background, bool isBackground, bool boxed, bool line, bool filled, int align){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateTextjintintjobjectArray_java_lang_Stringjava_lang_StringjintintjintintjdoubledoublejdoubledoublejbooleanbooleanjdoubleArray_doubledoublejintintjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjintintID = curEnv->GetStaticMethodID(cls, "createText", "(I[Ljava/lang/String;IIDDZ[DIIZIZZZZI)I" ) ;
+if (jintcreateTextjintintjobjectArray_java_lang_Stringjava_lang_StringjintintjintintjdoubledoublejdoubledoublejbooleanbooleanjdoubleArray_doubledoublejintintjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createText");
+}
+jclass stringArrayClass = curEnv->FindClass("java/lang/String");
+
+// create java array of strings.
+jobjectArray text_ = curEnv->NewObjectArray( textSize, stringArrayClass, NULL);
+if (text_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+// convert each char * to java strings and fill the java array.
+for ( int i = 0; i < textSize; i++)
+{
+jstring TempString = curEnv->NewStringUTF( text[i] );
+if (TempString == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetObjectArrayElement( text_, i, TempString);
+
+// avoid keeping reference on too many strings
+curEnv->DeleteLocalRef(TempString);
+}
+jboolean autoSize_ = (static_cast<bool>(autoSize) ? JNI_TRUE : JNI_FALSE);
+
+jdoubleArray userSize_ = curEnv->NewDoubleArray( userSizeSize ) ;
+
+if (userSize_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( userSize_, 0, userSizeSize, (jdouble*)(userSize) ) ;
+
+
+jboolean isForeground_ = (static_cast<bool>(isForeground) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isBackground_ = (static_cast<bool>(isBackground) ? JNI_TRUE : JNI_FALSE);
+
+jboolean boxed_ = (static_cast<bool>(boxed) ? JNI_TRUE : JNI_FALSE);
+
+jboolean line_ = (static_cast<bool>(line) ? JNI_TRUE : JNI_FALSE);
+
+jboolean filled_ = (static_cast<bool>(filled) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateTextjintintjobjectArray_java_lang_Stringjava_lang_StringjintintjintintjdoubledoublejdoubledoublejbooleanbooleanjdoubleArray_doubledoublejintintjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjintintID ,parent, text_, rows, cols, x, y, autoSize_, userSize_, centerPos, foreground, isForeground_, background, isBackground_, boxed_, line_, filled_, align));
+ curEnv->DeleteLocalRef(stringArrayClass);
+curEnv->DeleteLocalRef(text_);
+curEnv->DeleteLocalRef(userSize_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createArc (JavaVM * jvm_, int parent, double x, double y, double h, double w, double start, double end, int foreground, bool isForeground, int background, bool isBackground, bool filled, bool line){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateArcjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createArc", "(IDDDDDDIZIZZZ)I" ) ;
+if (jintcreateArcjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createArc");
+}
+
+jboolean isForeground_ = (static_cast<bool>(isForeground) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isBackground_ = (static_cast<bool>(isBackground) ? JNI_TRUE : JNI_FALSE);
+
+jboolean filled_ = (static_cast<bool>(filled) ? JNI_TRUE : JNI_FALSE);
+
+jboolean line_ = (static_cast<bool>(line) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateArcjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanID ,parent, x, y, h, w, start, end, foreground, isForeground_, background, isBackground_, filled_, line_));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createAxis (JavaVM * jvm_, int parent, int dir, int tics, double const* vx, int vxSize, double const* vy, int vySize, int subint, char const* format, int fontSize, int textColor, int ticsColor, bool seg){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateAxisjintintjintintjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejintintjstringjava_lang_StringjintintjintintjintintjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createAxis", "(III[D[DILjava/lang/String;IIIZ)I" ) ;
+if (jintcreateAxisjintintjintintjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejintintjstringjava_lang_StringjintintjintintjintintjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createAxis");
+}
+
+jdoubleArray vx_ = curEnv->NewDoubleArray( vxSize ) ;
+
+if (vx_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vx_, 0, vxSize, (jdouble*)(vx) ) ;
+
+
+jdoubleArray vy_ = curEnv->NewDoubleArray( vySize ) ;
+
+if (vy_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vy_, 0, vySize, (jdouble*)(vy) ) ;
+
+
+jstring format_ = curEnv->NewStringUTF( format );
+if (format != NULL && format_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jboolean seg_ = (static_cast<bool>(seg) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateAxisjintintjintintjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejintintjstringjava_lang_StringjintintjintintjintintjbooleanbooleanID ,parent, dir, tics, vx_, vy_, subint, format_, fontSize, textColor, ticsColor, seg_));
+ curEnv->DeleteLocalRef(vx_);
+curEnv->DeleteLocalRef(vy_);
+curEnv->DeleteLocalRef(format_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createCompound (JavaVM * jvm_, int parent, int const* children, int childrenSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateCompoundjintintjintArray_intintID = curEnv->GetStaticMethodID(cls, "createCompound", "(I[I)I" ) ;
+if (jintcreateCompoundjintintjintArray_intintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createCompound");
+}
+
+jintArray children_ = curEnv->NewIntArray( childrenSize ) ;
+
+if (children_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( children_, 0, childrenSize, (jint*)(children) ) ;
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateCompoundjintintjintArray_intintID ,parent, children_));
+ curEnv->DeleteLocalRef(children_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createCompoundSeq (JavaVM * jvm_, int parent, int childrenCount){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateCompoundSeqjintintjintintID = curEnv->GetStaticMethodID(cls, "createCompoundSeq", "(II)I" ) ;
+if (jintcreateCompoundSeqjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createCompoundSeq");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateCompoundSeqjintintjintintID ,parent, childrenCount));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createFec (JavaVM * jvm_, int parent, double const* zminmax, int zminmaxSize, int const* colminmax, int colminmaxSize, int const* colout, int coloutSize, bool with_mesh){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateFecjintintjdoubleArray_doubledoublejintArray_intintjintArray_intintjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createFec", "(I[D[I[IZ)I" ) ;
+if (jintcreateFecjintintjdoubleArray_doubledoublejintArray_intintjintArray_intintjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createFec");
+}
+
+jdoubleArray zminmax_ = curEnv->NewDoubleArray( zminmaxSize ) ;
+
+if (zminmax_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( zminmax_, 0, zminmaxSize, (jdouble*)(zminmax) ) ;
+
+
+jintArray colminmax_ = curEnv->NewIntArray( colminmaxSize ) ;
+
+if (colminmax_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( colminmax_, 0, colminmaxSize, (jint*)(colminmax) ) ;
+
+
+jintArray colout_ = curEnv->NewIntArray( coloutSize ) ;
+
+if (colout_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( colout_, 0, coloutSize, (jint*)(colout) ) ;
+
+
+jboolean with_mesh_ = (static_cast<bool>(with_mesh) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateFecjintintjdoubleArray_doubledoublejintArray_intintjintArray_intintjbooleanbooleanID ,parent, zminmax_, colminmax_, colout_, with_mesh_));
+ curEnv->DeleteLocalRef(zminmax_);
+curEnv->DeleteLocalRef(colminmax_);
+curEnv->DeleteLocalRef(colout_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createGrayplot (JavaVM * jvm_, int parent, int type, double const* pvecx, int pvecxSize, int n1, int n2){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateGrayplotjintintjintintjdoubleArray_doubledoublejintintjintintID = curEnv->GetStaticMethodID(cls, "createGrayplot", "(II[DII)I" ) ;
+if (jintcreateGrayplotjintintjintintjdoubleArray_doubledoublejintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createGrayplot");
+}
+
+jdoubleArray pvecx_ = curEnv->NewDoubleArray( pvecxSize ) ;
+
+if (pvecx_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( pvecx_, 0, pvecxSize, (jdouble*)(pvecx) ) ;
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateGrayplotjintintjintintjdoubleArray_doubledoublejintintjintintID ,parent, type, pvecx_, n1, n2));
+ curEnv->DeleteLocalRef(pvecx_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createPolyline (JavaVM * jvm_, int parent, bool closed, int plot, int foreground, bool isForeground, int const* background, int backgroundSize, int mark_style, bool isMarkStyle, int mark_foreground, bool isMarkForeground, int mark_background, bool isMarkBackground, bool isline, bool isfilled, bool ismark, bool isinterp){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreatePolylinejintintjbooleanbooleanjintintjintintjbooleanbooleanjintArray_intintjintintjbooleanbooleanjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createPolyline", "(IZIIZ[IIZIZIZZZZZ)I" ) ;
+if (jintcreatePolylinejintintjbooleanbooleanjintintjintintjbooleanbooleanjintArray_intintjintintjbooleanbooleanjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createPolyline");
+}
+
+jboolean closed_ = (static_cast<bool>(closed) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isForeground_ = (static_cast<bool>(isForeground) ? JNI_TRUE : JNI_FALSE);
+
+jintArray background_ = curEnv->NewIntArray( backgroundSize ) ;
+
+if (background_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( background_, 0, backgroundSize, (jint*)(background) ) ;
+
+
+jboolean isMarkStyle_ = (static_cast<bool>(isMarkStyle) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isMarkForeground_ = (static_cast<bool>(isMarkForeground) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isMarkBackground_ = (static_cast<bool>(isMarkBackground) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isline_ = (static_cast<bool>(isline) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isfilled_ = (static_cast<bool>(isfilled) ? JNI_TRUE : JNI_FALSE);
+
+jboolean ismark_ = (static_cast<bool>(ismark) ? JNI_TRUE : JNI_FALSE);
+
+jboolean isinterp_ = (static_cast<bool>(isinterp) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreatePolylinejintintjbooleanbooleanjintintjintintjbooleanbooleanjintArray_intintjintintjbooleanbooleanjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanID ,parent, closed_, plot, foreground, isForeground_, background_, mark_style, isMarkStyle_, mark_foreground, isMarkForeground_, mark_background, isMarkBackground_, isline_, isfilled_, ismark_, isinterp_));
+ curEnv->DeleteLocalRef(background_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createLegend (JavaVM * jvm_, int parent, char const* const* text, int textSize, int const* handles, int handlesSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateLegendjintintjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintID = curEnv->GetStaticMethodID(cls, "createLegend", "(I[Ljava/lang/String;[I)I" ) ;
+if (jintcreateLegendjintintjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createLegend");
+}
+jclass stringArrayClass = curEnv->FindClass("java/lang/String");
+
+// create java array of strings.
+jobjectArray text_ = curEnv->NewObjectArray( textSize, stringArrayClass, NULL);
+if (text_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+// convert each char * to java strings and fill the java array.
+for ( int i = 0; i < textSize; i++)
+{
+jstring TempString = curEnv->NewStringUTF( text[i] );
+if (TempString == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetObjectArrayElement( text_, i, TempString);
+
+// avoid keeping reference on too many strings
+curEnv->DeleteLocalRef(TempString);
+}
+jintArray handles_ = curEnv->NewIntArray( handlesSize ) ;
+
+if (handles_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( handles_, 0, handlesSize, (jint*)(handles) ) ;
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateLegendjintintjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintID ,parent, text_, handles_));
+ curEnv->DeleteLocalRef(stringArrayClass);
+curEnv->DeleteLocalRef(text_);
+curEnv->DeleteLocalRef(handles_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createSegs (JavaVM * jvm_, int parent, double const* vx, int vxSize, double const* vy, int vySize, double const* vz, int vzSize, bool isVZ, int const* style, int styleSize, double arsize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateSegsjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjintArray_intintjdoubledoubleID = curEnv->GetStaticMethodID(cls, "createSegs", "(I[D[D[DZ[ID)I" ) ;
+if (jintcreateSegsjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjintArray_intintjdoubledoubleID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createSegs");
+}
+
+jdoubleArray vx_ = curEnv->NewDoubleArray( vxSize ) ;
+
+if (vx_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vx_, 0, vxSize, (jdouble*)(vx) ) ;
+
+
+jdoubleArray vy_ = curEnv->NewDoubleArray( vySize ) ;
+
+if (vy_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vy_, 0, vySize, (jdouble*)(vy) ) ;
+
+
+jdoubleArray vz_ = curEnv->NewDoubleArray( vzSize ) ;
+
+if (vz_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vz_, 0, vzSize, (jdouble*)(vz) ) ;
+
+
+jboolean isVZ_ = (static_cast<bool>(isVZ) ? JNI_TRUE : JNI_FALSE);
+
+jintArray style_ = curEnv->NewIntArray( styleSize ) ;
+
+if (style_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( style_, 0, styleSize, (jint*)(style) ) ;
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateSegsjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjintArray_intintjdoubledoubleID ,parent, vx_, vy_, vz_, isVZ_, style_, arsize));
+ curEnv->DeleteLocalRef(vx_);
+curEnv->DeleteLocalRef(vy_);
+curEnv->DeleteLocalRef(vz_);
+curEnv->DeleteLocalRef(style_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createChamp (JavaVM * jvm_, int parent, double const* vx, int vxSize, double const* vy, int vySize, double const* vfx, int vfxSize, double const* vfy, int vfySize, double arsize, bool typeofchamp){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateChampjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubledoublejbooleanbooleanID = curEnv->GetStaticMethodID(cls, "createChamp", "(I[D[D[D[DDZ)I" ) ;
+if (jintcreateChampjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubledoublejbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createChamp");
+}
+
+jdoubleArray vx_ = curEnv->NewDoubleArray( vxSize ) ;
+
+if (vx_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vx_, 0, vxSize, (jdouble*)(vx) ) ;
+
+
+jdoubleArray vy_ = curEnv->NewDoubleArray( vySize ) ;
+
+if (vy_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vy_, 0, vySize, (jdouble*)(vy) ) ;
+
+
+jdoubleArray vfx_ = curEnv->NewDoubleArray( vfxSize ) ;
+
+if (vfx_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vfx_, 0, vfxSize, (jdouble*)(vfx) ) ;
+
+
+jdoubleArray vfy_ = curEnv->NewDoubleArray( vfySize ) ;
+
+if (vfy_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( vfy_, 0, vfySize, (jdouble*)(vfy) ) ;
+
+
+jboolean typeofchamp_ = (static_cast<bool>(typeofchamp) ? JNI_TRUE : JNI_FALSE);
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateChampjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubledoublejbooleanbooleanID ,parent, vx_, vy_, vfx_, vfy_, arsize, typeofchamp_));
+ curEnv->DeleteLocalRef(vx_);
+curEnv->DeleteLocalRef(vy_);
+curEnv->DeleteLocalRef(vfx_);
+curEnv->DeleteLocalRef(vfy_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int Builder::createSurface (JavaVM * jvm_, int parent, int typeof3d, int colorFlag, int colorMode){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateSurfacejintintjintintjintintjintintID = curEnv->GetStaticMethodID(cls, "createSurface", "(IIII)I" ) ;
+if (jintcreateSurfacejintintjintintjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createSurface");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateSurfacejintintjintintjintintjintintID ,parent, typeof3d, colorFlag, colorMode));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+void Builder::initSubWinTo3d (JavaVM * jvm_, int parent, char const* legend, bool isLegend, int const* flag, int flagSize, double alpha, double theta, double const* ebox, int eboxSize, double const* x, int xSize, double const* y, int ySize, double const* z, int zSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidinitSubWinTo3djintintjstringjava_lang_StringjbooleanbooleanjintArray_intintjdoubledoublejdoubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "initSubWinTo3d", "(ILjava/lang/String;Z[IDD[D[D[D[D)V" ) ;
+if (voidinitSubWinTo3djintintjstringjava_lang_StringjbooleanbooleanjintArray_intintjdoubledoublejdoubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "initSubWinTo3d");
+}
+
+jstring legend_ = curEnv->NewStringUTF( legend );
+if (legend != NULL && legend_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jboolean isLegend_ = (static_cast<bool>(isLegend) ? JNI_TRUE : JNI_FALSE);
+
+jintArray flag_ = curEnv->NewIntArray( flagSize ) ;
+
+if (flag_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( flag_, 0, flagSize, (jint*)(flag) ) ;
+
+
+jdoubleArray ebox_ = curEnv->NewDoubleArray( eboxSize ) ;
+
+if (ebox_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( ebox_, 0, eboxSize, (jdouble*)(ebox) ) ;
+
+
+jdoubleArray x_ = curEnv->NewDoubleArray( xSize ) ;
+
+if (x_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( x_, 0, xSize, (jdouble*)(x) ) ;
+
+
+jdoubleArray y_ = curEnv->NewDoubleArray( ySize ) ;
+
+if (y_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( y_, 0, ySize, (jdouble*)(y) ) ;
+
+
+jdoubleArray z_ = curEnv->NewDoubleArray( zSize ) ;
+
+if (z_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( z_, 0, zSize, (jdouble*)(z) ) ;
+
+
+ curEnv->CallStaticVoidMethod(cls, voidinitSubWinTo3djintintjstringjava_lang_StringjbooleanbooleanjintArray_intintjdoubledoublejdoubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID ,parent, legend_, isLegend_, flag_, alpha, theta, ebox_, x_, y_, z_);
+ curEnv->DeleteLocalRef(legend_);
+curEnv->DeleteLocalRef(flag_);
+curEnv->DeleteLocalRef(ebox_);
+curEnv->DeleteLocalRef(x_);
+curEnv->DeleteLocalRef(y_);
+curEnv->DeleteLocalRef(z_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+int Builder::createLight (JavaVM * jvm_, int parent, int type, bool visible, double const* pos, int posSize, double const* dir, int dirSize, double const* ambient, int ambientSize, double const* diffuse, int diffuseSize, double const* specular, int specularSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcreateLightjintintjintintjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "createLight", "(IIZ[D[D[D[D[D)I" ) ;
+if (jintcreateLightjintintjintintjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "createLight");
+}
+
+jboolean visible_ = (static_cast<bool>(visible) ? JNI_TRUE : JNI_FALSE);
+
+jdoubleArray pos_ = curEnv->NewDoubleArray( posSize ) ;
+
+if (pos_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( pos_, 0, posSize, (jdouble*)(pos) ) ;
+
+
+jdoubleArray dir_ = curEnv->NewDoubleArray( dirSize ) ;
+
+if (dir_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( dir_, 0, dirSize, (jdouble*)(dir) ) ;
+
+
+jdoubleArray ambient_ = curEnv->NewDoubleArray( ambientSize ) ;
+
+if (ambient_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( ambient_, 0, ambientSize, (jdouble*)(ambient) ) ;
+
+
+jdoubleArray diffuse_ = curEnv->NewDoubleArray( diffuseSize ) ;
+
+if (diffuse_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( diffuse_, 0, diffuseSize, (jdouble*)(diffuse) ) ;
+
+
+jdoubleArray specular_ = curEnv->NewDoubleArray( specularSize ) ;
+
+if (specular_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( specular_, 0, specularSize, (jdouble*)(specular) ) ;
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcreateLightjintintjintintjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID ,parent, type, visible_, pos_, dir_, ambient_, diffuse_, specular_));
+ curEnv->DeleteLocalRef(pos_);
+curEnv->DeleteLocalRef(dir_);
+curEnv->DeleteLocalRef(ambient_);
+curEnv->DeleteLocalRef(diffuse_);
+curEnv->DeleteLocalRef(specular_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+}
diff --git a/modules/graphic_objects/src/jni/Builder.hxx b/modules/graphic_objects/src/jni/Builder.hxx
new file mode 100755
index 000000000..888d6b003
--- /dev/null
+++ b/modules/graphic_objects/src/jni/Builder.hxx
@@ -0,0 +1,251 @@
+/* Generated by GIWS (version 2.0.2) with command:
+giws --disable-return-size-array --output-dir src\jni --throws-exception-on-error --description-file src\jni\builder.giws.xml
+*/
+/*
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software. You can use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors have only limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+
+#ifndef __ORG_SCILAB_MODULES_GRAPHIC_OBJECTS_BUILDER_BUILDER__
+#define __ORG_SCILAB_MODULES_GRAPHIC_OBJECTS_BUILDER_BUILDER__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+
+#include "GiwsException.hxx"
+
+ #if defined(_MSC_VER) /* Defined anyway with Visual */
+ #include <Windows.h>
+ #else
+ typedef signed char byte;
+ #endif
+
+
+#ifndef GIWSEXPORT
+# if defined(_MSC_VER) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define GIWSEXPORT
+# else
+# define GIWSEXPORT __declspec(dllexport)
+# endif
+# else
+# if __GNUC__ >= 4
+# define GIWSEXPORT __attribute__ ((visibility ("default")))
+# else
+# define GIWSEXPORT
+# endif
+# endif
+#endif
+
+namespace org_scilab_modules_graphic_objects_builder {
+class GIWSEXPORT Builder {
+
+private:
+JavaVM * jvm;
+
+protected:
+jmethodID jintcreateRectjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjintintjintintjintintID; // cache method id
+jmethodID jintcloneGraphicContextjintintjintintID; // cache method id
+jmethodID jintcloneFontContextjintintjintintID; // cache method id
+jmethodID jintcreateHiddenLabeljintintID; // cache method id
+jmethodID jbooleanisAxesRedrawingjintintID; // cache method id
+jmethodID jintcreateLabeljintintjintintID; // cache method id
+jmethodID jintcreateNewFigureWithAxesID; // cache method id
+jmethodID jintcreateFigurejbooleanbooleanjintintjintintjbooleanbooleanjbooleanbooleanID; // cache method id
+jmethodID voidcloneMenusjintintjintintID; // cache method id
+jmethodID jintcloneAxesModeljintintID; // cache method id
+jmethodID jintcreateSubWinjintintID; // cache method id
+jmethodID jintcreateTextjintintjobjectArray_java_lang_Stringjava_lang_StringjintintjintintjdoubledoublejdoubledoublejbooleanbooleanjdoubleArray_doubledoublejintintjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjintintID; // cache method id
+jclass stringArrayClass;
+jmethodID jintcreateArcjintintjdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejdoubledoublejintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanID; // cache method id
+jmethodID jintcreateAxisjintintjintintjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejintintjstringjava_lang_StringjintintjintintjintintjbooleanbooleanID; // cache method id
+jmethodID jintcreateCompoundjintintjintArray_intintID; // cache method id
+jmethodID jintcreateCompoundSeqjintintjintintID; // cache method id
+jmethodID jintcreateFecjintintjdoubleArray_doubledoublejintArray_intintjintArray_intintjbooleanbooleanID; // cache method id
+jmethodID jintcreateGrayplotjintintjintintjdoubleArray_doubledoublejintintjintintID; // cache method id
+jmethodID jintcreatePolylinejintintjbooleanbooleanjintintjintintjbooleanbooleanjintArray_intintjintintjbooleanbooleanjintintjbooleanbooleanjintintjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanjbooleanbooleanID; // cache method id
+jmethodID jintcreateLegendjintintjobjectArray_java_lang_Stringjava_lang_StringjintArray_intintID; // cache method id
+jmethodID jintcreateSegsjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejbooleanbooleanjintArray_intintjdoubledoubleID; // cache method id
+jmethodID jintcreateChampjintintjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubledoublejbooleanbooleanID; // cache method id
+jmethodID jintcreateSurfacejintintjintintjintintjintintID; // cache method id
+jmethodID voidinitSubWinTo3djintintjstringjava_lang_StringjbooleanbooleanjintArray_intintjdoubledoublejdoubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID; // cache method id
+jmethodID jintcreateLightjintintjintintjbooleanbooleanjdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoublejdoubleArray_doubledoubleID; // cache method id
+
+
+
+jobject instance;
+jclass instanceClass; // cache class
+
+
+// Caching (if any)
+
+
+/**
+* Get the environment matching to the current thread.
+*/
+virtual JNIEnv * getCurrentEnv();
+
+public:
+// Constructor
+/**
+* Create a wrapping of the object from a JNIEnv.
+* It will call the default constructor
+* @param JEnv_ the Java Env
+*/
+Builder(JavaVM * jvm_);
+
+/**
+* Create a wrapping of an already existing object from a JNIEnv.
+* The object must have already been instantiated
+* @param JEnv_ the Java Env
+* @param JObj the object
+*/
+Builder(JavaVM * jvm_, jobject JObj);
+
+
+/**
+* This is a fake constructor to avoid the constructor
+* chaining when dealing with extended giws classes
+*/
+#ifdef FAKEGIWSDATATYPE
+Builder(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
+#endif
+
+// Destructor
+~Builder();
+
+// Generic method
+// Synchronization methods
+/**
+* Enter monitor associated with the object.
+* Equivalent of creating a "synchronized(obj)" scope in Java.
+*/
+void synchronize();
+
+/**
+* Exit monitor associated with the object.
+* Equivalent of ending a "synchronized(obj)" scope.
+*/
+void endSynchronize();
+
+// Methods
+static int createRect(JavaVM * jvm_, int pparentsubwinUID, double x, double y, double height, double width, int foreground, int background, int isfilled, int isline);
+
+static int cloneGraphicContext(JavaVM * jvm_, int sourceIdentifier, int destIdentifier);
+
+static int cloneFontContext(JavaVM * jvm_, int sourceIdentifier, int destIdentifier);
+
+static int createHiddenLabel(JavaVM * jvm_, int parent);
+
+static bool isAxesRedrawing(JavaVM * jvm_, int subWin);
+
+static int createLabel(JavaVM * jvm_, int parent, int type);
+
+static int createNewFigureWithAxes(JavaVM * jvm_);
+
+static int createFigure(JavaVM * jvm_, bool dockable, int menubarType, int toolbarType, bool defaultAxes, bool visible);
+
+static void cloneMenus(JavaVM * jvm_, int model, int newParent);
+
+static int cloneAxesModel(JavaVM * jvm_, int parent);
+
+static int createSubWin(JavaVM * jvm_, int parent);
+
+static int createText(JavaVM * jvm_, int parent, char const* const* text, int textSize, int rows, int cols, double x, double y, bool autoSize, double const* userSize, int userSizeSize, int centerPos, int foreground, bool isForeground, int background, bool isBackground, bool boxed, bool line, bool filled, int align);
+
+static int createArc(JavaVM * jvm_, int parent, double x, double y, double h, double w, double start, double end, int foreground, bool isForeground, int background, bool isBackground, bool filled, bool line);
+
+static int createAxis(JavaVM * jvm_, int parent, int dir, int tics, double const* vx, int vxSize, double const* vy, int vySize, int subint, char const* format, int fontSize, int textColor, int ticsColor, bool seg);
+
+static int createCompound(JavaVM * jvm_, int parent, int const* children, int childrenSize);
+
+static int createCompoundSeq(JavaVM * jvm_, int parent, int childrenCount);
+
+static int createFec(JavaVM * jvm_, int parent, double const* zminmax, int zminmaxSize, int const* colminmax, int colminmaxSize, int const* colout, int coloutSize, bool with_mesh);
+
+static int createGrayplot(JavaVM * jvm_, int parent, int type, double const* pvecx, int pvecxSize, int n1, int n2);
+
+static int createPolyline(JavaVM * jvm_, int parent, bool closed, int plot, int foreground, bool isForeground, int const* background, int backgroundSize, int mark_style, bool isMarkStyle, int mark_foreground, bool isMarkForeground, int mark_background, bool isMarkBackground, bool isline, bool isfilled, bool ismark, bool isinterp);
+
+static int createLegend(JavaVM * jvm_, int parent, char const* const* text, int textSize, int const* handles, int handlesSize);
+
+static int createSegs(JavaVM * jvm_, int parent, double const* vx, int vxSize, double const* vy, int vySize, double const* vz, int vzSize, bool isVZ, int const* style, int styleSize, double arsize);
+
+static int createChamp(JavaVM * jvm_, int parent, double const* vx, int vxSize, double const* vy, int vySize, double const* vfx, int vfxSize, double const* vfy, int vfySize, double arsize, bool typeofchamp);
+
+static int createSurface(JavaVM * jvm_, int parent, int typeof3d, int colorFlag, int colorMode);
+
+static void initSubWinTo3d(JavaVM * jvm_, int parent, char const* legend, bool isLegend, int const* flag, int flagSize, double alpha, double theta, double const* ebox, int eboxSize, double const* x, int xSize, double const* y, int ySize, double const* z, int zSize);
+
+static int createLight(JavaVM * jvm_, int parent, int type, bool visible, double const* pos, int posSize, double const* dir, int dirSize, double const* ambient, int ambientSize, double const* diffuse, int diffuseSize, double const* specular, int specularSize);
+
+
+ /**
+ * Get class name to use for static methods
+ * @return class name to use for static methods
+ */
+
+ static const std::string className()
+ {
+ return "org/scilab/modules/graphic_objects/builder/Builder";
+ }
+
+
+ /**
+ * Get class to use for static methods
+ * @return class to use for static methods
+ */
+
+ static jclass initClass(JNIEnv * curEnv)
+ {
+ static jclass cls = 0;
+
+ if (cls == 0)
+ {
+ jclass _cls = curEnv->FindClass(className().c_str());
+ if (_cls)
+ {
+ cls = static_cast<jclass>(curEnv->NewGlobalRef(_cls));
+ }
+ }
+
+ return cls;
+ }
+
+};
+
+
+}
+#endif
diff --git a/modules/graphic_objects/src/jni/CallGraphicController.cpp b/modules/graphic_objects/src/jni/CallGraphicController.cpp
new file mode 100755
index 000000000..29389997b
--- /dev/null
+++ b/modules/graphic_objects/src/jni/CallGraphicController.cpp
@@ -0,0 +1,813 @@
+#include "CallGraphicController.hxx"
+/* Generated by GIWS (version 2.0.2) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/graphic_objects.giws.xml
+*/
+/*
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software. You can use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors have only limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+namespace org_scilab_modules_graphic_objects {
+
+ // Static declarations (if any)
+
+// Returns the current env
+
+JNIEnv * CallGraphicController::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+if (res != JNI_OK) {
+throw GiwsException::JniException(getCurrentEnv());
+}
+return curEnv;
+}
+// Destructor
+
+CallGraphicController::~CallGraphicController() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+curEnv->DeleteGlobalRef(this->stringArrayClass);}
+// Constructors
+CallGraphicController::CallGraphicController(JavaVM * jvm_) {
+jmethodID constructObject = NULL ;
+jobject localInstance ;
+jclass localClass ;
+
+const std::string construct="<init>";
+const std::string param="()V";
+jvm=jvm_;
+
+JNIEnv * curEnv = getCurrentEnv();
+
+localClass = curEnv->FindClass( this->className().c_str() ) ;
+if (localClass == NULL) {
+ throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+}
+
+this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+
+/* localClass is not needed anymore */
+curEnv->DeleteLocalRef(localClass);
+
+if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+
+constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
+if(constructObject == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
+if(localInstance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+this->instance = curEnv->NewGlobalRef(localInstance) ;
+if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+/* localInstance not needed anymore */
+curEnv->DeleteLocalRef(localInstance);
+
+ /* Methods ID set to NULL */
+voiddeleteGraphicObjectjintintID=NULL;
+jintcloneGraphicObjectjintintID=NULL;
+jintaskGraphicObjectjintintID=NULL;
+voidsetGraphicObjectRelationshipjintintjintintID=NULL;
+voidremoveRelationShipAndDeletejintintID=NULL;
+jstringgetGraphicObjectPropertyAsStringjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjstringjava_lang_StringID=NULL;
+jobjectArray_getGraphicObjectPropertyAsStringVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjobjectArray_java_lang_Stringjava_lang_StringID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjdoubledoubleID=NULL;
+jdoubleArray_getGraphicObjectPropertyAsDoubleVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjdoubleArray_doubledoubleID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjintintID=NULL;
+jintArray_getGraphicObjectPropertyAsIntegerVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjintArray_intintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjbooleanbooleanID=NULL;
+jintArray_getGraphicObjectPropertyAsBooleanVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjbooleanArray_booleanbooleanID=NULL;
+voidregisterScilabViewID=NULL;
+voidunregisterScilabViewID=NULL;
+jintgetConsoleIdentifierID=NULL;
+voidbuildFigureMenuBarjintintID=NULL;
+
+
+}
+
+CallGraphicController::CallGraphicController(JavaVM * jvm_, jobject JObj) {
+ jvm=jvm_;
+
+ JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+ this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+ curEnv->DeleteLocalRef(localClass);
+
+ if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+ }
+
+ this->instance = curEnv->NewGlobalRef(JObj) ;
+ if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+ }
+ /* Methods ID set to NULL */
+ voiddeleteGraphicObjectjintintID=NULL;
+jintcloneGraphicObjectjintintID=NULL;
+jintaskGraphicObjectjintintID=NULL;
+voidsetGraphicObjectRelationshipjintintjintintID=NULL;
+voidremoveRelationShipAndDeletejintintID=NULL;
+jstringgetGraphicObjectPropertyAsStringjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjstringjava_lang_StringID=NULL;
+jobjectArray_getGraphicObjectPropertyAsStringVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjobjectArray_java_lang_Stringjava_lang_StringID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjdoubledoubleID=NULL;
+jdoubleArray_getGraphicObjectPropertyAsDoubleVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjdoubleArray_doubledoubleID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjintintID=NULL;
+jintArray_getGraphicObjectPropertyAsIntegerVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjintArray_intintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjbooleanbooleanID=NULL;
+jintArray_getGraphicObjectPropertyAsBooleanVectorjintintjintintID=NULL;
+jbooleansetGraphicObjectPropertyjintintjintintjbooleanArray_booleanbooleanID=NULL;
+voidregisterScilabViewID=NULL;
+voidunregisterScilabViewID=NULL;
+jintgetConsoleIdentifierID=NULL;
+voidbuildFigureMenuBarjintintID=NULL;
+
+
+}
+
+// Generic methods
+
+void CallGraphicController::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "CallGraphicController");
+}
+}
+
+void CallGraphicController::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "CallGraphicController");
+}
+}
+// Method(s)
+
+void CallGraphicController::deleteGraphicObject (JavaVM * jvm_, int id){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voiddeleteGraphicObjectjintintID = curEnv->GetStaticMethodID(cls, "deleteGraphicObject", "(I)V" ) ;
+if (voiddeleteGraphicObjectjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "deleteGraphicObject");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voiddeleteGraphicObjectjintintID ,id);
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+int CallGraphicController::cloneGraphicObject (JavaVM * jvm_, int id){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintcloneGraphicObjectjintintID = curEnv->GetStaticMethodID(cls, "cloneGraphicObject", "(I)I" ) ;
+if (jintcloneGraphicObjectjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "cloneGraphicObject");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintcloneGraphicObjectjintintID ,id));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+int CallGraphicController::askGraphicObject (JavaVM * jvm_, int typeName){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintaskGraphicObjectjintintID = curEnv->GetStaticMethodID(cls, "askGraphicObject", "(I)I" ) ;
+if (jintaskGraphicObjectjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "askGraphicObject");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintaskGraphicObjectjintintID ,typeName));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+void CallGraphicController::setGraphicObjectRelationship (JavaVM * jvm_, int parentId, int childId){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidsetGraphicObjectRelationshipjintintjintintID = curEnv->GetStaticMethodID(cls, "setGraphicObjectRelationship", "(II)V" ) ;
+if (voidsetGraphicObjectRelationshipjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectRelationship");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voidsetGraphicObjectRelationshipjintintjintintID ,parentId, childId);
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+void CallGraphicController::removeRelationShipAndDelete (JavaVM * jvm_, int id){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidremoveRelationShipAndDeletejintintID = curEnv->GetStaticMethodID(cls, "removeRelationShipAndDelete", "(I)V" ) ;
+if (voidremoveRelationShipAndDeletejintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "removeRelationShipAndDelete");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voidremoveRelationShipAndDeletejintintID ,id);
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+char* CallGraphicController::getGraphicObjectPropertyAsString (JavaVM * jvm_, int id, int propertyName){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jstringgetGraphicObjectPropertyAsStringjintintjintintID = curEnv->GetStaticMethodID(cls, "getGraphicObjectPropertyAsString", "(II)Ljava/lang/String;" ) ;
+if (jstringgetGraphicObjectPropertyAsStringjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getGraphicObjectPropertyAsString");
+}
+
+ jstring res = static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringgetGraphicObjectPropertyAsStringjintintjintintID ,id, propertyName));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}if (res != NULL) {
+
+const char *tempString = curEnv->GetStringUTFChars(res, 0);
+char * myStringBuffer = new char[strlen(tempString) + 1];
+strcpy(myStringBuffer, tempString);
+curEnv->ReleaseStringUTFChars(res, tempString);
+curEnv->DeleteLocalRef(res);
+if (curEnv->ExceptionCheck()) {
+delete[] myStringBuffer;
+ throw GiwsException::JniCallMethodException(curEnv);
+}
+return myStringBuffer;
+ } else {
+curEnv->DeleteLocalRef(res);
+return NULL;
+}
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, char const* value){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(IILjava/lang/String;)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+jstring value_ = curEnv->NewStringUTF( value );
+if (value != NULL && value_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjstringjava_lang_StringID ,id, propertyName, value_));
+ curEnv->DeleteLocalRef(value_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+char** CallGraphicController::getGraphicObjectPropertyAsStringVector (JavaVM * jvm_, int id, int propertyName){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jobjectArray_getGraphicObjectPropertyAsStringVectorjintintjintintID = curEnv->GetStaticMethodID(cls, "getGraphicObjectPropertyAsStringVector", "(II)[Ljava/lang/String;" ) ;
+if (jobjectArray_getGraphicObjectPropertyAsStringVectorjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getGraphicObjectPropertyAsStringVector");
+}
+
+ jobjectArray res = static_cast<jobjectArray>( curEnv->CallStaticObjectMethod(cls, jobjectArray_getGraphicObjectPropertyAsStringVectorjintintjintintID ,id, propertyName));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}if (res != NULL) { int lenRow;
+ lenRow = curEnv->GetArrayLength(res);
+
+char **arrayOfString;
+arrayOfString = new char *[lenRow];
+for (jsize i = 0; i < lenRow; i++){
+jstring resString = reinterpret_cast<jstring>(curEnv->GetObjectArrayElement(res, i));
+const char *tempString = curEnv->GetStringUTFChars(resString, 0);
+arrayOfString[i] = new char[strlen(tempString) + 1];
+
+strcpy(arrayOfString[i], tempString);
+curEnv->ReleaseStringUTFChars(resString, tempString);
+curEnv->DeleteLocalRef(resString);
+}
+if (curEnv->ExceptionCheck()) {
+delete[] arrayOfString;
+ throw GiwsException::JniCallMethodException(curEnv);
+}
+curEnv->DeleteLocalRef(res);
+return arrayOfString;
+ } else {
+curEnv->DeleteLocalRef(res);
+return NULL;
+}
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, char const* const* value, int valueSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjobjectArray_java_lang_Stringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(II[Ljava/lang/String;)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjobjectArray_java_lang_Stringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+jclass stringArrayClass = curEnv->FindClass("java/lang/String");
+
+// create java array of strings.
+jobjectArray value_ = curEnv->NewObjectArray( valueSize, stringArrayClass, NULL);
+if (value_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+// convert each char * to java strings and fill the java array.
+for ( int i = 0; i < valueSize; i++)
+{
+jstring TempString = curEnv->NewStringUTF( value[i] );
+if (TempString == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetObjectArrayElement( value_, i, TempString);
+
+// avoid keeping reference on too many strings
+curEnv->DeleteLocalRef(TempString);
+}
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjobjectArray_java_lang_Stringjava_lang_StringID ,id, propertyName, value_));
+ curEnv->DeleteLocalRef(stringArrayClass);
+curEnv->DeleteLocalRef(value_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, double value){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjdoubledoubleID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(IID)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjdoubledoubleID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjdoubledoubleID ,id, propertyName, value));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+double* CallGraphicController::getGraphicObjectPropertyAsDoubleVector (JavaVM * jvm_, int id, int propertyName){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jdoubleArray_getGraphicObjectPropertyAsDoubleVectorjintintjintintID = curEnv->GetStaticMethodID(cls, "getGraphicObjectPropertyAsDoubleVector", "(II)[D" ) ;
+if (jdoubleArray_getGraphicObjectPropertyAsDoubleVectorjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getGraphicObjectPropertyAsDoubleVector");
+}
+
+ jdoubleArray res = static_cast<jdoubleArray>( curEnv->CallStaticObjectMethod(cls, jdoubleArray_getGraphicObjectPropertyAsDoubleVectorjintintjintintID ,id, propertyName));
+ if (res == NULL) { return NULL; }
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}int lenRow;
+ lenRow = curEnv->GetArrayLength(res);
+jboolean isCopy = JNI_FALSE;
+
+/* GetPrimitiveArrayCritical is faster than getXXXArrayElements */
+jdouble *resultsArray = static_cast<jdouble *>(curEnv->GetPrimitiveArrayCritical(res, &isCopy));
+double* myArray= new double[ lenRow];
+
+for (jsize i = 0; i < lenRow; i++){
+myArray[i]=resultsArray[i];
+}
+curEnv->ReleasePrimitiveArrayCritical(res, resultsArray, JNI_ABORT);
+
+ curEnv->DeleteLocalRef(res);
+if (curEnv->ExceptionCheck()) {
+delete[] myArray;
+ throw GiwsException::JniCallMethodException(curEnv);
+}
+return myArray;
+
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, double const* value, int valueSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjdoubleArray_doubledoubleID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(II[D)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjdoubleArray_doubledoubleID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+jdoubleArray value_ = curEnv->NewDoubleArray( valueSize ) ;
+
+if (value_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetDoubleArrayRegion( value_, 0, valueSize, (jdouble*)(value) ) ;
+
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjdoubleArray_doubledoubleID ,id, propertyName, value_));
+ curEnv->DeleteLocalRef(value_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, int value){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjintintID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(III)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjintintID ,id, propertyName, value));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+int* CallGraphicController::getGraphicObjectPropertyAsIntegerVector (JavaVM * jvm_, int id, int propertyName){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintArray_getGraphicObjectPropertyAsIntegerVectorjintintjintintID = curEnv->GetStaticMethodID(cls, "getGraphicObjectPropertyAsIntegerVector", "(II)[I" ) ;
+if (jintArray_getGraphicObjectPropertyAsIntegerVectorjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getGraphicObjectPropertyAsIntegerVector");
+}
+
+ jintArray res = static_cast<jintArray>( curEnv->CallStaticObjectMethod(cls, jintArray_getGraphicObjectPropertyAsIntegerVectorjintintjintintID ,id, propertyName));
+ if (res == NULL) { return NULL; }
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}int lenRow;
+ lenRow = curEnv->GetArrayLength(res);
+jboolean isCopy = JNI_FALSE;
+
+/* GetPrimitiveArrayCritical is faster than getXXXArrayElements */
+jint *resultsArray = static_cast<jint *>(curEnv->GetPrimitiveArrayCritical(res, &isCopy));
+int* myArray= new int[ lenRow];
+
+for (jsize i = 0; i < lenRow; i++){
+myArray[i]=resultsArray[i];
+}
+curEnv->ReleasePrimitiveArrayCritical(res, resultsArray, JNI_ABORT);
+
+ curEnv->DeleteLocalRef(res);
+if (curEnv->ExceptionCheck()) {
+delete[] myArray;
+ throw GiwsException::JniCallMethodException(curEnv);
+}
+return myArray;
+
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, int const* value, int valueSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjintArray_intintID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(II[I)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjintArray_intintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+jintArray value_ = curEnv->NewIntArray( valueSize ) ;
+
+if (value_ == NULL)
+{
+// check that allocation succeed
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+curEnv->SetIntArrayRegion( value_, 0, valueSize, (jint*)(value) ) ;
+
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjintArray_intintID ,id, propertyName, value_));
+ curEnv->DeleteLocalRef(value_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, bool value){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(IIZ)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+jboolean value_ = (static_cast<bool>(value) ? JNI_TRUE : JNI_FALSE);
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjbooleanbooleanID ,id, propertyName, value_));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+int* CallGraphicController::getGraphicObjectPropertyAsBooleanVector (JavaVM * jvm_, int id, int propertyName){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintArray_getGraphicObjectPropertyAsBooleanVectorjintintjintintID = curEnv->GetStaticMethodID(cls, "getGraphicObjectPropertyAsBooleanVector", "(II)[I" ) ;
+if (jintArray_getGraphicObjectPropertyAsBooleanVectorjintintjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getGraphicObjectPropertyAsBooleanVector");
+}
+
+ jintArray res = static_cast<jintArray>( curEnv->CallStaticObjectMethod(cls, jintArray_getGraphicObjectPropertyAsBooleanVectorjintintjintintID ,id, propertyName));
+ if (res == NULL) { return NULL; }
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}int lenRow;
+ lenRow = curEnv->GetArrayLength(res);
+jboolean isCopy = JNI_FALSE;
+
+/* GetPrimitiveArrayCritical is faster than getXXXArrayElements */
+jint *resultsArray = static_cast<jint *>(curEnv->GetPrimitiveArrayCritical(res, &isCopy));
+int* myArray= new int[ lenRow];
+
+for (jsize i = 0; i < lenRow; i++){
+myArray[i]=resultsArray[i];
+}
+curEnv->ReleasePrimitiveArrayCritical(res, resultsArray, JNI_ABORT);
+
+ curEnv->DeleteLocalRef(res);
+if (curEnv->ExceptionCheck()) {
+delete[] myArray;
+ throw GiwsException::JniCallMethodException(curEnv);
+}
+return myArray;
+
+}
+
+bool CallGraphicController::setGraphicObjectProperty (JavaVM * jvm_, int id, int propertyName, bool const* value, int valueSize){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jbooleansetGraphicObjectPropertyjintintjintintjbooleanArray_booleanbooleanID = curEnv->GetStaticMethodID(cls, "setGraphicObjectProperty", "(II[Z)Z" ) ;
+if (jbooleansetGraphicObjectPropertyjintintjintintjbooleanArray_booleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "setGraphicObjectProperty");
+}
+
+jbooleanArray value_ = curEnv->NewBooleanArray( valueSize ) ;
+curEnv->SetBooleanArrayRegion( value_, 0, valueSize, (jboolean*)value ) ;
+
+ jboolean res = static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetGraphicObjectPropertyjintintjintintjbooleanArray_booleanbooleanID ,id, propertyName, value_));
+ curEnv->DeleteLocalRef(value_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return (res == JNI_TRUE);
+
+}
+
+void CallGraphicController::registerScilabView (JavaVM * jvm_){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidregisterScilabViewID = curEnv->GetStaticMethodID(cls, "registerScilabView", "()V" ) ;
+if (voidregisterScilabViewID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "registerScilabView");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voidregisterScilabViewID );
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+void CallGraphicController::unregisterScilabView (JavaVM * jvm_){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidunregisterScilabViewID = curEnv->GetStaticMethodID(cls, "unregisterScilabView", "()V" ) ;
+if (voidunregisterScilabViewID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "unregisterScilabView");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voidunregisterScilabViewID );
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+int CallGraphicController::getConsoleIdentifier (JavaVM * jvm_){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintgetConsoleIdentifierID = curEnv->GetStaticMethodID(cls, "getConsoleIdentifier", "()I" ) ;
+if (jintgetConsoleIdentifierID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "getConsoleIdentifier");
+}
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintgetConsoleIdentifierID ));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+void CallGraphicController::buildFigureMenuBar (JavaVM * jvm_, int figureId){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID voidbuildFigureMenuBarjintintID = curEnv->GetStaticMethodID(cls, "buildFigureMenuBar", "(I)V" ) ;
+if (voidbuildFigureMenuBarjintintID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "buildFigureMenuBar");
+}
+
+ curEnv->CallStaticVoidMethod(cls, voidbuildFigureMenuBarjintintID ,figureId);
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+}
+
+}
diff --git a/modules/graphic_objects/src/jni/CallGraphicController.hxx b/modules/graphic_objects/src/jni/CallGraphicController.hxx
new file mode 100755
index 000000000..d79a52186
--- /dev/null
+++ b/modules/graphic_objects/src/jni/CallGraphicController.hxx
@@ -0,0 +1,242 @@
+/* Generated by GIWS (version 2.0.2) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/graphic_objects.giws.xml
+*/
+/*
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software. You can use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors have only limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+
+#ifndef __ORG_SCILAB_MODULES_GRAPHIC_OBJECTS_CALLGRAPHICCONTROLLER__
+#define __ORG_SCILAB_MODULES_GRAPHIC_OBJECTS_CALLGRAPHICCONTROLLER__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+
+#include "GiwsException.hxx"
+
+ #if defined(_MSC_VER) /* Defined anyway with Visual */
+ #include <Windows.h>
+ #else
+ typedef signed char byte;
+ #endif
+
+
+#ifndef GIWSEXPORT
+# if defined(_MSC_VER) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define GIWSEXPORT
+# else
+# define GIWSEXPORT __declspec(dllexport)
+# endif
+# else
+# if __GNUC__ >= 4
+# define GIWSEXPORT __attribute__ ((visibility ("default")))
+# else
+# define GIWSEXPORT
+# endif
+# endif
+#endif
+
+namespace org_scilab_modules_graphic_objects {
+class GIWSEXPORT CallGraphicController {
+
+private:
+JavaVM * jvm;
+
+protected:
+jmethodID voiddeleteGraphicObjectjintintID; // cache method id
+jmethodID jintcloneGraphicObjectjintintID; // cache method id
+jmethodID jintaskGraphicObjectjintintID; // cache method id
+jmethodID voidsetGraphicObjectRelationshipjintintjintintID; // cache method id
+jmethodID voidremoveRelationShipAndDeletejintintID; // cache method id
+jmethodID jstringgetGraphicObjectPropertyAsStringjintintjintintID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjstringjava_lang_StringID; // cache method id
+jmethodID jobjectArray_getGraphicObjectPropertyAsStringVectorjintintjintintID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjobjectArray_java_lang_Stringjava_lang_StringID; // cache method id
+jclass stringArrayClass;
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjdoubledoubleID; // cache method id
+jmethodID jdoubleArray_getGraphicObjectPropertyAsDoubleVectorjintintjintintID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjdoubleArray_doubledoubleID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjintintID; // cache method id
+jmethodID jintArray_getGraphicObjectPropertyAsIntegerVectorjintintjintintID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjintArray_intintID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjbooleanbooleanID; // cache method id
+jmethodID jintArray_getGraphicObjectPropertyAsBooleanVectorjintintjintintID; // cache method id
+jmethodID jbooleansetGraphicObjectPropertyjintintjintintjbooleanArray_booleanbooleanID; // cache method id
+jmethodID voidregisterScilabViewID; // cache method id
+jmethodID voidunregisterScilabViewID; // cache method id
+jmethodID jintgetConsoleIdentifierID; // cache method id
+jmethodID voidbuildFigureMenuBarjintintID; // cache method id
+
+
+
+jobject instance;
+jclass instanceClass; // cache class
+
+
+// Caching (if any)
+
+
+/**
+* Get the environment matching to the current thread.
+*/
+virtual JNIEnv * getCurrentEnv();
+
+public:
+// Constructor
+/**
+* Create a wrapping of the object from a JNIEnv.
+* It will call the default constructor
+* @param JEnv_ the Java Env
+*/
+CallGraphicController(JavaVM * jvm_);
+
+/**
+* Create a wrapping of an already existing object from a JNIEnv.
+* The object must have already been instantiated
+* @param JEnv_ the Java Env
+* @param JObj the object
+*/
+CallGraphicController(JavaVM * jvm_, jobject JObj);
+
+
+/**
+* This is a fake constructor to avoid the constructor
+* chaining when dealing with extended giws classes
+*/
+#ifdef FAKEGIWSDATATYPE
+CallGraphicController(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
+#endif
+
+// Destructor
+~CallGraphicController();
+
+// Generic method
+// Synchronization methods
+/**
+* Enter monitor associated with the object.
+* Equivalent of creating a "synchronized(obj)" scope in Java.
+*/
+void synchronize();
+
+/**
+* Exit monitor associated with the object.
+* Equivalent of ending a "synchronized(obj)" scope.
+*/
+void endSynchronize();
+
+// Methods
+static void deleteGraphicObject(JavaVM * jvm_, int id);
+
+static int cloneGraphicObject(JavaVM * jvm_, int id);
+
+static int askGraphicObject(JavaVM * jvm_, int typeName);
+
+static void setGraphicObjectRelationship(JavaVM * jvm_, int parentId, int childId);
+
+static void removeRelationShipAndDelete(JavaVM * jvm_, int id);
+
+static char* getGraphicObjectPropertyAsString(JavaVM * jvm_, int id, int propertyName);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, char const* value);
+
+static char** getGraphicObjectPropertyAsStringVector(JavaVM * jvm_, int id, int propertyName);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, char const* const* value, int valueSize);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, double value);
+
+static double* getGraphicObjectPropertyAsDoubleVector(JavaVM * jvm_, int id, int propertyName);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, double const* value, int valueSize);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, int value);
+
+static int* getGraphicObjectPropertyAsIntegerVector(JavaVM * jvm_, int id, int propertyName);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, int const* value, int valueSize);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, bool value);
+
+static int* getGraphicObjectPropertyAsBooleanVector(JavaVM * jvm_, int id, int propertyName);
+
+static bool setGraphicObjectProperty(JavaVM * jvm_, int id, int propertyName, bool const* value, int valueSize);
+
+static void registerScilabView(JavaVM * jvm_);
+
+static void unregisterScilabView(JavaVM * jvm_);
+
+static int getConsoleIdentifier(JavaVM * jvm_);
+
+static void buildFigureMenuBar(JavaVM * jvm_, int figureId);
+
+
+ /**
+ * Get class name to use for static methods
+ * @return class name to use for static methods
+ */
+
+ static const std::string className()
+ {
+ return "org/scilab/modules/graphic_objects/CallGraphicController";
+ }
+
+
+ /**
+ * Get class to use for static methods
+ * @return class to use for static methods
+ */
+
+ static jclass initClass(JNIEnv * curEnv)
+ {
+ static jclass cls = 0;
+
+ if (cls == 0)
+ {
+ jclass _cls = curEnv->FindClass(className().c_str());
+ if (_cls)
+ {
+ cls = static_cast<jclass>(curEnv->NewGlobalRef(_cls));
+ }
+ }
+
+ return cls;
+ }
+
+};
+
+
+}
+#endif
diff --git a/modules/graphic_objects/src/jni/CallXmlLoader.cpp b/modules/graphic_objects/src/jni/CallXmlLoader.cpp
new file mode 100755
index 000000000..5fc0c955f
--- /dev/null
+++ b/modules/graphic_objects/src/jni/CallXmlLoader.cpp
@@ -0,0 +1,258 @@
+#include "CallXmlLoader.hxx"
+/* Generated by GIWS (version 2.0.2) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/graphic_objects.giws.xml
+*/
+/*
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software. You can use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors have only limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+namespace org_scilab_modules_graphic_objects {
+
+ // Static declarations (if any)
+
+// Returns the current env
+
+JNIEnv * CallXmlLoader::getCurrentEnv() {
+JNIEnv * curEnv = NULL;
+jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+if (res != JNI_OK) {
+throw GiwsException::JniException(getCurrentEnv());
+}
+return curEnv;
+}
+// Destructor
+
+CallXmlLoader::~CallXmlLoader() {
+JNIEnv * curEnv = NULL;
+this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+curEnv->DeleteGlobalRef(this->instance);
+curEnv->DeleteGlobalRef(this->instanceClass);
+}
+// Constructors
+CallXmlLoader::CallXmlLoader(JavaVM * jvm_) {
+jmethodID constructObject = NULL ;
+jobject localInstance ;
+jclass localClass ;
+
+const std::string construct="<init>";
+const std::string param="()V";
+jvm=jvm_;
+
+JNIEnv * curEnv = getCurrentEnv();
+
+localClass = curEnv->FindClass( this->className().c_str() ) ;
+if (localClass == NULL) {
+ throw GiwsException::JniClassNotFoundException(curEnv, this->className());
+}
+
+this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+
+/* localClass is not needed anymore */
+curEnv->DeleteLocalRef(localClass);
+
+if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+
+constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
+if(constructObject == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
+if(localInstance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+
+this->instance = curEnv->NewGlobalRef(localInstance) ;
+if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+}
+/* localInstance not needed anymore */
+curEnv->DeleteLocalRef(localInstance);
+
+ /* Methods ID set to NULL */
+jintLoadjstringjava_lang_StringID=NULL;
+jstringSavejintintjstringjava_lang_StringjbooleanbooleanID=NULL;
+jintDomLoadjstringjava_lang_StringID=NULL;
+
+
+}
+
+CallXmlLoader::CallXmlLoader(JavaVM * jvm_, jobject JObj) {
+ jvm=jvm_;
+
+ JNIEnv * curEnv = getCurrentEnv();
+
+jclass localClass = curEnv->GetObjectClass(JObj);
+ this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
+ curEnv->DeleteLocalRef(localClass);
+
+ if (this->instanceClass == NULL) {
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+ }
+
+ this->instance = curEnv->NewGlobalRef(JObj) ;
+ if(this->instance == NULL){
+throw GiwsException::JniObjectCreationException(curEnv, this->className());
+ }
+ /* Methods ID set to NULL */
+ jintLoadjstringjava_lang_StringID=NULL;
+jstringSavejintintjstringjava_lang_StringjbooleanbooleanID=NULL;
+jintDomLoadjstringjava_lang_StringID=NULL;
+
+
+}
+
+// Generic methods
+
+void CallXmlLoader::synchronize() {
+if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "CallXmlLoader");
+}
+}
+
+void CallXmlLoader::endSynchronize() {
+if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
+throw GiwsException::JniMonitorException(getCurrentEnv(), "CallXmlLoader");
+}
+}
+// Method(s)
+
+int CallXmlLoader::Load (JavaVM * jvm_, char const* filename){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintLoadjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "Load", "(Ljava/lang/String;)I" ) ;
+if (jintLoadjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "Load");
+}
+
+jstring filename_ = curEnv->NewStringUTF( filename );
+if (filename != NULL && filename_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintLoadjstringjava_lang_StringID ,filename_));
+ curEnv->DeleteLocalRef(filename_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+char* CallXmlLoader::Save (JavaVM * jvm_, int figure, char const* filename, bool isReverse){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jstringSavejintintjstringjava_lang_StringjbooleanbooleanID = curEnv->GetStaticMethodID(cls, "Save", "(ILjava/lang/String;Z)Ljava/lang/String;" ) ;
+if (jstringSavejintintjstringjava_lang_StringjbooleanbooleanID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "Save");
+}
+
+jstring filename_ = curEnv->NewStringUTF( filename );
+if (filename != NULL && filename_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+jboolean isReverse_ = (static_cast<bool>(isReverse) ? JNI_TRUE : JNI_FALSE);
+
+ jstring res = static_cast<jstring>( curEnv->CallStaticObjectMethod(cls, jstringSavejintintjstringjava_lang_StringjbooleanbooleanID ,figure, filename_, isReverse_));
+ if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}if (res != NULL) {
+
+const char *tempString = curEnv->GetStringUTFChars(res, 0);
+char * myStringBuffer = new char[strlen(tempString) + 1];
+strcpy(myStringBuffer, tempString);
+curEnv->ReleaseStringUTFChars(res, tempString);
+curEnv->DeleteLocalRef(res);
+curEnv->DeleteLocalRef(filename_);
+if (curEnv->ExceptionCheck()) {
+delete[] myStringBuffer;
+ throw GiwsException::JniCallMethodException(curEnv);
+}
+return myStringBuffer;
+ } else {
+curEnv->DeleteLocalRef(res);
+return NULL;
+}
+}
+
+int CallXmlLoader::DomLoad (JavaVM * jvm_, char const* filename){
+
+JNIEnv * curEnv = NULL;
+jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
+jclass cls = initClass(curEnv);
+if ( cls == NULL) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+
+static jmethodID jintDomLoadjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "DomLoad", "(Ljava/lang/String;)I" ) ;
+if (jintDomLoadjstringjava_lang_StringID == NULL) {
+throw GiwsException::JniMethodNotFoundException(curEnv, "DomLoad");
+}
+
+jstring filename_ = curEnv->NewStringUTF( filename );
+if (filename != NULL && filename_ == NULL)
+{
+throw GiwsException::JniBadAllocException(curEnv);
+}
+
+
+ jint res = static_cast<jint>( curEnv->CallStaticIntMethod(cls, jintDomLoadjstringjava_lang_StringID ,filename_));
+ curEnv->DeleteLocalRef(filename_);
+if (curEnv->ExceptionCheck()) {
+throw GiwsException::JniCallMethodException(curEnv);
+}
+return res;
+
+}
+
+}
diff --git a/modules/graphic_objects/src/jni/CallXmlLoader.hxx b/modules/graphic_objects/src/jni/CallXmlLoader.hxx
new file mode 100755
index 000000000..9951851ba
--- /dev/null
+++ b/modules/graphic_objects/src/jni/CallXmlLoader.hxx
@@ -0,0 +1,184 @@
+/* Generated by GIWS (version 2.0.2) with command:
+giws --disable-return-size-array --output-dir src/jni/ --throws-exception-on-error --description-file src/jni/graphic_objects.giws.xml
+*/
+/*
+
+This is generated code.
+
+This software is a computer program whose purpose is to hide the complexity
+of accessing Java objects/methods from C++ code.
+
+This software is governed by the CeCILL-B license under French law and
+abiding by the rules of distribution of free software. You can use,
+modify and/ or redistribute the software under the terms of the CeCILL-B
+license as circulated by CEA, CNRS and INRIA at the following URL
+"http://www.cecill.info".
+
+As a counterpart to the access to the source code and rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors have only limited
+liability.
+
+In this respect, the user's attention is drawn to the risks associated
+with loading, using, modifying and/or developing or reproducing the
+software by the user in light of its specific status of free software,
+that may mean that it is complicated to manipulate, and that also
+therefore means that it is reserved for developers and experienced
+professionals having in-depth computer knowledge. Users are therefore
+encouraged to load and test the software's suitability as regards their
+requirements in conditions enabling the security of their systems and/or
+data to be ensured and, more generally, to use and operate it in the
+same conditions as regards security.
+
+The fact that you are presently reading this means that you have had
+knowledge of the CeCILL-B license and that you accept its terms.
+*/
+
+
+#ifndef __ORG_SCILAB_MODULES_GRAPHIC_OBJECTS_CALLXMLLOADER__
+#define __ORG_SCILAB_MODULES_GRAPHIC_OBJECTS_CALLXMLLOADER__
+#include <iostream>
+#include <string>
+#include <string.h>
+#include <stdlib.h>
+#include <jni.h>
+
+#include "GiwsException.hxx"
+
+ #if defined(_MSC_VER) /* Defined anyway with Visual */
+ #include <Windows.h>
+ #else
+ typedef signed char byte;
+ #endif
+
+
+#ifndef GIWSEXPORT
+# if defined(_MSC_VER) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define GIWSEXPORT
+# else
+# define GIWSEXPORT __declspec(dllexport)
+# endif
+# else
+# if __GNUC__ >= 4
+# define GIWSEXPORT __attribute__ ((visibility ("default")))
+# else
+# define GIWSEXPORT
+# endif
+# endif
+#endif
+
+namespace org_scilab_modules_graphic_objects {
+class GIWSEXPORT CallXmlLoader {
+
+private:
+JavaVM * jvm;
+
+protected:
+jmethodID jintLoadjstringjava_lang_StringID; // cache method id
+jmethodID jstringSavejintintjstringjava_lang_StringjbooleanbooleanID; // cache method id
+jmethodID jintDomLoadjstringjava_lang_StringID; // cache method id
+
+
+
+jobject instance;
+jclass instanceClass; // cache class
+
+
+// Caching (if any)
+
+
+/**
+* Get the environment matching to the current thread.
+*/
+virtual JNIEnv * getCurrentEnv();
+
+public:
+// Constructor
+/**
+* Create a wrapping of the object from a JNIEnv.
+* It will call the default constructor
+* @param JEnv_ the Java Env
+*/
+CallXmlLoader(JavaVM * jvm_);
+
+/**
+* Create a wrapping of an already existing object from a JNIEnv.
+* The object must have already been instantiated
+* @param JEnv_ the Java Env
+* @param JObj the object
+*/
+CallXmlLoader(JavaVM * jvm_, jobject JObj);
+
+
+/**
+* This is a fake constructor to avoid the constructor
+* chaining when dealing with extended giws classes
+*/
+#ifdef FAKEGIWSDATATYPE
+CallXmlLoader(fakeGiwsDataType::fakeGiwsDataType /* unused */) {}
+#endif
+
+// Destructor
+~CallXmlLoader();
+
+// Generic method
+// Synchronization methods
+/**
+* Enter monitor associated with the object.
+* Equivalent of creating a "synchronized(obj)" scope in Java.
+*/
+void synchronize();
+
+/**
+* Exit monitor associated with the object.
+* Equivalent of ending a "synchronized(obj)" scope.
+*/
+void endSynchronize();
+
+// Methods
+static int Load(JavaVM * jvm_, char const* filename);
+
+static char* Save(JavaVM * jvm_, int figure, char const* filename, bool isReverse);
+
+static int DomLoad(JavaVM * jvm_, char const* filename);
+
+
+ /**
+ * Get class name to use for static methods
+ * @return class name to use for static methods
+ */
+
+ static const std::string className()
+ {
+ return "org/scilab/modules/graphic_objects/CallXmlLoader";
+ }
+
+
+ /**
+ * Get class to use for static methods
+ * @return class to use for static methods
+ */
+
+ static jclass initClass(JNIEnv * curEnv)
+ {
+ static jclass cls = 0;
+
+ if (cls == 0)
+ {
+ jclass _cls = curEnv->FindClass(className().c_str());
+ if (_cls)
+ {
+ cls = static_cast<jclass>(curEnv->NewGlobalRef(_cls));
+ }
+ }
+
+ return cls;
+ }
+
+};
+
+
+}
+#endif
diff --git a/modules/graphic_objects/src/jni/DataLoader.i b/modules/graphic_objects/src/jni/DataLoader.i
new file mode 100755
index 000000000..38dd18220
--- /dev/null
+++ b/modules/graphic_objects/src/jni/DataLoader.i
@@ -0,0 +1,93 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010-2012 - DIGITEO - Pierre LANDO
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ */
+
+%module DataLoader
+
+%include "arrays_java.i"
+
+%define NIO_BUFFER_TYPEMAP(CTYPE, LABEL, BUFFERTYPE)
+ %typemap(jni) CTYPE* LABEL "jobject"
+ %typemap(jtype) CTYPE* LABEL "BUFFERTYPE"
+ %typemap(jstype) CTYPE* LABEL "BUFFERTYPE"
+ %typemap(javain, pre=" assert $javainput.isDirect() : \"Buffer must be allocated direct.\";") CTYPE* LABEL "$javainput"
+ %typemap(javaout) CTYPE* LABEL {
+ return $jnicall;
+ }
+ %typemap(in) CTYPE* LABEL {
+ $1 = (*jenv)->GetDirectBufferAddress(jenv, $input);
+ if ($1 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ %typemap(memberin) CTYPE* LABEL {
+ if ($input) {
+ $1 = $input;
+ } else {
+ $1 = 0;
+ }
+ }
+%enddef
+
+/*
+NIO_BUFFER_TYPEMAP(void, BUFF, java.nio.Buffer);
+NIO_BUFFER_TYPEMAP(char, BUFF, java.nio.ByteBuffer);
+NIO_BUFFER_TYPEMAP(char, CBUFF, java.nio.CharBuffer);
+NIO_BUFFER_TYPEMAP(short, BUFF, java.nio.ShortBuffer);
+NIO_BUFFER_TYPEMAP(unsigned short, BUFF, java.nio.IntBuffer);
+NIO_BUFFER_TYPEMAP(unsigned int, BUFF, java.nio.LongBuffer);
+NIO_BUFFER_TYPEMAP(long, BUFF, java.nio.IntBuffer);
+NIO_BUFFER_TYPEMAP(unsigned long, BUFF, java.nio.LongBuffer);
+NIO_BUFFER_TYPEMAP(long long, BUFF, java.nio.LongBuffer);
+NIO_BUFFER_TYPEMAP(double, BUFF, java.nio.DoubleBuffer);
+*/
+NIO_BUFFER_TYPEMAP(int, BUFF, java.nio.IntBuffer);
+NIO_BUFFER_TYPEMAP(unsigned char, BUFF, java.nio.ByteBuffer);
+NIO_BUFFER_TYPEMAP(float, BUFF, java.nio.FloatBuffer);
+#undef NIO_BUFFER_TYPEMAP
+
+%pragma(java) jniclasscode=%{
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+%}
+
+%apply int* BUFF {int* buffer};
+%apply unsigned char* BUFF {unsigned char* buffer};
+%apply float* BUFF {float* buffer};
+%apply float* BUFF {float* position};
+
+%typemap(jni) JavaDirectBuffer "jobject"
+%typemap(jtype) JavaDirectBuffer "java.nio.ByteBuffer"
+%typemap(jstype) JavaDirectBuffer "java.nio.ByteBuffer"
+
+%typemap(out) JavaDirectBuffer {
+ if ($1.address)
+ {
+ jresult = (*jenv)->NewDirectByteBuffer(jenv, $1.address, $1.size);
+ }
+ }
+
+%typemap(javaout) JavaDirectBuffer {
+ return $jnicall;
+}
+
+%ignore JavaDirectBuffer;
+
+%include "../../includes/DataLoader.hxx"
+
+%inline
+%{
+ #include "DataLoader.hxx"
+%}
diff --git a/modules/graphic_objects/src/jni/DataLoader_wrap.c b/modules/graphic_objects/src/jni/DataLoader_wrap.c
new file mode 100755
index 000000000..76f5e3eb8
--- /dev/null
+++ b/modules/graphic_objects/src/jni/DataLoader_wrap.c
@@ -0,0 +1,1186 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGJAVA
+
+/* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+# elif defined(__ICC)
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+# pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+# define SWIGUNUSEDPARM(p)
+# else
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# ifndef GCC_HASCLASSVISIBILITY
+# define GCC_HASCLASSVISIBILITY
+# endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+# define SWIGEXPORT __attribute__ ((visibility("default")))
+# else
+# define SWIGEXPORT
+# endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+/* Fix for jlong on some versions of gcc on Windows */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+ typedef long long __int64;
+#endif
+
+/* Fix for jlong on 64-bit x86 Solaris */
+#if defined(__x86_64)
+# ifdef _LP64
+# undef _LP64
+# endif
+#endif
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Support for throwing Java exceptions */
+typedef enum {
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
+} SWIG_JavaExceptionCodes;
+
+typedef struct {
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
+} SWIG_JavaExceptions_t;
+
+
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] = {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
+ };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code)
+ except_ptr++;
+
+ (*jenv)->ExceptionClear(jenv);
+ excep = (*jenv)->FindClass(jenv, except_ptr->java_exception);
+ if (excep)
+ (*jenv)->ThrowNew(jenv, excep, msg);
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
+
+
+#if defined(SWIG_NOINCLUDE) || defined(SWIG_NOARRAYS)
+
+
+static int SWIG_JavaArrayInSchar (JNIEnv *jenv, jbyte **jarr, signed char **carr, jbyteArray input);
+static void SWIG_JavaArrayArgoutSchar (JNIEnv *jenv, jbyte *jarr, signed char *carr, jbyteArray input);
+static jbyteArray SWIG_JavaArrayOutSchar (JNIEnv *jenv, signed char *result, jsize sz);
+
+
+static int SWIG_JavaArrayInUchar (JNIEnv *jenv, jshort **jarr, unsigned char **carr, jshortArray input);
+static void SWIG_JavaArrayArgoutUchar (JNIEnv *jenv, jshort *jarr, unsigned char *carr, jshortArray input);
+static jshortArray SWIG_JavaArrayOutUchar (JNIEnv *jenv, unsigned char *result, jsize sz);
+
+
+static int SWIG_JavaArrayInShort (JNIEnv *jenv, jshort **jarr, short **carr, jshortArray input);
+static void SWIG_JavaArrayArgoutShort (JNIEnv *jenv, jshort *jarr, short *carr, jshortArray input);
+static jshortArray SWIG_JavaArrayOutShort (JNIEnv *jenv, short *result, jsize sz);
+
+
+static int SWIG_JavaArrayInUshort (JNIEnv *jenv, jint **jarr, unsigned short **carr, jintArray input);
+static void SWIG_JavaArrayArgoutUshort (JNIEnv *jenv, jint *jarr, unsigned short *carr, jintArray input);
+static jintArray SWIG_JavaArrayOutUshort (JNIEnv *jenv, unsigned short *result, jsize sz);
+
+
+static int SWIG_JavaArrayInInt (JNIEnv *jenv, jint **jarr, int **carr, jintArray input);
+static void SWIG_JavaArrayArgoutInt (JNIEnv *jenv, jint *jarr, int *carr, jintArray input);
+static jintArray SWIG_JavaArrayOutInt (JNIEnv *jenv, int *result, jsize sz);
+
+
+static int SWIG_JavaArrayInUint (JNIEnv *jenv, jlong **jarr, unsigned int **carr, jlongArray input);
+static void SWIG_JavaArrayArgoutUint (JNIEnv *jenv, jlong *jarr, unsigned int *carr, jlongArray input);
+static jlongArray SWIG_JavaArrayOutUint (JNIEnv *jenv, unsigned int *result, jsize sz);
+
+
+static int SWIG_JavaArrayInLong (JNIEnv *jenv, jint **jarr, long **carr, jintArray input);
+static void SWIG_JavaArrayArgoutLong (JNIEnv *jenv, jint *jarr, long *carr, jintArray input);
+static jintArray SWIG_JavaArrayOutLong (JNIEnv *jenv, long *result, jsize sz);
+
+
+static int SWIG_JavaArrayInUlong (JNIEnv *jenv, jlong **jarr, unsigned long **carr, jlongArray input);
+static void SWIG_JavaArrayArgoutUlong (JNIEnv *jenv, jlong *jarr, unsigned long *carr, jlongArray input);
+static jlongArray SWIG_JavaArrayOutUlong (JNIEnv *jenv, unsigned long *result, jsize sz);
+
+
+static int SWIG_JavaArrayInLonglong (JNIEnv *jenv, jlong **jarr, jlong **carr, jlongArray input);
+static void SWIG_JavaArrayArgoutLonglong (JNIEnv *jenv, jlong *jarr, jlong *carr, jlongArray input);
+static jlongArray SWIG_JavaArrayOutLonglong (JNIEnv *jenv, jlong *result, jsize sz);
+
+
+static int SWIG_JavaArrayInFloat (JNIEnv *jenv, jfloat **jarr, float **carr, jfloatArray input);
+static void SWIG_JavaArrayArgoutFloat (JNIEnv *jenv, jfloat *jarr, float *carr, jfloatArray input);
+static jfloatArray SWIG_JavaArrayOutFloat (JNIEnv *jenv, float *result, jsize sz);
+
+
+static int SWIG_JavaArrayInDouble (JNIEnv *jenv, jdouble **jarr, double **carr, jdoubleArray input);
+static void SWIG_JavaArrayArgoutDouble (JNIEnv *jenv, jdouble *jarr, double *carr, jdoubleArray input);
+static jdoubleArray SWIG_JavaArrayOutDouble (JNIEnv *jenv, double *result, jsize sz);
+
+
+#else
+
+
+/* signed char[] support */
+static int SWIG_JavaArrayInSchar (JNIEnv *jenv, jbyte **jarr, signed char **carr, jbyteArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetByteArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (signed char*) calloc(sz, sizeof(signed char));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (signed char)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutSchar (JNIEnv *jenv, jbyte *jarr, signed char *carr, jbyteArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jbyte)carr[i];
+ (*jenv)->ReleaseByteArrayElements(jenv, input, jarr, 0);
+}
+
+static jbyteArray SWIG_JavaArrayOutSchar (JNIEnv *jenv, signed char *result, jsize sz) {
+ jbyte *arr;
+ int i;
+ jbyteArray jresult = (*jenv)->NewByteArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetByteArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jbyte)result[i];
+ (*jenv)->ReleaseByteArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* unsigned char[] support */
+static int SWIG_JavaArrayInUchar (JNIEnv *jenv, jshort **jarr, unsigned char **carr, jshortArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetShortArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (unsigned char*) calloc(sz, sizeof(unsigned char));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (unsigned char)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutUchar (JNIEnv *jenv, jshort *jarr, unsigned char *carr, jshortArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jshort)carr[i];
+ (*jenv)->ReleaseShortArrayElements(jenv, input, jarr, 0);
+}
+
+static jshortArray SWIG_JavaArrayOutUchar (JNIEnv *jenv, unsigned char *result, jsize sz) {
+ jshort *arr;
+ int i;
+ jshortArray jresult = (*jenv)->NewShortArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetShortArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jshort)result[i];
+ (*jenv)->ReleaseShortArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* short[] support */
+static int SWIG_JavaArrayInShort (JNIEnv *jenv, jshort **jarr, short **carr, jshortArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetShortArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (short*) calloc(sz, sizeof(short));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (short)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutShort (JNIEnv *jenv, jshort *jarr, short *carr, jshortArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jshort)carr[i];
+ (*jenv)->ReleaseShortArrayElements(jenv, input, jarr, 0);
+}
+
+static jshortArray SWIG_JavaArrayOutShort (JNIEnv *jenv, short *result, jsize sz) {
+ jshort *arr;
+ int i;
+ jshortArray jresult = (*jenv)->NewShortArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetShortArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jshort)result[i];
+ (*jenv)->ReleaseShortArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* unsigned short[] support */
+static int SWIG_JavaArrayInUshort (JNIEnv *jenv, jint **jarr, unsigned short **carr, jintArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (unsigned short*) calloc(sz, sizeof(unsigned short));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (unsigned short)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutUshort (JNIEnv *jenv, jint *jarr, unsigned short *carr, jintArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jint)carr[i];
+ (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0);
+}
+
+static jintArray SWIG_JavaArrayOutUshort (JNIEnv *jenv, unsigned short *result, jsize sz) {
+ jint *arr;
+ int i;
+ jintArray jresult = (*jenv)->NewIntArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jint)result[i];
+ (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* int[] support */
+static int SWIG_JavaArrayInInt (JNIEnv *jenv, jint **jarr, int **carr, jintArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (int*) calloc(sz, sizeof(int));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (int)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutInt (JNIEnv *jenv, jint *jarr, int *carr, jintArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jint)carr[i];
+ (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0);
+}
+
+static jintArray SWIG_JavaArrayOutInt (JNIEnv *jenv, int *result, jsize sz) {
+ jint *arr;
+ int i;
+ jintArray jresult = (*jenv)->NewIntArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jint)result[i];
+ (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* unsigned int[] support */
+static int SWIG_JavaArrayInUint (JNIEnv *jenv, jlong **jarr, unsigned int **carr, jlongArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (unsigned int*) calloc(sz, sizeof(unsigned int));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (unsigned int)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutUint (JNIEnv *jenv, jlong *jarr, unsigned int *carr, jlongArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jlong)carr[i];
+ (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0);
+}
+
+static jlongArray SWIG_JavaArrayOutUint (JNIEnv *jenv, unsigned int *result, jsize sz) {
+ jlong *arr;
+ int i;
+ jlongArray jresult = (*jenv)->NewLongArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jlong)result[i];
+ (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* long[] support */
+static int SWIG_JavaArrayInLong (JNIEnv *jenv, jint **jarr, long **carr, jintArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetIntArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (long*) calloc(sz, sizeof(long));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (long)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutLong (JNIEnv *jenv, jint *jarr, long *carr, jintArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jint)carr[i];
+ (*jenv)->ReleaseIntArrayElements(jenv, input, jarr, 0);
+}
+
+static jintArray SWIG_JavaArrayOutLong (JNIEnv *jenv, long *result, jsize sz) {
+ jint *arr;
+ int i;
+ jintArray jresult = (*jenv)->NewIntArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetIntArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jint)result[i];
+ (*jenv)->ReleaseIntArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* unsigned long[] support */
+static int SWIG_JavaArrayInUlong (JNIEnv *jenv, jlong **jarr, unsigned long **carr, jlongArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (unsigned long*) calloc(sz, sizeof(unsigned long));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (unsigned long)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutUlong (JNIEnv *jenv, jlong *jarr, unsigned long *carr, jlongArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jlong)carr[i];
+ (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0);
+}
+
+static jlongArray SWIG_JavaArrayOutUlong (JNIEnv *jenv, unsigned long *result, jsize sz) {
+ jlong *arr;
+ int i;
+ jlongArray jresult = (*jenv)->NewLongArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jlong)result[i];
+ (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* jlong[] support */
+static int SWIG_JavaArrayInLonglong (JNIEnv *jenv, jlong **jarr, jlong **carr, jlongArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetLongArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (jlong*) calloc(sz, sizeof(jlong));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (jlong)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutLonglong (JNIEnv *jenv, jlong *jarr, jlong *carr, jlongArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jlong)carr[i];
+ (*jenv)->ReleaseLongArrayElements(jenv, input, jarr, 0);
+}
+
+static jlongArray SWIG_JavaArrayOutLonglong (JNIEnv *jenv, jlong *result, jsize sz) {
+ jlong *arr;
+ int i;
+ jlongArray jresult = (*jenv)->NewLongArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetLongArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jlong)result[i];
+ (*jenv)->ReleaseLongArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* float[] support */
+static int SWIG_JavaArrayInFloat (JNIEnv *jenv, jfloat **jarr, float **carr, jfloatArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetFloatArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (float*) calloc(sz, sizeof(float));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (float)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutFloat (JNIEnv *jenv, jfloat *jarr, float *carr, jfloatArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jfloat)carr[i];
+ (*jenv)->ReleaseFloatArrayElements(jenv, input, jarr, 0);
+}
+
+static jfloatArray SWIG_JavaArrayOutFloat (JNIEnv *jenv, float *result, jsize sz) {
+ jfloat *arr;
+ int i;
+ jfloatArray jresult = (*jenv)->NewFloatArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetFloatArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jfloat)result[i];
+ (*jenv)->ReleaseFloatArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+/* double[] support */
+static int SWIG_JavaArrayInDouble (JNIEnv *jenv, jdouble **jarr, double **carr, jdoubleArray input) {
+ int i;
+ jsize sz;
+ if (!input) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "null array");
+ return 0;
+ }
+ sz = (*jenv)->GetArrayLength(jenv, input);
+ *jarr = (*jenv)->GetDoubleArrayElements(jenv, input, 0);
+ if (!*jarr)
+ return 0;
+ *carr = (double*) calloc(sz, sizeof(double));
+ if (!*carr) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaOutOfMemoryError, "array memory allocation failed");
+ return 0;
+ }
+ for (i=0; i<sz; i++)
+ (*carr)[i] = (double)(*jarr)[i];
+ return 1;
+}
+
+static void SWIG_JavaArrayArgoutDouble (JNIEnv *jenv, jdouble *jarr, double *carr, jdoubleArray input) {
+ int i;
+ jsize sz = (*jenv)->GetArrayLength(jenv, input);
+ for (i=0; i<sz; i++)
+ jarr[i] = (jdouble)carr[i];
+ (*jenv)->ReleaseDoubleArrayElements(jenv, input, jarr, 0);
+}
+
+static jdoubleArray SWIG_JavaArrayOutDouble (JNIEnv *jenv, double *result, jsize sz) {
+ jdouble *arr;
+ int i;
+ jdoubleArray jresult = (*jenv)->NewDoubleArray(jenv, sz);
+ if (!jresult)
+ return NULL;
+ arr = (*jenv)->GetDoubleArrayElements(jenv, jresult, 0);
+ if (!arr)
+ return NULL;
+ for (i=0; i<sz; i++)
+ arr[i] = (jdouble)result[i];
+ (*jenv)->ReleaseDoubleArrayElements(jenv, jresult, arr, 0);
+ return jresult;
+}
+
+
+#endif
+
+
+ #include "DataLoader.hxx"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getTextureWidth(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getTextureWidth(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getTextureHeight(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getTextureHeight(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillTextureData(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3) {
+ jint jresult = 0 ;
+ int arg1 ;
+ unsigned char *arg2 = (unsigned char *) 0 ;
+ int arg3 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ result = (int)fillTextureData(arg1,arg2,arg3);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillSubTextureData(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3, jint jarg4, jint jarg5, jint jarg6, jint jarg7) {
+ jint jresult = 0 ;
+ int arg1 ;
+ unsigned char *arg2 = (unsigned char *) 0 ;
+ int arg3 ;
+ int arg4 ;
+ int arg5 ;
+ int arg6 ;
+ int arg7 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ arg5 = (int)jarg5;
+ arg6 = (int)jarg6;
+ arg7 = (int)jarg7;
+ result = (int)fillSubTextureData(arg1,arg2,arg3,arg4,arg5,arg6,arg7);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getDataSize(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getDataSize(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillVertices(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3, jint jarg4, jint jarg5, jdoubleArray jarg6, jdoubleArray jarg7, jint jarg8) {
+ int arg1 ;
+ float *arg2 = (float *) 0 ;
+ int arg3 ;
+ int arg4 ;
+ int arg5 ;
+ double *arg6 ;
+ double *arg7 ;
+ int arg8 ;
+ jdouble *jarr6 ;
+ jdouble *jarr7 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ arg5 = (int)jarg5;
+ if (!SWIG_JavaArrayInDouble(jenv, &jarr6, (double **)&arg6, jarg6)) return ;
+ if (!SWIG_JavaArrayInDouble(jenv, &jarr7, (double **)&arg7, jarg7)) return ;
+ arg8 = (int)jarg8;
+ fillVertices(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8);
+ SWIG_JavaArrayArgoutDouble(jenv, jarr6, (double *)arg6, jarg6);
+ SWIG_JavaArrayArgoutDouble(jenv, jarr7, (double *)arg7, jarg7);
+ free(arg6);
+ free(arg7);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillNormals(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jobject jarg3, jint jarg4, jint jarg5) {
+ int arg1 ;
+ float *arg2 = (float *) 0 ;
+ float *arg3 = (float *) 0 ;
+ int arg4 ;
+ int arg5 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ {
+ arg3 = (*jenv)->GetDirectBufferAddress(jenv, jarg3);
+ if (arg3 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg4 = (int)jarg4;
+ arg5 = (int)jarg5;
+ fillNormals(arg1,arg2,arg3,arg4,arg5);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillColors(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3, jint jarg4) {
+ int arg1 ;
+ float *arg2 = (float *) 0 ;
+ int arg3 ;
+ int arg4 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ fillColors(arg1,arg2,arg3,arg4);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillTextureCoordinates(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3) {
+ int arg1 ;
+ float *arg2 = (float *) 0 ;
+ int arg3 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ fillTextureCoordinates(arg1,arg2,arg3);
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getIndicesSize(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getIndicesSize(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillIndices(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3, jint jarg4) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int *arg2 = (int *) 0 ;
+ int arg3 ;
+ int arg4 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ result = (int)fillIndices(arg1,arg2,arg3,arg4);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getWireIndicesSize(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getWireIndicesSize(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillWireIndices(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3, jint jarg4) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int *arg2 = (int *) 0 ;
+ int arg3 ;
+ int arg4 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ arg4 = (int)jarg4;
+ result = (int)fillWireIndices(arg1,arg2,arg3,arg4);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getMarkIndicesSize(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getMarkIndicesSize(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_fillMarkIndices(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2, jint jarg3) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int *arg2 = (int *) 0 ;
+ int arg3 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ arg3 = (int)jarg3;
+ result = (int)fillMarkIndices(arg1,arg2,arg3);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getTextureData(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ JavaDirectBuffer result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = getTextureData(arg1);
+ {
+ if ((&result)->address)
+ {
+ jresult = (*jenv)->NewDirectByteBuffer(jenv, (&result)->address, (&result)->size);
+ }
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getTextureImageType(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getTextureImageType(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getTextureDataType(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getTextureDataType(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_getTextureGLType(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getTextureGLType(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_disposeTextureData(JNIEnv *jenv, jclass jcls, jint jarg1, jobject jarg2) {
+ int arg1 ;
+ unsigned char *arg2 = (unsigned char *) 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ {
+ arg2 = (*jenv)->GetDirectBufferAddress(jenv, jarg2);
+ if (arg2 == NULL) {
+ SWIG_JavaThrowException(jenv, SWIG_JavaRuntimeException, "Unable to get address of direct buffer. Buffer must be allocated direct.");
+ }
+ }
+ disposeTextureData(arg1,arg2);
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_isTextureRowOrder(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)isTextureRowOrder(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_DataLoaderJNI_setABGRExt(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ int arg1 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ setABGRExt(arg1);
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/modules/graphic_objects/src/jni/ObjectData.i b/modules/graphic_objects/src/jni/ObjectData.i
new file mode 100755
index 000000000..878eb006c
--- /dev/null
+++ b/modules/graphic_objects/src/jni/ObjectData.i
@@ -0,0 +1,286 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2012 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+// swig -java -package org.scilab.modules.graphic_objects -outdir ../java/org/scilab/modules/graphic_objects/ ObjectData.i
+
+%module ObjectData
+
+
+%pragma(java) jniclasscode=%{
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+%}
+
+
+%typemap(jni) double * "jobject"
+%typemap(jtype) double * "Object"
+%typemap(jstype) double * "Object"
+%typemap(javain) double * "$javainput"
+%typemap(javaout) double * { return $jnicall; }
+
+%typemap(in) double * {
+ $1 = (*jenv)->GetDoubleArrayElements(jenv, $input, NULL);
+}
+
+%typemap(argout) double * {
+ (*jenv)->ReleaseDoubleArrayElements(jenv, $input, $1, 0);
+}
+
+%typemap(jni) int * "jobject"
+%typemap(jtype) int * "Object"
+%typemap(jstype) int * "Object"
+%typemap(javain) int * "$javainput"
+%typemap(javaout) int * { return $jnicall; }
+
+%typemap(in) int * {
+ $1 = (*jenv)->GetIntArrayElements(jenv, $input, NULL);
+}
+
+%typemap(argout) int * {
+ (*jenv)->ReleaseIntArrayElements(jenv, $input, $1, 0);
+}
+
+%typemap(out) double * CHAMPX {
+ $result = (*jenv)->NewDoubleArray(jenv, _getChampXSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getChampXSize(arg1), $1);
+}
+
+%apply double * CHAMPX { double * getChampX(int uid)}
+
+
+%{
+
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "MALLOC.h"
+#include "math.h"
+
+double * getChampX(int uid)
+{
+ double * vx;
+ getGraphicObjectProperty(uid, __GO_BASE_X__, jni_double_vector, (void**)&vx);
+ return vx;
+}
+
+int _getChampXSize(int uid) {
+
+ int * dimension;
+ getGraphicObjectProperty(uid, __GO_CHAMP_DIMENSIONS__, jni_int_vector, (void**)&dimension);
+ return dimension[0];
+}
+%}
+
+
+
+%typemap(out) double * CHAMPY {
+ $result = (*jenv)->NewDoubleArray(jenv, _getChampYSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getChampYSize(arg1), $1);
+}
+
+%apply double * CHAMPY { double * getChampY(int uid) }
+%{
+
+double * getChampY(int uid) {
+
+ double * vy;
+ getGraphicObjectProperty(uid, __GO_BASE_Y__, jni_double_vector, (void**)&vy);
+ return vy;
+}
+
+int _getChampYSize(int uid) {
+
+ int * dimension;
+ getGraphicObjectProperty(uid, __GO_CHAMP_DIMENSIONS__, jni_int_vector, (void**)&dimension);
+ return dimension[1];
+}
+%}
+
+
+
+%typemap(out) double * ARROWS {
+ $result = (*jenv)->NewDoubleArray(jenv, _getArrowsSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getArrowsSize(arg1), $1);
+}
+
+%apply double * ARROWS { double * getArrows(int uid) }
+%{
+
+double * getArrows(int uid) {
+
+ double * arrows;
+ getGraphicObjectProperty(uid, __GO_DIRECTION__, jni_double_vector, (void**)&arrows);
+ return arrows;
+}
+
+int _getArrowsSize(int uid) {
+
+ int numArrows;
+ int * pNumArrows = &numArrows;
+ getGraphicObjectProperty(uid, __GO_NUMBER_ARROWS__, jni_int, (void**)&pNumArrows);
+ return numArrows * 3;
+}
+%}
+
+
+
+%typemap(out) double * SEGS {
+ $result = (*jenv)->NewDoubleArray(jenv, _getSegsSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getSegsSize(arg1), $1);
+}
+
+%apply double * SEGS { double * getSegsData(int uid) }
+%{
+
+double * getSegsData(int uid) {
+
+ double * data;
+ getGraphicObjectProperty(uid, __GO_BASE__, jni_double_vector, (void**)&data);
+ return data;
+}
+
+int _getSegsSize(int uid) {
+
+ int base;
+ int * pBase = &base;
+ getGraphicObjectProperty(uid, __GO_NUMBER_ARROWS__, jni_int, (void**)&pBase);
+ return base * 3;
+}
+%}
+
+%typemap(out) double * FEC {
+ $result = (*jenv)->NewDoubleArray(jenv, _getFecElementsSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getFecElementsSize(arg1), $1);
+}
+
+%apply double * FEC { double * getFecElements(int uid) }
+%{
+
+double * getFecElements(int uid) {
+
+ double * elements;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_ELEMENTS__, jni_double_vector, (void**)&elements);
+ return elements;
+}
+
+int _getFecElementsSize(int uid) {
+
+ int indices;
+ int * pIndices = &indices;
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&pIndices);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ return indices * (nVertex + 2);
+}
+
+int getFecNumVerticesByElement(int uid) {
+
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ return nVertex;
+}
+
+%}
+
+%typemap(out) double * FEC_XY {
+ $result = (*jenv)->NewDoubleArray(jenv, _getFecDataSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getFecDataSize(arg1), $1);
+}
+
+%apply double * FEC_XY { double * getFecData(int uid) }
+%{
+
+double * getFecData(int uid) {
+
+ double * data;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**)&data);
+ return data;
+}
+
+int _getFecDataSize(int uid) {
+
+ int size;
+ int * pSize = &size;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**)&pSize);
+ return size * 3;
+}
+
+%}
+
+
+%typemap(out) double * ARC_ULP {
+ $result = (*jenv)->NewDoubleArray(jenv, 3);
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, 3, $1);
+}
+
+%apply double * ARC_ULP { double * getArcUpperLeftPoint(int uid) }
+%{
+
+double * getArcUpperLeftPoint(int uid) {
+
+ double * upperLeftPoint;
+ getGraphicObjectProperty(uid, __GO_UPPER_LEFT_POINT__, jni_double_vector, (void**)&upperLeftPoint);
+ return upperLeftPoint;
+}
+
+%}
+
+%typemap(out) double * ARC_DATA {
+ $result = (*jenv)->NewDoubleArray(jenv, 4);
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, 4, $1);
+}
+
+%apply double * ARC_DATA { double * getArcData(int uid) }
+%{
+
+double * getArcData(int uid) {
+
+ double * data = (double *)MALLOC(sizeof(double)*4);
+ double value;
+ double * temp = &value;
+ getGraphicObjectProperty(uid, __GO_HEIGHT__, jni_double, (void**)&temp);
+ data[0] = value;
+ getGraphicObjectProperty(uid, __GO_WIDTH__, jni_double, (void**)&temp);
+ data[1] = value;
+ getGraphicObjectProperty(uid, __GO_START_ANGLE__, jni_double, (void**)&temp);
+ data[2] = value;
+ getGraphicObjectProperty(uid, __GO_END_ANGLE__, jni_double, (void**)&temp);
+ data[3] = value;
+ return data;
+}
+
+%}
+
+
+double * getChampX(int uid);
+double * getChampY(int uid);
+double * getArrows(int uid);
+double * getSegsData(int uid);
+double * getFecElements(int uid);
+double * getFecData(int uid);
+double * getArcUpperLeftPoint(int uid);
+double * getArcData(int uid);
+int getFecNumVerticesByElement(int uid);
diff --git a/modules/graphic_objects/src/jni/ObjectData_wrap.c b/modules/graphic_objects/src/jni/ObjectData_wrap.c
new file mode 100755
index 000000000..f46629111
--- /dev/null
+++ b/modules/graphic_objects/src/jni/ObjectData_wrap.c
@@ -0,0 +1,500 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGJAVA
+
+/* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+# elif defined(__ICC)
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+# pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+# define SWIGUNUSEDPARM(p)
+# else
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# ifndef GCC_HASCLASSVISIBILITY
+# define GCC_HASCLASSVISIBILITY
+# endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+# define SWIGEXPORT __attribute__ ((visibility("default")))
+# else
+# define SWIGEXPORT
+# endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+/* Fix for jlong on some versions of gcc on Windows */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+ typedef long long __int64;
+#endif
+
+/* Fix for jlong on 64-bit x86 Solaris */
+#if defined(__x86_64)
+# ifdef _LP64
+# undef _LP64
+# endif
+#endif
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Support for throwing Java exceptions */
+typedef enum {
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
+} SWIG_JavaExceptionCodes;
+
+typedef struct {
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
+} SWIG_JavaExceptions_t;
+
+
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] = {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
+ };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code)
+ except_ptr++;
+
+ (*jenv)->ExceptionClear(jenv);
+ excep = (*jenv)->FindClass(jenv, except_ptr->java_exception);
+ if (excep)
+ (*jenv)->ThrowNew(jenv, excep, msg);
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
+
+
+
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "MALLOC.h"
+#include "math.h"
+
+double * getChampX(int uid)
+{
+ double * vx;
+ getGraphicObjectProperty(uid, __GO_BASE_X__, jni_double_vector, (void**)&vx);
+ return vx;
+}
+
+int _getChampXSize(int uid) {
+
+ int * dimension;
+ getGraphicObjectProperty(uid, __GO_CHAMP_DIMENSIONS__, jni_int_vector, (void**)&dimension);
+ return dimension[0];
+}
+
+
+
+double * getChampY(int uid) {
+
+ double * vy;
+ getGraphicObjectProperty(uid, __GO_BASE_Y__, jni_double_vector, (void**)&vy);
+ return vy;
+}
+
+int _getChampYSize(int uid) {
+
+ int * dimension;
+ getGraphicObjectProperty(uid, __GO_CHAMP_DIMENSIONS__, jni_int_vector, (void**)&dimension);
+ return dimension[1];
+}
+
+
+
+double * getArrows(int uid) {
+
+ double * arrows;
+ getGraphicObjectProperty(uid, __GO_DIRECTION__, jni_double_vector, (void**)&arrows);
+ return arrows;
+}
+
+int _getArrowsSize(int uid) {
+
+ int numArrows;
+ int * pNumArrows = &numArrows;
+ getGraphicObjectProperty(uid, __GO_NUMBER_ARROWS__, jni_int, (void**)&pNumArrows);
+ return numArrows * 3;
+}
+
+
+
+double * getSegsData(int uid) {
+
+ double * data;
+ getGraphicObjectProperty(uid, __GO_BASE__, jni_double_vector, (void**)&data);
+ return data;
+}
+
+int _getSegsSize(int uid) {
+
+ int base;
+ int * pBase = &base;
+ getGraphicObjectProperty(uid, __GO_NUMBER_ARROWS__, jni_int, (void**)&pBase);
+ return base * 3;
+}
+
+
+
+double * getFecElements(int uid) {
+
+ double * elements;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_ELEMENTS__, jni_double_vector, (void**)&elements);
+ return elements;
+}
+
+int _getFecElementsSize(int uid) {
+
+ int indices;
+ int * pIndices = &indices;
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&pIndices);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ return indices * (nVertex + 2);
+}
+
+int getFecNumVerticesByElement(int uid) {
+
+ int nVertex = 0;
+ int* piNVertex = &nVertex;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__, jni_int, (void**) &piNVertex);
+
+ return nVertex;
+}
+
+
+
+
+double * getFecData(int uid) {
+
+ double * data;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**)&data);
+ return data;
+}
+
+int _getFecDataSize(int uid) {
+
+ int size;
+ int * pSize = &size;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**)&pSize);
+ return size * 3;
+}
+
+
+
+
+double * getArcUpperLeftPoint(int uid) {
+
+ double * upperLeftPoint;
+ getGraphicObjectProperty(uid, __GO_UPPER_LEFT_POINT__, jni_double_vector, (void**)&upperLeftPoint);
+ return upperLeftPoint;
+}
+
+
+
+
+double * getArcData(int uid) {
+
+ double * data = (double *)MALLOC(sizeof(double)*4);
+ double value;
+ double * temp = &value;
+ getGraphicObjectProperty(uid, __GO_HEIGHT__, jni_double, (void**)&temp);
+ data[0] = value;
+ getGraphicObjectProperty(uid, __GO_WIDTH__, jni_double, (void**)&temp);
+ data[1] = value;
+ getGraphicObjectProperty(uid, __GO_START_ANGLE__, jni_double, (void**)&temp);
+ data[2] = value;
+ getGraphicObjectProperty(uid, __GO_END_ANGLE__, jni_double, (void**)&temp);
+ data[3] = value;
+ return data;
+}
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getChampX(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getChampX(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, _getChampXSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getChampXSize(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getChampY(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getChampY(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, _getChampYSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getChampYSize(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getArrows(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getArrows(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, _getArrowsSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getArrowsSize(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getSegsData(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getSegsData(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, _getSegsSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getSegsSize(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getFecElements(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getFecElements(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, _getFecElementsSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getFecElementsSize(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getFecData(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getFecData(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, _getFecDataSize(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, _getFecDataSize(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getArcUpperLeftPoint(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getArcUpperLeftPoint(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, 3);
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, 3, result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getArcData(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getArcData(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, 4);
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, 4, result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_ObjectDataJNI_getFecNumVerticesByElement(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)getFecNumVerticesByElement(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/modules/graphic_objects/src/jni/PolylineData.i b/modules/graphic_objects/src/jni/PolylineData.i
new file mode 100755
index 000000000..25e87fa0a
--- /dev/null
+++ b/modules/graphic_objects/src/jni/PolylineData.i
@@ -0,0 +1,416 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2012 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/* sci_types.i */
+/**
+ * Windows: swig -java -package org.scilab.modules.graphic_objects -outdir ../java/org/scilab/modules/graphic_objects/ PolylineData.i
+ * Other: Use the option --enable-build-swig to the configure
+*/
+
+%module PolylineData
+
+
+%pragma(java) jniclasscode=%{
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+%}
+
+
+%typemap(jni) double *BUF "jobject"
+%typemap(jtype) double *BUF "Object"
+%typemap(jstype) double *BUF "Object"
+%typemap(javain) double *BUF "$javainput"
+%typemap(javaout) double *BUF { return $jnicall; }
+
+%typemap(in) double *BUF {
+ $1 = (*jenv)->GetDoubleArrayElements(jenv, $input, NULL);
+}
+
+%typemap(argout) double *BUF {
+ (*jenv)->ReleaseDoubleArrayElements(jenv, $input, $1, 0);
+}
+
+%typemap(out) double *BUF {
+ $result = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, getDataSize_(arg1), $1);
+}
+
+%apply double *BUF { double * }
+
+%{
+
+#include "createGraphicObject.h"
+#include "deleteGraphicObject.h"
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "MALLOC.h"
+#include "math.h"
+
+/*help funtion*/
+int getDataSize_(int uid)
+{
+ int size = 0;
+ int *j = &size;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**)&j);
+ return size;
+}
+
+BOOL isZCoordSet(int uid)
+{
+ int result = 0;
+ int *pResult = &result;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SET__, jni_int, (void**)&pResult);
+ return (BOOL)result;
+}
+
+double * getDataX(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+double * getDataY(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getDataZ(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getShiftX(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X_COORDINATES_SHIFT__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getShiftY(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y_COORDINATES_SHIFT__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getShiftZ(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+BOOL isXShiftSet(int uid)
+{
+ int b = 0;
+ int * pb = &b;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__, jni_int, (void**)&pb);
+ return b;
+}
+
+BOOL isYShiftSet(int uid)
+{
+ int b = 0;
+ int * pb = &b;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__, jni_int, (void**)&pb);
+ return b;
+}
+
+BOOL isZShiftSet(int uid)
+{
+ int b = 0;
+ int * pb = &b;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__, jni_int, (void**)&pb);
+ return b;
+}
+
+
+int createPolylineData(int uidFrom, int uidTo)
+{
+ double *dataFrom, *dataTo;
+ int n[2];
+ int size = 63;
+ int *tmp = &size;
+ BOOL result;
+
+ int polylineID = createDataObject(uidTo, __GO_POLYLINE__);
+ if (polylineID == NULL)
+ {
+ return NULL;
+ }
+
+ getGraphicObjectProperty(uidFrom, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**)&tmp);
+ n[0] = 1; n[1] = size;
+
+ result = setGraphicObjectProperty(polylineID, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &n, jni_int_vector, 2);
+ if (result == FALSE)
+ {
+ deleteDataObject(polylineID);
+ return NULL;
+ }
+
+ getGraphicObjectProperty(uidFrom, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&dataFrom);
+ getGraphicObjectProperty(uidTo, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&dataTo);
+
+ memcpy(dataTo, dataFrom, sizeof(double)*3*size);
+ return uidTo;
+
+}
+
+BOOL translatePolyline(int uid, double x, double y, double z, int flagX, int flagY, int flagZ)
+{
+ double *datax = NULL;
+ double *datay = NULL;
+ double *dataz = NULL;
+
+ int i = 0;
+ if (x != 0.0)
+ {
+ datax = getDataX(uid);
+ if (datax == NULL) return FALSE;
+ if (flagX) {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datax[i] = pow(10.,log10(datax[i]) + x);
+ }
+ } else {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datax[i] += x;
+ }
+ }
+ }
+ if (y != 0.0)
+ {
+ datay = getDataY(uid);
+ if (datay == NULL) return FALSE;
+ if (flagY) {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datay[i] = pow(10.,log10(datay[i]) + y);
+ }
+ } else {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datay[i] += y;
+ }
+ }
+ }
+ if (z != 0 && isZCoordSet(uid))
+ {
+ if (flagZ) {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ dataz[i] = pow(10.,log10(dataz[i]) + z);
+ }
+ } else {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ dataz[i] += z;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+BOOL translatePoint(int uid, int index, double x, double y, double z, int flagX, int flagY, int flagZ)
+{
+ double *datax = NULL;
+ double *datay = NULL;
+ double *dataz = NULL;
+
+ int size = getDataSize_(uid);
+
+ if (index >= 0 && index < size)
+ {
+ datax = getDataX(uid);
+ if (datax == NULL) return FALSE;
+ datay = getDataY(uid);
+ if (datay == NULL) return FALSE;
+
+ if (flagX) {
+ datax[index] *= pow(10., x);
+ } else {
+ datax[index] += x;
+ }
+
+ if (flagY) {
+ datay[index] *= pow(10., y);
+ } else {
+ datay[index] += y;
+ }
+
+ if (z != 0 && isZCoordSet(uid))
+ {
+ dataz = getDataZ(uid);
+ if (flagZ) {
+ dataz[index] *= pow(10., z);
+ } else {
+ dataz[index] += z;
+ }
+ }
+ }
+ /*update*/
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL__, &uid, jni_int, 1);
+ return TRUE;
+}
+
+BOOL setPointValue(int uid, int index, double x, double y, double z)
+{
+ double *datax = NULL;
+ double *datay = NULL;
+ double *dataz = NULL;
+
+ int size = getDataSize_(uid);
+
+
+ if (index >= 0 && index < size)
+ {
+ datax = getDataX(uid);
+ if (datax == NULL) return FALSE;
+ datay = getDataY(uid);
+ if (datay == NULL) return FALSE;
+
+ datax[index] = x;
+ datay[index] = y;
+
+ if (z != 0 && isZCoordSet(uid))
+ {
+ dataz = getDataZ(uid);
+ dataz[index] = z;
+ }
+ }
+ /*update*/
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL__, &uid, jni_int, 1);
+ return TRUE;
+}
+
+BOOL insertPoint(int uid, int index, double x, double y, double z)
+{
+ double *curData, *newData;
+ int size = getDataSize_(uid);
+ BOOL result;
+ int i ,j, n[2];
+
+ // -1 = inset before the first element
+ if (index >= size || index < -1) return FALSE;
+
+ curData = getDataX(uid);
+ if (curData == NULL) return FALSE;
+
+ newData = MALLOC(sizeof(double)*3*(size+1));
+ if (newData == NULL) return FALSE;
+
+ j = index == -1 ? 1 : 0;
+ for (i = 0; i < size; ++i, ++j)
+ {
+ newData[j] = curData[i];
+ newData[(size+1)+j] = curData[size+i];
+ newData[(size+1)*2+j] = curData[size*2+i];
+ if (i == index)
+ ++j;
+ }
+
+ newData[index+1] = x;
+ newData[size+index+2] = y;
+ if (isZCoordSet(uid))
+ {
+ newData[(size+1)*2+index+1] = z;
+ }
+ else
+ {
+ newData[(size+1)*2+index+1] = 0.0;
+ }
+
+ n[0] = 1; n[1] = size+1;
+
+ result = setGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &n, jni_int_vector, 2);
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, newData, jni_double_vector, size+1);
+
+ FREE(newData);
+ return TRUE;
+}
+
+BOOL removePoint(int uid, int index)
+{
+ double *curData, *newData;
+ int size = getDataSize_(uid);
+ BOOL result;
+ int i ,j, n[2];
+
+ if (index >= size || index < 0) return FALSE;
+
+ curData = getDataX(uid);
+ if (curData == NULL) return FALSE;
+
+ newData = MALLOC(sizeof(double)*3*(size-1));
+ if (newData == NULL) return FALSE;
+
+ j = 0;
+ for (i = 0; i < size; ++i, ++j)
+ {
+ if (i == index)
+ {
+ --j;
+ continue;
+ }
+
+ newData[j] = curData[i];
+ newData[(size-1)+j] = curData[size+i];
+ newData[(size-1)*2+j] = curData[size*2+i];
+ }
+
+ n[0] = 1; n[1] = size-1;
+ result = setGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &n, jni_int_vector, 2);
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, newData, jni_double_vector, size-1);
+
+ FREE(newData);
+ return TRUE;
+}
+%}
+
+
+double * getDataX(int uid);
+double * getDataY(int uid);
+double * getDataZ(int uid);
+double * getShiftX(int uid);
+double * getShiftY(int uid);
+double * getShiftZ(int uid);
+int isZCoordSet(int uid);
+int isXShiftSet(int uid);
+int isYShiftSet(int uid);
+int isZShiftSet(int uid);
+int createPolylineData(int uidFrom, int uidTo);
+int translatePolyline(int uid, double x, double y, double z, int flagX, int flagY, int flagZ);
+int translatePoint(int uid, int index, double x, double y, double z, int flagX, int flagY, int flagZ);
+int setPointValue(int uid, int index, double x, double y, double z);
+int insertPoint(int uid, int index, double x, double y, double z);
+int removePoint(int uid, int index);
+
+
+
+
diff --git a/modules/graphic_objects/src/jni/PolylineData_wrap.c b/modules/graphic_objects/src/jni/PolylineData_wrap.c
new file mode 100755
index 000000000..dbb82553e
--- /dev/null
+++ b/modules/graphic_objects/src/jni/PolylineData_wrap.c
@@ -0,0 +1,907 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.10
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGJAVA
+
+/* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+# elif defined(__ICC)
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+# pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+# define SWIGUNUSEDPARM(p)
+# else
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# ifndef GCC_HASCLASSVISIBILITY
+# define GCC_HASCLASSVISIBILITY
+# endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+# define SWIGEXPORT __attribute__ ((visibility("default")))
+# else
+# define SWIGEXPORT
+# endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+/* Fix for jlong on some versions of gcc on Windows */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+typedef long long __int64;
+#endif
+
+/* Fix for jlong on 64-bit x86 Solaris */
+#if defined(__x86_64)
+# ifdef _LP64
+# undef _LP64
+# endif
+#endif
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Support for throwing Java exceptions */
+typedef enum
+{
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
+} SWIG_JavaExceptionCodes;
+
+typedef struct
+{
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
+} SWIG_JavaExceptions_t;
+
+
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg)
+{
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] =
+ {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
+ };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code)
+ {
+ except_ptr++;
+ }
+
+ (*jenv)->ExceptionClear(jenv);
+ excep = (*jenv)->FindClass(jenv, except_ptr->java_exception);
+ if (excep)
+ {
+ (*jenv)->ThrowNew(jenv, excep, msg);
+ }
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
+
+
+
+#include "createGraphicObject.h"
+#include "deleteGraphicObject.h"
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+#include "MALLOC.h"
+#include "math.h"
+
+/*help funtion*/
+int getDataSize_(int uid)
+{
+ int size = 0;
+ int *j = &size;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**)&j);
+ return size;
+}
+
+BOOL isZCoordSet(int uid)
+{
+ int result = 0;
+ int *pResult = &result;
+
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SET__, jni_int, (void**)&pResult);
+ return (BOOL)result;
+}
+
+double * getDataX(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+double * getDataY(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getDataZ(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getShiftX(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X_COORDINATES_SHIFT__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getShiftY(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y_COORDINATES_SHIFT__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+double * getShiftZ(int uid)
+{
+ double *vec;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SHIFT__, jni_double_vector, (void**)&vec);
+ return vec;
+}
+
+BOOL isXShiftSet(int uid)
+{
+ int b = 0;
+ int * pb = &b;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__, jni_int, (void**)&pb);
+ return b;
+}
+
+BOOL isYShiftSet(int uid)
+{
+ int b = 0;
+ int * pb = &b;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__, jni_int, (void**)&pb);
+ return b;
+}
+
+BOOL isZShiftSet(int uid)
+{
+ int b = 0;
+ int * pb = &b;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__, jni_int, (void**)&pb);
+ return b;
+}
+
+
+int createPolylineData(int uidFrom, int uidTo)
+{
+ double *dataFrom, *dataTo;
+ int n[2];
+ int size = 63;
+ int *tmp = &size;
+ BOOL result;
+
+ int polylineID = createDataObject(uidTo, __GO_POLYLINE__);
+ if (polylineID == NULL)
+ {
+ return NULL;
+ }
+
+ getGraphicObjectProperty(uidFrom, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void**)&tmp);
+ n[0] = 1;
+ n[1] = size;
+
+ result = setGraphicObjectProperty(polylineID, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &n, jni_int_vector, 2);
+ if (result == FALSE)
+ {
+ deleteDataObject(polylineID);
+ return NULL;
+ }
+
+ getGraphicObjectProperty(uidFrom, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&dataFrom);
+ getGraphicObjectProperty(uidTo, __GO_DATA_MODEL_X__, jni_double_vector, (void**)&dataTo);
+
+ memcpy(dataTo, dataFrom, sizeof(double) * 3 * size);
+ return uidTo;
+
+}
+
+BOOL translatePolyline(int uid, double x, double y, double z, int flagX, int flagY, int flagZ)
+{
+ double *datax = NULL;
+ double *datay = NULL;
+ double *dataz = NULL;
+
+ int i = 0;
+ if (x != 0.0)
+ {
+ datax = getDataX(uid);
+ if (datax == NULL)
+ {
+ return FALSE;
+ }
+ if (flagX)
+ {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datax[i] = pow(10., log10(datax[i]) + x);
+ }
+ }
+ else
+ {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datax[i] += x;
+ }
+ }
+ }
+ if (y != 0.0)
+ {
+ datay = getDataY(uid);
+ if (datay == NULL)
+ {
+ return FALSE;
+ }
+ if (flagY)
+ {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datay[i] = pow(10., log10(datay[i]) + y);
+ }
+ }
+ else
+ {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ datay[i] += y;
+ }
+ }
+ }
+ if (z != 0 && isZCoordSet(uid))
+ {
+ if (flagZ)
+ {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ dataz[i] = pow(10., log10(dataz[i]) + z);
+ }
+ }
+ else
+ {
+ for (i = 0; i < getDataSize_(uid); ++i)
+ {
+ dataz[i] += z;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+BOOL translatePoint(int uid, int index, double x, double y, double z, int flagX, int flagY, int flagZ)
+{
+ double *datax = NULL;
+ double *datay = NULL;
+ double *dataz = NULL;
+
+ int size = getDataSize_(uid);
+
+ if (index >= 0 && index < size)
+ {
+ datax = getDataX(uid);
+ if (datax == NULL)
+ {
+ return FALSE;
+ }
+ datay = getDataY(uid);
+ if (datay == NULL)
+ {
+ return FALSE;
+ }
+
+ if (flagX)
+ {
+ datax[index] *= pow(10., x);
+ }
+ else
+ {
+ datax[index] += x;
+ }
+
+ if (flagY)
+ {
+ datay[index] *= pow(10., y);
+ }
+ else
+ {
+ datay[index] += y;
+ }
+
+ if (z != 0 && isZCoordSet(uid))
+ {
+ dataz = getDataZ(uid);
+ if (flagZ)
+ {
+ dataz[index] *= pow(10., z);
+ }
+ else
+ {
+ dataz[index] += z;
+ }
+ }
+ }
+ /*update*/
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL__, &uid, jni_int, 1);
+ return TRUE;
+}
+
+BOOL setPointValue(int uid, int index, double x, double y, double z)
+{
+ double *datax = NULL;
+ double *datay = NULL;
+ double *dataz = NULL;
+
+ int size = getDataSize_(uid);
+
+
+ if (index >= 0 && index < size)
+ {
+ datax = getDataX(uid);
+ if (datax == NULL)
+ {
+ return FALSE;
+ }
+ datay = getDataY(uid);
+ if (datay == NULL)
+ {
+ return FALSE;
+ }
+
+ datax[index] = x;
+ datay[index] = y;
+
+ if (z != 0 && isZCoordSet(uid))
+ {
+ dataz = getDataZ(uid);
+ dataz[index] = z;
+ }
+ }
+ /*update*/
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL__, &uid, jni_int, 1);
+ return TRUE;
+}
+
+BOOL insertPoint(int uid, int index, double x, double y, double z)
+{
+ double *curData, *newData;
+ int size = getDataSize_(uid);
+ BOOL result;
+ int i , j, n[2];
+
+ // -1 = inset before the first element
+ if (index >= size || index < -1)
+ {
+ return FALSE;
+ }
+
+ curData = getDataX(uid);
+ if (curData == NULL)
+ {
+ return FALSE;
+ }
+
+ newData = MALLOC(sizeof(double) * 3 * (size + 1));
+ if (newData == NULL)
+ {
+ return FALSE;
+ }
+
+ j = index == -1 ? 1 : 0;
+ for (i = 0; i < size; ++i, ++j)
+ {
+ newData[j] = curData[i];
+ newData[(size + 1) + j] = curData[size + i];
+ newData[(size + 1) * 2 + j] = curData[size * 2 + i];
+ if (i == index)
+ {
+ ++j;
+ }
+ }
+
+ newData[index + 1] = x;
+ newData[size + index + 2] = y;
+ if (isZCoordSet(uid))
+ {
+ newData[(size + 1) * 2 + index + 1] = z;
+ }
+ else
+ {
+ newData[(size + 1) * 2 + index + 1] = 0.0;
+ }
+
+ n[0] = 1;
+ n[1] = size + 1;
+
+ result = setGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &n, jni_int_vector, 2);
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, newData, jni_double_vector, size + 1);
+
+ FREE(newData);
+ return TRUE;
+}
+
+BOOL removePoint(int uid, int index)
+{
+ double *curData, *newData;
+ int size = getDataSize_(uid);
+ BOOL result;
+ int i , j, n[2];
+
+ if (index >= size || index < 0)
+ {
+ return FALSE;
+ }
+
+ curData = getDataX(uid);
+ if (curData == NULL)
+ {
+ return FALSE;
+ }
+
+ newData = MALLOC(sizeof(double) * 3 * (size - 1));
+ if (newData == NULL)
+ {
+ return FALSE;
+ }
+
+ j = 0;
+ for (i = 0; i < size; ++i, ++j)
+ {
+ if (i == index)
+ {
+ --j;
+ continue;
+ }
+
+ newData[j] = curData[i];
+ newData[(size - 1) + j] = curData[size + i];
+ newData[(size - 1) * 2 + j] = curData[size * 2 + i];
+ }
+
+ n[0] = 1;
+ n[1] = size - 1;
+ result = setGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__, &n, jni_int_vector, 2);
+ setGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, newData, jni_double_vector, size - 1);
+
+ FREE(newData);
+ return TRUE;
+}
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_getDataX(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getDataX(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSize_(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_getDataY(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getDataY(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSize_(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_getDataZ(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getDataZ(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSize_(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_getShiftX(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getShiftX(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSize_(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_getShiftY(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getShiftY(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSize_(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_getShiftZ(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getShiftZ(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSize_(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSize_(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_isZCoordSet(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)isZCoordSet(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_isXShiftSet(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)isXShiftSet(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_isYShiftSet(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)isYShiftSet(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_isZShiftSet(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)isZShiftSet(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_createPolylineData(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int arg2 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ result = (int)createPolylineData(arg1, arg2);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_translatePolyline(JNIEnv *jenv, jclass jcls, jint jarg1, jdouble jarg2, jdouble jarg3, jdouble jarg4, jint jarg5, jint jarg6, jint jarg7)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ double arg2 ;
+ double arg3 ;
+ double arg4 ;
+ int arg5 ;
+ int arg6 ;
+ int arg7 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (double)jarg2;
+ arg3 = (double)jarg3;
+ arg4 = (double)jarg4;
+ arg5 = (int)jarg5;
+ arg6 = (int)jarg6;
+ arg7 = (int)jarg7;
+ result = (int)translatePolyline(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_translatePoint(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2, jdouble jarg3, jdouble jarg4, jdouble jarg5, jint jarg6, jint jarg7, jint jarg8)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int arg2 ;
+ double arg3 ;
+ double arg4 ;
+ double arg5 ;
+ int arg6 ;
+ int arg7 ;
+ int arg8 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ arg3 = (double)jarg3;
+ arg4 = (double)jarg4;
+ arg5 = (double)jarg5;
+ arg6 = (int)jarg6;
+ arg7 = (int)jarg7;
+ arg8 = (int)jarg8;
+ result = (int)translatePoint(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_setPointValue(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2, jdouble jarg3, jdouble jarg4, jdouble jarg5)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int arg2 ;
+ double arg3 ;
+ double arg4 ;
+ double arg5 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ arg3 = (double)jarg3;
+ arg4 = (double)jarg4;
+ arg5 = (double)jarg5;
+ result = (int)setPointValue(arg1, arg2, arg3, arg4, arg5);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_insertPoint(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2, jdouble jarg3, jdouble jarg4, jdouble jarg5)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int arg2 ;
+ double arg3 ;
+ double arg4 ;
+ double arg5 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ arg3 = (double)jarg3;
+ arg4 = (double)jarg4;
+ arg5 = (double)jarg5;
+ result = (int)insertPoint(arg1, arg2, arg3, arg4, arg5);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_PolylineDataJNI_removePoint(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int arg2 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ result = (int)removePoint(arg1, arg2);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/modules/graphic_objects/src/jni/ScilabNativeView.i b/modules/graphic_objects/src/jni/ScilabNativeView.i
new file mode 100755
index 000000000..15f011058
--- /dev/null
+++ b/modules/graphic_objects/src/jni/ScilabNativeView.i
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2011-2011 - DIGITEO - Bruno JOFRET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+/**
+ * Windows: swig -java -package org.scilab.modules.graphic_objects -outdir ../java/org/scilab/modules/graphic_objects/ ScilabNativeView.i
+ * Other: Use the option --enable-build-swig to the configure
+*/
+
+%module ScilabNativeView
+
+%pragma(java) jniclasscode=%{
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+%}
+
+%inline %{
+ extern void ScilabNativeView__createObject(int id);
+ extern void ScilabNativeView__deleteObject(int id);
+ extern void ScilabNativeView__updateObject(int id, int iProperty);
+ extern void ScilabNativeView__setCurrentFigure(int id);
+ extern void ScilabNativeView__setCurrentSubWin(int id);
+ extern void ScilabNativeView__setCurrentObject(int id);
+ extern int ScilabNativeView__getValidDefaultFigureId();
+ extern int ScilabNativeView__getFigureFromIndex(int figNum);
+ %}
diff --git a/modules/graphic_objects/src/jni/ScilabNativeView_wrap.c b/modules/graphic_objects/src/jni/ScilabNativeView_wrap.c
new file mode 100755
index 000000000..aa0f32e96
--- /dev/null
+++ b/modules/graphic_objects/src/jni/ScilabNativeView_wrap.c
@@ -0,0 +1,311 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.11
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGJAVA
+
+/* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+# elif defined(__ICC)
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+# pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+# define SWIGUNUSEDPARM(p)
+# else
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# ifndef GCC_HASCLASSVISIBILITY
+# define GCC_HASCLASSVISIBILITY
+# endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+# define SWIGEXPORT __attribute__ ((visibility("default")))
+# else
+# define SWIGEXPORT
+# endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+/* Fix for jlong on some versions of gcc on Windows */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+typedef long long __int64;
+#endif
+
+/* Fix for jlong on 64-bit x86 Solaris */
+#if defined(__x86_64)
+# ifdef _LP64
+# undef _LP64
+# endif
+#endif
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Support for throwing Java exceptions */
+typedef enum
+{
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
+} SWIG_JavaExceptionCodes;
+
+typedef struct
+{
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
+} SWIG_JavaExceptions_t;
+
+
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg)
+{
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] =
+ {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
+ };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code)
+ {
+ except_ptr++;
+ }
+
+ (*jenv)->ExceptionClear(jenv);
+ excep = (*jenv)->FindClass(jenv, except_ptr->java_exception);
+ if (excep)
+ {
+ (*jenv)->ThrowNew(jenv, excep, msg);
+ }
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
+
+
+extern void ScilabNativeView__createObject(int id);
+extern void ScilabNativeView__deleteObject(int id);
+extern void ScilabNativeView__updateObject(int id, int iProperty);
+extern void ScilabNativeView__setCurrentFigure(int id);
+extern void ScilabNativeView__setCurrentSubWin(int id);
+extern void ScilabNativeView__setCurrentObject(int id);
+extern int ScilabNativeView__getValidDefaultFigureId();
+extern int ScilabNativeView__getFigureFromIndex(int figNum);
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1createObject(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ int arg1 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ ScilabNativeView__createObject(arg1);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1deleteObject(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ int arg1 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ ScilabNativeView__deleteObject(arg1);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1updateObject(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2)
+{
+ int arg1 ;
+ int arg2 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ ScilabNativeView__updateObject(arg1, arg2);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1setCurrentFigure(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ int arg1 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ ScilabNativeView__setCurrentFigure(arg1);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1setCurrentSubWin(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ int arg1 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ ScilabNativeView__setCurrentSubWin(arg1);
+}
+
+
+SWIGEXPORT void JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1setCurrentObject(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ int arg1 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ ScilabNativeView__setCurrentObject(arg1);
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1getValidDefaultFigureId(JNIEnv *jenv, jclass jcls)
+{
+ jint jresult = 0 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ result = (int)ScilabNativeView__getValidDefaultFigureId();
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_ScilabNativeViewJNI_ScilabNativeView_1_1getFigureFromIndex(JNIEnv *jenv, jclass jcls, jint jarg1)
+{
+ jint jresult = 0 ;
+ int arg1 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (int)ScilabNativeView__getFigureFromIndex(arg1);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/modules/graphic_objects/src/jni/SurfaceData.i b/modules/graphic_objects/src/jni/SurfaceData.i
new file mode 100755
index 000000000..6e63e3c1d
--- /dev/null
+++ b/modules/graphic_objects/src/jni/SurfaceData.i
@@ -0,0 +1,186 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2012 - Pedro Arthur dos S. Souza
+ * Copyright (C) 2012 - Caio Lucas dos S. Souza
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+%module SurfaceData
+
+
+%pragma(java) jniclasscode=%{
+ static {
+ try {
+ System.loadLibrary("scigraphic_objects");
+ } catch (UnsatisfiedLinkError e) {
+ System.err.println("Native library failed to load. \n" + e);
+ System.exit(1);
+ }
+ }
+%}
+
+%typemap(jni) double * "jobject"
+%typemap(jtype) double * "Object"
+%typemap(jstype) double * "Object"
+%typemap(javain) double * "$javainput"
+%typemap(javaout) double * { return $jnicall; }
+
+%typemap(in) double * getSurfDataX {
+ $1 = (*jenv)->GetDoubleArrayElements(jenv, $input, NULL);
+}
+%typemap(argout) double * getSurfDataX {
+ (*jenv)->ReleaseDoubleArrayElements(jenv, $input, $1, 0);
+}
+%typemap(out) double * getSurfDataX {
+ $result = (*jenv)->NewDoubleArray(jenv, getDataSizeX(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, getDataSizeX(arg1), $1);
+}
+
+%typemap(in) double * getSurfDataY {
+ $1 = (*jenv)->GetDoubleArrayElements(jenv, $input, NULL);
+}
+%typemap(argout) double * getSurfDataY {
+ (*jenv)->ReleaseDoubleArrayElements(jenv, $input, $1, 0);
+}
+%typemap(out) double * getSurfDataY {
+ $result = (*jenv)->NewDoubleArray(jenv, getDataSizeY(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, getDataSizeY(arg1), $1);
+}
+
+%typemap(in) double * getSurfDataZ {
+ $1 = (*jenv)->GetDoubleArrayElements(jenv, $input, NULL);
+}
+%typemap(argout) double * getSurfDataZ {
+ (*jenv)->ReleaseDoubleArrayElements(jenv, $input, $1, 0);
+}
+%typemap(out) double * getSurfDataZ {
+ $result = (*jenv)->NewDoubleArray(jenv, getDataSizeZ(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, getDataSizeZ(arg1), $1);
+}
+
+%{
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+%}
+
+%{
+double * getSurfDataX(int uid)
+{
+ double * X;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &X);
+ return X;
+}
+
+int getDataSizeX(int uid)
+{
+ int type, size = 0, nGon = 0, nVert = 0;
+ int * pType = &type;
+ int * pSize = &size;
+ int * pNGon = &nGon;
+ int * pNVert = &nVert;
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+
+ switch(type)
+ {
+ case __GO_PLOT3D__:
+ case __GO_GRAYPLOT__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &pSize);
+ break;
+ case __GO_FAC3D__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &pNGon);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pNVert);
+ size = nGon * nVert;
+ break;
+ }
+ return size;
+}
+%}
+
+%{
+double * getSurfDataY(int uid)
+{
+ double * Y;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &Y);
+ return Y;
+}
+
+int getDataSizeY(int uid)
+{
+ int type, size = 0, nGon = 0, nVert = 0;
+ int * pType = &type;
+ int * pSize = &size;
+ int * pNGon = &nGon;
+ int * pNVert = &nVert;
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+
+ switch(type)
+ {
+ case __GO_PLOT3D__:
+ case __GO_GRAYPLOT__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &pSize);
+ break;
+ case __GO_FAC3D__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &pNGon);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pNVert);
+ size = nGon * nVert;
+ break;
+ }
+ return size;
+}
+%}
+
+%{
+double * getSurfDataZ(int uid)
+{
+ double * Z;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &Z);
+ return Z;
+}
+
+int getDataSizeZ(int uid)
+{
+ int type, size = 0, nGon = 0, nVert = 0;
+ int * pType = &type;
+ int * pSize = &size;
+ int * pNGon = &nGon;
+ int * pNVert = &nVert;
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+
+ switch(type)
+ {
+ case __GO_PLOT3D__:
+ case __GO_GRAYPLOT__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Z__, jni_int, (void**) &pSize);
+ break;
+ case __GO_FAC3D__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &pNGon);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pNVert);
+ size = nGon * nVert;
+ break;
+ }
+ return size;
+}
+%}
+
+%{
+extern int createObject3dData(int obj, int newObj, int type);
+extern double pickSurface(int uid, double x, double y, double z, double dx, double dy, double dz, double mx, double my, double mz, double mw);
+%}
+
+
+double * getSurfDataX(int uid);
+double * getSurfDataY(int uid);
+double * getSurfDataZ(int uid);
+int createObject3dData(int obj, int newObj, int type);
+double pickSurface(int uid, double x, double y, double z, double dx, double dy, double dz, double mx, double my, double mz, double mw);
+
+
+
diff --git a/modules/graphic_objects/src/jni/SurfaceData_wrap.c b/modules/graphic_objects/src/jni/SurfaceData_wrap.c
new file mode 100755
index 000000000..4118cb6c3
--- /dev/null
+++ b/modules/graphic_objects/src/jni/SurfaceData_wrap.c
@@ -0,0 +1,406 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.7
+ *
+ * This file is not intended to be easily readable and contains a number of
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG
+ * interface file instead.
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGJAVA
+
+/* -----------------------------------------------------------------------------
+ * This section contains generic SWIG labels for method/variable
+ * declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+# define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+# define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+# define SWIGINLINE inline
+# else
+# define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+# elif defined(__ICC)
+# define SWIGUNUSED __attribute__ ((__unused__))
+# else
+# define SWIGUNUSED
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+# pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+# define SWIGUNUSEDPARM(p)
+# else
+# define SWIGUNUSEDPARM(p) p SWIGUNUSED
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+# ifndef GCC_HASCLASSVISIBILITY
+# define GCC_HASCLASSVISIBILITY
+# endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# if defined(STATIC_LINKED)
+# define SWIGEXPORT
+# else
+# define SWIGEXPORT __declspec(dllexport)
+# endif
+# else
+# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+# define SWIGEXPORT __attribute__ ((visibility("default")))
+# else
+# define SWIGEXPORT
+# endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+# define SWIGSTDCALL __stdcall
+# else
+# define SWIGSTDCALL
+# endif
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+/* Fix for jlong on some versions of gcc on Windows */
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+ typedef long long __int64;
+#endif
+
+/* Fix for jlong on 64-bit x86 Solaris */
+#if defined(__x86_64)
+# ifdef _LP64
+# undef _LP64
+# endif
+#endif
+
+#include <jni.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* Support for throwing Java exceptions */
+typedef enum {
+ SWIG_JavaOutOfMemoryError = 1,
+ SWIG_JavaIOException,
+ SWIG_JavaRuntimeException,
+ SWIG_JavaIndexOutOfBoundsException,
+ SWIG_JavaArithmeticException,
+ SWIG_JavaIllegalArgumentException,
+ SWIG_JavaNullPointerException,
+ SWIG_JavaDirectorPureVirtual,
+ SWIG_JavaUnknownError
+} SWIG_JavaExceptionCodes;
+
+typedef struct {
+ SWIG_JavaExceptionCodes code;
+ const char *java_exception;
+} SWIG_JavaExceptions_t;
+
+
+static void SWIGUNUSED SWIG_JavaThrowException(JNIEnv *jenv, SWIG_JavaExceptionCodes code, const char *msg) {
+ jclass excep;
+ static const SWIG_JavaExceptions_t java_exceptions[] = {
+ { SWIG_JavaOutOfMemoryError, "java/lang/OutOfMemoryError" },
+ { SWIG_JavaIOException, "java/io/IOException" },
+ { SWIG_JavaRuntimeException, "java/lang/RuntimeException" },
+ { SWIG_JavaIndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException" },
+ { SWIG_JavaArithmeticException, "java/lang/ArithmeticException" },
+ { SWIG_JavaIllegalArgumentException, "java/lang/IllegalArgumentException" },
+ { SWIG_JavaNullPointerException, "java/lang/NullPointerException" },
+ { SWIG_JavaDirectorPureVirtual, "java/lang/RuntimeException" },
+ { SWIG_JavaUnknownError, "java/lang/UnknownError" },
+ { (SWIG_JavaExceptionCodes)0, "java/lang/UnknownError" }
+ };
+ const SWIG_JavaExceptions_t *except_ptr = java_exceptions;
+
+ while (except_ptr->code != code && except_ptr->code)
+ except_ptr++;
+
+ (*jenv)->ExceptionClear(jenv);
+ excep = (*jenv)->FindClass(jenv, except_ptr->java_exception);
+ if (excep)
+ (*jenv)->ThrowNew(jenv, excep, msg);
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_JavaThrowException(jenv, SWIG_JavaIllegalArgumentException, msg); return nullreturn; } else
+
+
+#include "returnType.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#include "graphicObjectProperties.h"
+
+
+double * getSurfDataX(int uid)
+{
+ double * X;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_X__, jni_double_vector, (void**) &X);
+ return X;
+}
+
+int getDataSizeX(int uid)
+{
+ int type, size = 0, nGon = 0, nVert = 0;
+ int * pType = &type;
+ int * pSize = &size;
+ int * pNGon = &nGon;
+ int * pNVert = &nVert;
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+
+ switch(type)
+ {
+ case __GO_PLOT3D__:
+ case __GO_GRAYPLOT__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_X__, jni_int, (void**) &pSize);
+ break;
+ case __GO_FAC3D__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &pNGon);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pNVert);
+ size = nGon * nVert;
+ break;
+ }
+ return size;
+}
+
+
+double * getSurfDataY(int uid)
+{
+ double * Y;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Y__, jni_double_vector, (void**) &Y);
+ return Y;
+}
+
+int getDataSizeY(int uid)
+{
+ int type, size = 0, nGon = 0, nVert = 0;
+ int * pType = &type;
+ int * pSize = &size;
+ int * pNGon = &nGon;
+ int * pNVert = &nVert;
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+
+ switch(type)
+ {
+ case __GO_PLOT3D__:
+ case __GO_GRAYPLOT__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Y__, jni_int, (void**) &pSize);
+ break;
+ case __GO_FAC3D__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &pNGon);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pNVert);
+ size = nGon * nVert;
+ break;
+ }
+ return size;
+}
+
+
+double * getSurfDataZ(int uid)
+{
+ double * Z;
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_Z__, jni_double_vector, (void**) &Z);
+ return Z;
+}
+
+int getDataSizeZ(int uid)
+{
+ int type, size = 0, nGon = 0, nVert = 0;
+ int * pType = &type;
+ int * pSize = &size;
+ int * pNGon = &nGon;
+ int * pNVert = &nVert;
+ getGraphicObjectProperty(uid, __GO_TYPE__, jni_int, (void**) &pType);
+
+ switch(type)
+ {
+ case __GO_PLOT3D__:
+ case __GO_GRAYPLOT__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_Z__, jni_int, (void**) &pSize);
+ break;
+ case __GO_FAC3D__:
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_GONS__, jni_int, (void**) &pNGon);
+ getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES_PER_GON__, jni_int, (void**) &pNVert);
+ size = nGon * nVert;
+ break;
+ }
+ return size;
+}
+
+
+extern int createObject3dData(int obj, int newObj, int type);
+extern double pickSurface(int uid, double x, double y, double z, double dx, double dy, double dz, double mx, double my, double mz, double mw);
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_SurfaceDataJNI_getSurfDataX(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getSurfDataX(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSizeX(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSizeX(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_SurfaceDataJNI_getSurfDataY(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getSurfDataY(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSizeY(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSizeY(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jobject JNICALL Java_org_scilab_modules_graphic_1objects_SurfaceDataJNI_getSurfDataZ(JNIEnv *jenv, jclass jcls, jint jarg1) {
+ jobject jresult = 0 ;
+ int arg1 ;
+ double *result = 0 ;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ result = (double *)getSurfDataZ(arg1);
+ {
+ jresult = (*jenv)->NewDoubleArray(jenv, getDataSizeZ(arg1));
+ (*jenv)->SetDoubleArrayRegion(jenv, jresult, 0, getDataSizeZ(arg1), result);
+ }
+ return jresult;
+}
+
+
+SWIGEXPORT jint JNICALL Java_org_scilab_modules_graphic_1objects_SurfaceDataJNI_createObject3dData(JNIEnv *jenv, jclass jcls, jint jarg1, jint jarg2, jint jarg3) {
+ jint jresult = 0 ;
+ int arg1 ;
+ int arg2 ;
+ int arg3 ;
+ int result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (int)jarg2;
+ arg3 = (int)jarg3;
+ result = (int)createObject3dData(arg1,arg2,arg3);
+ jresult = (jint)result;
+ return jresult;
+}
+
+
+SWIGEXPORT jdouble JNICALL Java_org_scilab_modules_graphic_1objects_SurfaceDataJNI_pickSurface(JNIEnv *jenv, jclass jcls, jint jarg1, jdouble jarg2, jdouble jarg3, jdouble jarg4, jdouble jarg5, jdouble jarg6, jdouble jarg7, jdouble jarg8, jdouble jarg9, jdouble jarg10, jdouble jarg11) {
+ jdouble jresult = 0 ;
+ int arg1 ;
+ double arg2 ;
+ double arg3 ;
+ double arg4 ;
+ double arg5 ;
+ double arg6 ;
+ double arg7 ;
+ double arg8 ;
+ double arg9 ;
+ double arg10 ;
+ double arg11 ;
+ double result;
+
+ (void)jenv;
+ (void)jcls;
+ arg1 = (int)jarg1;
+ arg2 = (double)jarg2;
+ arg3 = (double)jarg3;
+ arg4 = (double)jarg4;
+ arg5 = (double)jarg5;
+ arg6 = (double)jarg6;
+ arg7 = (double)jarg7;
+ arg8 = (double)jarg8;
+ arg9 = (double)jarg9;
+ arg10 = (double)jarg10;
+ arg11 = (double)jarg11;
+ result = (double)pickSurface(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11);
+ jresult = (jdouble)result;
+ return jresult;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/modules/graphic_objects/src/jni/builder.giws.xml b/modules/graphic_objects/src/jni/builder.giws.xml
new file mode 100755
index 000000000..23c3ab92e
--- /dev/null
+++ b/modules/graphic_objects/src/jni/builder.giws.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<package name="org.scilab.modules.graphic_objects.builder">
+ <object name="Builder">
+ <method name="createRect" returnType="int" modifier="static">
+ <parameter name="pparentsubwinUID" type="int"/>
+ <parameter name="x" type="double"/>
+ <parameter name="y" type="double"/>
+ <parameter name="height" type="double"/>
+ <parameter name="width" type="double"/>
+ <parameter name="foreground" type="int"/>
+ <parameter name="background" type="int"/>
+ <parameter name="isfilled" type="int"/>
+ <parameter name="isline" type="int"/>
+ </method>
+ <method name="cloneGraphicContext" returnType="int" modifier="static">
+ <parameter name="sourceIdentifier" type="int"/>
+ <parameter name="destIdentifier" type="int"/>
+ </method>
+ <method name="cloneFontContext" returnType="int" modifier="static">
+ <parameter name="sourceIdentifier" type="int"/>
+ <parameter name="destIdentifier" type="int"/>
+ </method>
+ <method name="createHiddenLabel" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ </method>
+ <method name="isAxesRedrawing" returnType="boolean" modifier="static">
+ <parameter name="subWin" type="int"/>
+ </method>
+ <method name="createLabel" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="type" type="int"/>
+ </method>
+ <method name="createNewFigureWithAxes" returnType="int" modifier="static" />
+ <method name="createFigure" returnType="int" modifier="static">
+ <parameter name="dockable" type="boolean" />
+ <parameter name="menubarType" type="int" />
+ <parameter name="toolbarType" type="int" />
+ <parameter name="defaultAxes" type="boolean" />
+ <parameter name="visible" type="boolean" />
+ </method>
+ <method name="cloneMenus" returnType="void" modifier="static">
+ <parameter name="model" type="int"/>
+ <parameter name="newParent" type="int"/>
+ </method>
+ <method name="cloneAxesModel" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ </method>
+ <method name="createSubWin" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ </method>
+ <method name="createText" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="text" type="String[]"/>
+ <parameter name="rows" type="int"/>
+ <parameter name="cols" type="int"/>
+ <parameter name="x" type="double"/>
+ <parameter name="y" type="double"/>
+ <parameter name="autoSize" type="boolean"/>
+ <parameter name="userSize" type="double[]"/>
+ <parameter name="centerPos" type="int"/>
+ <parameter name="foreground" type="int"/>
+ <parameter name="isForeground" type="boolean"/>
+ <parameter name="background" type="int"/>
+ <parameter name="isBackground" type="boolean"/>
+ <parameter name="boxed" type="boolean"/>
+ <parameter name="line" type="boolean"/>
+ <parameter name="filled" type="boolean"/>
+ <parameter name="align" type="int"/>
+ </method>
+ <method name="createArc" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="x" type="double"/>
+ <parameter name="y" type="double"/>
+ <parameter name="h" type="double"/>
+ <parameter name="w" type="double"/>
+ <parameter name="start" type="double"/>
+ <parameter name="end" type="double"/>
+ <parameter name="foreground" type="int"/>
+ <parameter name="isForeground" type="boolean"/>
+ <parameter name="background" type="int"/>
+ <parameter name="isBackground" type="boolean"/>
+ <parameter name="filled" type="boolean"/>
+ <parameter name="line" type="boolean"/>
+ </method>
+ <method name="createAxis" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="dir" type="int"/>
+ <parameter name="tics" type="int"/>
+ <parameter name="vx" type="double[]"/>
+ <parameter name="vy" type="double[]"/>
+ <parameter name="subint" type="int"/>
+ <parameter name="format" type="String"/>
+ <parameter name="fontSize" type="int"/>
+ <parameter name="textColor" type="int"/>
+ <parameter name="ticsColor" type="int"/>
+ <parameter name="seg" type="boolean"/>
+ </method>
+ <method name="createCompound" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="children" type="int[]"/>
+ </method>
+ <method name="createCompoundSeq" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="childrenCount" type="int"/>
+ </method>
+ <method name="createFec" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="zminmax" type="double[]"/>
+ <parameter name="colminmax" type="int[]"/>
+ <parameter name="colout" type="int[]"/>
+ <parameter name="with_mesh" type="boolean"/>
+ </method>
+ <method name="createGrayplot" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="type" type="int"/>
+ <parameter name="pvecx" type="double[]"/>
+ <parameter name="n1" type="int"/>
+ <parameter name="n2" type="int"/>
+ </method>
+ <method name="createPolyline" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="closed" type="boolean"/>
+ <parameter name="plot" type="int"/>
+ <parameter name="foreground" type="int"/>
+ <parameter name="isForeground" type="boolean"/>
+ <parameter name="background" type="int[]"/>
+ <parameter name="mark_style" type="int"/>
+ <parameter name="isMarkStyle" type="boolean"/>
+ <parameter name="mark_foreground" type="int"/>
+ <parameter name="isMarkForeground" type="boolean"/>
+ <parameter name="mark_background" type="int"/>
+ <parameter name="isMarkBackground" type="boolean"/>
+ <parameter name="isline" type="boolean"/>
+ <parameter name="isfilled" type="boolean"/>
+ <parameter name="ismark" type="boolean"/>
+ <parameter name="isinterp" type="boolean"/>
+ </method>
+ <method name="createLegend" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="text" type="String[]"/>
+ <parameter name="handles" type="int[]"/>
+ </method>
+ <method name="createSegs" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="vx" type="double[]"/>
+ <parameter name="vy" type="double[]"/>
+ <parameter name="vz" type="double[]"/>
+ <parameter name="isVZ" type="boolean"/>
+ <parameter name="style" type="int[]"/>
+ <parameter name="arsize" type="double"/>
+ </method>
+ <method name="createChamp" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="vx" type="double[]"/>
+ <parameter name="vy" type="double[]"/>
+ <parameter name="vfx" type="double[]"/>
+ <parameter name="vfy" type="double[]"/>
+ <parameter name="arsize" type="double"/>
+ <parameter name="typeofchamp" type="boolean"/>
+ </method>
+ <method name="createSurface" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="typeof3d" type="int"/>
+ <parameter name="colorFlag" type="int"/>
+ <parameter name="colorMode" type="int"/>
+ </method>
+ <method name="initSubWinTo3d" returnType="void" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="legend" type="String"/>
+ <parameter name="isLegend" type="boolean"/>
+ <parameter name="flag" type="int[]"/>
+ <parameter name="alpha" type="double"/>
+ <parameter name="theta" type="double"/>
+ <parameter name="ebox" type="double[]"/>
+ <parameter name="x" type="double[]"/>
+ <parameter name="y" type="double[]"/>
+ <parameter name="z" type="double[]"/>
+ </method>
+ <method name="createLight" returnType="int" modifier="static">
+ <parameter name="parent" type="int"/>
+ <parameter name="type" type="int"/>
+ <parameter name="visible" type="boolean"/>
+ <parameter name="pos" type="double[]"/>
+ <parameter name="dir" type="double[]"/>
+ <parameter name="ambient" type="double[]"/>
+ <parameter name="diffuse" type="double[]"/>
+ <parameter name="specular" type="double[]"/>
+ </method>
+ </object>
+</package>
diff --git a/modules/graphic_objects/src/jni/graphic_objects.giws.xml b/modules/graphic_objects/src/jni/graphic_objects.giws.xml
new file mode 100755
index 000000000..c8430f1ce
--- /dev/null
+++ b/modules/graphic_objects/src/jni/graphic_objects.giws.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0"?>
+<package name="org.scilab.modules.graphic_objects">
+ <object name="CallXmlLoader">
+ <method name="Load" returnType="int" modifier="static">
+ <parameter name="filename" type="String"/>
+ </method>
+ <method name="Save" returnType="String" modifier="static">
+ <parameter name="figure" type="int"/>
+ <parameter name="filename" type="String"/>
+ <parameter name="isReverse" type="boolean"/>
+ </method>
+ <method name="DomLoad" returnType="int" modifier="static">
+ <parameter name="filename" type="String"/>
+ </method>
+ </object>
+ <object name="CallGraphicController">
+ <method name="deleteGraphicObject" returnType="void" modifier="static">
+ <parameter name="id" type="int"/>
+ </method>
+ <method name="cloneGraphicObject" returnType="int" modifier="static">
+ <parameter name="id" type="int"/>
+ </method>
+ <method name="askGraphicObject" returnType="int" modifier="static">
+ <parameter name="typeName" type="int"/>
+ </method>
+ <method name="setGraphicObjectRelationship" returnType="void" modifier="static">
+ <parameter name="parentId" type="int"/>
+ <parameter name="childId" type="int"/>
+ </method>
+ <method name="removeRelationShipAndDelete" returnType="void" modifier="static">
+ <parameter name="id" type="int"/>
+ </method>
+ <method name="getGraphicObjectPropertyAsString" returnType="String" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="String"/>
+ </method>
+ <method name="getGraphicObjectPropertyAsStringVector" returnType="String[]" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="String[]"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="double"/>
+ </method>
+ <method name="getGraphicObjectPropertyAsDoubleVector" returnType="double[]" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="double[]"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="int"/>
+ </method>
+ <method name="getGraphicObjectPropertyAsIntegerVector" returnType="int[]" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="int[]"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="boolean"/>
+ </method>
+ <method name="getGraphicObjectPropertyAsBooleanVector" returnType="int[]" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ </method>
+ <method name="setGraphicObjectProperty" returnType="boolean" modifier="static">
+ <parameter name="id" type="int"/>
+ <parameter name="propertyName" type="int"/>
+ <parameter name="value" type="boolean[]"/>
+ </method>
+ <method name="registerScilabView" returnType="void" modifier="static">
+ </method>
+ <method name="unregisterScilabView" returnType="void" modifier="static">
+ </method>
+ <method name="getConsoleIdentifier" returnType="int" modifier="static">
+ </method>
+ <method name="buildFigureMenuBar" returnType="void" modifier="static">
+ <parameter name="figureId" type="int"/>
+ </method>
+ </object>
+</package>
diff --git a/modules/graphic_objects/src/jni/graphic_objects.i b/modules/graphic_objects/src/jni/graphic_objects.i
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/jni/graphic_objects.i
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-Builder.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-Builder.lo
new file mode 100755
index 000000000..83385d620
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-Builder.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-Builder.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-Builder.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-CallGraphicController.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-CallGraphicController.lo
new file mode 100755
index 000000000..e5720b3cb
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-CallGraphicController.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-CallGraphicController.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-CallGraphicController.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-CallXmlLoader.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-CallXmlLoader.lo
new file mode 100755
index 000000000..7a0e28dcf
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-CallXmlLoader.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-CallXmlLoader.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-CallXmlLoader.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-DataLoader_wrap.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-DataLoader_wrap.lo
new file mode 100755
index 000000000..1b512c8da
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-DataLoader_wrap.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-DataLoader_wrap.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-DataLoader_wrap.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-ObjectData_wrap.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-ObjectData_wrap.lo
new file mode 100755
index 000000000..74c265c8a
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-ObjectData_wrap.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-ObjectData_wrap.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-ObjectData_wrap.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-PolylineData_wrap.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-PolylineData_wrap.lo
new file mode 100755
index 000000000..934ceddcf
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-PolylineData_wrap.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-PolylineData_wrap.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-PolylineData_wrap.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo
new file mode 100755
index 000000000..d36f48f4d
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-ScilabNativeView_wrap.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-ScilabNativeView_wrap.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo b/modules/graphic_objects/src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo
new file mode 100755
index 000000000..ebc236c88
--- /dev/null
+++ b/modules/graphic_objects/src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo
@@ -0,0 +1,12 @@
+# src/jni/libscigraphic_objects_la-SurfaceData_wrap.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_la-SurfaceData_wrap.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/nographic_objects/.deps/.dirstamp b/modules/graphic_objects/src/nographic_objects/.deps/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/.deps/.dirstamp
diff --git a/modules/graphic_objects/src/nographic_objects/.deps/libscigraphic_objects_disable_la-nographic_objects.Plo b/modules/graphic_objects/src/nographic_objects/.deps/libscigraphic_objects_disable_la-nographic_objects.Plo
new file mode 100755
index 000000000..35968f846
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/.deps/libscigraphic_objects_disable_la-nographic_objects.Plo
@@ -0,0 +1,146 @@
+src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo: \
+ src/nographic_objects/nographic_objects.c /usr/include/stdc-predef.h \
+ src/nographic_objects/nographic_objects.h \
+ includes/dynlib_graphic_objects.h ../../modules/core/includes/BOOL.h \
+ ../../modules/output_stream/includes/Scierror.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h \
+ ../../modules/output_stream/includes/do_error_number.h \
+ ../../modules/core/includes/machine.h \
+ ../../modules/localization/includes/localization.h \
+ /usr/include/libintl.h /usr/include/features.h \
+ /usr/include/x86_64-linux-gnu/sys/cdefs.h \
+ /usr/include/x86_64-linux-gnu/bits/wordsize.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs.h \
+ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
+ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h /usr/include/locale.h \
+ /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/xlocale.h \
+ includes/FigureList.h includes/dynlib_graphic_objects.h \
+ includes/returnType.h includes/createGraphicObject.h \
+ includes/deleteGraphicObject.h includes/getGraphicObjectProperty.h \
+ /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
+ /usr/include/x86_64-linux-gnu/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/endian.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap.h \
+ /usr/include/x86_64-linux-gnu/bits/types.h \
+ /usr/include/x86_64-linux-gnu/bits/typesizes.h \
+ /usr/include/x86_64-linux-gnu/bits/byteswap-16.h \
+ /usr/include/x86_64-linux-gnu/sys/types.h /usr/include/time.h \
+ /usr/include/x86_64-linux-gnu/sys/select.h \
+ /usr/include/x86_64-linux-gnu/bits/select.h \
+ /usr/include/x86_64-linux-gnu/bits/sigset.h \
+ /usr/include/x86_64-linux-gnu/bits/time.h \
+ /usr/include/x86_64-linux-gnu/bits/select2.h \
+ /usr/include/x86_64-linux-gnu/sys/sysmacros.h \
+ /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
+ /usr/include/x86_64-linux-gnu/bits/stdlib.h includes/returnType.h \
+ includes/CurrentObject.h includes/setGraphicObjectProperty.h \
+ ../../modules/core/includes/scilabmode.h \
+ ../../modules/core/includes/machine.h ../../modules/core/includes/BOOL.h
+
+/usr/include/stdc-predef.h:
+
+src/nographic_objects/nographic_objects.h:
+
+includes/dynlib_graphic_objects.h:
+
+../../modules/core/includes/BOOL.h:
+
+../../modules/output_stream/includes/Scierror.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stdarg.h:
+
+../../modules/output_stream/includes/do_error_number.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/localization/includes/localization.h:
+
+/usr/include/libintl.h:
+
+/usr/include/features.h:
+
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:
+
+/usr/include/x86_64-linux-gnu/bits/wordsize.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs.h:
+
+/usr/include/x86_64-linux-gnu/gnu/stubs-64.h:
+
+/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:
+
+/usr/include/locale.h:
+
+/usr/include/x86_64-linux-gnu/bits/locale.h:
+
+/usr/include/xlocale.h:
+
+includes/FigureList.h:
+
+includes/dynlib_graphic_objects.h:
+
+includes/returnType.h:
+
+includes/createGraphicObject.h:
+
+includes/deleteGraphicObject.h:
+
+includes/getGraphicObjectProperty.h:
+
+/usr/include/stdlib.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitflags.h:
+
+/usr/include/x86_64-linux-gnu/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/endian.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap.h:
+
+/usr/include/x86_64-linux-gnu/bits/types.h:
+
+/usr/include/x86_64-linux-gnu/bits/typesizes.h:
+
+/usr/include/x86_64-linux-gnu/bits/byteswap-16.h:
+
+/usr/include/x86_64-linux-gnu/sys/types.h:
+
+/usr/include/time.h:
+
+/usr/include/x86_64-linux-gnu/sys/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/select.h:
+
+/usr/include/x86_64-linux-gnu/bits/sigset.h:
+
+/usr/include/x86_64-linux-gnu/bits/time.h:
+
+/usr/include/x86_64-linux-gnu/bits/select2.h:
+
+/usr/include/x86_64-linux-gnu/sys/sysmacros.h:
+
+/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib-float.h:
+
+/usr/include/x86_64-linux-gnu/bits/stdlib.h:
+
+includes/returnType.h:
+
+includes/CurrentObject.h:
+
+includes/setGraphicObjectProperty.h:
+
+../../modules/core/includes/scilabmode.h:
+
+../../modules/core/includes/machine.h:
+
+../../modules/core/includes/BOOL.h:
diff --git a/modules/graphic_objects/src/nographic_objects/.dirstamp b/modules/graphic_objects/src/nographic_objects/.dirstamp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/.dirstamp
diff --git a/modules/graphic_objects/src/nographic_objects/.libs/libscigraphic_objects_disable_la-nographic_objects.o b/modules/graphic_objects/src/nographic_objects/.libs/libscigraphic_objects_disable_la-nographic_objects.o
new file mode 100755
index 000000000..ef5eb0356
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/.libs/libscigraphic_objects_disable_la-nographic_objects.o
Binary files differ
diff --git a/modules/graphic_objects/src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo b/modules/graphic_objects/src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo
new file mode 100755
index 000000000..5bee5a618
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo
@@ -0,0 +1,12 @@
+# src/nographic_objects/libscigraphic_objects_disable_la-nographic_objects.lo - a libtool object file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+pic_object='.libs/libscigraphic_objects_disable_la-nographic_objects.o'
+
+# Name of the non-PIC object
+non_pic_object=none
+
diff --git a/modules/graphic_objects/src/nographic_objects/nographic_objects.c b/modules/graphic_objects/src/nographic_objects/nographic_objects.c
new file mode 100755
index 000000000..ba36a8cff
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/nographic_objects.c
@@ -0,0 +1,86 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009 - DIGITEO - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+/*--------------------------------------------------------------------------*/
+#include "nographic_objects.h"
+#include "Scierror.h"
+#include "localization.h"
+#include "FigureList.h"
+#include "returnType.h"
+#include "createGraphicObject.h"
+#include "deleteGraphicObject.h"
+#include "getGraphicObjectProperty.h"
+#include "setGraphicObjectProperty.h"
+#ifndef _MSC_VER
+#include "scilabmode.h"
+#endif
+/*--------------------------------------------------------------------------*/
+int gw_graphic_objects(void)
+{
+#ifndef _MSC_VER
+ if (getScilabMode() == SCILAB_NWNI)
+ {
+ Scierror(999, _("Scilab '%s' module disabled in -nogui or -nwni mode.\n"), "graphic_objects");
+ }
+ else
+#endif
+ {
+ Scierror(999, _("Scilab '%s' module not installed.\n"), "graphic_objects");
+ }
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+BOOL sciHasFigures(void)
+{
+ return FALSE;
+}
+/*--------------------------------------------------------------------------*/
+BOOL sciIsExistingFigure(int figNum)
+{
+ return FALSE;
+}
+/*--------------------------------------------------------------------------*/
+int createGraphicObject(int _iType)
+{
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+int createDataObject(int iUID, int _iType)
+{
+ return 0;
+}
+/*--------------------------------------------------------------------------*/
+void deleteGraphicObject(int iUID)
+{
+}
+/*--------------------------------------------------------------------------*/
+void deleteDataObject(int iUID)
+{
+}
+/*--------------------------------------------------------------------------*/
+void getGraphicObjectProperty(int iUID, const int _iName, enum _ReturnType_ _returnType, void **_pvData)
+{
+ *_pvData = NULL;
+}
+/*--------------------------------------------------------------------------*/
+void releaseGraphicObjectProperty(const int _iName, void * _pvData, enum _ReturnType_ _returnType, int numElements)
+{
+}
+/*--------------------------------------------------------------------------*/
+BOOL setGraphicObjectProperty(int iUID, const int _iPropertyName, void const* _pvValue, enum _ReturnType_ _valueTtype, int numElements)
+{
+ return FALSE;
+}
+/*--------------------------------------------------------------------------*/
+void setGraphicObjectRelationship(int iUID, int iUID2)
+{
+}
+/*--------------------------------------------------------------------------*/
diff --git a/modules/graphic_objects/src/nographic_objects/nographic_objects.h b/modules/graphic_objects/src/nographic_objects/nographic_objects.h
new file mode 100755
index 000000000..e21dad824
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/nographic_objects.h
@@ -0,0 +1,26 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2009-2012 - DIGITEO - Allan CORNET
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+/*--------------------------------------------------------------------------*/
+#include "dynlib_graphic_objects.h"
+#include "BOOL.h"
+/*--------------------------------------------------------------------------*/
+/**
+ * This function is a wrapper / fake when Scilab is compiled without xpad
+ *
+ * @return 0
+ */
+GRAPHIC_OBJECTS_IMPEXP int gw_graphic_objects(void);
+
+GRAPHIC_OBJECTS_IMPEXP BOOL sciHasFigures(void);
+
+GRAPHIC_OBJECTS_IMPEXP BOOL sciIsExistingFigure(int figNum);
+/*--------------------------------------------------------------------------*/
diff --git a/modules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj b/modules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj
new file mode 100755
index 000000000..802cd0219
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A910BD0C-8FAF-4382-B06A-F767E4752733}</ProjectGuid>
+ <RootNamespace>nographic_objects</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v110</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)bin\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)$(Configuration)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">noscigraphic_objects</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">noscigraphic_objects</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">noscigraphic_objects</TargetName>
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">noscigraphic_objects</TargetName>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/noscigraphic_objects.dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;_DEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>Default</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/noscigraphic_objects.dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <AdditionalOptions>%(AdditionalOptions)</AdditionalOptions>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/noscigraphic_objects.dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>
+ </LinkTimeCodeGeneration>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>.;../jni;../../../../java/jdk/include;../../../../java/jdk/include/win32;../../../../libs/intl;../../includes;../../../api_scilab/includes;../../../core/includes;../../../localization/includes;../../../jvm/includes;../../../output_stream/includes;../cpp;../../../functions/includes;../../../fileio/includes;../../../commons/src/jni;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;FORDLL;NDEBUG;_WINDOWS;_USRDLL;GRAPHIC_OBJECTS_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <DisableSpecificWarnings>4996;4251</DisableSpecificWarnings>
+ </ClCompile>
+ <PreLinkEvent>
+ <Message>Make dependencies</Message>
+ <Command>
+ </Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>../../../../bin/noscigraphic_objects.dll</OutputFile>
+ <ModuleDefinitionFile>
+ </ModuleDefinitionFile>
+ <GenerateDebugInformation>false</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>
+ </LinkTimeCodeGeneration>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>../../../../bin/sci$(ProjectName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ <CLRUnmanagedCodeCheck>true</CLRUnmanagedCodeCheck>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\..\..\api_scilab\api_scilab.vcxproj">
+ <Project>{43c5bab1-1dca-4743-a183-77e0d42fe7d0}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\commons\src\c\commons.vcxproj">
+ <Project>{eca09a1e-6d12-4a47-92e1-a671c181df77}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\jvm\libjvm.vcxproj">
+ <Project>{8ba2dda8-bd04-4d4d-8ee6-6caa955f7470}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\localization\src\localization.vcxproj">
+ <Project>{ecffeb0c-1eda-45ee-9a10-b18143852e17}</Project>
+ </ProjectReference>
+ <ProjectReference Include="..\..\..\output_stream\src\c\output_stream.vcxproj">
+ <Project>{a5911cd7-f8e8-440c-a23e-4843a0636f3a}</Project>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\c\DllmainGraphic_objects.c" />
+ <ClCompile Include="nographic_objects.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="nographic_objects.h" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/modules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj.filters b/modules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj.filters
new file mode 100755
index 000000000..f67c2c2a3
--- /dev/null
+++ b/modules/graphic_objects/src/nographic_objects/nographic_objects.vcxproj.filters
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{f79df525-a28f-468e-baef-7a11c09d48b6}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{7d5a274b-0f38-4a01-9b9c-76921537ed71}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="localization">
+ <UniqueIdentifier>{5ffd4074-3898-45da-bc72-d7e2f4d603af}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies">
+ <UniqueIdentifier>{b65a6b60-178c-4b9e-9564-39f5703fd8bd}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="Libraries Dependencies\Imports">
+ <UniqueIdentifier>{426706e8-160d-467c-a553-370ddc7e5bdd}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="nographic_objects.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\c\DllmainGraphic_objects.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="nographic_objects.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/modules/graphic_objects/src/scripts/genPropertiesName.sh b/modules/graphic_objects/src/scripts/genPropertiesName.sh
new file mode 100755
index 000000000..26dd70cc9
--- /dev/null
+++ b/modules/graphic_objects/src/scripts/genPropertiesName.sh
@@ -0,0 +1,96 @@
+#! /bin/sh
+## Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+## Copyright (C) 2010-2010 - DIGITEO - Bruno JOFRET
+## Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+##
+## This file must be used under the terms of the CeCILL.
+## This source file is licensed as described in the file COPYING, which
+## you should have received as part of this distribution. The terms
+## are also available at
+## http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+##
+##
+
+main()
+{
+ if [ $# -ne 3 ]; then
+ echo "Usage: $0 --java|--C <PropertiesFile> <OuputFile>"
+ exit 1
+ fi
+
+ OutFile=$3
+ PropertiesFile=$2
+ Mode=$1
+
+ case "$Mode" in
+ --java)
+ generateJavaFile;;
+ --C)
+ generateCFile;;
+ esac
+}
+
+generateJavaFile()
+{
+ if test $PropertiesFile -nt $OutFile; then
+ echo "-- Building GraphicObjectProperties.java --"
+ generateHeader
+ echo "package org.scilab.modules.graphic_objects.graphicObject;" >> $OutFile
+ echo "" >> $OutFile
+ echo "public class GraphicObjectProperties {" >> $OutFile
+ echo "" >> $OutFile
+
+ awk 'BEGIN {num=0} (NF > 0) {printf " public static final int %s = %d;\n", $1, num; num++}' < $PropertiesFile >> $OutFile
+
+ echo "" >> $OutFile
+ echo "}" >> $OutFile
+ else
+ echo "-- GraphicObjectProperties.java already up-to-date --"
+ fi
+}
+
+generateCFile()
+{
+ if test $PropertiesFile -nt $OutFile; then
+ echo "-- Building GraphicObjectProperties.h --"
+ generateHeader
+ echo "#ifndef __GRAPHIC_OBJECT_PROPERTIES_H__" >> $OutFile
+ echo "#define __GRAPHIC_OBJECT_PROPERTIES_H__" >> $OutFile
+ echo "" >> $OutFile
+
+ awk 'BEGIN {num=0} (NF > 0) {printf "#define %s %d\n", $1, num; num++}' < $PropertiesFile >> $OutFile
+
+ echo "" >> $OutFile
+ echo "#endif /* !__GRAPHIC_OBJECT_PROPERTIES_H__ */" >> $OutFile
+ else
+ echo "-- GraphicObjectProperties.h already up-to-date --"
+ fi
+}
+
+generateHeader()
+{
+ echo "/*" > $OutFile
+ echo " * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab" >> $OutFile
+ echo " * Copyright (C) 2010-2012 - DIGITEO - Bruno JOFRET" >> $OutFile
+ echo " * Copyright (C) 2012-2014 - Scilab-Enterprises - Bruno JOFRET" >> $OutFile
+ echo " *" >> $OutFile
+ echo " * This file must be used under the terms of the CeCILL." >> $OutFile
+ echo " * This source file is licensed as described in the file COPYING, which" >> $OutFile
+ echo " * you should have received as part of this distribution. The terms" >> $OutFile
+ echo " * are also available at" >> $OutFile
+ echo " * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt" >> $OutFile
+ echo " *" >> $OutFile
+ echo " */" >> $OutFile
+
+ echo "" >> $OutFile
+
+ echo "/*" >> $OutFile
+ echo " * -=- This is a generated file, please do not edit by hand -=-" >> $OutFile
+ echo " * -=- Please see properties definitions in -=-" >> $OutFile
+ echo " * -=- SCI/modules/graphic_objects/src/scripts/propertiesMap.properties -=-" >> $OutFile
+ echo " */" >> $OutFile
+
+ echo "" >> $OutFile
+}
+
+main $@
diff --git a/modules/graphic_objects/src/scripts/propertiesMap.properties b/modules/graphic_objects/src/scripts/propertiesMap.properties
new file mode 100755
index 000000000..fe4eb7bb6
--- /dev/null
+++ b/modules/graphic_objects/src/scripts/propertiesMap.properties
@@ -0,0 +1,447 @@
+__GO_ARC__
+__GO_AXES__
+__GO_AXESMODEL__
+__GO_AXIS__
+__GO_CHAMP__
+__GO_COMPOUND__
+__GO_FAC3D__
+__GO_FEC__
+__GO_FIGURE__
+__GO_FIGUREMODEL__
+__GO_GRAYPLOT__
+__GO_LABEL__
+__GO_LEGEND__
+__GO_MATPLOT__
+__GO_PLOT3D__
+__GO_POLYLINE__
+__GO_RECTANGLE__
+__GO_SEGS__
+__GO_TEXT__
+__GO_UICONTROL__
+__GO_UIMENU__
+__GO_UICONTEXTMENU__
+
+__GO_CHILDREN__
+__GO_CHILDREN_COUNT__
+__GO_PARENT__
+__GO_USER_DATA__
+__GO_USER_DATA_SIZE__
+__GO_VISIBLE__
+__GO_HIDDEN__
+__GO_TYPE__
+__GO_DATA_MODEL__
+__GO_PARENT_FIGURE__
+__GO_PARENT_AXES__
+__GO_HAS_LEGEND_CHILD__
+__GO_LEGEND_CHILD__
+__GO_SELECTED_CHILD__
+__GO_CALLBACK__
+__GO_CALLBACKTYPE__
+
+__GO_DATA_MODEL_COORDINATES__
+__GO_DATA_MODEL_X__
+__GO_DATA_MODEL_Y__
+__GO_DATA_MODEL_Z__
+
+__GO_DATA_MODEL_X_COORDINATES_SHIFT__
+__GO_DATA_MODEL_Y_COORDINATES_SHIFT__
+__GO_DATA_MODEL_Z_COORDINATES_SHIFT__
+
+__GO_DATA_MODEL_X_COORDINATES_SHIFT_SET__
+__GO_DATA_MODEL_Y_COORDINATES_SHIFT_SET__
+__GO_DATA_MODEL_Z_COORDINATES_SHIFT_SET__
+
+__GO_DATA_MODEL_NUM_ELEMENTS__
+__GO_DATA_MODEL_NUM_ELEMENTS_ARRAY__
+__GO_DATA_MODEL_NUM_VERTICES_PER_GON__
+__GO_DATA_MODEL_NUM_GONS__
+
+__GO_DATA_MODEL_Z_COORDINATES_SET__
+
+__GO_DATA_MODEL_COLORS__
+__GO_DATA_MODEL_NUM_COLORS__
+
+__GO_DATA_MODEL_NUM_VERTICES__
+__GO_DATA_MODEL_NUM_INDICES__
+__GO_DATA_MODEL_INDICES__
+__GO_DATA_MODEL_VALUES__
+__GO_DATA_MODEL_NUM_VERTICES_BY_ELEM__
+
+__GO_DATA_MODEL_FEC_ELEMENTS__
+
+__GO_DATA_MODEL_NUM_X__
+__GO_DATA_MODEL_NUM_Y__
+__GO_DATA_MODEL_NUM_Z__
+__GO_DATA_MODEL_GRID_SIZE__
+__GO_DATA_MODEL_X_DIMENSIONS__
+__GO_DATA_MODEL_Y_DIMENSIONS__
+
+__GO_MATPLOT_TRANSLATE__
+__GO_MATPLOT_SCALE__
+__GO_DATA_MODEL_MATPLOT_BOUNDS__
+__GO_DATA_MODEL_MATPLOT_TYPE__
+__GO_DATA_MODEL_MATPLOT_GL_TYPE__
+__GO_DATA_MODEL_MATPLOT_DATA_INFOS__
+__GO_DATA_MODEL_MATPLOT_DATA_TYPE__
+__GO_DATA_MODEL_MATPLOT_DATA_ORDER__
+__GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__
+__GO_DATA_MODEL_MATPLOT_IMAGE_DATA__
+__GO_DATA_MODEL_MATPLOT_IMAGE_DATASIZE__
+
+__GO_REFERENCED__
+__GO_VALID__
+
+__GO_POSITION__
+__GO_SIZE__
+__GO_CANVAS__
+__GO_AUTORESIZE__
+__GO_VIEWPORT__
+__GO_AXES_SIZE__
+__GO_FIGURE_NAME__
+__GO_NAME__
+__GO_ID__
+__GO_INFO_MESSAGE__
+__GO_COLORMAP__
+__GO_COLORMAP_SIZE__
+__GO_RENDERING_MODE__
+__GO_PIXEL_DRAWING_MODE__
+__GO_ANTIALIASING__
+__GO_IMMEDIATE_DRAWING__
+__GO_BACKGROUND__
+__GO_EVENTHANDLER__
+__GO_EVENTHANDLER_NAME__
+__GO_EVENTHANDLER_ENABLE__
+__GO_TAG__
+__GO_ROTATION_TYPE__
+__GO_RESIZEFCN__
+__GO_CLOSEREQUESTFCN__
+__GO_DEFAULT_AXES__
+
+__GO_UPPER_LEFT_POINT__
+__GO_WIDTH__
+__GO_HEIGHT__
+__GO_START_ANGLE__
+__GO_END_ANGLE__
+__GO_ARC_DRAWING_METHOD__
+
+__GO_X_AXIS_VISIBLE__
+__GO_X_AXIS_REVERSE__
+__GO_X_AXIS_GRID_COLOR__
+__GO_X_AXIS_GRID_THICKNESS__
+__GO_X_AXIS_GRID_STYLE__
+__GO_X_AXIS_LABEL__
+__GO_X_AXIS_LOCATION__
+__GO_X_AXIS_LOG_FLAG__
+__GO_X_AXIS_TICKS__
+__GO_X_AXIS_FORMAT__
+__GO_X_AXIS_ST_FACTORS__
+__GO_X_AXIS_AUTO_TICKS__
+__GO_X_AXIS_NUMBER_TICKS__
+__GO_X_AXIS_TICKS_LOCATIONS__
+__GO_X_AXIS_TICKS_LABELS__
+__GO_X_AXIS_SUBTICKS__
+
+__GO_Y_AXIS_VISIBLE__
+__GO_Y_AXIS_REVERSE__
+__GO_Y_AXIS_GRID_COLOR__
+__GO_Y_AXIS_GRID_THICKNESS__
+__GO_Y_AXIS_GRID_STYLE__
+__GO_Y_AXIS_LABEL__
+__GO_Y_AXIS_LOCATION__
+__GO_Y_AXIS_LOG_FLAG__
+__GO_Y_AXIS_TICKS__
+__GO_Y_AXIS_FORMAT__
+__GO_Y_AXIS_ST_FACTORS__
+__GO_Y_AXIS_AUTO_TICKS__
+__GO_Y_AXIS_NUMBER_TICKS__
+__GO_Y_AXIS_TICKS_LOCATIONS__
+__GO_Y_AXIS_TICKS_LABELS__
+__GO_Y_AXIS_SUBTICKS__
+
+__GO_Z_AXIS_VISIBLE__
+__GO_Z_AXIS_REVERSE__
+__GO_Z_AXIS_GRID_COLOR__
+__GO_Z_AXIS_GRID_THICKNESS__
+__GO_Z_AXIS_GRID_STYLE__
+__GO_Z_AXIS_LABEL__
+__GO_Z_AXIS_LOCATION__
+__GO_Z_AXIS_LOG_FLAG__
+__GO_Z_AXIS_TICKS__
+__GO_Z_AXIS_FORMAT__
+__GO_Z_AXIS_ST_FACTORS__
+__GO_Z_AXIS_AUTO_TICKS__
+__GO_Z_AXIS_NUMBER_TICKS__
+__GO_Z_AXIS_TICKS_LOCATIONS__
+__GO_Z_AXIS_TICKS_LABELS__
+__GO_Z_AXIS_SUBTICKS__
+
+__GO_AUTO_SUBTICKS__
+
+__GO_GRID_POSITION__
+__GO_TITLE__
+__GO_AUTO_CLEAR__
+__GO_FILLED__
+__GO_CAMERA__
+__GO_VIEW__
+__GO_ISOVIEW__
+__GO_CUBE_SCALING__
+__GO_ROTATION_ANGLES__
+__GO_ROTATION_ANGLES_3D__
+__GO_BOX_TYPE__
+__GO_HIDDEN_AXIS_COLOR__
+__GO_X_TIGHT_LIMITS__
+__GO_Y_TIGHT_LIMITS__
+__GO_Z_TIGHT_LIMITS__
+__GO_DATA_BOUNDS__
+__GO_REAL_DATA_BOUNDS__
+__GO_ZOOM_ENABLED__
+__GO_ZOOM_BOX__
+__GO_AUTO_SCALE__
+__GO_FIRST_PLOT__
+__GO_MARGINS__
+__GO_AUTO_MARGINS__
+__GO_AXES_BOUNDS__
+
+__GO_CLIP_PROPERTY__
+__GO_CLIP_STATE__
+__GO_CLIP_BOX__
+__GO_CLIP_BOX_SET__
+
+__GO_LINE__
+__GO_LINE_MODE__
+__GO_LINE_STYLE__
+__GO_LINE_THICKNESS__
+__GO_LINE_COLOR__
+__GO_FILL_MODE__
+__GO_MARK__
+__GO_MARK_MODE__
+__GO_MARK_STYLE__
+__GO_MARK_SIZE_UNIT__
+__GO_MARK_SIZE__
+__GO_MARK_FOREGROUND__
+__GO_MARK_BACKGROUND__
+__GO_MARK_OFFSET__
+__GO_MARK_STRIDE__
+__GO_SELECTED__
+
+__GO_TICKS_DIRECTION__
+__GO_X_NUMBER_TICKS__
+__GO_Y_NUMBER_TICKS__
+__GO_X_TICKS_COORDS__
+__GO_Y_TICKS_COORDS__
+__GO_TICKS_COLOR__
+__GO_TICKS_SEGMENT__
+__GO_TICKS_STYLE__
+__GO_SUBTICKS__
+__GO_NUMBER_TICKS_LABELS__
+__GO_TICKS_LABELS__
+__GO_FORMATN__
+__GO_FONT__
+__GO_FONT_STYLE__
+__GO_FONT_SIZE__
+__GO_FONT_COLOR__
+__GO_FONT_FRACTIONAL__
+
+__GO_Z_BOUNDS__
+__GO_OUTSIDE_COLOR__
+__GO_COLOR_RANGE__
+
+__GO_DATA_MAPPING__
+
+__GO_FONT_ANGLE__
+__GO_AUTO_POSITION__
+__GO_CORNERS__
+__GO_AUTO_ROTATION__
+
+__GO_LINKS__
+__GO_LINKS_COUNT__
+__GO_LEGEND_LOCATION__
+__GO_MARKS_COUNT__
+__GO_LINE_WIDTH__
+
+__GO_CLOSED__
+__GO_ARROW_SIZE_FACTOR__
+__GO_POLYLINE_STYLE__
+__GO_INTERP_COLOR_VECTOR__
+__GO_INTERP_COLOR_VECTOR_SET__
+__GO_INTERP_COLOR_MODE__
+__GO_X_SHIFT__
+__GO_Y_SHIFT__
+__GO_Z_SHIFT__
+__GO_BAR_WIDTH__
+
+__GO_SURFACE_MODE__
+__GO_COLOR_MODE__
+__GO_COLOR_FLAG__
+
+__GO_ALIGNMENT__
+__GO_BOX__
+__GO_TEXT_BOX__
+__GO_TEXT_BOX_MODE__
+__GO_AUTO_DIMENSIONING__
+
+__GO_FORMATTED_TEXT__
+__GO_TEXT_ARRAY_DIMENSIONS__
+__GO_TEXT_STRINGS__
+
+__GO_BASE__
+__GO_BASE_X__
+__GO_BASE_Y__
+__GO_BASE_Z__
+__GO_DIRECTION__
+__GO_DIRECTION_X__
+__GO_DIRECTION_Y__
+__GO_DIRECTION_Z__
+__GO_ARROW_SIZE__
+__GO_SEGS_COLORS__
+
+__GO_COLORED__
+
+__GO_ARROWS__
+__GO_NUMBER_ARROWS__
+__GO_CHAMP_DIMENSIONS__
+__GO_BOUNDING_BOX__
+__GO_MAX_LENGTH__
+__GO_MAX_USABLE_LENGTH__
+
+__GO_HIDDEN_COLOR__
+
+__GO_STYLE__
+__GO_UI_CHECKBOX__
+__GO_UI_EDIT__
+__GO_UI_SPINNER__
+__GO_UI_FRAME__
+__GO_UI_FRAME_SCROLLABLE__
+__GO_UI_IMAGE__
+__GO_UI_LISTBOX__
+__GO_UI_POPUPMENU__
+__GO_UI_PUSHBUTTON__
+__GO_UI_RADIOBUTTON__
+__GO_UI_SLIDER__
+__GO_UI_TABLE__
+__GO_UI_TEXT__
+__GO_UI_LAYER__
+
+__GO_UI_BACKGROUNDCOLOR__
+__GO_UI_ENABLE__
+__GO_UI_FONTANGLE__
+__GO_UI_FONTNAME__
+__GO_UI_FONTSIZE__
+__GO_UI_FONTUNITS__
+__GO_UI_FONTWEIGHT__
+__GO_UI_FOREGROUNDCOLOR__
+__GO_UI_HORIZONTALALIGNMENT__
+__GO_UI_LISTBOXTOP__
+__GO_UI_LISTBOXTOP_SIZE__
+__GO_UI_MAX__
+__GO_UI_MIN__
+__GO_UI_RELIEF__
+__GO_UI_STRING__
+__GO_UI_TAB_STRING__
+__GO_UI_STRING_SIZE__
+__GO_UI_STRING_COLNB__
+__GO_UI_TOOLTIPSTRING__
+__GO_UI_TOOLTIPSTRING_SIZE__
+__GO_UI_SLIDERSTEP__
+__GO_UI_UNITS__
+__GO_UI_VALUE__
+__GO_UI_TAB_VALUE__
+__GO_UI_VALUE_SIZE__
+__GO_UI_VERTICALALIGNMENT__
+
+__GO_UIPARENTMENU__
+__GO_UICHILDMENU__
+__GO_UICHECKEDMENU__
+__GO_UI_CHECKED__
+__GO_UI_LABEL__
+__GO_UI_MNEMONIC__
+__GO_UI_ACCELERATOR__
+__GO_UI_SEPARATOR__
+__GO_UI_ICON__
+
+__GO_CONSOLE__
+__GO_SHOWHIDDENHANDLES__
+__GO_SHOWHIDDENPROPERTIES__
+__GO_USEDEPRECATEDLF__
+
+__GO_WAITBAR__
+__GO_PROGRESSIONBAR__
+__GO_UI_MESSAGE__
+__GO_UI_MESSAGE_SIZE__
+
+__GO_DATATIP__
+__GO_DATATIP_DATA__
+__GO_DATATIP_ORIENTATION__
+__GO_DATATIP_3COMPONENT__
+__GO_DATATIP_AUTOORIENTATION__
+__GO_DATATIP_INTERP_MODE__
+__GO_DATATIP_DISPLAY_FNC__
+__GO_DATATIP_BOX_MODE__
+__GO_DATATIP_LABEL_MODE__
+__GO_DATATIP_MARK__
+
+__GO_AMBIENTCOLOR__
+__GO_DIFFUSECOLOR__
+__GO_SPECULARCOLOR__
+
+__GO_COLOR_MATERIAL__
+__GO_MATERIAL_SHININESS__
+
+__GO_LIGHT__
+__GO_LIGHT_TYPE__
+
+__GO_DATATIPS__
+__GO_DATATIPS_COUNT__
+__GO_DATATIP_INDEXES__
+
+__GO_DATA_MODEL_DISPLAY_FUNCTION__
+__GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__
+
+__GO_RESIZE__
+__GO_TOOLBAR__
+__GO_TOOLBAR_VISIBLE__
+__GO_MENUBAR__
+__GO_MENUBAR_VISIBLE__
+__GO_INFOBAR_VISIBLE__
+__GO_DOCKABLE__
+__GO_LAYOUT__
+__GO_LAYOUT_SET__
+__GO_UI_TAB__
+
+__GO_UI_GRIDBAG_GRID__
+__GO_UI_GRIDBAG_WEIGHT__
+__GO_UI_GRIDBAG_FILL__
+__GO_UI_GRIDBAG_ANCHOR__
+__GO_UI_GRIDBAG_PADDING__
+__GO_UI_GRIDBAG_PREFERREDSIZE__
+
+__GO_UI_GRID_GRID__
+__GO_UI_GRID_PADDING__
+
+__GO_UI_BORDER_POSITION__
+__GO_UI_BORDER_PREFERREDSIZE__
+
+
+__GO_GRID_OPT_GRID__
+__GO_GRID_OPT_PADDING__
+__GO_BORDER_OPT_PADDING__
+
+__GO_UI_FRAME_BORDER__
+__GO_UI_FRAME_BORDER_COLOR__
+__GO_UI_FRAME_BORDER_HIGHLIGHT_IN__
+__GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__
+__GO_UI_FRAME_BORDER_IN_BORDER__
+__GO_UI_FRAME_BORDER_JUSTIFICATION__
+__GO_UI_FRAME_BORDER_OUT_BORDER__
+__GO_UI_FRAME_BORDER_ROUNDED__
+__GO_UI_FRAME_BORDER_SHADOW_IN__
+__GO_UI_FRAME_BORDER_SHADOW_OUT__
+__GO_UI_FRAME_BORDER_TITLE__
+__GO_UI_FRAME_BORDER_POSITION__
+__GO_UI_FRAME_BORDER_STYLE__
+__GO_UI_GROUP_NAME__
+__GO_UI_TITLE_POSITION__
+__GO_UI_TITLE_SCROLL__
+__GO_UI_FRAME_BORDER_TYPE__
+__GO_UI_SCROLLABLE__
+
diff --git a/modules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testAxes.java b/modules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testAxes.java
new file mode 100755
index 000000000..fe221e880
--- /dev/null
+++ b/modules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testAxes.java
@@ -0,0 +1,1183 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.tests.modules.graphic_objects;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.rmi.server.UID;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Random;
+
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.axes.Axes.GridPosition;
+import org.scilab.modules.graphic_objects.axes.AxisProperty.AxisLocation;
+import org.scilab.modules.graphic_objects.axes.Box.BoxType;
+import org.scilab.modules.graphic_objects.axes.Camera.ViewType;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.label.Label;
+import org.scilab.modules.graphic_objects.textObject.FormattedText;
+import org.scilab.modules.graphic_objects.textObject.Font;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+import org.junit.*;
+
+/**
+ * Axes test class
+ * @author Manuel JULIACHS
+ */
+public class testAxes {
+
+ /** The default number of ticks */
+ public static final int DEFAULT_NUMBER_OF_TICKS = 11;
+
+ /** Figure identifier */
+ private Integer figureID;
+
+ /** The Axes identifier */
+ private Integer axesID;
+
+ /** X-Axis label identifier */
+ private Integer xlabelID;
+
+ /** Y-Axis label identifier */
+ private Integer ylabelID;
+
+ /** Z-Axis label identifier */
+ private Integer zlabelID;
+
+ /** Title label identifier */
+ private Integer titleID;
+
+ /** Graphic controller */
+ private GraphicController controller;
+
+ /** X-Axis label */
+ private Label xlabel;
+
+ /** Y-Axis label */
+ private Label ylabel;
+
+ /** Z-Axis label */
+ private Label zlabel;
+
+ /** title label */
+ private Label title;
+
+ /** Axes object used for data initialization */
+ private Axes initAxes;
+
+ /**
+ * Creates the Axes graphic object.
+ * Called only once.
+ */
+ @Before
+ public void createAxes() {
+
+ controller = GraphicController.getController();
+ assert controller != null;
+
+ axesID = controller.askObject(Type.AXES);
+ GraphicObject axes = (GraphicObject) controller.getObjectFromId(axesID);
+ assert axes != null;
+
+ /* Allocate an empty figure and link the axes and figure */
+ final Integer figureID = controller.askObject(Type.FIGURE);
+ axes.setParent(figureID);
+ }
+
+ /**
+ * Utility method which creates the graphic objects used by the Axes object and
+ * initializes data relevant to the Axes properties.
+ * Must be called prior to any set/get calls, once per group of tests (see below).
+ * Most properties are randomly chosen (for example the axes properties such as visible,
+ * reverse, data bounds values are offset by a random value, etc.). Only a few are not
+ * (such as each axis' location or the box type).
+ * The point of random initialization is to ensure that set and get work correctly, by comparing
+ * the initial random values which are then assigned by set calls to the results obtained by get calls
+ * (the former and the latter should of course be equal).
+ */
+ @Before
+ public void initializeData() {
+ this.createAxes();
+ figureID = controller.askObject(Type.FIGURE);
+ GraphicObject parentFigure = (GraphicObject) controller.getObjectFromId(figureID);
+ assert parentFigure != null;
+
+ xlabelID = controller.askObject(Type.LABEL);
+ xlabel = (Label) controller.getObjectFromId(xlabelID);
+ assert xlabel != null;
+
+ ylabelID = controller.askObject(Type.LABEL);
+ ylabel = (Label) controller.getObjectFromId(ylabelID);
+ assert ylabel != null;
+
+ zlabelID = controller.askObject(Type.LABEL);
+ zlabel = (Label) controller.getObjectFromId(zlabelID);
+ assert zlabel != null;
+
+ titleID = controller.askObject(Type.LABEL);
+ title = (Label) controller.getObjectFromId(titleID);
+ assert title != null;
+
+ Random randomGen = new Random();
+
+ initAxes = new Axes();
+ assert initAxes != null;
+
+ /* Allocate an empty figure and link the axes and figure */
+ final Integer figureInitID = controller.askObject(Type.FIGURE);
+ initAxes.setParent(figureInitID);
+
+ /* GraphicObjects properties */
+ initAxes.setVisible(randomGen.nextBoolean());
+
+ /* Axes properties */
+ Integer axisLocation = randomGen.nextInt(6);
+ initAxes.setXAxisVisible(randomGen.nextBoolean());
+ initAxes.setXAxisReverse(randomGen.nextBoolean());
+ initAxes.setXAxisGridColor(randomGen.nextInt());
+ initAxes.setXAxisLocationAsEnum(AxisLocation.intToEnum(axisLocation));
+ initAxes.setXAxisLogFlag(randomGen.nextBoolean());
+ initAxes.setXAxisAutoTicks(randomGen.nextBoolean());
+ initAxes.setXAxisSubticks(randomGen.nextInt());
+
+ axisLocation = randomGen.nextInt(6);
+ initAxes.setYAxisVisible(randomGen.nextBoolean());
+ initAxes.setYAxisReverse(randomGen.nextBoolean());
+ initAxes.setYAxisGridColor(randomGen.nextInt());
+ initAxes.setYAxisLocationAsEnum(AxisLocation.intToEnum(axisLocation));
+ initAxes.setYAxisLogFlag(randomGen.nextBoolean());
+ initAxes.setYAxisAutoTicks(randomGen.nextBoolean());
+ initAxes.setYAxisSubticks(randomGen.nextInt());
+
+ axisLocation = randomGen.nextInt(6);
+ initAxes.setZAxisVisible(randomGen.nextBoolean());
+ initAxes.setZAxisReverse(randomGen.nextBoolean());
+ initAxes.setZAxisGridColor(randomGen.nextInt());
+ initAxes.setZAxisLocationAsEnum(AxisLocation.intToEnum(axisLocation));
+ initAxes.setZAxisLogFlag(randomGen.nextBoolean());
+ initAxes.setZAxisAutoTicks(randomGen.nextBoolean());
+ initAxes.setZAxisSubticks(randomGen.nextInt());
+
+ /* ticks locations */
+
+ Double dataXShift = randomGen.nextDouble() % 0.1;
+ Double dataYShift = randomGen.nextDouble() % 0.1;
+ Double dataZShift = randomGen.nextDouble() % 0.1;
+
+ Double xMin = dataXShift;
+ Double yMin = dataXShift;
+ Double zMin = -1.0 + dataXShift;
+
+ Double[] dataBounds = new Double[] {dataXShift, dataYShift, -1.0 + dataZShift,
+ 1.0 + dataXShift, 1.0 + dataYShift, 1.0 + dataZShift
+ };
+ Double[] realDataBounds = new Double[] {dataXShift, dataYShift, -1.0 + dataZShift,
+ 1.0 + dataXShift, 1.0 + dataYShift, 1.0 + dataZShift
+ };
+
+ Double[] xlocs = new Double[DEFAULT_NUMBER_OF_TICKS];
+ Double[] ylocs = new Double[DEFAULT_NUMBER_OF_TICKS];
+ Double[] zlocs = new Double[DEFAULT_NUMBER_OF_TICKS];
+
+ for (int i = 0; i < DEFAULT_NUMBER_OF_TICKS; i++) {
+ double posRatio = (double) i / (double) DEFAULT_NUMBER_OF_TICKS;
+ xlocs[i] = posRatio * (dataBounds[3] - dataBounds[0]) + dataBounds[0];
+ ylocs[i] = posRatio * (dataBounds[4] - dataBounds[1]) + dataBounds[1];
+ zlocs[i] = posRatio * (dataBounds[5] - dataBounds[2]) + dataBounds[2];
+ }
+
+ ArrayList <FormattedText> xlabels = new ArrayList(DEFAULT_NUMBER_OF_TICKS);
+ ArrayList <FormattedText> ylabels = new ArrayList(DEFAULT_NUMBER_OF_TICKS);
+ ArrayList <FormattedText> zlabels = new ArrayList(DEFAULT_NUMBER_OF_TICKS);
+
+ Font xFont = new Font();
+ xFont.setColor(randomGen.nextInt());
+ xFont.setSize(1.0);
+ Font yFont = new Font();
+ yFont.setColor(randomGen.nextInt());
+ yFont.setSize(2.0);
+ Font zFont = new Font();
+ zFont.setColor(randomGen.nextInt());
+ zFont.setSize(3.0);
+
+ for (int i = 0; i < DEFAULT_NUMBER_OF_TICKS; i++) {
+ FormattedText newtext = new FormattedText();
+ Integer ind = new Integer(i);
+ newtext.setText("Xtext" + ind.toString());
+ newtext.setFont(xFont);
+ xlabels.add(newtext);
+ newtext = new FormattedText();
+ newtext.setText("Ytext" + ind.toString());
+ newtext.setFont(yFont);
+ ylabels.add(newtext);
+ newtext = new FormattedText();
+ newtext.setText("Ztext" + ind.toString());
+ newtext.setFont(zFont);
+ zlabels.add(newtext);
+ }
+
+ initAxes.setXAxisTicksLocations(xlocs);
+ initAxes.setXAxisTicksLabelsAsArrayList(xlabels);
+ initAxes.setYAxisTicksLocations(ylocs);
+ initAxes.setYAxisTicksLabelsAsArrayList(ylabels);
+ initAxes.setZAxisTicksLocations(zlocs);
+ initAxes.setZAxisTicksLabelsAsArrayList(zlabels);
+
+ initAxes.setAutoSubticks(randomGen.nextBoolean());
+
+ /* Miscellaneous Axes properties */
+ Double marginXShift = randomGen.nextDouble() % 0.1;
+ Double marginYShift = randomGen.nextDouble() % 0.1;
+ Double[] margins = new Double[] {0.15 + marginXShift, 0.15 + marginXShift, 0.15 + marginYShift, 0.15 + marginYShift};
+ Double axesBoundsXShift = randomGen.nextDouble() % 0.1;
+ Double axesBoundsYShift = randomGen.nextDouble() % 0.1;
+ Double[] axesBounds = new Double[] {axesBoundsXShift, axesBoundsYShift, 1.0 - axesBoundsXShift, 1.0 - axesBoundsYShift};
+
+ initAxes.setGridPositionAsEnum(GridPosition.BACKGROUND);
+ initAxes.setAutoClear(randomGen.nextBoolean());
+ initAxes.setFilled(randomGen.nextBoolean());
+ initAxes.setBackground(randomGen.nextInt());
+ initAxes.setMargins(margins);
+ initAxes.setAxesBounds(axesBounds);
+
+ /* Properties applied to child objects */
+ initAxes.setHiddenColor(randomGen.nextInt());
+ initAxes.setLineMode(randomGen.nextBoolean());
+ initAxes.setLineStyle(randomGen.nextInt(7));
+ initAxes.setLineThickness(randomGen.nextDouble());
+ initAxes.setLineColor(randomGen.nextInt());
+
+ initAxes.setMarkMode(randomGen.nextBoolean());
+ initAxes.setMarkStyle(randomGen.nextInt());
+ initAxes.setMarkSize(randomGen.nextInt());
+ initAxes.setMarkSizeUnit(randomGen.nextInt(2));
+ initAxes.setMarkForeground(randomGen.nextInt());
+ initAxes.setMarkBackground(randomGen.nextInt());
+
+ initAxes.setClipState(randomGen.nextInt(3));
+
+ Double xShift = randomGen.nextDouble() % 0.2;
+ Double yShift = randomGen.nextDouble() % 0.2;
+ Double xDim = 0.8 + randomGen.nextDouble() % 1.0;
+ Double yDim = 0.8 + randomGen.nextDouble() % 1.0;
+ Double[] clipBox = new Double[] {1.0 - xShift, 1.0 - yShift, xDim, yDim};
+
+ initAxes.setClipBox(clipBox);
+
+ initAxes.setArcDrawingMethod(randomGen.nextInt(2));
+
+ /* Camera properties */
+ Double[] rotationAngles = new Double[] {randomGen.nextDouble() * 90.0, randomGen.nextDouble() * 360.0};
+
+ initAxes.setViewAsEnum(ViewType.VIEW_3D);
+ initAxes.setCubeScaling(randomGen.nextBoolean());
+ initAxes.setIsoview(randomGen.nextBoolean());
+ initAxes.setRotationAngles(rotationAngles);
+
+ /* Box properties */
+ Double zoomXShift = randomGen.nextDouble() % 0.1;
+ Double zoomYShift = randomGen.nextDouble() % 0.1;
+ Double zoomZShift = randomGen.nextDouble() % 0.1;
+ Double[] zoomBox = new Double[] {zoomXShift, zoomYShift, -1.0 + zoomZShift, 1.0 - zoomXShift, 1.0 - zoomYShift, 1.0 - zoomZShift};
+
+ Integer boxType = randomGen.nextInt(4);
+ initAxes.setBoxTypeAsEnum(BoxType.intToEnum(boxType));
+
+ initAxes.setHiddenAxisColor(randomGen.nextInt());
+ initAxes.setTightLimits(randomGen.nextBoolean());
+ initAxes.setDataBounds(dataBounds);
+ initAxes.setRealDataBounds(realDataBounds);
+ initAxes.setZoomEnabled(randomGen.nextBoolean());
+ initAxes.setZoomBox(zoomBox);
+ initAxes.setAutoScale(randomGen.nextBoolean());
+ initAxes.setFirstPlot(randomGen.nextBoolean());
+ }
+
+ /* Reflection-based set/get methods tests */
+ /* GraphicObject properties */
+ @Test
+ public void testReflectSetGetAxesVisible() {
+ controller.setProperty(axesID, __GO_VISIBLE__, initAxes.getVisible());
+ Boolean axesVisible = (Boolean) controller.getProperty(axesID, __GO_VISIBLE__);
+ assert axesVisible.equals(initAxes.getVisible());
+ }
+
+ /* X-Axis properties */
+ @Test
+ public void testReflectSetGetXAxisVisible() {
+ controller.setProperty(axesID, __GO_X_AXIS_VISIBLE__, initAxes.getXAxisVisible());
+ Boolean retAxisVisible = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_VISIBLE__);
+ assert (retAxisVisible.equals(initAxes.getXAxisVisible()));
+ }
+ @Test
+ public void testReflectSetGetXAxisReverse() {
+ controller.setProperty(axesID, __GO_X_AXIS_REVERSE__, initAxes.getXAxisReverse());
+ Boolean retAxisReverse = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_REVERSE__);
+ assert (retAxisReverse.equals(initAxes.getXAxisReverse()));
+ }
+ @Test
+ public void testReflectSetGetXAxisGridColor() {
+ controller.setProperty(axesID, __GO_X_AXIS_GRID_COLOR__, initAxes.getXAxisGridColor());
+ Integer retGridColor = (Integer) controller.getProperty(axesID, __GO_X_AXIS_GRID_COLOR__);
+ assert retGridColor.equals(initAxes.getXAxisGridColor());
+ }
+ @Test
+ public void testReflectSetGetXAxisLabel() {
+ controller.setProperty(axesID, __GO_X_AXIS_LABEL__, xlabelID);
+ Integer retXlabel = (Integer) controller.getProperty(axesID, __GO_X_AXIS_LABEL__);
+ assert retXlabel.equals(xlabelID);
+ }
+ @Test
+ public void testReflectSetGetXAxisLocation() {
+ controller.setProperty(axesID, __GO_X_AXIS_LOCATION__, initAxes.getXAxisLocation());
+ Integer retAxisLocation = (Integer) controller.getProperty(axesID, __GO_X_AXIS_LOCATION__);
+ assert retAxisLocation.equals(initAxes.getXAxisLocation());
+ }
+ @Test
+ public void testReflectSetGetXAxisLogFlag() {
+ controller.setProperty(axesID, __GO_X_AXIS_LOG_FLAG__, initAxes.getXAxisLogFlag());
+ Boolean retLogFlag = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_LOG_FLAG__);
+ assert retLogFlag.equals(initAxes.getXAxisLogFlag());
+ }
+ @Test
+ public void testReflectSetGetXAxisAutoTicks() {
+ controller.setProperty(axesID, __GO_X_AXIS_AUTO_TICKS__, initAxes.getXAxisAutoTicks());
+ Boolean retAutoTicks = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_AUTO_TICKS__);
+ assert retAutoTicks.equals(initAxes.getXAxisAutoTicks());
+ }
+ @Test
+ public void testReflectSetGetXAxisSubTicks() {
+ controller.setProperty(axesID, __GO_X_AXIS_SUBTICKS__, initAxes.getXAxisSubticks());
+ Integer retSubTicks = (Integer) controller.getProperty(axesID, __GO_X_AXIS_SUBTICKS__);
+ assert retSubTicks.equals(initAxes.getXAxisSubticks());
+ }
+ @Test
+ public void testReflectSetGetXAxisTicksLocations() {
+ controller.setProperty(axesID, __GO_X_AXIS_TICKS_LOCATIONS__, initAxes.getXAxisTicksLocations());
+ Double[] retTicksLocations = (Double[]) controller.getProperty(axesID, __GO_X_AXIS_TICKS_LOCATIONS__);
+ assert Arrays.equals(retTicksLocations, initAxes.getXAxisTicksLocations());
+ }
+ @Test
+ public void testReflectSetGetXAxisTicksLabels() {
+ controller.setProperty(axesID, __GO_X_AXIS_TICKS_LABELS__, initAxes.getXAxisTicksLabels());
+ String[] retTicksLabels = (String[]) controller.getProperty(axesID, __GO_X_AXIS_TICKS_LABELS__);
+
+ assert Arrays.equals(retTicksLabels, initAxes.getXAxisTicksLabels());
+ }
+
+ /* Y-Axis properties */
+ @Test
+ public void testReflectSetGetYAxisVisible() {
+ controller.setProperty(axesID, __GO_Y_AXIS_VISIBLE__, initAxes.getYAxisVisible());
+ Boolean retAxisVisible = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_VISIBLE__);
+ assert (retAxisVisible.equals(initAxes.getYAxisVisible()));
+ }
+ @Test
+ public void testReflectSetGetYAxisReverse() {
+ controller.setProperty(axesID, __GO_Y_AXIS_REVERSE__, initAxes.getYAxisReverse());
+ Boolean retAxisReverse = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_REVERSE__);
+ assert (retAxisReverse.equals(initAxes.getYAxisReverse()));
+ }
+ @Test
+ public void testReflectSetGetYAxisGridColor() {
+ controller.setProperty(axesID, __GO_Y_AXIS_GRID_COLOR__, initAxes.getYAxisGridColor());
+ Integer retGridColor = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_GRID_COLOR__);
+ assert retGridColor.equals(initAxes.getYAxisGridColor());
+ }
+ @Test
+ public void testReflectSetGetYAxisLabel() {
+ controller.setProperty(axesID, __GO_Y_AXIS_LABEL__, ylabelID);
+ Integer retlabel = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_LABEL__);
+ assert retlabel.equals(ylabelID);
+ }
+ @Test
+ public void testReflectSetGetYAxisLocation() {
+ controller.setProperty(axesID, __GO_Y_AXIS_LOCATION__, initAxes.getYAxisLocation());
+ Integer retAxisLocation = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_LOCATION__);
+ assert retAxisLocation.equals(initAxes.getYAxisLocation());
+ }
+ @Test
+ public void testReflectSetGetYAxisLogFlag() {
+ controller.setProperty(axesID, __GO_Y_AXIS_LOG_FLAG__, initAxes.getYAxisLogFlag());
+ Boolean retLogFlag = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_LOG_FLAG__);
+ assert retLogFlag.equals(initAxes.getYAxisLogFlag());
+ }
+ @Test
+ public void testReflectSetGetYAxisAutoTicks() {
+ controller.setProperty(axesID, __GO_Y_AXIS_AUTO_TICKS__, initAxes.getYAxisAutoTicks());
+ Boolean retAutoTicks = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_AUTO_TICKS__);
+ assert retAutoTicks.equals(initAxes.getYAxisAutoTicks());
+ }
+ @Test
+ public void testReflectSetGetYAxisSubTicks() {
+ controller.setProperty(axesID, __GO_Y_AXIS_SUBTICKS__, initAxes.getYAxisSubticks());
+ Integer retSubTicks = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_SUBTICKS__);
+ assert retSubTicks.equals(initAxes.getYAxisSubticks());
+ }
+ @Test
+ public void testReflectSetGetYAxisTicksLocations() {
+ controller.setProperty(axesID, __GO_Y_AXIS_TICKS_LOCATIONS__, initAxes.getYAxisTicksLocations());
+ Double[] retTicksLocations = (Double[]) controller.getProperty(axesID, __GO_Y_AXIS_TICKS_LOCATIONS__);
+ assert Arrays.equals(retTicksLocations, initAxes.getYAxisTicksLocations());
+ }
+ @Test
+ public void testReflectSetGetYAxisTicksLabels() {
+ controller.setProperty(axesID, __GO_Y_AXIS_TICKS_LABELS__, initAxes.getYAxisTicksLabels());
+ String[] retTicksLabels = (String[]) controller.getProperty(axesID, __GO_Y_AXIS_TICKS_LABELS__);
+
+ assert Arrays.equals(retTicksLabels, initAxes.getYAxisTicksLabels());
+ }
+
+ /* Z-Axis properties */
+ @Test
+ public void testReflectSetGetZAxisVisible() {
+ controller.setProperty(axesID, __GO_Z_AXIS_VISIBLE__, initAxes.getZAxisVisible());
+ Boolean retAxisVisible = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_VISIBLE__);
+ assert (retAxisVisible.equals(initAxes.getZAxisVisible()));
+ }
+ @Test
+ public void testReflectSetGetZAxisReverse() {
+ controller.setProperty(axesID, __GO_Z_AXIS_REVERSE__, initAxes.getZAxisReverse());
+ Boolean retAxisReverse = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_REVERSE__);
+ assert (retAxisReverse.equals(initAxes.getZAxisReverse()));
+ }
+ @Test
+ public void testReflectSetGetZAxisGridColor() {
+ controller.setProperty(axesID, __GO_Z_AXIS_GRID_COLOR__, initAxes.getZAxisGridColor());
+ Integer retGridColor = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_GRID_COLOR__);
+ assert retGridColor.equals(initAxes.getZAxisGridColor());
+ }
+ @Test
+ public void testReflectSetGetZAxisLabel() {
+ controller.setProperty(axesID, __GO_Z_AXIS_LABEL__, zlabelID);
+ Integer retlabel = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_LABEL__);
+ assert retlabel.equals(zlabelID);
+ }
+ @Test
+ public void testReflectSetGetZAxisLocation() {
+ controller.setProperty(axesID, __GO_Z_AXIS_LOCATION__, initAxes.getZAxisLocation());
+ Integer retAxisLocation = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_LOCATION__);
+ assert retAxisLocation.equals(initAxes.getZAxisLocation());
+ }
+ @Test
+ public void testReflectSetGetZAxisLogFlag() {
+ controller.setProperty(axesID, __GO_Z_AXIS_LOG_FLAG__, initAxes.getZAxisLogFlag());
+ Boolean retLogFlag = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_LOG_FLAG__);
+ assert retLogFlag.equals(initAxes.getZAxisLogFlag());
+ }
+ @Test
+ public void testReflectSetGetZAxisAutoTicks() {
+ controller.setProperty(axesID, __GO_Z_AXIS_AUTO_TICKS__, initAxes.getZAxisAutoTicks());
+ Boolean retAutoTicks = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_AUTO_TICKS__);
+ assert retAutoTicks.equals(initAxes.getZAxisAutoTicks());
+ }
+ @Test
+ public void testReflectSetGetZAxisSubTicks() {
+ controller.setProperty(axesID, __GO_Z_AXIS_SUBTICKS__, initAxes.getZAxisSubticks());
+ Integer retSubTicks = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_SUBTICKS__);
+ assert retSubTicks.equals(initAxes.getZAxisSubticks());
+ }
+ @Test
+ public void testReflectSetGetZAxisTicksLocations() {
+ controller.setProperty(axesID, __GO_Z_AXIS_TICKS_LOCATIONS__, initAxes.getZAxisTicksLocations());
+ Double[] retTicksLocations = (Double[]) controller.getProperty(axesID, __GO_Z_AXIS_TICKS_LOCATIONS__);
+ assert Arrays.equals(retTicksLocations, initAxes.getZAxisTicksLocations());
+ }
+ @Test
+ public void testReflectSetGetZAxisTicksLabels() {
+ controller.setProperty(axesID, __GO_Z_AXIS_TICKS_LABELS__, initAxes.getZAxisTicksLabels());
+ String[] retTicksLabels = (String[]) controller.getProperty(axesID, __GO_Z_AXIS_TICKS_LABELS__);
+
+ assert Arrays.equals(retTicksLabels, initAxes.getZAxisTicksLabels());
+ }
+
+ /* Ticks property shared by the three axes */
+ @Test
+ public void testReflectSetGetAutoSubticks() {
+ controller.setProperty(axesID, __GO_AUTO_SUBTICKS__, initAxes.getAutoSubticks());
+ Boolean retAutoSubticks = (Boolean) controller.getProperty(axesID, __GO_AUTO_SUBTICKS__);
+ assert retAutoSubticks.equals(initAxes.getAutoSubticks());
+ }
+
+ /* Miscellaneous Axes properties */
+ @Test
+ public void testReflectSetGetGridPosition() {
+ controller.setProperty(axesID, __GO_GRID_POSITION__, initAxes.getGridPosition());
+ Integer retGridPos = (Integer) controller.getProperty(axesID, __GO_GRID_POSITION__);
+ assert retGridPos.equals(initAxes.getGridPosition());
+ }
+ @Test
+ public void testReflectSetGetTitle() {
+ controller.setProperty(axesID, __GO_TITLE__, titleID);
+ Integer retTitle = (Integer) controller.getProperty(axesID, __GO_TITLE__);
+ assert retTitle.equals(titleID);
+ }
+ @Test
+ public void testReflectSetGetAutoClear() {
+ controller.setProperty(axesID, __GO_AUTO_CLEAR__, initAxes.getAutoClear());
+ Boolean retAutoClear = (Boolean) controller.getProperty(axesID, __GO_AUTO_CLEAR__);
+ assert retAutoClear.equals(initAxes.getAutoClear());
+ }
+ @Test
+ public void testReflectSetGetFilled() {
+ controller.setProperty(axesID, __GO_FILLED__, initAxes.getFilled());
+ Boolean retFilled = (Boolean) controller.getProperty(axesID, __GO_FILLED__);
+ assert retFilled.equals(initAxes.getFilled());
+ }
+ @Test
+ public void testReflectSetGetBackground() {
+ controller.setProperty(axesID, __GO_BACKGROUND__, initAxes.getBackground());
+ Integer retBackground = (Integer) controller.getProperty(axesID, __GO_BACKGROUND__);
+ assert retBackground.equals(initAxes.getBackground());
+ }
+ @Test
+ public void testReflectSetGetMargins() {
+ controller.setProperty(axesID, __GO_MARGINS__, initAxes.getMargins());
+ Double[] retMargins = (Double[]) controller.getProperty(axesID, __GO_MARGINS__);
+ assert Arrays.equals(retMargins, initAxes.getMargins());
+ }
+ @Test
+ public void testReflectSetGetAxesBounds() {
+ controller.setProperty(axesID, __GO_AXES_BOUNDS__, initAxes.getAxesBounds());
+ Double[] retAxesBounds = (Double[]) controller.getProperty(axesID, __GO_AXES_BOUNDS__);
+ assert Arrays.equals(retAxesBounds, initAxes.getAxesBounds());
+ }
+
+ /* Camera properties */
+ @Test
+ public void testReflectSetGetView() {
+ controller.setProperty(axesID, __GO_VIEW__, initAxes.getView());
+ Integer retView = (Integer) controller.getProperty(axesID, __GO_VIEW__);
+ assert retView.equals(initAxes.getView());
+ }
+ @Test
+ public void testReflectSetGetIsoview() {
+ controller.setProperty(axesID, __GO_ISOVIEW__, initAxes.getIsoview());
+ Boolean retIsoview = (Boolean) controller.getProperty(axesID, __GO_ISOVIEW__);
+ assert retIsoview.equals(initAxes.getIsoview());
+ }
+ @Test
+ public void testReflectSetGetCubeScaling() {
+ controller.setProperty(axesID, __GO_CUBE_SCALING__, initAxes.getCubeScaling());
+ Boolean retCubeScaling = (Boolean) controller.getProperty(axesID, __GO_CUBE_SCALING__);
+ assert retCubeScaling.equals(initAxes.getCubeScaling());
+ }
+ @Test
+ public void testReflectSetGetRotationAngles() {
+ controller.setProperty(axesID, __GO_ROTATION_ANGLES__, initAxes.getRotationAngles());
+ Double[] retRotationAngles = (Double[]) controller.getProperty(axesID, __GO_ROTATION_ANGLES__);
+ assert (Arrays.equals(retRotationAngles, initAxes.getRotationAngles()) && retRotationAngles.length == 2);
+ }
+
+ /* Box properties */
+ @Test
+ public void testReflectSetGetBoxType() {
+ controller.setProperty(axesID, __GO_BOX_TYPE__, initAxes.getBoxType());
+ Integer retBoxType = (Integer) controller.getProperty(axesID, __GO_BOX_TYPE__);
+ assert retBoxType.equals(initAxes.getBoxType());
+ }
+ @Test
+ public void testReflectSetGetHiddenAxisColor() {
+ controller.setProperty(axesID, __GO_HIDDEN_AXIS_COLOR__, initAxes.getHiddenAxisColor());
+ Integer retHiddenAxisColor = (Integer) controller.getProperty(axesID, __GO_HIDDEN_AXIS_COLOR__);
+ assert retHiddenAxisColor.equals(initAxes.getHiddenAxisColor());
+ }
+ @Test
+ public void testReflectSetGetTightLimits() {
+ controller.setProperty(axesID, __GO_TIGHT_LIMITS__, initAxes.getTightLimits());
+ Boolean retTightLimits = (Boolean) controller.getProperty(axesID, __GO_TIGHT_LIMITS__);
+ assert retTightLimits.equals(initAxes.getTightLimits());
+ }
+ @Test
+ public void testReflectSetGetDataBounds() {
+ controller.setProperty(axesID, __GO_DATA_BOUNDS__, initAxes.getDataBounds());
+ Double[] retDataBounds = (Double[]) controller.getProperty(axesID, __GO_DATA_BOUNDS__);
+ assert Arrays.equals(retDataBounds, initAxes.getDataBounds());
+ }
+ @Test
+ public void testReflectSetGetRealDataBounds() {
+ controller.setProperty(axesID, __GO_REAL_DATA_BOUNDS__, initAxes.getRealDataBounds());
+ Double[] retRealDataBounds = (Double[]) controller.getProperty(axesID, __GO_REAL_DATA_BOUNDS__);
+ assert Arrays.equals(retRealDataBounds, initAxes.getRealDataBounds());
+ }
+ @Test
+ public void testReflectSetGetZoomEnabled() {
+ controller.setProperty(axesID, __GO_ZOOM_ENABLED__, initAxes.getZoomEnabled());
+ Boolean retZoomEnabled = (Boolean) controller.getProperty(axesID, __GO_ZOOM_ENABLED__);
+ assert retZoomEnabled.equals(initAxes.getZoomEnabled());
+ }
+ @Test
+ public void testReflectSetGetZoomBox() {
+ controller.setProperty(axesID, __GO_ZOOM_BOX__, initAxes.getZoomBox());
+ Double[] retZoomBox = (Double[]) controller.getProperty(axesID, __GO_ZOOM_BOX__);
+ assert Arrays.equals(retZoomBox, initAxes.getZoomBox());
+ }
+ @Test
+ public void testReflectSetGetAutoScale() {
+ controller.setProperty(axesID, __GO_AUTO_SCALE__, initAxes.getAutoScale());
+ Boolean retAutoScale = (Boolean) controller.getProperty(axesID, __GO_AUTO_SCALE__);
+ assert retAutoScale.equals(initAxes.getAutoScale());
+ }
+ @Test
+ public void testReflectSetGetFirstPlot() {
+ controller.setProperty(axesID, __GO_FIRST_PLOT__, initAxes.getFirstPlot());
+ Boolean retFirstPlot = (Boolean) controller.getProperty(axesID, __GO_FIRST_PLOT__);
+ assert retFirstPlot.equals(initAxes.getFirstPlot());
+ }
+
+ /* Default properties */
+ @Test
+ public void testReflectSetGetHiddenColor() {
+ controller.setProperty(axesID, __GO_HIDDEN_COLOR__, initAxes.getHiddenColor());
+ Integer retHiddenColor = (Integer) controller.getProperty(axesID, __GO_HIDDEN_COLOR__);
+ assert retHiddenColor.equals(initAxes.getHiddenColor());
+ }
+ @Test
+ public void testReflectSetGetLineMode() {
+ controller.setProperty(axesID, __GO_LINE_MODE__, initAxes.getLineMode());
+ Boolean retLineMode = (Boolean) controller.getProperty(axesID, __GO_LINE_MODE__);
+ assert retLineMode.equals(initAxes.getLineMode());
+ }
+ @Test
+ public void testReflectSetGetLineStyle() {
+ controller.setProperty(axesID, __GO_LINE_STYLE__, initAxes.getLineStyle());
+ Integer retLineStyle = (Integer) controller.getProperty(axesID, __GO_LINE_STYLE__);
+ assert retLineStyle.equals(initAxes.getLineStyle());
+ }
+ @Test
+ public void testReflectSetGetLineThickness() {
+ controller.setProperty(axesID, __GO_LINE_THICKNESS__, initAxes.getLineThickness());
+ Double retLineThickness = (Double) controller.getProperty(axesID, __GO_LINE_THICKNESS__);
+ assert retLineThickness.equals(initAxes.getLineThickness());
+ }
+ @Test
+ public void testReflectSetGetLineColor() {
+ controller.setProperty(axesID, __GO_LINE_COLOR__, initAxes.getLineColor());
+ Integer retLineColor = (Integer) controller.getProperty(axesID, __GO_LINE_COLOR__);
+ assert retLineColor.equals(initAxes.getLineColor());
+ }
+ @Test
+ public void testReflectSetGetMarkMode() {
+ controller.setProperty(axesID, __GO_MARK_MODE__, initAxes.getMarkMode());
+ Boolean retMarkMode = (Boolean) controller.getProperty(axesID, __GO_MARK_MODE__);
+ assert retMarkMode.equals(initAxes.getMarkMode());
+ }
+ @Test
+ public void testReflectSetGetMarkStyle() {
+ controller.setProperty(axesID, __GO_MARK_STYLE__, initAxes.getMarkStyle());
+ Integer retMarkStyle = (Integer) controller.getProperty(axesID, __GO_MARK_STYLE__);
+ assert retMarkStyle.equals(initAxes.getMarkStyle());
+ }
+ @Test
+ public void testReflectSetGetMarkSize() {
+ controller.setProperty(axesID, __GO_MARK_SIZE__, initAxes.getMarkSize());
+ Integer retMarkSize = (Integer) controller.getProperty(axesID, __GO_MARK_SIZE__);
+ assert retMarkSize.equals(initAxes.getMarkSize());
+ }
+ @Test
+ public void testReflectSetGetMarkSizeUnit() {
+ controller.setProperty(axesID, __GO_MARK_SIZE_UNIT__, initAxes.getMarkSizeUnit());
+ Integer retMarkSizeUnit = (Integer) controller.getProperty(axesID, __GO_MARK_SIZE_UNIT__);
+ assert retMarkSizeUnit.equals(initAxes.getMarkSizeUnit());
+ }
+ @Test
+ public void testReflectSetGetMarkForeground() {
+ controller.setProperty(axesID, __GO_MARK_FOREGROUND__, initAxes.getMarkForeground());
+ Integer retMarkForeground = (Integer) controller.getProperty(axesID, __GO_MARK_FOREGROUND__);
+ assert retMarkForeground.equals(initAxes.getMarkForeground());
+ }
+ @Test
+ public void testReflectSetGetMarkBackground() {
+ controller.setProperty(axesID, __GO_MARK_BACKGROUND__, initAxes.getMarkBackground());
+ Integer retMarkBackground = (Integer) controller.getProperty(axesID, __GO_MARK_BACKGROUND__);
+ assert retMarkBackground.equals(initAxes.getMarkBackground());
+ }
+ @Test
+ public void testReflectSetGetClipState() {
+ controller.setProperty(axesID, __GO_CLIP_STATE__, initAxes.getClipState());
+ Integer retClipState = (Integer) controller.getProperty(axesID, __GO_CLIP_STATE__);
+ assert retClipState.equals(initAxes.getClipState());
+ }
+ @Test
+ public void testReflectSetGetClipBox() {
+ controller.setProperty(axesID, __GO_CLIP_BOX__, initAxes.getClipBox());
+ Double[] retClipBox = (Double[]) controller.getProperty(axesID, __GO_CLIP_BOX__);
+ assert Arrays.equals(retClipBox, initAxes.getClipBox());
+ }
+ @Test
+ public void testReflectSetGetArcDrawingMethod() {
+ controller.setProperty(axesID, __GO_ARC_DRAWING_METHOD__, initAxes.getArcDrawingMethod());
+ Integer retArcDrawingMethod = (Integer) controller.getProperty(axesID, __GO_ARC_DRAWING_METHOD__);
+ assert retArcDrawingMethod.equals(initAxes.getArcDrawingMethod());
+ }
+
+ /* Fast set/get methods tests */
+ /* GraphicObject properties */
+
+ @Test
+ public void testFastSetGetParent() {
+ controller.setProperty(axesID, __GO_PARENT__, figureID);
+ Integer retParent = (Integer) controller.getProperty(axesID, __GO_PARENT__);
+ assert retParent.equals(figureID);
+ }
+ @Test
+ public void testFastSetGetAxesVisible() {
+ controller.setProperty(axesID, __GO_VISIBLE__, initAxes.getVisible());
+ Boolean axesVisible = (Boolean) controller.getProperty(axesID, __GO_VISIBLE__);
+ assert axesVisible.equals(initAxes.getVisible());
+ }
+
+
+ /* X-Axis properties */
+ @Test
+ public void testFastSetGetXAxisVisible() {
+ controller.setProperty(axesID, __GO_X_AXIS_VISIBLE__, initAxes.getXAxisVisible());
+ Boolean retAxisVisible = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_VISIBLE__);
+ assert (retAxisVisible.equals(initAxes.getXAxisVisible()));
+ }
+ @Test
+ public void testFastSetGetXAxisReverse() {
+ controller.setProperty(axesID, __GO_X_AXIS_REVERSE__, initAxes.getXAxisReverse());
+ Boolean retAxisReverse = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_REVERSE__);
+ assert (retAxisReverse.equals(initAxes.getXAxisReverse()));
+ }
+ @Test
+ public void testFastSetGetXAxisGridColor() {
+ controller.setProperty(axesID, __GO_X_AXIS_GRID_COLOR__, initAxes.getXAxisGridColor());
+ Integer retGridColor = (Integer) controller.getProperty(axesID, __GO_X_AXIS_GRID_COLOR__);
+ assert retGridColor.equals(initAxes.getXAxisGridColor());
+ }
+ @Test
+ public void testFastSetGetXAxisLabel() {
+ controller.setProperty(axesID, __GO_X_AXIS_LABEL__, xlabelID);
+ Integer retXlabel = (Integer) controller.getProperty(axesID, __GO_X_AXIS_LABEL__);
+ assert retXlabel.equals(xlabelID);
+ }
+ @Test
+ public void testFastSetGetXAxisLocation() {
+ controller.setProperty(axesID, __GO_X_AXIS_LOCATION__, initAxes.getXAxisLocation());
+ Integer retAxisLocation = (Integer) controller.getProperty(axesID, __GO_X_AXIS_LOCATION__);
+ assert retAxisLocation.equals(initAxes.getXAxisLocation());
+ }
+ @Test
+ public void testFastSetGetXAxisLogFlag() {
+ controller.setProperty(axesID, __GO_X_AXIS_LOG_FLAG__, initAxes.getXAxisLogFlag());
+ Boolean retLogFlag = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_LOG_FLAG__);
+ assert retLogFlag.equals(initAxes.getXAxisLogFlag());
+ }
+ @Test
+ public void testFastSetGetXAxisAutoTicks() {
+ controller.setProperty(axesID, __GO_X_AXIS_AUTO_TICKS__, initAxes.getXAxisAutoTicks());
+ Boolean retAutoTicks = (Boolean) controller.getProperty(axesID, __GO_X_AXIS_AUTO_TICKS__);
+ assert retAutoTicks.equals(initAxes.getXAxisAutoTicks());
+ }
+ @Test
+ public void testFastSetGetXAxisSubTicks() {
+ controller.setProperty(axesID, __GO_X_AXIS_SUBTICKS__, initAxes.getXAxisSubticks());
+ Integer retSubTicks = (Integer) controller.getProperty(axesID, __GO_X_AXIS_SUBTICKS__);
+ assert retSubTicks.equals(initAxes.getXAxisSubticks());
+ }
+ @Test
+ public void testFastSetGetXAxisTicksLocations() {
+ controller.setProperty(axesID, __GO_X_AXIS_TICKS_LOCATIONS__, initAxes.getXAxisTicksLocations());
+ Double[] retTicksLocations = (Double[]) controller.getProperty(axesID, __GO_X_AXIS_TICKS_LOCATIONS__);
+ assert Arrays.equals(retTicksLocations, initAxes.getXAxisTicksLocations());
+ }
+ @Test
+ public void testFastSetGetXAxisTicksLabels() {
+ controller.setProperty(axesID, __GO_X_AXIS_TICKS_LABELS__, initAxes.getXAxisTicksLabels());
+ String[] retTicksLabels = (String[]) controller.getProperty(axesID, __GO_X_AXIS_TICKS_LABELS__);
+ assert Arrays.equals(retTicksLabels, initAxes.getXAxisTicksLabels());
+ }
+
+ /* Y-Axis properties */
+ @Test
+ public void testFastSetGetYAxisVisible() {
+ controller.setProperty(axesID, __GO_Y_AXIS_VISIBLE__, initAxes.getYAxisVisible());
+ Boolean retAxisVisible = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_VISIBLE__);
+ assert (retAxisVisible.equals(initAxes.getYAxisVisible()));
+ }
+ @Test
+ public void testFastSetGetYAxisReverse() {
+ controller.setProperty(axesID, __GO_Y_AXIS_REVERSE__, initAxes.getYAxisReverse());
+ Boolean retAxisReverse = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_REVERSE__);
+ assert (retAxisReverse.equals(initAxes.getYAxisReverse()));
+ }
+ @Test
+ public void testFastSetGetYAxisGridColor() {
+ controller.setProperty(axesID, __GO_Y_AXIS_GRID_COLOR__, initAxes.getYAxisGridColor());
+ Integer retGridColor = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_GRID_COLOR__);
+ assert retGridColor.equals(initAxes.getYAxisGridColor());
+ }
+ @Test
+ public void testFastSetGetYAxisLabel() {
+ controller.setProperty(axesID, __GO_Y_AXIS_LABEL__, ylabelID);
+ Integer retlabel = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_LABEL__);
+ assert retlabel.equals(ylabelID);
+ }
+ @Test
+ public void testFastSetGetYAxisLocation() {
+ controller.setProperty(axesID, __GO_Y_AXIS_LOCATION__, initAxes.getYAxisLocation());
+ Integer retAxisLocation = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_LOCATION__);
+ assert retAxisLocation.equals(initAxes.getYAxisLocation());
+ }
+ @Test
+ public void testFastSetGetYAxisLogFlag() {
+ controller.setProperty(axesID, __GO_Y_AXIS_LOG_FLAG__, initAxes.getYAxisLogFlag());
+ Boolean retLogFlag = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_LOG_FLAG__);
+ assert retLogFlag.equals(initAxes.getYAxisLogFlag());
+ }
+ @Test
+ public void testFastSetGetYAxisAutoTicks() {
+ controller.setProperty(axesID, __GO_Y_AXIS_AUTO_TICKS__, initAxes.getYAxisAutoTicks());
+ Boolean retAutoTicks = (Boolean) controller.getProperty(axesID, __GO_Y_AXIS_AUTO_TICKS__);
+ assert retAutoTicks.equals(initAxes.getYAxisAutoTicks());
+ }
+ @Test
+ public void testFastSetGetYAxisSubTicks() {
+ controller.setProperty(axesID, __GO_Y_AXIS_SUBTICKS__, initAxes.getYAxisSubticks());
+ Integer retSubTicks = (Integer) controller.getProperty(axesID, __GO_Y_AXIS_SUBTICKS__);
+ assert retSubTicks.equals(initAxes.getYAxisSubticks());
+ }
+ @Test
+ public void testFastSetGetYAxisTicksLocations() {
+ controller.setProperty(axesID, __GO_Y_AXIS_TICKS_LOCATIONS__, initAxes.getYAxisTicksLocations());
+ Double[] retTicksLocations = (Double[]) controller.getProperty(axesID, __GO_Y_AXIS_TICKS_LOCATIONS__);
+ assert Arrays.equals(retTicksLocations, initAxes.getYAxisTicksLocations());
+ }
+ @Test
+ public void testFastSetGetYAxisTicksLabels() {
+ controller.setProperty(axesID, __GO_Y_AXIS_TICKS_LABELS__, initAxes.getYAxisTicksLabels());
+ String[] retTicksLabels = (String[]) controller.getProperty(axesID, __GO_Y_AXIS_TICKS_LABELS__);
+ assert Arrays.equals(retTicksLabels, initAxes.getYAxisTicksLabels());
+ }
+
+ /* Z-Axis properties */
+ @Test
+ public void testFastSetGetZAxisVisible() {
+ controller.setProperty(axesID, __GO_Z_AXIS_VISIBLE__, initAxes.getZAxisVisible());
+ Boolean retAxisVisible = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_VISIBLE__);
+ assert (retAxisVisible.equals(initAxes.getZAxisVisible()));
+ }
+ @Test
+ public void testFastSetGetZAxisReverse() {
+ controller.setProperty(axesID, __GO_Z_AXIS_REVERSE__, initAxes.getZAxisReverse());
+ Boolean retAxisReverse = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_REVERSE__);
+ assert (retAxisReverse.equals(initAxes.getZAxisReverse()));
+ }
+ @Test
+ public void testFastSetGetZAxisGridColor() {
+ controller.setProperty(axesID, __GO_Z_AXIS_GRID_COLOR__, initAxes.getZAxisGridColor());
+ Integer retGridColor = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_GRID_COLOR__);
+ assert retGridColor.equals(initAxes.getZAxisGridColor());
+ }
+ @Test
+ public void testFastSetGetZAxisLabel() {
+ controller.setProperty(axesID, __GO_Z_AXIS_LABEL__, zlabelID);
+ Integer retlabel = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_LABEL__);
+ assert retlabel.equals(zlabelID);
+ }
+ @Test
+ public void testFastSetGetZAxisLocation() {
+ controller.setProperty(axesID, __GO_Z_AXIS_LOCATION__, initAxes.getZAxisLocation());
+ Integer retAxisLocation = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_LOCATION__);
+ assert retAxisLocation.equals(initAxes.getZAxisLocation());
+ }
+ @Test
+ public void testFastSetGetZAxisLogFlag() {
+ controller.setProperty(axesID, __GO_Z_AXIS_LOG_FLAG__, initAxes.getZAxisLogFlag());
+ Boolean retLogFlag = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_LOG_FLAG__);
+ assert retLogFlag.equals(initAxes.getZAxisLogFlag());
+ }
+ @Test
+ public void testFastSetGetZAxisAutoTicks() {
+ controller.setProperty(axesID, __GO_Z_AXIS_AUTO_TICKS__, initAxes.getZAxisAutoTicks());
+ Boolean retAutoTicks = (Boolean) controller.getProperty(axesID, __GO_Z_AXIS_AUTO_TICKS__);
+ assert retAutoTicks.equals(initAxes.getZAxisAutoTicks());
+ }
+ @Test
+ public void testFastSetGetZAxisSubTicks() {
+ controller.setProperty(axesID, __GO_Z_AXIS_SUBTICKS__, initAxes.getZAxisSubticks());
+ Integer retSubTicks = (Integer) controller.getProperty(axesID, __GO_Z_AXIS_SUBTICKS__);
+ assert retSubTicks.equals(initAxes.getZAxisSubticks());
+ }
+ @Test
+ public void testFastSetGetZAxisTicksLocations() {
+ controller.setProperty(axesID, __GO_Z_AXIS_TICKS_LOCATIONS__, initAxes.getZAxisTicksLocations());
+ Double[] retTicksLocations = (Double[]) controller.getProperty(axesID, __GO_Z_AXIS_TICKS_LOCATIONS__);
+ assert Arrays.equals(retTicksLocations, initAxes.getZAxisTicksLocations());
+ }
+ @Test
+ public void testFastSetGetZAxisTicksLabels() {
+ controller.setProperty(axesID, __GO_Z_AXIS_TICKS_LABELS__, initAxes.getZAxisTicksLabels());
+ String[] retTicksLabels = (String[]) controller.getProperty(axesID, __GO_Z_AXIS_TICKS_LABELS__);
+ assert Arrays.equals(retTicksLabels, initAxes.getZAxisTicksLabels());
+ }
+
+ /* Ticks property shared by the three axes */
+ @Test
+ public void testFastSetGetAutoSubticks() {
+ controller.setProperty(axesID, __GO_AUTO_SUBTICKS__, initAxes.getAutoSubticks());
+ Boolean retAutoSubticks = (Boolean) controller.getProperty(axesID, __GO_AUTO_SUBTICKS__);
+ assert retAutoSubticks.equals(initAxes.getAutoSubticks());
+ }
+
+ /* Miscellaneous Axes properties */
+ @Test
+ public void testFastSetGetGridPosition() {
+ controller.setProperty(axesID, __GO_GRID_POSITION__, initAxes.getGridPosition());
+ Integer retGridPos = (Integer) controller.getProperty(axesID, __GO_GRID_POSITION__);
+ assert retGridPos.equals(initAxes.getGridPosition());
+ }
+ @Test
+ public void testFastSetGetTitle() {
+ controller.setProperty(axesID, __GO_TITLE__, titleID);
+ Integer retTitle = (Integer) controller.getProperty(axesID, __GO_TITLE__);
+ assert retTitle.equals(titleID);
+ }
+ @Test
+ public void testFastSetGetAutoClear() {
+ controller.setProperty(axesID, __GO_AUTO_CLEAR__, initAxes.getAutoClear());
+ Boolean retAutoClear = (Boolean) controller.getProperty(axesID, __GO_AUTO_CLEAR__);
+ assert retAutoClear.equals(initAxes.getAutoClear());
+ }
+ @Test
+ public void testFastSetGetFilled() {
+ controller.setProperty(axesID, __GO_FILLED__, initAxes.getFilled());
+ Boolean retFilled = (Boolean) controller.getProperty(axesID, __GO_FILLED__);
+ assert retFilled.equals(initAxes.getFilled());
+ }
+ @Test
+ public void testFastSetGetBackground() {
+ controller.setProperty(axesID, __GO_BACKGROUND__, initAxes.getBackground());
+ Integer retBackground = (Integer) controller.getProperty(axesID, __GO_BACKGROUND__);
+ assert retBackground.equals(initAxes.getBackground());
+ }
+ @Test
+ public void testFastSetGetMargins() {
+ controller.setProperty(axesID, __GO_MARGINS__, initAxes.getMargins());
+ Double[] retMargins = (Double[]) controller.getProperty(axesID, __GO_MARGINS__);
+ assert Arrays.equals(retMargins, initAxes.getMargins());
+ }
+ @Test
+ public void testFastSetGetAxesBounds() {
+ controller.setProperty(axesID, __GO_AXES_BOUNDS__, initAxes.getAxesBounds());
+ Double[] retAxesBounds = (Double[]) controller.getProperty(axesID, __GO_AXES_BOUNDS__);
+ assert Arrays.equals(retAxesBounds, initAxes.getAxesBounds());
+ }
+
+ /* Camera properties */
+ @Test
+ public void testFastSetGetView() {
+ controller.setProperty(axesID, __GO_VIEW__, initAxes.getView());
+ Integer retView = (Integer) controller.getProperty(axesID, __GO_VIEW__);
+ assert retView.equals(initAxes.getView());
+ }
+ @Test
+ public void testFastSetGetIsoview() {
+ controller.setProperty(axesID, __GO_ISOVIEW__, initAxes.getIsoview());
+ Boolean retIsoview = (Boolean) controller.getProperty(axesID, __GO_ISOVIEW__);
+ assert retIsoview.equals(initAxes.getIsoview());
+ }
+ @Test
+ public void testFastSetGetCubeScaling() {
+ controller.setProperty(axesID, __GO_CUBE_SCALING__, initAxes.getCubeScaling());
+ Boolean retCubeScaling = (Boolean) controller.getProperty(axesID, __GO_CUBE_SCALING__);
+ assert retCubeScaling.equals(initAxes.getCubeScaling());
+ }
+ @Test
+ public void testFastSetGetRotationAngles() {
+ controller.setProperty(axesID, __GO_ROTATION_ANGLES__, initAxes.getRotationAngles());
+ Double[] retRotationAngles = (Double[]) controller.getProperty(axesID, __GO_ROTATION_ANGLES__);
+ assert (Arrays.equals(retRotationAngles, initAxes.getRotationAngles()) && retRotationAngles.length == 2);
+ }
+
+ /* Box properties */
+ @Test
+ public void testFastSetGetBoxType() {
+ controller.setProperty(axesID, __GO_BOX_TYPE__, initAxes.getBoxType());
+ Integer retBoxType = (Integer) controller.getProperty(axesID, __GO_BOX_TYPE__);
+ assert retBoxType.equals(initAxes.getBoxType());
+ }
+ @Test
+ public void testFastSetGetHiddenAxisColor() {
+ controller.setProperty(axesID, __GO_HIDDEN_AXIS_COLOR__, initAxes.getHiddenAxisColor());
+ Integer retHiddenAxisColor = (Integer) controller.getProperty(axesID, __GO_HIDDEN_AXIS_COLOR__);
+ assert retHiddenAxisColor.equals(initAxes.getHiddenAxisColor());
+ }
+ @Test
+ public void testFastSetGetTightLimits() {
+ controller.setProperty(axesID, __GO_TIGHT_LIMITS__, initAxes.getTightLimits());
+ Boolean retTightLimits = (Boolean) controller.getProperty(axesID, __GO_TIGHT_LIMITS__);
+ assert retTightLimits.equals(initAxes.getTightLimits());
+ }
+ @Test
+ public void testFastSetGetDataBounds() {
+ controller.setProperty(axesID, __GO_DATA_BOUNDS__, initAxes.getDataBounds());
+ Double[] retDataBounds = (Double[]) controller.getProperty(axesID, __GO_DATA_BOUNDS__);
+ assert Arrays.equals(retDataBounds, initAxes.getDataBounds());
+ }
+ @Test
+ public void testFastSetGetRealDataBounds() {
+ controller.setProperty(axesID, __GO_REAL_DATA_BOUNDS__, initAxes.getRealDataBounds());
+ Double[] retRealDataBounds = (Double[]) controller.getProperty(axesID, __GO_REAL_DATA_BOUNDS__);
+ assert Arrays.equals(retRealDataBounds, initAxes.getRealDataBounds());
+ }
+ @Test
+ public void testFastSetGetZoomEnabled() {
+ controller.setProperty(axesID, __GO_ZOOM_ENABLED__, initAxes.getZoomEnabled());
+ Boolean retZoomEnabled = (Boolean) controller.getProperty(axesID, __GO_ZOOM_ENABLED__);
+ assert retZoomEnabled.equals(initAxes.getZoomEnabled());
+ }
+ @Test
+ public void testFastSetGetZoomBox() {
+ controller.setProperty(axesID, __GO_ZOOM_BOX__, initAxes.getZoomBox());
+ Double[] retZoomBox = (Double[]) controller.getProperty(axesID, __GO_ZOOM_BOX__);
+ assert Arrays.equals(retZoomBox, initAxes.getZoomBox());
+ }
+ @Test
+ public void testFastSetGetAutoScale() {
+ controller.setProperty(axesID, __GO_AUTO_SCALE__, initAxes.getAutoScale());
+ Boolean retAutoScale = (Boolean) controller.getProperty(axesID, __GO_AUTO_SCALE__);
+ assert retAutoScale.equals(initAxes.getAutoScale());
+ }
+ @Test
+ public void testFastSetGetFirstPlot() {
+ controller.setProperty(axesID, __GO_FIRST_PLOT__, initAxes.getFirstPlot());
+ Boolean retFirstPlot = (Boolean) controller.getProperty(axesID, __GO_FIRST_PLOT__);
+ assert retFirstPlot.equals(initAxes.getFirstPlot());
+ }
+
+ /* Default properties */
+ @Test
+ public void testFastSetGetHiddenColor() {
+ controller.setProperty(axesID, __GO_HIDDEN_COLOR__, initAxes.getHiddenColor());
+ Integer retHiddenColor = (Integer) controller.getProperty(axesID, __GO_HIDDEN_COLOR__);
+ assert retHiddenColor.equals(initAxes.getHiddenColor());
+ }
+ @Test
+ public void testFastSetGetLineMode() {
+ controller.setProperty(axesID, __GO_LINE_MODE__, initAxes.getLineMode());
+ Boolean retLineMode = (Boolean) controller.getProperty(axesID, __GO_LINE_MODE__);
+ assert retLineMode.equals(initAxes.getLineMode());
+ }
+ @Test
+ public void testFastSetGetLineStyle() {
+ controller.setProperty(axesID, __GO_LINE_STYLE__, initAxes.getLineStyle());
+ Integer retLineStyle = (Integer) controller.getProperty(axesID, __GO_LINE_STYLE__);
+ assert retLineStyle.equals(initAxes.getLineStyle());
+ }
+ @Test
+ public void testFastSetGetLineThickness() {
+ controller.setProperty(axesID, __GO_LINE_THICKNESS__, initAxes.getLineThickness());
+ Double retLineThickness = (Double) controller.getProperty(axesID, __GO_LINE_THICKNESS__);
+ assert retLineThickness.equals(initAxes.getLineThickness());
+ }
+ @Test
+ public void testFastSetGetLineColor() {
+ controller.setProperty(axesID, __GO_LINE_COLOR__, initAxes.getLineColor());
+ Integer retLineColor = (Integer) controller.getProperty(axesID, __GO_LINE_COLOR__);
+ assert retLineColor.equals(initAxes.getLineColor());
+ }
+ @Test
+ public void testFastSetGetMarkMode() {
+ controller.setProperty(axesID, __GO_MARK_MODE__, initAxes.getMarkMode());
+ Boolean retMarkMode = (Boolean) controller.getProperty(axesID, __GO_MARK_MODE__);
+ assert retMarkMode.equals(initAxes.getMarkMode());
+ }
+ @Test
+ public void testFastSetGetMarkStyle() {
+ controller.setProperty(axesID, __GO_MARK_STYLE__, initAxes.getMarkStyle());
+ Integer retMarkStyle = (Integer) controller.getProperty(axesID, __GO_MARK_STYLE__);
+ assert retMarkStyle.equals(initAxes.getMarkStyle());
+ }
+ @Test
+ public void testFastSetGetMarkSize() {
+ controller.setProperty(axesID, __GO_MARK_SIZE__, initAxes.getMarkSize());
+ Integer retMarkSize = (Integer) controller.getProperty(axesID, __GO_MARK_SIZE__);
+ assert retMarkSize.equals(initAxes.getMarkSize());
+ }
+ @Test
+ public void testFastSetGetMarkSizeUnit() {
+ controller.setProperty(axesID, __GO_MARK_SIZE_UNIT__, initAxes.getMarkSizeUnit());
+ Integer retMarkSizeUnit = (Integer) controller.getProperty(axesID, __GO_MARK_SIZE_UNIT__);
+ assert retMarkSizeUnit.equals(initAxes.getMarkSizeUnit());
+ }
+ @Test
+ public void testFastSetGetMarkForeground() {
+ controller.setProperty(axesID, __GO_MARK_FOREGROUND__, initAxes.getMarkForeground());
+ Integer retMarkForeground = (Integer) controller.getProperty(axesID, __GO_MARK_FOREGROUND__);
+ assert retMarkForeground.equals(initAxes.getMarkForeground());
+ }
+ @Test
+ public void testFastSetGetMarkBackground() {
+ controller.setProperty(axesID, __GO_MARK_BACKGROUND__, initAxes.getMarkBackground());
+ Integer retMarkBackground = (Integer) controller.getProperty(axesID, __GO_MARK_BACKGROUND__);
+ assert retMarkBackground.equals(initAxes.getMarkBackground());
+ }
+ @Test
+ public void testFastSetGetClipState() {
+ controller.setProperty(axesID, __GO_CLIP_STATE__, initAxes.getClipState());
+ Integer retClipState = (Integer) controller.getProperty(axesID, __GO_CLIP_STATE__);
+ assert retClipState.equals(initAxes.getClipState());
+ }
+ @Test
+ public void testFastSetGetClipBox() {
+ controller.setProperty(axesID, __GO_CLIP_BOX__, initAxes.getClipBox());
+ Double[] retClipBox = (Double[]) controller.getProperty(axesID, __GO_CLIP_BOX__);
+ assert Arrays.equals(retClipBox, initAxes.getClipBox());
+ }
+ @Test
+ public void testFastSetGetArcDrawingMethod() {
+ controller.setProperty(axesID, __GO_ARC_DRAWING_METHOD__, initAxes.getArcDrawingMethod());
+ Integer retArcDrawingMethod = (Integer) controller.getProperty(axesID, __GO_ARC_DRAWING_METHOD__);
+ assert retArcDrawingMethod.equals(initAxes.getArcDrawingMethod());
+ }
+
+ /**
+ * A simple utility method which compares two FormattedText ArrayLists
+ * @param list1 the first list
+ * @param list2 the second list
+ * @return true if the two lists are equal, else false
+ */
+ public boolean compareFormattedTextLists(ArrayList <FormattedText> list1, ArrayList <FormattedText> list2) {
+
+ if (list1.size() != list2.size()) {
+ return false;
+ }
+
+ for (int i = 0; i < list1.size(); i++) {
+ String s1 = new String(((FormattedText) list1.get(i)).getText());
+ String s2 = new String(((FormattedText) list2.get(i)).getText());
+
+ if (!s1.equals(s2)) {
+ return false;
+ }
+
+ Font f1 = list1.get(i).getFont();
+ Font f2 = list2.get(i).getFont();
+
+ if (!f1.equals(f2)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/modules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testGraphicObject.java b/modules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testGraphicObject.java
new file mode 100755
index 000000000..2c469836d
--- /dev/null
+++ b/modules/graphic_objects/tests/java/org/scilab/tests/modules/graphic_objects/testGraphicObject.java
@@ -0,0 +1,342 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2010 - DIGITEO - Manuel JULIACHS
+ *
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution. The terms
+ * are also available at
+ * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
+ *
+ */
+
+package org.scilab.tests.modules.graphic_objects;
+
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.*;
+
+import org.scilab.modules.graphic_objects.arc.Arc;
+import org.scilab.modules.graphic_objects.axes.Axes;
+import org.scilab.modules.graphic_objects.axis.Axis;
+import org.scilab.modules.graphic_objects.compound.Compound;
+import org.scilab.modules.graphic_objects.fec.Fec;
+import org.scilab.modules.graphic_objects.figure.Figure;
+import org.scilab.modules.graphic_objects.graphicController.GraphicController;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject;
+import org.scilab.modules.graphic_objects.graphicObject.GraphicObject.Type;
+import org.scilab.modules.graphic_objects.imageplot.Grayplot;
+import org.scilab.modules.graphic_objects.imageplot.Matplot;
+import org.scilab.modules.graphic_objects.label.Label;
+import org.scilab.modules.graphic_objects.legend.Legend;
+import org.scilab.modules.graphic_objects.polyline.Polyline;
+import org.scilab.modules.graphic_objects.rectangle.Rectangle;
+import org.scilab.modules.graphic_objects.surface.Fac3d;
+import org.scilab.modules.graphic_objects.surface.Plot3d;
+import org.scilab.modules.graphic_objects.textObject.Text;
+import org.scilab.modules.graphic_objects.vectfield.Champ;
+import org.scilab.modules.graphic_objects.vectfield.Segs;
+import org.junit.*;
+
+
+/**
+ * GraphicObject test class
+ * @author Manuel JULIACHS
+ */
+public class testGraphicObject {
+
+ public static final int NONEXISTING_PROP = Integer.MAX_VALUE;
+
+ @Test
+ public void simpleTest() throws NullPointerException {
+ GraphicController controller = GraphicController.getController();
+
+ Integer axesID = controller.askObject(Type.AXES);
+ GraphicObject axes = (GraphicObject) controller.getObjectFromId(axesID);
+
+ assert(axes != null);
+
+ Integer arcID = controller.askObject(Type.ARC);
+ GraphicObject arc = (GraphicObject) controller.getObjectFromId(arcID);
+
+ assert(arc != null);
+
+ Integer axesIDret = axes.getIdentifier();
+ Integer arcIDret = arc.getIdentifier();
+
+ assert axesID.equals(axesIDret);
+ assert arcID.equals(arcIDret);
+
+ Boolean arcVisible = new Boolean(true);
+
+ controller.setProperty(arcID, __GO_VISIBLE__, arcVisible);
+ Boolean arcVisibleRet = (Boolean) controller.getProperty(arcID, __GO_VISIBLE__);
+
+ assert (arcVisibleRet != null);
+
+ assert arcVisible.equals(arcVisibleRet);
+
+ Object nonExistingProp = (Object) controller.getProperty(arcID, NONEXISTING_PROP);
+
+ assert nonExistingProp == null;
+
+ controller.setProperty(arcID, __GO_PARENT__, axes.getIdentifier());
+
+ Integer arcParentId = (Integer) controller.getProperty(arcID, __GO_PARENT__);
+ GraphicObject arcParent = (GraphicObject) controller.getObjectFromId(arcParentId);
+
+ assert(arcParent != null);
+
+ assert arcParent.equals(axes);
+
+ }
+
+ @Test
+ public void arcCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_ARC__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Arc);
+ }
+
+ @Test
+ public void arcCloneTest() {
+ GraphicController controller = GraphicController.getController();
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_ARC__));
+ Integer cloneId = null;
+ cloneId = controller.cloneObject(objectId);
+
+ assert(cloneId != null);
+ Object graphicObject = controller.getObjectFromId(cloneId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Arc);
+ }
+
+ @Test
+ public void axesCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_AXES__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Axes);
+ }
+
+ @Test
+ public void axesCloneTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_AXES__));
+ Integer cloneId = null;
+ cloneId = controller.cloneObject(objectId);
+
+ assert(cloneId != null);
+ Object graphicObject = controller.getObjectFromId(cloneId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Axes);
+ }
+
+ @Test
+ public void axisCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_AXIS__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Axis);
+ }
+
+ @Test
+ public void champCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_CHAMP__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Champ);
+ }
+
+ @Test
+ public void compoundCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_COMPOUND__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Compound);
+ }
+
+ @Test
+ public void fac3dCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_FAC3D__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Fac3d);
+ }
+
+ @Test
+ public void fecCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_FEC__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Fec);
+ }
+
+ @Test
+ public void figureCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_FIGURE__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Figure);
+ }
+
+ @Test
+ public void grayplotCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_GRAYPLOT__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Grayplot);
+ }
+
+ @Test
+ public void labelCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_LABEL__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Label);
+ }
+
+ @Test
+ public void legendCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_LEGEND__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Legend);
+ }
+
+ @Test
+ public void matplotCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_MATPLOT__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Matplot);
+ }
+
+ @Test
+ public void plot3dCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_PLOT3D__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Plot3d);
+ }
+
+ @Test
+ public void polylineCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_POLYLINE__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Polyline);
+ }
+
+ @Test
+ public void retangleCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_RECTANGLE__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Rectangle);
+ }
+
+ @Test
+ public void segsCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_SEGS__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Segs);
+ }
+
+ @Test
+ public void textCreationTest() {
+ GraphicController controller = GraphicController.getController();
+
+ Integer objectId = null;
+ objectId = controller.askObject(GraphicObject.getTypeFromName(__GO_TEXT__));
+ assert(objectId != null);
+
+ Object graphicObject = controller.getObjectFromId(objectId);
+ assert(graphicObject != null);
+ assert(graphicObject instanceof Text);
+ }
+
+}
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_11472.dia.ref b/modules/graphic_objects/tests/nonreg_tests/bug_11472.dia.ref
new file mode 100755
index 000000000..466af1b13
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_11472.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 11472 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11472
+//
+// <-- Short Description -->
+// sdf() changes figures menubar
+S = get(0);
+S.ShowHiddenHandles = "on";
+f = gcf();
+Nbrchild = length(f.children);
+close(f);
+sdf();
+f = gcf();
+assert_checkequal(length(f.children), Nbrchild);
+close(f);
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_11472.tst b/modules/graphic_objects/tests/nonreg_tests/bug_11472.tst
new file mode 100755
index 000000000..d33377d16
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_11472.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Cedric Delamarre
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 11472 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11472
+//
+// <-- Short Description -->
+// sdf() changes figures menubar
+
+S = get(0);
+S.ShowHiddenHandles = "on";
+
+f = gcf();
+Nbrchild = length(f.children);
+close(f);
+
+sdf();
+f = gcf();
+assert_checkequal(length(f.children), Nbrchild);
+close(f);
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_12234.dia.ref b/modules/graphic_objects/tests/nonreg_tests/bug_12234.dia.ref
new file mode 100755
index 000000000..253563228
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_12234.dia.ref
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 12234 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/12234
+//
+// <-- Short Description -->
+// Crash with invalid property
+refMsg = msprintf(_("''%s'' property does not exist for this handle.\n"), "data");
+e=gce();
+assert_checkerror("set(e, ''interp_color_vector'', 1:4)", refMsg);
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_12234.tst b/modules/graphic_objects/tests/nonreg_tests/bug_12234.tst
new file mode 100755
index 000000000..9fbc361b7
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_12234.tst
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 12234 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/12234
+//
+// <-- Short Description -->
+// Crash with invalid property
+
+refMsg = msprintf(_("''%s'' property does not exist for this handle.\n"), "data");
+e=gce();
+assert_checkerror("set(e, ''interp_color_vector'', 1:4)", refMsg);
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_13510.dia.ref b/modules/graphic_objects/tests/nonreg_tests/bug_13510.dia.ref
new file mode 100755
index 000000000..e4288fed4
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_13510.dia.ref
@@ -0,0 +1,23 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 13510 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13510
+//
+// <-- Short Description -->
+// Datatip callback cleared 'd'
+clear("pl", "ax", "h", "s", "d", "d1");
+s = poly(0,"s");
+h = syslin("c", 1 / (s + 1));
+nyquist(h);
+d = 123;
+ax = gca();
+pl = ax.children(1).children(2);
+d1 = datatipCreate(pl, 200);
+assert_checkequal(d, 123);
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_13510.tst b/modules/graphic_objects/tests/nonreg_tests/bug_13510.tst
new file mode 100755
index 000000000..9da575f6a
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_13510.tst
@@ -0,0 +1,28 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 13510 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13510
+//
+// <-- Short Description -->
+// Datatip callback cleared 'd'
+
+clear("pl", "ax", "h", "s", "d", "d1");
+s = poly(0,"s");
+h = syslin("c", 1 / (s + 1));
+nyquist(h);
+
+d = 123;
+ax = gca();
+pl = ax.children(1).children(2);
+d1 = datatipCreate(pl, 200);
+
+assert_checkequal(d, 123); \ No newline at end of file
diff --git a/modules/graphic_objects/tests/nonreg_tests/bug_13725.tst b/modules/graphic_objects/tests/nonreg_tests/bug_13725.tst
new file mode 100755
index 000000000..f1e64f0df
--- /dev/null
+++ b/modules/graphic_objects/tests/nonreg_tests/bug_13725.tst
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+//
+// // <-- INTERACTIVE TEST -->
+// <-- Non-regression test for bug 13725 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13725
+//
+// <-- Short Description -->
+// Polyline is not correctly filled with big values
+
+y = [0, -4, 2, -3, -1, -1, 7, 0]
+x = [0, 1, 3, 6, 16, 7, 3, 0]
+scf();
+xfpoly(x*1e18, y, 3)
+
+// check that the polyline is correctly filled
diff --git a/modules/graphic_objects/tests/unit_tests/delete.dia.ref b/modules/graphic_objects/tests/unit_tests/delete.dia.ref
new file mode 100755
index 000000000..cd1037386
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/delete.dia.ref
@@ -0,0 +1,10 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Antoine ELIAS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+scf();
+scf();
+delete(gcf());
+plot2d(1:10);
diff --git a/modules/graphic_objects/tests/unit_tests/delete.tst b/modules/graphic_objects/tests/unit_tests/delete.tst
new file mode 100755
index 000000000..288be8bbe
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/delete.tst
@@ -0,0 +1,11 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - DIGITEO - Antoine ELIAS
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+scf();
+scf();
+delete(gcf());
+plot2d(1:10); \ No newline at end of file
diff --git a/modules/graphic_objects/tests/unit_tests/hiddenhandles.dia.ref b/modules/graphic_objects/tests/unit_tests/hiddenhandles.dia.ref
new file mode 100755
index 000000000..6b55cc35d
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/hiddenhandles.dia.ref
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Simple test hidden handles using the MVC implementation -->
+c = get(0); // Get console handle
+assert_checkequal(c.type, "Console");
+assert_checkequal(c.showhiddenhandles, "off"); // Hidden handles are not shown by default
+// Create a figure with two menus (one with hidden handle)
+f = gcf();
+notHiddenMenu = uimenu("Parent", f, "Label", "Not hidden", "Handle_Visible", "on");
+hiddenMenu = uimenu("Parent", f, "Label", "Hidden", "Handle_Visible", "off");
+// Check the figure has two children (axes + menu)
+assert_checkequal(size(f.children), [2 1]);
+assert_checkequal(f.children(1).label, "Not hidden");
+// Now we show hidden handles
+c.showhiddenhandles = "on";
+assert_checkequal(c.showhiddenhandles, "on");
+// Check the figure has seven children (axes + menu + menu + 4 default menus)
+assert_checkequal(size(f.children), [7 1]);
+assert_checkequal(f.children(1).label, "Hidden");
+assert_checkequal(f.children(2).label, "Not hidden");
diff --git a/modules/graphic_objects/tests/unit_tests/hiddenhandles.tst b/modules/graphic_objects/tests/unit_tests/hiddenhandles.tst
new file mode 100755
index 000000000..4b8a30e51
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/hiddenhandles.tst
@@ -0,0 +1,30 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2011 - DIGITEO - Vincent COUVERT
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Simple test hidden handles using the MVC implementation -->
+
+c = get(0); // Get console handle
+assert_checkequal(c.type, "Console");
+assert_checkequal(c.showhiddenhandles, "off"); // Hidden handles are not shown by default
+
+// Create a figure with two menus (one with hidden handle)
+f = gcf();
+notHiddenMenu = uimenu("Parent", f, "Label", "Not hidden", "Handle_Visible", "on");
+hiddenMenu = uimenu("Parent", f, "Label", "Hidden", "Handle_Visible", "off");
+
+// Check the figure has two children (axes + menu)
+assert_checkequal(size(f.children), [2 1]);
+assert_checkequal(f.children(1).label, "Not hidden");
+
+// Now we show hidden handles
+c.showhiddenhandles = "on";
+assert_checkequal(c.showhiddenhandles, "on");
+
+// Check the figure has seven children (axes + menu + menu + 4 default menus)
+assert_checkequal(size(f.children), [7 1]);
+assert_checkequal(f.children(1).label, "Hidden");
+assert_checkequal(f.children(2).label, "Not hidden");
diff --git a/modules/graphic_objects/tests/unit_tests/path.dia.ref b/modules/graphic_objects/tests/unit_tests/path.dia.ref
new file mode 100755
index 000000000..631ba181d
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/path.dia.ref
@@ -0,0 +1,59 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Bruno JOFRET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+f = figure("tag", "mainFigure", "visible", "off");
+ f1 = uicontrol(f, "style", "frame", "tag", "f1");
+ f11 = uicontrol(f1, "style", "frame", "tag", "f11");
+ f12 = uicontrol(f1, "style", "frame", "tag", "f12");
+ f13 = uicontrol(f1, "style", "frame", "tag", "f13");
+ f14 = uicontrol(f1, "style", "frame", "tag", "leaf");
+ f141 = uicontrol(f14, "style", "frame", "tag", "leaf1");
+ f142 = uicontrol(f14, "style", "frame", "tag", "leaf2");
+ f143 = uicontrol(f14, "style", "frame", "tag", "f143");
+ f2 = uicontrol(f, "style", "frame", "tag", "f2");
+ f21 = uicontrol(f2, "style", "frame", "tag", "f21");
+ f22 = uicontrol(f2, "style", "frame", "tag", "f22");
+ f23 = uicontrol(f2, "style", "frame", "tag", "f23");
+ f24 = uicontrol(f2, "style", "frame", "tag", "leaf");
+ f241 = uicontrol(f24, "style", "frame", "tag", "leaf1");
+ f242 = uicontrol(f24, "style", "frame", "tag", "leaf2");
+ f243 = uicontrol(f24, "style", "frame", "tag", "f243");
+res = get("mainFigure");
+assert_checkequal(f.UID, res.UID);
+res = get("mainFigure/f1");
+assert_checkequal(f1.UID, res.UID);
+res = get("mainFigure/f2");
+assert_checkequal(f2.UID, res.UID);
+res = get("mainFigure/f1/f12");
+assert_checkequal(f12.UID, res.UID);
+res = get("mainFigure/f2/f22");
+assert_checkequal(f22.UID, res.UID);
+res = get("f1");
+assert_checkequal(f1.UID, res.UID);
+res = get("f13");
+assert_checkequal(f13.UID, res.UID);
+res = get("f5");
+assert_checkequal([], res);
+res = get("*/f2");
+assert_checkequal(f2.UID, res.UID);
+res = get("*/*/leaf");
+assert_checktrue(or(res.UID == [f14.UID, f24.UID]));
+res = get("*/leaf");
+assert_checktrue(or(res.UID == [f14.UID, f24.UID]));
+res = get("*/*/toto");
+assert_checkequal([], res);
+res = get("*/toto");
+assert_checkequal([], res);
+res = get("mainFigure/*/f23");
+assert_checkequal(f23.UID, res.UID);
+res = get("mainFigure/*/toto");
+assert_checkequal([], res);
+res = get("mainFigure/*/leaf/f143");
+assert_checkequal(f143.UID, res.UID);
+res = get("mainFigure/*/leaf/leaf1");
+assert_checktrue(or(res.UID == [f141.UID, f241.UID]));
+res = get("mainFigure/*/leaf/leaf2");
+assert_checktrue(or(res.UID == [f142.UID, f242.UID]));
diff --git a/modules/graphic_objects/tests/unit_tests/path.tst b/modules/graphic_objects/tests/unit_tests/path.tst
new file mode 100755
index 000000000..e46f09b20
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/path.tst
@@ -0,0 +1,77 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Bruno JOFRET
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+f = figure("tag", "mainFigure", "visible", "off");
+ f1 = uicontrol(f, "style", "frame", "tag", "f1");
+ f11 = uicontrol(f1, "style", "frame", "tag", "f11");
+ f12 = uicontrol(f1, "style", "frame", "tag", "f12");
+ f13 = uicontrol(f1, "style", "frame", "tag", "f13");
+ f14 = uicontrol(f1, "style", "frame", "tag", "leaf");
+ f141 = uicontrol(f14, "style", "frame", "tag", "leaf1");
+ f142 = uicontrol(f14, "style", "frame", "tag", "leaf2");
+ f143 = uicontrol(f14, "style", "frame", "tag", "f143");
+ f2 = uicontrol(f, "style", "frame", "tag", "f2");
+ f21 = uicontrol(f2, "style", "frame", "tag", "f21");
+ f22 = uicontrol(f2, "style", "frame", "tag", "f22");
+ f23 = uicontrol(f2, "style", "frame", "tag", "f23");
+ f24 = uicontrol(f2, "style", "frame", "tag", "leaf");
+ f241 = uicontrol(f24, "style", "frame", "tag", "leaf1");
+ f242 = uicontrol(f24, "style", "frame", "tag", "leaf2");
+ f243 = uicontrol(f24, "style", "frame", "tag", "f243");
+
+res = get("mainFigure");
+assert_checkequal(f.UID, res.UID);
+
+res = get("mainFigure/f1");
+assert_checkequal(f1.UID, res.UID);
+
+res = get("mainFigure/f2");
+assert_checkequal(f2.UID, res.UID);
+
+res = get("mainFigure/f1/f12");
+assert_checkequal(f12.UID, res.UID);
+
+res = get("mainFigure/f2/f22");
+assert_checkequal(f22.UID, res.UID);
+
+res = get("f1");
+assert_checkequal(f1.UID, res.UID);
+res = get("f13");
+assert_checkequal(f13.UID, res.UID);
+
+res = get("f5");
+assert_checkequal([], res);
+
+res = get("*/f2");
+assert_checkequal(f2.UID, res.UID);
+
+res = get("*/*/leaf");
+assert_checktrue(or(res.UID == [f14.UID, f24.UID]));
+
+res = get("*/leaf");
+assert_checktrue(or(res.UID == [f14.UID, f24.UID]));
+
+res = get("*/*/toto");
+assert_checkequal([], res);
+
+res = get("*/toto");
+assert_checkequal([], res);
+
+res = get("mainFigure/*/f23");
+assert_checkequal(f23.UID, res.UID);
+
+res = get("mainFigure/*/toto");
+assert_checkequal([], res);
+
+res = get("mainFigure/*/leaf/f143");
+assert_checkequal(f143.UID, res.UID);
+
+res = get("mainFigure/*/leaf/leaf1");
+assert_checktrue(or(res.UID == [f141.UID, f241.UID]));
+
+res = get("mainFigure/*/leaf/leaf2");
+assert_checktrue(or(res.UID == [f142.UID, f242.UID]));
diff --git a/modules/graphic_objects/tests/unit_tests/sdf.dia.ref b/modules/graphic_objects/tests/unit_tests/sdf.dia.ref
new file mode 100755
index 000000000..ee6fc10b0
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/sdf.dia.ref
@@ -0,0 +1,9 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+aze=sdf();
+assert_checkequal(typeof(aze),"handle");
diff --git a/modules/graphic_objects/tests/unit_tests/sdf.tst b/modules/graphic_objects/tests/unit_tests/sdf.tst
new file mode 100755
index 000000000..419a93f22
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/sdf.tst
@@ -0,0 +1,11 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+aze=sdf();
+assert_checkequal(typeof(aze),"handle");
diff --git a/modules/graphic_objects/tests/unit_tests/xpoly.dia.ref b/modules/graphic_objects/tests/unit_tests/xpoly.dia.ref
new file mode 100755
index 000000000..f0231de58
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/xpoly.dia.ref
@@ -0,0 +1,44 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Simple test for xpoly using the MVC implementation -->
+//
+// <-- Short Description -->
+// Tests the Polyline MVC object via the xpoly function:
+// -whether properties corresponding to the function parameters are correctly initialized
+// -whether the coordinates array is correctly initialized and can be resized
+//
+x = sin(2*%pi*(0:4)/5);
+y = cos(2*%pi*(0:4)/5);
+xpoly(x,y,"lines",1);
+e = gce();
+if (e.line_mode <> "on") then bugmes();quit;end;
+if (e.closed <> "on") then bugmes();quit;end;
+if (e.mark_mode <> "off") then bugmes();quit;end;
+s = size(e.data);
+if (s(1) <> size(x, '*')) then bugmes();quit;end;
+if (s(1) <> size(y, '*')) then bugmes();quit;end;
+// 2 columns expected [x, y]
+if (s(2) <> 2) then bugmes();quit;end;
+// Coordinates array resized
+x = sin(2*%pi*(0:1999)/2000);
+y = sin(2*%pi*(0:1999)/2000);
+e.data = [x', y'];
+s = size(e.data);
+if (s(1) <> size(x, '*')) then bugmes();quit;end;
+if (s(1) <> size(y, '*')) then bugmes();quit;end;
+// Z coordinates added
+z = linspace(0, 1, 2000);
+e.data = [x', y', z'];
+s = size(e.data);
+// 3 columns expected [x, y, z]
+if (s(2) <> 3) then bugmes();quit;end;
+if (s(1) <> size(x, '*')) then bugmes();quit;end;
+if (s(1) <> size(y, '*')) then bugmes();quit;end;
+if (s(1) <> size(z, '*')) then bugmes();quit;end;
+// Deletes the data
+e.data = [];
+if (e.data <> []) then bugmes();quit;end;
diff --git a/modules/graphic_objects/tests/unit_tests/xpoly.tst b/modules/graphic_objects/tests/unit_tests/xpoly.tst
new file mode 100755
index 000000000..9270b08a2
--- /dev/null
+++ b/modules/graphic_objects/tests/unit_tests/xpoly.tst
@@ -0,0 +1,66 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Manuel Juliachs
+//
+// This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Simple test for xpoly using the MVC implementation -->
+//
+// <-- Short Description -->
+// Tests the Polyline MVC object via the xpoly function:
+// -whether properties corresponding to the function parameters are correctly initialized
+// -whether the coordinates array is correctly initialized and can be resized
+//
+
+x = sin(2*%pi*(0:4)/5);
+y = cos(2*%pi*(0:4)/5);
+
+xpoly(x,y,"lines",1);
+
+e = gce();
+
+if (e.line_mode <> "on") then pause, end;
+if (e.closed <> "on") then pause, end;
+if (e.mark_mode <> "off") then pause, end;
+
+s = size(e.data);
+
+if (s(1) <> size(x, '*')) then pause, end;
+if (s(1) <> size(y, '*')) then pause, end;
+
+// 2 columns expected [x, y]
+if (s(2) <> 2) then pause, end;
+
+
+// Coordinates array resized
+
+x = sin(2*%pi*(0:1999)/2000);
+y = sin(2*%pi*(0:1999)/2000);
+
+e.data = [x', y'];
+
+s = size(e.data);
+
+if (s(1) <> size(x, '*')) then pause, end;
+if (s(1) <> size(y, '*')) then pause, end;
+
+// Z coordinates added
+z = linspace(0, 1, 2000);
+
+e.data = [x', y', z'];
+
+s = size(e.data);
+
+// 3 columns expected [x, y, z]
+if (s(2) <> 3) then pause, end;
+
+if (s(1) <> size(x, '*')) then pause, end;
+if (s(1) <> size(y, '*')) then pause, end;
+if (s(1) <> size(z, '*')) then pause, end;
+
+// Deletes the data
+e.data = [];
+
+if (e.data <> []) then pause, end;
+