]> SALOME platform Git repositories - modules/visu.git/blob - idl/VISU_Gen.idl
Salome HOME
f4027093876c1ce7465a760de25403d6b6a26b89
[modules/visu.git] / idl / VISU_Gen.idl
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 //  This library is free software; you can redistribute it and/or
7 //  modify it under the terms of the GNU Lesser General Public
8 //  License as published by the Free Software Foundation; either
9 //  version 2.1 of the License.
10 //
11 //  This library is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 //  Lesser General Public License for more details.
15 //
16 //  You should have received a copy of the GNU Lesser General Public
17 //  License along with this library; if not, write to the Free Software
18 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 //  File   : VISU_Gen.idl
23 //  Author : Alexey Petrov
24 //
25 /*! \file VISU_Gen.idl This file conatins a set of interfaces of the %VISU module.
26  *     This module provides various forms of data visualization in %SALOME application.
27  *     These forms include data tables, XY plots, 3d representations
28  *     and combination of these forms.
29  */
30
31 #ifndef __VISU_GEN__
32 #define __VISU_GEN__
33
34 #include "SALOME_Exception.idl"
35 #include "SALOME_GenericObj.idl"
36 #include "SALOME_Component.idl"
37 #include "SALOMEDS.idl"
38 #include "SALOMEDS_Attributes.idl"
39 #include "MED.idl"
40
41 /*!
42   The main package of interfaces of the post-processing module %VISU.
43 */
44 module VISU {
45   //-------------------------------------------------------
46   typedef string IdType;
47
48   typedef sequence<string> string_array;
49   typedef sequence<double> double_array;
50
51   /*!
52    * This enumeration contains a set of elements defining the type
53    * of the scaling, which can be applied on different presentations.
54    */
55   enum Scaling{ LINEAR, /*!< Linear type of scaling. */
56                 LOGARITHMIC /*!< Logarithmic type of scaling. */
57               };
58
59   /*!
60    * This enumeration contains a set of elements defining the
61    * type of the %entity (topological units) constituting a mesh.
62    */
63   enum Entity {
64     NODE, /*!< Node corresponds to a geometrical point. */
65     EDGE, /*!< Edge corresponds to a geometrical line connecting two points. */
66     FACE, /*!< Face corresponds to a geometrical plane bounded by several lines. */
67     CELL,  /*!< Cell is a volumic element of a mesh */
68     NONE  /*!< Indicates undefined entity value */
69   };
70
71   /*!
72    * This enumeration contains a set of elements defining the type of the %VISU object.
73    * This enumeration is used for navigation between a set of %VISU interfaces.
74    */
75   enum VISUType {
76     TNONE, /*!< Not a %VISU object */
77     TCURVE, /*!< Curve line object for construction of 2D XY plots */
78     TTABLE, /*!< Table containing numerical data */
79     TCONTAINER, /*!< Container object used for storing a set of curve lines */
80     TMESH, /*!< Meshing object */
81     TSCALARMAP, /*!< Scalarmap 3D presentation object */
82     TISOSURFACES, /*!< Iso surface 3D presentation object */
83     TDEFORMEDSHAPE, /*!< Deformed shape 3D presentation object */
84     TSCALARMAPONDEFORMEDSHAPE, /*!< Scalar map on deformed shape 3D presentation object. It is obsolete. Use TDEFORMEDSHAPEANDSCALARMAP instead */
85     TDEFORMEDSHAPEANDSCALARMAP, /*!< Deformed shape and scalar map 3D presentation object */
86     TGAUSSPOINTS, /*!< Gauss Points 3D presentation object */
87     TPLOT3D, /*!< Plot3D 3D presentation object */
88     TPOINTMAP3D, /*!< 3D presentation for table object */
89     TCUTPLANES, /*!< Cut planes 3D presentation object */
90     TCUTLINES, /*!< Cut lines 3D presentation object */
91     TVECTORS, /*!< Vectors 3D presentation object */
92     TSTREAMLINES, /*!< Streamlines 3D presentation object */
93     TVISUGEN, /*!< %VISU generator used for performing operations with different %VISU objects */
94     TVIEWMANAGER, /*!< View manager used for performing operations with different views */
95     TRESULT, /*!< The data on which different presentations are based */
96     TXYPLOT, /*!< 2D XY plot consisting of one or several curve lines */
97     TTABLEVIEW, /*!< Table view is used for displaying data tables */
98     TVIEW3D, /*!< 3D view is used for displaying 3D graphical presentations */
99     TGAUSSVIEW, /*!< 3D view is used for displaying Gauss Points graphical presentations */
100     TENTITY, /*!< An element composing a mesh: node, edge, face or cell */
101     TFAMILY, /*!< The whole mesh can be divided into one or several submeshes, called families, which are defined by the user. Each family in its turn is composed of entities of a definite type. */
102     TGROUP, /*!< A group of families */
103     TFIELD, /*!< Field represents the results of calculations (it can be scalar or vector values), grouped together under one physical concept. */
104     TTIMESTAMP, /*!<Time stamp represents a subfield: the results of calculations are taken in one definite moment. */
105     TANIMATION, /*!< Represents Animation object. */
106     TCOLOREDPRS3DHOLDER, /*!< Colored 3D presentation holder */
107     TCOLOREDPRS3DCACHE, /*!< Colored 3D presentation cache */
108     TPART, /*!< MULTIPR: part of a mesh */
109     TALL
110   };
111
112   /* Clipping planes management */
113   struct ClippingPlane {
114     double X;
115     double Y;
116     double Z;
117     double dX;
118     double dY;
119     double dZ;
120     boolean isAuto;
121     string name;
122   };
123     
124   interface Base {
125     /*!
126      * Returns ID of the object.
127      */
128     IdType GetID();
129
130     /*!
131      * Returns the type of the presentable object
132      */
133     VISUType GetType();
134   };
135
136   /*!
137    *  \brief Removable object interface
138    *
139    *  Removable object interface is the root class of all removable objects.
140    */
141   interface RemovableObject : Base {
142     /*!
143      *  Remove object from study.
144      */
145     void RemoveFromStudy();
146   };
147
148   /*! \brief Presentable object interface
149    *
150    * Presentable object interface is the root class of all presentable objects.
151    */
152   interface PrsObject : RemovableObject {
153   };
154
155   //-------------------------------------------------------
156   /*! \brief Interface of curve representation.
157    *
158    * Manages presentation parameters of one curve.
159    * It can be used for presentation of a set of curves using a combined presentation.
160    */
161   interface Curve : PrsObject {
162     /*!
163      * Sets the title of the curve.
164      * \param theTitle This string parameter defines the title of this curve.
165      */
166     void SetTitle(in string theTitle);
167
168     /*!
169      * Gets the title of the curve.
170      * \return String value corresponding to the title of the curve.
171      */
172     string GetTitle();
173
174     /*!
175      * Sets the color of the curve.
176      * \param theColor The color of the curve. This parameter is taken
177      *                 from the <VAR>Orientation</VAR> enumeration.
178      */
179     void SetColor(in SALOMEDS::Color theColor);
180
181     /*!
182      * Gets the color of the curve.
183      * \return Color of the curve. The returned value will correspond
184      *         to one of the elements the <VAR>Color</VAR> enumeration.
185      */
186     SALOMEDS::Color GetColor();
187
188     /*!
189      * This enumeration contains a set of elements defining the
190      * presentation type of markers (data points) with help of
191      * which the curve is constructed on the graphics.
192      */
193     enum MarkerType { NONE,
194                       CIRCLE,
195                       RECTANGLE,
196                       DIAMOND,
197                       DTRIANGLE,
198                       UTRIANGLE,
199                       LTRIANGLE,
200                       RTRIANGLE,
201                       CROSS,
202                       XCROSS
203     };
204
205     /*!
206      * Sets the presentation type of markers (data points) with help of
207      * which the curve is constructed on the graphics.
208      * \param theType This parameter defines the type of marker with help
209      *                of which the curve is constructed on the graphics.
210      *                It is taken from <VAR>MarkerType</VAR> enumeration.
211      */
212     void SetMarker(in MarkerType theType);
213
214     /*!
215      * Gets the presentation type of markers (data points) with
216      * help of which the curve is constructed on the graphics.
217      * \return The type of marker with help of which the curve is constructed
218      *         on the graphics. The returned value will correspond to
219      *         one of the elements the <VAR>MarkerType</VAR> enumeration.
220      */
221     MarkerType GetMarker();
222
223     /*!
224      * This enumeration contains a set of elements defining the
225      * type of presentation of a curve line on the graphics.
226      */
227     enum LineType{ VOIDLINE, SOLIDLINE, DASHLINE, DOTLINE, DASHDOTLINE, DASHDOTDOTLINE};
228
229     /*!
230      * Sets the type of presentation of curve lines on the graphics.
231      * \param theType This parameter defines the type of presentation of curve lines on the graphics.
232      * \param theLineWidth Long value defining the width of the curve line.
233      */
234     void SetLine(in LineType theType, in long theLineWidth);
235
236     /*!
237      * Gets the type of representation of curve lines on the graphics.
238      * \return The type of representation of curve lines on the graphics.
239      */
240     LineType GetLine();
241
242     /*!
243      * Gets the width of the curve line.
244      * \return Long value corresponding to the width of the curve line.
245      */
246     long GetLineWidth();
247   };
248
249   //-------------------------------------------------------
250   /*! \brief %Container presentable object interface
251    *
252    * This class is provided in order to create one presentation using several presentable objects.
253    * This can provide a combination of a set of curves to display them in XY plot view.
254    */
255   interface Container : PrsObject {
256     /*!
257      * Adds a curve into the container.
258      * \param theCurve The added curve.
259      */
260     void AddCurve(in Curve theCurve);
261
262     /*!
263      * Removes a curve from the container.
264      * \param theCurve The removed curve.
265      */
266     void RemoveCurve(in Curve theCurve);
267
268     /*!
269      * Gets the number of curves which are stored in the container.
270      * \return A long value corresponding to the number of curves which are stored in the container.
271      */
272     long GetNbCurves();
273
274     /*!
275      * Removes all curves from the container.
276      */
277     void Clear();
278   };
279
280   //-------------------------------------------------------
281   interface Result;
282   /*! \brief 3D presentation interface
283    *
284    * This is a root class for all 3D presentations, which can be displayed in %VISU module.
285    */
286   interface Prs3d : PrsObject, SALOME::GenericObj 
287   {
288     /*!
289      * Move the 3D presentation according to the given offset parameters
290      */
291     void SetOffset(in float theDx, in float theDy, in float theDz);
292
293     /*!
294      * Gets offset parameters for the 3D presentation
295      */
296     void GetOffset(out float theDx, out float theDy, out float theDz);
297
298     /*!
299      * Gets memory size actually used by the presentation (Mb).
300      */
301     float GetMemorySize();
302   };
303
304   /*!
305    * This enumeration contains a set of elements defining the
306    * type of presentation of the mesh.
307    */
308   enum PresentationType{ POINT,
309                          WIREFRAME,
310                          SHADED,
311                          INSIDEFRAME,
312                          SURFACEFRAME,
313                          FEATURE_EDGES,
314                          SHRINK
315   };
316
317   /*! \brief Interface of the mesh.
318    *
319    * Manages presentation parameters of a 3D presentation of a mesh.
320    * This object can be used for presentation of set of curves using Container class.
321    */
322   interface Mesh : Prs3d {
323     /*!
324      * Sets the color of mesh cells.
325      * \param theColor The color of the cells. This parameter is taken from <VAR>Color</VAR> enumeration.
326      */
327     void SetCellColor(in SALOMEDS::Color theColor);
328
329     /*!
330      * Gets the color of mesh cells.
331      */
332     SALOMEDS::Color GetCellColor();
333
334     /*!
335      * Sets the color of mesh nodes.
336      * \param theColor The color of the nodes. This parameter is taken from <VAR>Color</VAR> enumeration.
337      */
338     void SetNodeColor(in SALOMEDS::Color theColor);
339
340     /*!
341      * Gets the color of mesh nodes.
342      */
343     SALOMEDS::Color GetNodeColor();
344
345     /*!
346      * Sets the color of mesh links.
347      * \param theColor The color of the links. This parameter is taken from <VAR>Color</VAR> enumeration.
348      */
349     void SetLinkColor(in SALOMEDS::Color theColor);
350
351     /*!
352      * Gets the color of mesh links.
353      */
354     SALOMEDS::Color GetLinkColor();
355
356     /*!
357      * Sets the type of representation of a mesh.
358      * \param theType The of representation of a mesh. This parameter is
359      *                taken from <VAR>PresentationType</VAR> enumeration.
360      */
361     void SetPresentationType(in PresentationType theType);
362
363     /*!
364      * Gets the type of representation of the mesh.
365      * \return The type of representation of the mesh.
366      */
367     PresentationType GetPresentationType();
368
369     /*!
370      * Switches shrink mode of presentation
371      * Note: SetPresentationType(SHRINK) is same as SetShrink(True)
372      */
373     void SetShrink(in boolean toShrink);
374
375     /*!
376      * Returns current state of shrink mode
377      */
378     boolean IsShrank();
379   };
380
381
382   //-------------------------------------------------------
383   /*! \brief Basic Interface for the %Colored 3D Presentations
384    *
385    * This interface is responsable for coloring of 3D field presentations
386    * according the scalar values applied to different cells.
387    * As well it contains presentation parameters of the scalar bar. The scalar
388    * bar is displayed along with each colored field presentation and serves for
389    * consulting the correspondance between colors and data values.
390    */
391   interface ColoredPrs3dBase : Prs3d
392   {
393     /*!
394      * Sets scalar range - min and max boundaries of the scalar bar.
395      * \param theMin  Min boundary of the scalar bar.
396      * \param theMax  Max boundary of the scalar bar.
397      */
398     void SetRange(in double theMin, in double theMax);
399
400     /*!
401      * Gets the min boundary of the scalar bar.
402      */
403     double GetMin();
404
405     /*!
406      * Gets the max boundary of the scalar bar.
407      */
408     double GetMax();
409
410     /*!
411      * Sets scalar range that corresponds to the source data.
412      */
413     void SetSourceRange();
414
415     /*!
416      * Gets the min boundary of the scalar bar from source data.
417      */
418     double GetSourceMin();    
419
420     /*!
421      * Gets the max boundary of the scalar bar from source data.
422      */
423     double GetSourceMax();
424
425     /*!
426      * Defines whether the scalar range corresponds to the source data or not.
427      */
428     boolean IsRangeFixed();
429
430     /*! \brief Position of the scalar bar.
431      *
432      * Sets the position of the scalar bar origin on the screen.
433      * \param X   Horizontal position. The value can be between 0 and 1.
434      * \param Y   Vertical position. The value can be between 0 and 1.
435      */
436     void SetPosition(in double X, in double Y);
437
438     /*!
439      * Gets horizontal position of the scalar bar origin.
440      */
441     double GetPosX();
442
443     /*!
444      * Gets vertical position of the scalar bar origin.
445      */
446     double GetPosY();
447
448     /*! \brief Size of this presentable object.
449      *
450      * Sets the size of the scalar bar.
451      * \param theWidth  Width of this presentable object. The value can be between 0 and 1.
452      * \param theHeight  Height of this presentable object. The value can be between 0 and 1.
453      */
454     void SetSize(in double theWidth, in double theHeight);
455
456     /*!
457      * Gets the width of this presentable object.
458      * \return A double value corresponding to the width of this presentable object.
459      */
460     double GetWidth();
461
462     /*!
463      * Gets the height of this presentable object.
464      * \return A double value corresponding to the height of this presentable object.
465      */
466     double GetHeight();
467
468     /*!
469      * Sets the number of colors which will be used for presentation of this presentable object.
470      * \param theNbColors A long value defining the number of colors.
471      */
472     void SetNbColors(in long theNbColors);
473
474     /*!
475      * Gets the number of colors which will be used for visualization of this presentable object.
476      * \return A long value corresponding to the number of colors which
477      *         will be used for visualization of this presentable object.
478      */
479     long GetNbColors();
480     /*!
481      * Sets the number of labels which will be used for indication of color gradation
482      * of the scalar bar.
483      * \param theNbLabels A long value defining the number of labels.
484      */
485     void SetLabels(in long theNbLabels);
486
487     /*!
488      * Gets the number of labels which will be used for indication of color gradation of the scalar bar.
489      * \return A long value corresponding to the number of labels which will
490      *         be used for indication of color gradation of the scalar bar.
491      */
492     long GetLabels();
493
494     /*! %Orientation of the scalar bar (to provide backward compatibility). */
495     enum Orientation {
496       HORIZONTAL, /*!< Horizontal orientation of the scalar bar.*/
497       VERTICAL    /*!< Vertical orientation of the scalar bar.*/
498     };
499
500     /*!
501      * Sets the type of orientation of the scalar bar (to provide backward compatibility).
502      * \param theOrientation This parameter defines the orientation of the scalar bar.
503      *                       It is taken from the <VAR>Orientaton</VAR> enumeration.
504      */
505     void SetBarOrientation(in Orientation theOrientation);
506
507     /*!
508      * Gets the type of orientation of the scalar bar (to provide backward compatibility).
509      */
510     Orientation GetBarOrientation();
511   };
512
513   /*! \brief Additional Interface for the %Colored 3D Presentations
514    *
515    */
516
517   interface ColoredPrs3d : ColoredPrs3dBase
518   {
519     /*!
520      * Sets the title of the scalar bar. By default - the name of the selected result is used.
521      * \param theName String parameter defining the name of the scalar bar.
522      */
523     void SetTitle(in string theName);
524
525     /*!
526      * Gets the title of the scalar bar.
527      */
528     string GetTitle();
529
530     /*! Sets the method of coloring of the elements composing a 3D presentation.
531      */
532     void SetScalarMode(in long theScalarMode);
533
534     /*! Gets the method of coloring of the elements composing a 3D presentation.
535      */
536     long GetScalarMode();
537
538     /*!  
539      * Set the visibility of a distribution curve.
540      * \param theIs is used to switch on/off the visibility of a distribution curve.
541      */
542     void SetIsDistributionVisible(in boolean theIs);
543
544     //! Gets current visibility of a distribution curve
545     boolean GetIsDistributionVisible();
546
547     //! Gets current filtering by scalars mode
548     boolean IsScalarFilterUsed();
549
550     void UseScalarFiltering( in boolean theUseScalarFilter );
551
552     /*!
553      * Sets scalar range - min and max boundaries of the scalar bar.
554      * \param theMin  Min boundary of the scalar bar.
555      * \param theMax  Max boundary of the scalar bar.
556      * \param theIsFilter  if true then filter by scalars.
557      */
558     void SetScalarFilterRange( in double theMin, in double theMax );
559
560     double GetScalarFilterMin();
561
562     double GetScalarFilterMax();
563
564     /*!
565      * Add group as geometry of presentation.
566      * \param theMeshName  - mesh name
567      * \param theGroupName - group name
568      */
569     void AddMeshOnGroup(in string theGroupName);
570     
571     /*!
572      * PrsMerger method:
573      * Remove all groups.(The scalar map will be placed on all mesh).
574      */
575     void RemoveAllGeom();
576   };
577
578
579   //-------------------------------------------------------
580   interface View3D;
581   interface ColoredPrs3dCache;
582
583
584   //-------------------------------------------------------
585   /*! \brief %ColoredPrs3dHolder interface.
586    * Interface of 3d presentation's holder, which represents colored 3d presentations,
587    * created on fields. It is publishing in the object browser in a separate folder
588    * and can be controled by viewer's slider.
589    */
590   interface ColoredPrs3dHolder : PrsObject, SALOME::GenericObj
591   {
592     /*!
593      * Presentation input parameters.
594      */
595     struct BasicInput
596     {
597       Result myResult;
598       string myMeshName;
599       Entity myEntity;
600       string myFieldName;
601       long myTimeStampNumber;
602     };
603
604     /*!
605      * Apply input parameters to last visited presentation in the cache.
606      */
607     boolean Apply(in ColoredPrs3d thePrs3d,
608                   in BasicInput theInput,
609                   in View3D theView3D);
610
611     /*!
612      * Gets the last visited presentation in the cache.
613      */
614     ColoredPrs3d GetDevice();
615
616     /*!
617      * Gets type of the managed presentations.
618      */
619     VISUType GetPrsType();
620
621     /*! Defines timestamp representation. 
622      */
623     struct TimeStampInfo
624     {
625       string myTime;
626       long myNumber;
627     };
628
629     /*! Defines representation range of timestamps. 
630      */
631     typedef sequence<TimeStampInfo> TimeStampsRange;
632
633     /*!
634      * Gets TimeStampsRange information from the last visited presentation.
635      */
636     TimeStampsRange GetTimeStampsRange();
637
638     /*!
639      * Gets input parameters of the last visited presentation.
640      */
641     BasicInput GetBasicInput();
642
643     /*!
644      * Gets a %ColoredPrs3dCache, to which the holder belongs
645      */
646     ColoredPrs3dCache GetCache();
647
648     /*!
649      * Gets memory size actually used by the holder (Mb).
650      */
651     float GetMemorySize();
652   };
653
654
655   //-------------------------------------------------------
656   /*! \brief %ColoredPrs3dCache interface.
657    * This interface is responsible for memory management of 3d presentations.
658    * One cache corresponds to one study.
659    */
660   interface ColoredPrs3dCache : RemovableObject, SALOME::GenericObj
661   {
662     /*! This enumeration contains the cache memory modes. */
663     enum MemoryMode {
664       MINIMAL, /*!< Minimal memory mode (default behaviour). */
665       LIMITED  /*!< Limited memory mode (fixed memory size for presentations). */
666     };
667
668     /*! This enumeration defines how to enlarge the cache limited memory. */
669     enum EnlargeType {
670       NO_ENLARGE, /*!< No need to enlarge (default behaviour). */
671       ENLARGE,    /*!< Enlarge limited memory. */
672       IMPOSSIBLE  /*!< Impossible to enlarge (not enough free memory). */
673     };
674
675     /*! Sets a memory mode.*/
676     void SetMemoryMode(in MemoryMode theMode);
677
678     /*! Gets a memory mode.*/
679     MemoryMode GetMemoryMode();
680
681     /*! Sets a memory size for limited mode (Mb). */
682     void SetLimitedMemory(in float theMemorySize);
683
684     /*! Gets a memory size for limited mode (Mb). */
685     float GetLimitedMemory();
686
687     /*!
688      * Gets memory size actually used by the cache system (Mb).
689      */
690     float GetMemorySize();
691
692     /*! Creates %ColoredPrs3dHolder.*/
693     ColoredPrs3dHolder CreateHolder(in VISUType theType,
694                                     in ColoredPrs3dHolder::BasicInput theInput);
695
696     /*! Gets a memory which is required to create a holder. */
697     EnlargeType GetRequiredMemory(in VISUType theType,
698                                   in ColoredPrs3dHolder::BasicInput theInput,
699                                   out float theRequiredMemory);
700   };
701
702
703   //-------------------------------------------------------
704   /*! \brief Interface of the %Scalar Map
705    *
706    * This interface is responsable for coloring of 3D field presentations
707    * according the scalar values applied to different cells.
708    * As well it contains presentation parameters of the scalar bar. The scalar
709    * bar is displayed along with each colored field presentation and serves for
710    * consulting the correspondance between colors and data values.
711    */
712   
713   interface ScaledPrs3d {
714     /*!
715      * Sets the type of scaling of the values reflected by the scalar bar.
716      * \param theScaling The value of this parameter is taken from the <VAR>Scaling</VAR> enumeration.
717      */
718     void SetScaling(in Scaling theScaling);
719
720     /*!
721      * Gets the type of scaling of the values reflected by this presentation.
722      */
723     Scaling GetScaling();
724   };
725
726   interface ScalarMap : ColoredPrs3d, ScaledPrs3d {
727
728     /*!
729      * Returns visibility state of scalar bar
730      */
731     boolean IsBarVisible();
732
733     /*!
734      * Sets visibility state of scalar bar
735      */
736     void SetBarVisible(in boolean theVisible);
737
738   };
739
740   //-------------------------------------------------------
741   /*! \brief Gauss Points presentation interface
742    *
743    * Presentation parameters of the Gauss Points presentation.
744    */
745   //-------------------------------------------------------
746   interface GaussPoints : ColoredPrs3d 
747   {
748     //! Set flag indicating which scalar bar is active.
749     void SetIsActiveLocalScalarBar(in boolean theFlag);
750
751     //! Get flag indicating which scalar bar is active.
752     boolean GetIsActiveLocalScalarBar();
753
754     //! Set flag indicating visibility of global scalar bar.
755     void SetIsDispGlobalScalarBar(in boolean theFlag);
756
757     //! Get flag indicating visibility of global scalar bar.
758     boolean GetIsDispGlobalScalarBar();
759
760     //! Set value of the distance between global and local scalar bars.
761     void SetSpacing(in double theSpacing);
762
763     //! Get value of the distance between global and local scalar bars.
764     double GetSpacing();
765
766     /*!  
767      * Set the Multicolored mode.
768      * \param theIsColored is used to switch between Results and Geometry modes.
769      * Multiple colors are using when the presentation is
770      * drawing in the Results mode, one color - in the Geometry mode.
771      */
772     void SetIsColored(in boolean theIsColored);
773
774     //! Gets current color mode
775     boolean GetIsColored();
776
777     /*! Sets the color of this presentation in case of IsColored switched off.
778      * \param theColor The color of this presentation. This parameter
779      *                 is taken from the <VAR>Color</VAR> enumeration.
780      */
781     void SetColor(in SALOMEDS::Color theColor);
782
783     /*!
784      * When the Bicolor parameter is set to true, scalar bars are
785      * drawing with two colors : red color correspoonds to positive
786      * scalar values, blue color - to negative values.
787      */
788     void SetBiColor(in boolean theIsBiColor);
789
790     //! Get the Bicolor mode.
791     boolean GetBiColor();
792
793     //! Checks whether the Gauss Points will be deformed or not
794     boolean GetIsDeformed();
795
796     //! Apply deformation on the Gauss Points
797     void SetIsDeformed(in boolean theIsDeformed);
798
799     /*!
800      *  Sets the scale factor for scalar values
801      *  (how much corresponding mesh elements should be translated).
802      *  \param theScaleFactor The scaling factor.
803      */
804     void SetScaleFactor(in double theScaleFactor);
805
806     /*!
807      *  Gets the scale factor for scalar values.
808      *  (how much corresponding mesh elements is translated)
809      */
810     double GetScaleFactor();
811
812     /*!
813      * This enumeration contains a set of elements defining the type of representation of the vector head.
814      */
815     enum PrimitiveType { 
816       SPRITE,
817       POINT,
818       SPHERE
819     };
820
821     //! Set type of the primitives which is used for drawing the Gauss Points
822     void SetPrimitiveType(in PrimitiveType thePrimitiveType);
823
824     //! Get type of the primitives which is used for drawing the Gauss Points
825     PrimitiveType GetPrimitiveType();
826
827     //! Sets Point Sprite clamp
828     void SetClamp(in double theClamp);
829
830     //! Gets Point Sprite clamp
831     double GetClamp();
832
833     //! Sets minimum size of Point Sprites
834     void SetMinSize(in double theMinSize);
835
836     //! Gets minimum size of Point Sprites
837     double GetMinSize();
838
839     //! Sets maximum size of Point Sprites
840     void SetMaxSize(in double theMaxSize);
841
842     //! Gets maximum size of Point Sprites
843     double GetMaxSize();
844
845     //! Sets magnification for Point Sprites
846     void SetMagnification(in double theMagnification);
847
848     //! Gets magnification for Point Sprites
849     double GetMagnification();
850
851     //! Sets the increment of changing Magnification parameter
852     void SetMagnificationIncrement(in double theIncrement);
853
854     //! Gets the increment of changing Magnification parameter
855     double GetMagnificationIncrement();
856
857     //! Sets Point Sprites size
858     void SetGeomSize(in double theGeomSize);
859
860     //! Sets size of Point Sprite
861     double GetGeomSize();
862
863     //! Get path to the image using for Main Point Sprite texture
864     string GetMainTexture();
865
866     //! Get path to the image using for Alpha Point Sprite texture
867     string GetAlphaTexture();
868
869     //! Points Main and AlphaMask images to be used by Point Sprites
870     void SetTextures(in string theMainTexture, in string theAlphaTexture);
871
872     //! Sets Point Sprite Alpha threshold
873     void SetAlphaThreshold(in double theAlphaThreshold);
874
875     //! Gets Point Sprite Alpha threshold
876     double GetAlphaThreshold();
877
878     //! Sets resolution of the Geometrical Sphere
879     void SetResolution(in long theResolution);
880
881     //! Sets resolution of the Geometrical Sphere
882     long GetResolution();
883
884     //! Sets how many faces of can be drawn in the Geometrical Sphere primitive mode
885     void SetFaceLimit(in long theFaceLimit);
886
887     //! Defines how many faces of can be drawn in the Geometrical Sphere primitive mode
888     long GetFaceLimit();
889   };
890
891
892   /*! \brief MonoColor presentation presentation interface
893    *
894    * Presentation parameters of the MonoColor presentation.
895    */
896   interface MonoColorPrs : ScalarMap {
897
898     /*! This boolean method returns True if this deformed shape presentation is colored.
899      */
900     boolean IsColored();
901
902     /*! Shows this presentation in colored mode.
903      * \param theColored If this boolean parameter is True this presentable
904      *                   object will be shown in colored mode.
905      */
906     void ShowColored(in boolean theColored);
907
908     /*! Gets the color of this presentable object.
909      * \return The color of this presentable object.
910      */
911     SALOMEDS::Color GetColor();
912
913     /*! Sets the color of this presentation.
914      * \param theColor The color of this presentation. This parameter
915      *                 is taken from the <VAR>Color</VAR> enumeration.
916      */
917     void SetColor(in SALOMEDS::Color theColor);
918   };
919
920
921   /*! \brief Deformed shape presentation interface
922    *
923    * Presentation parameters of the deformed shape presentation.
924    */
925   interface DeformedShape : MonoColorPrs 
926   {
927     /*!
928      * Sets the scale of the presentatable object.
929      * \param theScale Double value defining the scale of this presentable object.
930      */
931     void SetScale(in double theScale);
932
933     /*!
934      * Gets the scale of the presentatable object.
935      */
936     double GetScale();
937
938   };
939
940   //-------------------------------------------------------
941   /*! \brief Deformation interface
942    *
943    * This is base interface for building of the deformed presentations
944    */
945   interface Deformation{
946     /*!
947      * Sets the scale of the presentatable object.
948      * \param theScale Double value defining the scale of this presentable object.
949      */
950     void SetScale(in double theScale);
951
952     /*!
953      * Gets the scale of the presentatable object.
954      */
955     double GetScale();
956
957     /*!
958      * Sets the vectorial field
959      * \param theEntity    - entity of vectorial field
960      * \param theFieldName - the name of vectorial field
961      */
962     void SetVectorialField(in Entity theEntity,
963                            in string theFieldName);
964
965     /*!
966      * Get vectorial entity
967      */
968     Entity GetVectorialFieldEntity();
969
970     /*!
971      * Get scalar field name
972      */
973     string GetVectorialFieldName();
974     
975   };
976
977   //-------------------------------------------------------
978   /*! \brief OptionalDeformation interface
979    *
980    * This is interface for switch on/off of the deformation of the presentation
981    */
982   interface OptionalDeformation : Deformation{
983
984     /*!
985      * Sets the deformation flag of the presentatable object.
986      * \param theFlag Boolean value defining the deformation flag of this presentable object.
987      */
988     void UseDeformation(in boolean theFlag);
989
990     /*!
991      * Gets the deformation flag of the presentatable object.
992      */
993     boolean IsDeformed();
994   };
995
996   //-------------------------------------------------------
997   /*! \brief Scalar Map on Deformed shape presentation interface
998    *
999    * Presentation parameters of the scalar map on deformed shape presentation.
1000    */
1001   interface DeformedShapeAndScalarMap : ScalarMap {
1002     
1003     /*!
1004      * Sets the scale of the presentatable object.
1005      * \param theScale Double value defining the scale of this presentable object.
1006      */
1007     void SetScale(in double theScale);
1008
1009     /*!
1010      * Gets the scale of the presentatable object.
1011      */
1012     double GetScale();
1013
1014     /*!
1015      * Sets the scalar field
1016      * \param theEntity    - entity of scalar field
1017      * \param theFieldName - the name of scalar field
1018      * \param theTimeStampNumber - the timestamp number for the scalar field
1019      */
1020     void SetScalarField(in Entity theEntity,
1021                         in string theFieldName,
1022                         in long theTimeStampNumber);
1023
1024
1025     /*!
1026      * Get scalar entity
1027      */
1028     Entity GetScalarEntity();
1029
1030     /*!
1031      * Get scalar field name
1032      */
1033     string GetScalarFieldName();
1034
1035     /*!
1036      * Get timestamp number for the scalar field
1037      */
1038     long GetScalarTimeStampNumber();
1039   };
1040
1041
1042   //-------------------------------------------------------
1043   /*!
1044    *  \brief Plot3D interface
1045    *
1046    *  Presentation parameters of Plot3D presentation. This type of presentation
1047    *  consists of deforming initial planar mesh according to values assigned to the mesh elements.
1048    *  If mesh not planar but volumic one, it is possible to generate intermediate planar mesh.
1049    */
1050   interface Plot3dBase {
1051     /*!
1052      *  Sets the scale factor for scalar values
1053      *  (how much corresponding mesh elements should be translated).
1054      *  \param theScaleFactor The scaling factor.
1055      */
1056     void SetScaleFactor (in double theScaleFactor);
1057
1058     /*!
1059      *  Gets the scale factor for scalar values.
1060      *  (how much corresponding mesh elements is translated)
1061      */
1062     double GetScaleFactor();
1063
1064     /*!
1065      *  Sets presentation type: contour or surface.
1066      *  \param theIsContourPrs Define, whether presentation type is contour.
1067      */
1068     void SetContourPrs (in boolean theIsContourPrs );
1069
1070     /*!
1071      *  Returns true if presentation type is contour.
1072      */
1073     boolean GetIsContourPrs();
1074
1075     /*!
1076      *  Sets the number of contours.
1077      *  \param theNb The number of contours.
1078      */
1079     void SetNbOfContours (in long theNb);
1080
1081     /*!
1082      *  Gets the number of contours.
1083      */
1084     long GetNbOfContours();
1085   };
1086
1087   interface Plot3D : ScalarMap, Plot3dBase {
1088     /*!
1089      *  This enumeration contains a set of elements defining
1090      *  the type of orientation in 3D space of the cutting plane.
1091      */
1092     enum Orientation { XY,   /*!< The object is located in the plane formed by X and Y axis. */
1093                        YZ,   /*!< The object is located in the plane formed by Y and Z axis. */
1094                        ZX }; /*!< The object is located in the plane formed by Z and X axis. */
1095
1096     /*!
1097      *  Sets the orientation in 3D space of cutting plane for the presentation.
1098      *  \param theOrientation This parameter defines the type of orientation of cutting plane
1099      *         in 3D space. It is taken from the <VAR>Orientation</VAR> enumeration.
1100      *  \param theXAngle The angle of rotation of the cutting plane
1101      *         around the first axis of the chosen orientation.
1102      *  \param theXAngle The angle of rotation of the cutting plane
1103      *         around the second axis of the chosen orientation.
1104      */
1105     void SetOrientation (in Orientation theOrientation, in double theXAngle, in double theYAngle);
1106
1107     /*!
1108      *  Gets the type of orientation in 3D space of cutting plane.
1109      */
1110     Orientation GetOrientationType();
1111
1112     /*!
1113      *  Gets rotation angle of the cutting plane
1114      *  around the first axis of the chosen orientation.
1115      */
1116     double GetRotateX();
1117
1118     /*!
1119      *  Gets rotation angle of the cutting plane
1120      *  around the second axis of the chosen orientation.
1121      */
1122     double GetRotateY();
1123
1124     /*!
1125      *  Sets the position of a cutting plane.
1126      *  \param thePlanePosition The position of the cutting plane.
1127      *  \param theIsRelative Define, whether the input position is relative.
1128      */
1129     void SetPlanePosition (in double  thePlanePosition,
1130                            in boolean theIsRelative);
1131
1132     /*!
1133      *  Gets the position of the cutting plane
1134      */
1135     double GetPlanePosition();
1136
1137     /*!
1138      *  Returns true if a position of cutting plane is relative
1139      */
1140     boolean IsPositionRelative();
1141   };
1142
1143  //-------------------------------------------------------
1144   /*! \brief %Table representation interface
1145    *
1146    * Presentation parameters of the %Table view.
1147    */
1148   interface Table : PrsObject {
1149     /*!
1150      * Sets the title of the table.
1151      * \param theTitle String parameter defining the title of this table.
1152      */
1153     void SetTitle(in string theTitle);
1154
1155     /*!
1156      * Gets the title of the table.
1157      * \return A string value containing the title of the table.
1158     */
1159     string GetTitle();
1160
1161     /*!
1162      * This enumeration contains a set of elements defining the orientation of the table.
1163      */
1164     enum Orientation {
1165       HORIZONTAL, /*!< Horizontal orientation of the table. */
1166       VERTIACAL   /*!< Vertical orientation of the table. */
1167     };
1168
1169     /*!
1170      * Sets orientation of the table.
1171      * \param theOrientation This input parameter defines the orientation of the table.
1172      *                       It is taken from the <VAR>Orientation</VAR> enumeration.
1173      */
1174     void SetOrientation(in Orientation theOrientation);
1175
1176     /*!
1177      * Gets orientation of the table.
1178      * \return Orientation of the table. The returned value will correspond
1179      *         to one of the elements the <VAR>Orientation</VAR> enumeration.
1180      */
1181     Orientation GetOrientation();
1182
1183     /*!
1184      * Gets the number of rows of the table.
1185      * \return Long value corresponding to the number of rows of the table
1186      */
1187     long GetNbRows();
1188
1189     /*!
1190      * Gets the number of columns of the table.
1191      * \return Long value corresponding to the number of columns of the table
1192      */
1193     long GetNbColumns();
1194   };
1195
1196   //-------------------------------------------------------
1197   /*! \brief %PointMap3d representation interface
1198    *
1199    * Presentation parameters of the %Table Point Map in 3d view.
1200    */
1201   interface PointMap3d : ColoredPrs3dBase, ScaledPrs3d, Plot3dBase, Table {
1202   };
1203
1204   //-------------------------------------------------------
1205   /*! \brief Cut planes interface
1206    *
1207    * Presentation parameters of Cut planes presentation. This type of presentation
1208    * consists of cutting your initial mesh by a definite number of planes. As the
1209    * result you will see these planes which will be cutted by the borders of the mesh.
1210    */
1211   interface CutPlanes : ScalarMap, OptionalDeformation {
1212     /*!
1213      * This enumeration contains a set of elements defining the type of orientation in 3D space
1214      * of the cut planes.
1215      */
1216     enum Orientation {XY, /*!< The object is located in the plane formed by X and Y axis. */
1217                       YZ, /*!< The object is located in the plane formed by Y and Z axis. */
1218                       ZX}; /*!< The object is located in the plane formed by Z and X axis. */
1219
1220     /*!
1221      * Sets the type of orientation in 3D space of cut planes presentation.
1222      * \param theOrientation This parameter defines the type of orientation of cut planes
1223      *                       in 3D space. It is taken from the <VAR>Orientation</VAR> enumeration.
1224      * \param theXAngle The angle of rotation of the cut planes around
1225      *                  the first axis of the chosen orientation.
1226      * \param theXAngle The angle of rotation of the cut planes around
1227      *                  the second axis of the chosen orientation.
1228      */
1229     void SetOrientation(in Orientation theOrientation, in double theXAngle, in double theYAngle);
1230
1231     /*!
1232      * Gets the type of orientation in 3D space of cut planes presentation.
1233      */
1234     Orientation GetOrientationType();
1235
1236     /*!
1237      * Gets rotation angle of the cut plane presentation around the first axis of the chosen orientation.
1238      */
1239     double GetRotateX();
1240
1241     /*!
1242      * Gets rotation angle of the cut plane presentation around the second axis of the chosen orientation.
1243      */
1244     double GetRotateY();
1245
1246     /*!
1247      * Sets the displacement of the cut planes in 3D space.
1248      *
1249      * \param theDisp This parameter defines position of the cut planes
1250      * in 3D space. It varies from 0 to 1. If the chosen value is 0.5, the cut planes
1251      * will be evenly located regarding each other; in other words, the distance between all
1252      * of them will be equal. If the value is higher or lower than 0.5, the planes will be displaced
1253      * to one or another side.
1254      */
1255     void SetDisplacement(in double theDisp);
1256
1257     /*!
1258      * Gets the displacement of the cut planes in 3D space.
1259      */
1260     double GetDisplacement();
1261
1262     /*!
1263      * Sets the position of a definite cut plane.
1264      * \param thePlaneNumber The number of this cut plane.
1265      * \param thePlanePosition The position of this cut plane.
1266      */
1267      void SetPlanePosition(in long thePlaneNumber, in double thePlanePosition);
1268
1269     /*!
1270      * Sets the position of the choosen plane to default value.
1271      * \param thePlaneNumber The number of this cut plane.
1272      */
1273      void SetDefault(in long thePlaneNumber);
1274
1275     /*!
1276      * Gets the position of the choosen plane
1277      */
1278     double GetPlanePosition(in long thePlaneNumber);
1279
1280     /*!
1281      * Determines whether the choosen plane has default position.
1282      * \param thePlaneNumber The number of this cut plane.
1283      */
1284     boolean IsDefault(in long thePlaneNumber);
1285
1286     /*!
1287      * Sets the number of cut planes.
1288      * \param theNb The number of cut planes.
1289      */
1290     void SetNbPlanes(in long theNb);
1291
1292     /*!
1293      * Gets the number of cut planes.
1294      */
1295     long GetNbPlanes();
1296   };
1297
1298   //-------------------------------------------------------
1299   /*! \brief Cut lines presentation.
1300    *
1301    * Presentation parameters of a Cut lines presentation.
1302    * Cut Lines is a type of presentation which displays colored cells
1303    *   with applied scalar values on the mesh where lines are placed.
1304    * The procedure of construction of a Cut Lines presentation reuses the algorithm
1305    *   of creation of Cut Planes presentation and consists of two steps:
1306    *
1307    *   1. From Cut Planes presentation one plane is taken and
1308    *      it is used as base plane for construction of cut lines.
1309    *   2. This plane is cut by a regular array of planes. The result of this
1310    *      operation is a regular array of lines in space, belonging to the same plane
1311    *      and having the same orientation. They are located inside or on the mesh.
1312    */
1313   interface CutLines : ScalarMap {
1314     /*!
1315      * Sets the type of orientation in 3D space of the base plane of a cut lines presentation.
1316      * \param theOrientation The orientation of the base plane in 3D space.
1317      * \param theXAngle The angle of rotation of the base plane around
1318      *                  the first axis of the chosen orientation.
1319      * \param theXAngle The angle of rotation of the base plane around
1320      *                  the second axis of the chosen orientation.
1321      */
1322     void SetOrientation(in CutPlanes::Orientation theOrientation, in double theXAngle, in double theYAngle);
1323
1324     /*!
1325      * Sets the type of orientation in 3D space of the cutting planes of a cut lines presentation.
1326      * \param theOrientation This parameter defines the type of orientation of the cutting planes
1327      *                       in 3D space. It is taken from the <VAR>Orientation</VAR> enumeration.
1328      * \param theXAngle The angle of rotation of the cutting planes
1329      *                  around the first axis of the chosen orientation.
1330      * \param theXAngle The angle of rotation of the cutting planes
1331      *                  around the second axis of the chosen orientation.
1332      */
1333     void SetOrientation2(in CutPlanes::Orientation theOrientation, in double theXAngle, in double theYAngle);
1334
1335     /*!
1336      * Gets the type of orientation in 3D space of the base plane of a cut lines presentation.
1337      */
1338     CutPlanes::Orientation GetOrientationType();
1339
1340     /*!
1341      * Gets the type of orientation in 3D space of the cutting planes of a cut lines presentation.
1342      */
1343     CutPlanes::Orientation GetOrientationType2();
1344
1345     /*!
1346      * Gets rotation angle of the base plane around the first axis of the chosen orientation.
1347      */
1348     double GetRotateX();
1349
1350     /*!
1351      * Gets rotation angle of the cutting planes around the first axis of the chosen orientation.
1352      */
1353     double GetRotateX2();
1354
1355     /*!
1356      * Gets rotation angle of the base plane around the second axis of the chosen orientation.
1357      */
1358     double GetRotateY();
1359
1360     /*!
1361      * Gets rotation angle of the cutting planes around the second axis of the chosen orientation.
1362      */
1363     double GetRotateY2();
1364
1365     /*!
1366      * Sets the displacement of the base plane of the cut lines presentation in 3D space.
1367      *
1368      * \param theDisp This parameter defines position of the base plane
1369      * in 3D space. It varies from 0 to 1.
1370      */
1371     void SetDisplacement(in double theDisp);
1372
1373     /*!
1374      * Sets the displacement of the cutting planes of the cut lines presentation in 3D space.
1375      *
1376      * \param theDisp This parameter defines position of the cutting planes
1377      * in 3D space. It varies from 0 to 1.
1378      */
1379     void SetDisplacement2(in double theDisp);
1380
1381     /*!
1382      * Gets the displacement of the base plane of the cut lines presentation in 3D space.
1383      */
1384     double GetDisplacement();
1385
1386     /*!
1387      * Gets the displacement of the cutting planes of the cut lines presentation in 3D space.
1388      */
1389     double GetDisplacement2();
1390
1391     /*! Sets the position of the base plane in 3D space.
1392      * \param thePlanePosition A double value defining the position of the base plane in 3D space.
1393      */
1394     void SetBasePlanePosition(in double thePlanePosition);
1395
1396     /*! Gets the position of the base plane in 3D space.
1397      */
1398     double GetBasePlanePosition();
1399
1400     /*! Sets the position of one of cutting planes in 3D space.
1401      * \param thePlaneNumber A long value defining the order number of this cutting plane.
1402      * \param thePlanePosition A double value defining the position of the base plane in 3D space.
1403      */
1404     void SetLinePosition(in long thePlaneNumber, in double thePlanePosition);
1405
1406     /*! Gets the position of one of cutting planes in 3D space.
1407      * \param thePlaneNumber A long value defining the order number of this cutting plane.
1408      */
1409     double GetLinePosition(in long thePlaneNumber);
1410
1411     /*! Sets the position of the base plane to default value.
1412      */
1413     void SetDefault();
1414
1415     /*!
1416      * Determines whether the base plane has default position.
1417      * \return True if the base plane has default position.
1418      */
1419     boolean IsDefault();
1420
1421     /*!
1422      * Sets the position of the choosen cutting plane to default value.
1423      * \param thePlaneNumber The number of this cutting plane.
1424      */
1425     void SetDefaultPosition(in long thePlaneNumber);
1426
1427     /*!
1428      * Determines whether the choosen cutting plane has default position.
1429      * \param thePlaneNumber The number of this cutting plane.
1430      * \return True if this cutting plane has default position.
1431      */
1432     boolean IsDefaultPosition(in long thePlaneNumber);
1433
1434     /*!
1435      * Sets the number of cut lines.
1436      * \param theNb The number of cut lines.
1437      */
1438     void SetNbLines(in long theNb);
1439
1440     /*!
1441      * Gets the number of cut lines.
1442      */
1443     long GetNbLines();
1444
1445     /*! Invert all curves of corresponding table
1446      * \param theInvert - Invert all curves, if value is TRUE, else not.
1447      */
1448     void SetAllCurvesInverted(in boolean theInvert);
1449
1450     /*! Checks the orientation of all curves
1451      * \retval TRUE - if all curves are inverted, else FALSE
1452      */
1453     boolean IsAllCurvesInverted();
1454
1455     /*! Sets values which cutlines would be shown: aboslute or relative values
1456      * \param theAbsLength - boolean value, TRUE or false.
1457      */
1458     void SetUseAbsoluteLength(in boolean theAbsLength);
1459
1460     /*! Checks values of cutlines: using aboslute or relative values
1461      */
1462     boolean IsUseAbsoluteLength();
1463   };
1464
1465   /*! \brief Interface of the stream lines representation
1466    *
1467    * This interface contains presentation parameters of stream lines presentations.
1468    * <BR>Stream lines is a type of presentation transforming into lines the
1469    * cells with vectors having most similar direction. A stream line can be thought
1470    * of as the path that a massless particle takes in a vector field.
1471    * Streamlines are used to convey the structure of a vector field.
1472    * Usually streamlines are created to explore the most interesting features in the field.
1473    */
1474   interface StreamLines : MonoColorPrs {
1475     /*! This enumerations contains a set of elements necessary
1476      * for definition of direction of the stream lines.
1477      */
1478     enum Direction{ FORWARD,
1479                     BACKWARD,
1480                     BOTH
1481     };
1482
1483     /*! Sets the parameters of the stream lines presentation.
1484      * \param theIntStep Inegration step is a parameter of smoothness of the stream lines.
1485      *                   This parameter defines the accuracy of construction of the streamlines.
1486      *                   A smaller value of this parameter allows to construct smoother
1487      *                   streamlines (at the cost of more computation time).
1488      * \param thePropogationTime This parameter controls the maximum length of
1489      *                           the stream line (measured in units of time).
1490      * \param theStepLength This parameter defines the size of the output line segments
1491      *                      that make up the streamline (which is represented as a polyline).
1492      * \param thePrs3d The source presentation. The points of the field located on this source
1493      *                 presentation will serve as starting points for generation of stream lines.
1494      * \note If this parameter is not defined, your stream lines
1495      *       presentation will be generated on all points of the field.
1496      * \param thePercents This parameter defines the quantity of points of the field
1497      *                    (from 0 to 100%) which will be used as starting points for
1498      *                    construction of the stream lines. Thus, the value of this
1499      *                    parameter can vary from 0 to 1.
1500      * \param theDirection Direction of the stream lines (Forward, Backward or Both).
1501      * \return True if all parameters are properly set.
1502      */
1503     boolean SetParams(in double theIntStep,
1504                       in double thePropogationTime,
1505                       in double theStepLength,
1506                       in Prs3d thePrs3d,
1507                       in double thePercents,
1508                       in Direction theDirection);
1509
1510     /*! Gets the value of integration step of the stream lines presentation.
1511      */
1512     double GetIntegrationStep();
1513
1514     /*! Gets the value of propagation time of the stream lines presentation.
1515      */
1516     double GetPropagationTime();
1517
1518     /*! Gets the value of step length of the stream lines presentation.
1519      */
1520     double GetStepLength();
1521
1522     /*! Returns the source presentation used for generation of the stream lines.
1523      */
1524     Prs3d GetSource();
1525
1526     /*! Gets the quantity of points of the field used as starting
1527      *  points for generation of the stream lines presentation.
1528      */
1529     double GetUsedPoints();
1530
1531     /*! Returns the direction of the stream lines.
1532      */
1533     Direction GetDirection();
1534   };
1535
1536   /*! \brief Interface of the isometric surface presentation
1537    *
1538    * This interface contains presentation parameters of
1539    * isometric surface presentations.
1540    * <BR>Iso surfaces presentation combines all equal scalar
1541    * values on the cells and on the basis of them constructs
1542    * isobaric surfaces, which form this presentation.
1543    */
1544   interface IsoSurfaces : MonoColorPrs {
1545     /*!
1546      * Sets the number of isometric surfaces.
1547      * \param theNb A long value defining the number of isometric surfaces
1548      *              which will be used for construction of this presentation.
1549      */
1550     void SetNbSurfaces(in long theNb);
1551
1552     /*!
1553      * Gets the number of isometric surfaces
1554      */
1555     long GetNbSurfaces();
1556
1557     /*!
1558      * Returns TRUE if labels with values are shown
1559      */
1560     boolean IsLabeled();
1561
1562     /*!
1563      * Set show or not value labels
1564      */
1565     void ShowLabels(in boolean theShow, in long theNb);
1566
1567     /*!
1568      * Returns Nb of labels per surface
1569      */
1570    long GetNbLabels();
1571
1572   };
1573
1574   //-------------------------------------------------------
1575   /*! \brief Interface of the vector presentation.
1576    *
1577    * This interface contains presentation parameters of vector presentations.
1578    */
1579   interface Vectors : DeformedShape {
1580     /*!
1581      * Sets the width of the lines of the vectors.
1582      * \param theWidth A double value defining the width of the lines of the vectors.
1583      */
1584     void SetLineWidth(in double theWidth);
1585
1586     /*!
1587      * Gets the width of the lines of the vectors.
1588      */
1589     double GetLineWidth();
1590
1591     /*!
1592      * This enumeration contains a set of elements defining the type of representation of the vector head.
1593      */
1594     enum GlyphType{ ARROW,
1595                     CONE2,
1596                     CONE6,
1597                     NONE
1598                   };
1599
1600     /*!
1601      * Sets the type of representation of the vector head.
1602      * \param theType This parameter defines the type of representation of the vector head.
1603      * This value is taken from the <VAR>GlyphType</VAR> enumeration.
1604      */
1605     void SetGlyphType(in GlyphType theType);
1606
1607     /*!
1608      * Gets the type of representation of the vector head.
1609      */
1610     GlyphType GetGlyphType();
1611
1612     /*!
1613      * This enumeration contains a set of elements defining the position of the vector head.
1614      */
1615     enum GlyphPos{ CENTER, /*!<In the center of the vector.*/
1616                    TAIL,   /*!<In the tail of the vector.*/
1617                    HEAD  /*!<In the head of the vector.*/
1618                  };
1619
1620     /*!
1621      * Sets the position of the vector head.
1622      * \param thePos This parameter defines the position of the vector head.
1623      * This value is taken from the <VAR>GlyphPos</VAR> enumeration.
1624      */
1625     void SetGlyphPos(in GlyphPos thePos);
1626
1627     /*!
1628      * Gets the position of the vector head.
1629      */
1630     GlyphPos GetGlyphPos();
1631   };
1632
1633   //-------------------------------------------------------
1634   /*! \brief %Animation class
1635    *
1636    * This class provides a set of methods used for:<br>
1637    * <ul>
1638    *     <li> generating different animations on the basis of a field,
1639    *     <li> setting the parameters of the animations,
1640    *     <li> playing these animations in the %VISU module.
1641    * </ul>
1642    * \note
1643    * <BR><B>Field</B> represents the results of calculations
1644    * (it can be scalar or vector values), grouped together under one physical concept.
1645    * <BR><B>Time stamp</B> represents a subfield: the results
1646    * of calculations are taken in one definite moment.
1647    */
1648   interface Animation : Base 
1649   {
1650     /*!
1651    * This enumeration contains a set of available animation modes.
1652    */
1653     enum AnimationMode{ PARALLEL, /*!< parallel mode of animation. */
1654                         SUCCESSIVE /*!< succcessive mode of animation. */
1655     };
1656     
1657     /*! Defines the field which will be used as a base for generation of the animation.
1658      * \param theObject The %SObject corresponding to the field.
1659      */
1660     boolean addField(in SALOMEDS::SObject theObject);
1661
1662     /*! Remove all fields from Animation object.
1663      */
1664     void clearFields();
1665
1666     /*! Generates presentations on the basis of the field.
1667      * \param theFieldNum The number of the field, which will be used
1668      *                    as the basis for construction of the presentation.
1669      */
1670     void generatePresentations(in long theFieldNum);
1671
1672     /*! Generates a set of frames from the created by the method
1673      *  <VAR>generatePresentations</VAR>3D presentations. A sequence of
1674      *  these frames will be transformed into an animation.
1675      *  \return  True, if the frames have been successfully generated.
1676      */
1677     boolean generateFrames();
1678
1679     /*! Clears the view before starting an animation.
1680      */
1681     void clearView();
1682
1683     /*! \name Playback of an animation:
1684      */
1685 /*@{*/
1686
1687     /*! Starts an animation.
1688      */
1689     void startAnimation();
1690
1691     /*! Stops an animation.
1692      */
1693     void stopAnimation();
1694
1695     /*! Forwards to the next frame.
1696      */
1697     void nextFrame();
1698
1699     /*! Returns to the previous frame.
1700      */
1701     void prevFrame();
1702
1703     /*! Returns to the first frame of the animation.
1704      */
1705     void firstFrame();
1706
1707     /*! Forwards to the last frame of the animation.
1708      */
1709     void lastFrame();
1710
1711     /*!  Passes to a definite frame of the animation.
1712      * \param theFrame A long value defining the number of the frame.
1713      */
1714     void gotoFrame(in long theFrame);
1715 /*@}*/
1716
1717     /*! Gets the number of time stamps (subfields) contained in the given field.
1718      */
1719     long getNbFields();
1720
1721     /*! Gets the number of generated frames
1722      */
1723     long getNbFrames();
1724
1725     /*! Returns True, if the animation is currently running.
1726      */
1727     boolean isRunning();
1728
1729     /*! Returns the number of the current frame.
1730      */
1731     long getCurrentFrame();
1732
1733     /*!
1734      */
1735     ColoredPrs3d getPresentation(in long theField, in long theFrame);
1736
1737     /*! Sets the type of presentation (vectors, deformed shape etc.)
1738      *  which will be generated by the method <VAR>generatePresentations</VAR>.
1739      *  \note \c addField() method should be called before in order to add field
1740      *  with number theFieldNum.
1741      */
1742     void setPresentationType(in long theFieldNum, in VISUType theType);
1743
1744     /*! Gets the type of presentation (vectors, deformed shape etc.) which will
1745      *  be generated by the method <VAR>generatePresentations</VAR>.
1746      *  \note \c addField() method should be called before in order to add field
1747      *  with number theFieldNum.
1748      */
1749     VISUType getPresentationType(in long theFieldNum);
1750
1751     /*! Sets the speed of the animation.
1752      * \param theSpeed The speed of the animation. The value varies from 1 to 99.
1753      */
1754     void setSpeed(in long theSpeed);
1755
1756     /*!  Gets the speed of the animation.
1757      */
1758     long getSpeed();
1759
1760     /*! Ruturns True, if playback of the animation is proportional.
1761      * This option allows to render your animation with proportional periods
1762      * of time between every frame (not depending on the time stamps).
1763      */
1764     boolean isProportional();
1765
1766     /*! Sets the range of the animation. The range is defined on the basis of
1767      *  the time stamps of the field which have been used for generation of the animation.
1768      *  This method allows to bound the range of generated frames.
1769      *  If this method is not used, the animation will be generated
1770      *  on the basis of all time stamps contained in the field.
1771      *  \param theMin The value of the first time stamp which will be used for generation of the animation.
1772      *  \param theMax The value of the last time stamp which will be used for generation of the animation.
1773      */
1774     void setAnimationRange(in double theMin, in double theMax);
1775
1776     /*! Gets the number of the first time stamp which will be used for generation of the animation.
1777      */
1778     double getMinRange();
1779
1780     /*! Gets the number of the last time stamp which will be used for generation of the animation.
1781      */
1782     double getMaxRange();
1783
1784     /*! Returns True if the range of the animation has been defined
1785      *  by the method <VAR>setAnimationRange</VAR>. Otherwise
1786      *  the animation will be generated on the basis of all time stamps contained in the field.
1787      */
1788     boolean isRangeDefined();
1789
1790     /*! Sets the sequence of the animation. The sequence is defined on the basis of
1791      *  the time stamps of the field which have been used for generation of the animation.
1792      *  This method allows to set the sequence of generated frames.
1793      *  If this method is not used, the animation will be generated
1794      *  on the basis of all time stamps contained in the field.
1795      *  Format of the sequence: '1,9,2-5,7-8'
1796      *  \param theSequence The sequence of time stamps indices which will be used for generation of the animation.
1797      */
1798     void setAnimationSequence(in string theSequence);
1799
1800     /*! Gets the animation sequence.
1801      */
1802     string getAnimationSequence();
1803
1804     /*! Returns True if the sequence of the animation has been defined
1805      *  by the method <VAR>setAnimationSequence</VAR>. Otherwise
1806      *  the animation will be generated on the basis of all time stamps contained in the field.
1807      */
1808     boolean isSequenceDefined();
1809
1810     /*! Saves all the frames composing the animation into a definite directory.
1811      *  Pictures format is set with method <VAR>setDumpFormat()</VAR>.
1812      *  \param thePath The directory where all the frames will be saved.
1813      */
1814     void dumpTo(in string thePath);
1815
1816     /*! Set format for saving all the frames composing the animation.
1817      *  \param theFormat The format for saving pictures.
1818      *                   For available formats see QImageIO documentation (Qt).
1819      *                   If specified format is not available, default format will be used.
1820      *                   Default format is JPEG or first of supported, if JPEG is not available.
1821      *  \return Really set format. Differ from \a theFormat if \a theFormat is not available.
1822      */
1823     string setDumpFormat(in string theFormat);
1824
1825     /*! Returns True, if the playback of the animation is cycling.
1826      */
1827     boolean isCycling();
1828
1829     /*! Gets the first time stamp of the field defined at the input of the animation.
1830      * \note This method is used if animation range is <b>NOT</b> defined.
1831      */
1832     double getMinTime();
1833
1834     /*! Gets the last time stamp of the field defined at the input of the animation.
1835      * \note This method is used if animation range is <b>NOT</b> defined.
1836      */
1837     double getMaxTime();
1838
1839     /*! Sets proprtional playback of the animation. This option allows to render your animation
1840      *  with proportional periods of time between every frame (not depending on the time stamps).
1841      *  \param theProp If this boolean parameter is True, playback
1842      *                 of your animation will be set as proportional.
1843      */
1844     void setProportional(in boolean theProp);
1845
1846     /*! Sets cycling playback of the animation. The number of cycles
1847      *  can be infinite, untill you use <VAR>startAnimation</VAR> method.
1848      *  \param theCycle If this boolean parameter is True, playback
1849      *                  of your animation will be set as cycling.
1850      */
1851     void setCycling(in boolean theCycle);
1852
1853     boolean isCleaningMemoryAtEachFrame();
1854     void setCleaningMemoryAtEachFrame(in boolean theCycle);
1855
1856     SALOMEDS::SObject publishInStudy();
1857
1858     void saveAnimation();
1859
1860     void restoreFromStudy(in SALOMEDS::SObject theSObj);
1861
1862     boolean isSavedInStudy();
1863     
1864     /*!
1865      * Sets the animation mode.
1866      * \param theMode The value of this parameter is taken from the <VAR>AnimationMode</VAR> enumeration.
1867      */
1868     void setAnimationMode(in AnimationMode theMode);
1869
1870     /*!
1871      * Gets the animation mode.
1872      */
1873     AnimationMode getAnimationMode();
1874
1875     /*!
1876      * Apply the presentation properties to all fields. The exception is raised in the following cases:
1877      * 1) presentations for the given field is not yet created;
1878      * 2) invalid dynamic cast of the given presentation to VISU::ColoredPrs3d_i;
1879      * 3) the MED file is not the same;
1880      * 4) the mesh name is not the same;
1881      * 5) the field name is not the same;
1882      * 6) the entity is not the same.
1883      */
1884     void ApplyProperties(in long theFieldNum, in ColoredPrs3d thePrs)
1885       raises (SALOME::SALOME_Exception);
1886   };
1887
1888   
1889   /*! \brief Interface %Result
1890    *
1891    * This interface serves for inner representation of data generated
1892    * in other sources (MED object or file). This data is needed
1893    * for further construction of graphical presentations.
1894    */
1895   interface Result : RemovableObject, SALOME::GenericObj 
1896   {
1897     /*! Reads all data from the corresponding sources. By default the data is loaded on demand.
1898      */
1899     boolean BuildAll();
1900
1901     /*! Start to parse the source MED file and publish all its entities into the study*/
1902     boolean Build(in boolean theIsBuildAll, in boolean theIsAtOnce);
1903
1904     /*! Allow to check is all requested MED entites already loaded or not */
1905     boolean IsDone();
1906
1907     /*! Allow to check is corresponding MED entites already loaded or not */
1908     boolean IsEntitiesDone();
1909
1910     /*! Choose to parse MED fields and perform global min / max on the MED timestamps.*/
1911     void SetBuildFields(in boolean theIsBuildFields, in boolean theIsCalculateMinMax);
1912
1913     /*! Allow to check is corresponding MED fields already loaded or not */
1914     boolean IsFieldsDone();
1915
1916     /*! Choose to parse MED groups.*/
1917     void SetBuildGroups(in boolean theIsBuildGroups);
1918
1919     /*! Allow to check is corresponding MED groups and families already loaded or not */
1920     boolean IsGroupsDone();
1921
1922     /*! Allow to check is min / max calculation over field's components already perfrormed or not */
1923     boolean IsMinMaxDone();
1924
1925     /*! Allow to check is corresponding multi resolution structure already loaded or not */
1926     boolean IsPartsDone();
1927
1928     typedef sequence<Entity> Entities;
1929
1930     typedef string EntityName;
1931
1932     typedef sequence<EntityName> EntityNames;
1933
1934     typedef long TimeStampNumber;
1935
1936     typedef sequence<TimeStampNumber> TimeStampNumbers;
1937
1938     enum Resolution {
1939       FULL,
1940       MEDIUM,
1941       LOW,
1942       HIDDEN
1943     };
1944
1945     typedef sequence<Resolution> Resolutions;
1946
1947     /*! Gets existing mesh names */
1948     EntityNames GetMeshNames();
1949
1950     /*! Gets existing mesh entites for the given mesh name */
1951     Entities GetEntities(in EntityName theMeshName);
1952
1953     /*! Gets existing families for the given mesh name and entity */
1954     EntityNames GetFamilies(in EntityName theMeshName, in Entity theEntity);
1955
1956     /*! Gets existing families for the given mesh name */
1957     EntityNames GetGroups(in EntityName theMeshName);
1958
1959     /*! Gets existing fields for the given mesh name and entity */
1960     EntityNames GetFields(in EntityName theMeshName, in Entity theEntity);
1961
1962     /*! Gets number of components for the given mesh name, entity and name of field */
1963     long GetNumberOfComponents(in EntityName theMeshName, in Entity theEntity, in EntityName theFieldName);
1964
1965     /*! Gets existing numbers of time stamps for the given mesh name, entity and name of field */
1966     TimeStampNumbers GetTimeStampNumbers(in EntityName theMeshName, in Entity theEntity, in EntityName theFieldName);
1967
1968     /*! Gets existing parts of multi resolution structure for the given mesh name */
1969     EntityNames GetPartNames(in EntityName theMeshName);
1970
1971     /*! Gets available resolutions of multi resolution structure for the given mesh and part names */
1972     Resolutions GetResolutions(in EntityName theMeshName, in EntityName thePartName);
1973
1974     /*! Gets current resolution of multi resolution structure for the given mesh and part names */
1975     Resolution GetResolution(in EntityName theMeshName, in EntityName thePartName);
1976
1977     /*! Gets current resolution of multi resolution structure for the given mesh and part names */
1978     void SetResolution(in EntityName theMeshName, in EntityName thePartName, in Resolution theResolution);
1979     
1980     /*! Gets information about imported MED file */
1981     SALOME_MED::MedFileInfo GetMEDFileInfo();
1982
1983     /*! Export MED file from temp object.  */
1984     boolean ExportMED(in string theFileName);
1985   };
1986
1987   //-------------------------------------------------------
1988   interface ViewManager;
1989
1990   /*! \brief %VISU_Gen interface
1991    *
1992    * This is the main interface of %VISU component. It is necessary for creation of
1993    * post-processing presentations from given %Result and %Table object reference,
1994    * using the views provided by %ViewManager.
1995    */
1996   interface VISU_Gen : Engines::Component, SALOMEDS::Driver, Base 
1997   {
1998     /*! Sets a definite study to be current.
1999      */
2000     void SetCurrentStudy(in SALOMEDS::Study theStudy);
2001
2002     /*! Gets the current study.
2003      */
2004     SALOMEDS::Study GetCurrentStudy();
2005
2006     /*!
2007      * Gets the %View Manager which is used for creation of
2008      * post-processing presentations.
2009      */
2010     ViewManager GetViewManager();
2011
2012     /*!
2013      * Imports tables from a file and create TableAttribute in Sudy
2014      */
2015     SALOMEDS::SObject ImportTables(in string theFileName);
2016
2017     /*!
2018      * Export table to a file
2019      */
2020     boolean ExportTableToFile(in SALOMEDS::SObject theTable, in string theFileName);
2021
2022     /*!
2023      * Imports data from a file. The access to this file will be conserved outside of the application.
2024      * \param theFileName String parameter defining the name of the file
2025      *                    from which the data will be imported.
2026      */
2027     Result ImportFile(in string theFileName);
2028
2029     /*!
2030      * Create result and initialize its with the file. The access to this file will be conserved outside of the application.
2031      * \param theFileName String parameter defining the name of the file
2032      *                    from which the data will be imported.
2033      */
2034     Result CreateResult(in string theFileName);
2035
2036     /*!
2037      * Imports data from a file. The access to this file will closed.
2038      * \param theFileName String parameter defining the name of the file
2039      *                    from which the data will be imported.
2040      */
2041     Result CopyAndImportFile(in string theFileName);
2042
2043     /*!
2044      * Imports data from a %MED object.
2045      */
2046     Result ImportMed(in SALOMEDS::SObject theMedSObject);
2047
2048     /*!
2049      * Imports data from a %MED field.
2050      */
2051     Result ImportMedField(in SALOME_MED::FIELD theField);
2052
2053     /*!
2054      * Rename a study object, representing a mesh, specified by given values.
2055      * \param theResult   Data generated in other sources (MED object or file).
2056      * \param theMeshName One of the meshes presented in MED file.
2057      * \param theEntity   Type of entity where the field is defined.
2058      * \param theSubMeshName Name of sub-mesh (group or family).
2059      * \param theNewName  Name to be given to the study object.
2060      */
2061     void RenameEntityInStudy(in Result theResult,
2062                              in string theMeshName,
2063                              in Entity theEntity,
2064                              in string theNewName);
2065     void RenameFamilyInStudy(in Result theResult,
2066                              in string theMeshName,
2067                              in Entity theEntity,
2068                              in string theSubMeshName,
2069                              in string theNewName);
2070     void RenameGroupInStudy(in Result theResult,
2071                             in string theMeshName,
2072                             in string theSubMeshName,
2073                             in string theNewName);
2074
2075     /*!
2076      * Creates a mesh on the basis of the data generated in other sources (MED object or file).
2077      * \param theResult   Data generated in other sources. (MED object or file)
2078      * \param theMeshName  One of the meshes presented in MED file
2079      * \param theEntity Type of entity where the field is defined
2080      */
2081     Mesh MeshOnEntity(in Result theResult, in string theMeshName, in Entity theEntity);
2082
2083     /*!
2084      * Creates on the basis of a family a mesh  which will be composed of geometrical
2085      * elements, corresponding to the type of cells (node, edge, face or cell) of this family.
2086      * \param theResult   Data generated in other sources. (MED object or file)
2087      * \param theMeshName  One of the meshes presented in MED file
2088      * \param theEntity Type of entity where the field is defined.
2089      */
2090     Mesh FamilyMeshOnEntity(in Result theResult, in string theMeshName,
2091                             in Entity theEntity, in string theFamilyName);
2092
2093     /*!
2094      * Creates a mesh on the basis of a group of families.
2095      * \param theResult   Data generated in other sources. (MED object or file)
2096      * \param theMeshName  One of the meshes presented in MED file
2097      * \param theGroupName Name of the group.
2098      */
2099     Mesh GroupMesh(in Result theResult, in string theMeshName, in string theGroupName);
2100
2101     /*!
2102      * Creates a scalar map presentation.
2103      * \param theResult    Data generated in other sources. (MED object or file)
2104      * \param theMeshName  One of the meshes presented in MED file
2105      * \param theEntity    Type of entity where the field is defined
2106      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2107      * \param theTimeStampNumber Number of iteration on the field
2108      */
2109     ScalarMap ScalarMapOnField(in Result theResult, in string theMeshName,
2110                                in Entity theEntity, in string theFieldName,
2111                                in long theTimeStampNumber);
2112
2113     /*!
2114      * Creates a Gauss Points presentation.
2115      * \param theResult    Data generated in other sources. (MED object or file)
2116      * \param theMeshName  One of the meshes presented in MED file
2117      * \param theEntity    Type of entity where the field is defined
2118      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2119      * \param theTimeStampNumber Number of iteration on the field
2120      */
2121     GaussPoints GaussPointsOnField(in Result theResult, in string theMeshName,
2122                                    in Entity theEntity, in string theFieldName,
2123                                    in long theTimeStampNumber);
2124
2125     /*!
2126      * Creates a deformed shape presentation.
2127      * \param theResult    Data generated in other sources. (MED object or file)
2128      * \param theMeshName  One of the meshes presented in MED file
2129      * \param theEntity    Type of entity where the field is defined
2130      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2131      * \param theTimeStampNumber Number of iteration on the field
2132      */
2133     DeformedShape DeformedShapeOnField(in Result theResult, in string theMeshName,
2134                                        in Entity theEntity, in string theFieldName,
2135                                        in long theTimeStampNumber);
2136
2137     /*!
2138      * Creates a deformed shape presentation. This function is obsolete. Use DeformedShapeAndScalarMapOnField instead.
2139      * \param theResult    Data generated in other sources. (MED object or file)
2140      * \param theMeshName  One of the meshes presented in MED file
2141      * \param theEntity    Type of entity where the field is defined
2142      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2143      * \param theTimeStampNumber Number of iteration on the field
2144      */
2145     DeformedShapeAndScalarMap ScalarMapOnDeformedShapeOnField(in Result theResult, in string theMeshName,
2146                                                               in Entity theEntity, in string theFieldName,
2147                                                               in long theTimeStampNumber);
2148
2149     /*!
2150      * Creates a deformed shape presentation.
2151      * \param theResult    Data generated in other sources. (MED object or file)
2152      * \param theMeshName  One of the meshes presented in MED file
2153      * \param theEntity    Type of entity where the field is defined
2154      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2155      * \param theTimeStampNumber Number of iteration on the field
2156      */
2157     DeformedShapeAndScalarMap DeformedShapeAndScalarMapOnField(in Result theResult, in string theMeshName,
2158                                                                in Entity theEntity, in string theFieldName,
2159                                                                in long theTimeStampNumber);
2160
2161     /*!
2162      * Creates a vector presentation.
2163      * \param theResult    Data generated in other sources. (MED object or file)
2164      * \param theMeshName  One of the meshes presented in MED file
2165      * \param theEntity    Type of entity where the field is defined
2166      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2167      * \param theTimeStampNumber Number of iteration on the field
2168      */
2169     Vectors VectorsOnField(in Result theResult, in string theMeshName,
2170                            in Entity theEntity, in string theFieldName,
2171                            in long theTimeStampNumber);
2172
2173     /*!
2174      * Creates an iso surface presentation.
2175      * \param theResult    Data generated in other sources. (MED object or file)
2176      * \param theMeshName  One of the meshes presented in MED file
2177      * \param theEntity    Type of entity where the field is defined
2178      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2179      * \param theTimeStampNumber Number of iteration on the field
2180      */
2181     IsoSurfaces IsoSurfacesOnField(in Result theResult, in string theMeshName,
2182                                    in Entity theEntity, in string theFieldName,
2183                                    in long theTimeStampNumber);
2184
2185     /*!
2186      * Creates an stream lines presentation.
2187      * \param theResult    Data generated in other sources. (MED object or file)
2188      * \param theMeshName  One of the meshes presented in MED file
2189      * \param theEntity    Type of entity where the field is defined
2190      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2191      * \param theTimeStampNumber Number of iteration on the field
2192      */
2193     StreamLines StreamLinesOnField(in Result theResult, in string theMeshName,
2194                                    in Entity theEntity, in string theFieldName,
2195                                    in long theTimeStampNumber);
2196
2197     /*!
2198      * Creates a presentation of cut planes.
2199      * \param theResult    Data generated in other sources. (MED object or file)
2200      * \param theMeshName  One of the meshes presented in MED file
2201      * \param theEntity    Type of entity where the field is defined
2202      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2203      * \param theTimeStampNumber Number of iteration on the field
2204      */
2205     CutPlanes CutPlanesOnField(in Result theResult, in string theMeshName,
2206                                in Entity theEntity, in string theFieldName,
2207                                in long theTimeStampNumber);
2208
2209     /*!
2210      * Creates a presentation of cut lines.
2211      * \param theResult    Data generated in other sources. (MED object or file)
2212      * \param theMeshName  One of the meshes presented in MED file
2213      * \param theEntity    Type of entity where the field is defined
2214      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2215      * \param theTimeStampNumber Number of iteration on the field
2216      */
2217     CutLines CutLinesOnField(in Result theResult, in string theMeshName,
2218                              in Entity theEntity, in string theFieldName,
2219                              in long theTimeStampNumber);
2220
2221     /*!
2222      * Creates a Plot3D presentation.
2223      * \param theResult    Data generated in other sources. (MED object or file)
2224      * \param theMeshName  One of the meshes presented in MED file
2225      * \param theEntity    Type of entity where the field is defined
2226      * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
2227      * \param theTimeStampNumber Number of iteration on the field
2228      */
2229     Plot3D Plot3DOnField(in Result theResult, in string theMeshName,
2230                          in Entity theEntity, in string theFieldName,
2231                          in long theTimeStampNumber);
2232
2233     /*!
2234      * Creates a table presentation.
2235      * \param theTableEntry The entry of the table which will be displayed.
2236      */
2237     Table CreateTable(in string theTableEntry);
2238
2239     /*!
2240      * Creates a curve on the basis of points, whose values are taken from the table.
2241      * \param theTable  Table containing the data for construction of curves.
2242      * \param HRow  Index of the row in the table:  abscissa of the point.
2243      * \param VRow  Index of the row in the table:  ordinate of the point.
2244      */
2245     Curve CreateCurve(in Table theTable, in long theHRow, in long theVRow);
2246     
2247     /*!
2248      * Creates a curve on the basis of points, whose values are taken from the table.
2249      * Each point has also assigned value, that will be shown as tooltip in Plot2d 
2250      * \param theTable  Table containing the data for construction of curves.
2251      * \param HRow  Index of the row in the table:  abscissa of the point.
2252      * \param VRow  Index of the row in the table:  ordinate of the point.
2253      * \param ZRow  Index of the row in the table:  assigned value (so-called as Z).
2254      */    
2255     Curve CreateCurveWithZ( in Table theTable, in long theHRow, in long theVRow, in long theZRow );
2256
2257     /*!
2258      * Creates a presentation form containing an array of references to the curves.
2259      */
2260     Container CreateContainer();
2261
2262     /*! Creates an animation in the 3D view.
2263      * \param theView3d The 3D view, where the animation will be rendered.
2264      */
2265     Animation CreateAnimation(in View3D theView3d);
2266
2267     void DeleteResult(in Result theResult);
2268
2269     void DeletePrs3d(in Prs3d thePrs3d);
2270
2271     /*!
2272      * Get or create %ColoredPrs3dCache object.
2273      */
2274     ColoredPrs3dCache GetColoredPrs3dCache(in SALOMEDS::Study theStudy);
2275
2276     
2277     /* Clipping planes management */
2278
2279     /*Create a clipping plane and return its ID (position in corresponded array) 
2280       Id of clipping plane could be changed after deletion of other clipping plane
2281     */
2282     long CreateClippingPlane(in double X, in double Y, in double Z, 
2283                              in double dX, in double dY, in double dZ, 
2284                              in boolean auto, in string name);
2285     
2286     void EditClippingPlane(in long id, in double X, in double Y, in double Z, 
2287                              in double dX, in double dY, in double dZ, 
2288                              in boolean auto, in string name);
2289     
2290     /* Returns clipping plane by its Id */
2291     ClippingPlane GetClippingPlane(in long id);
2292     
2293     /* Deletes clipping plane by its Id */
2294     boolean DeleteClippingPlane(in long id);
2295     
2296     /* Applyes a clipping plane with Id to presentation thePrs */
2297     boolean ApplyClippingPlane(in Prs3d thePrs, in long id);
2298
2299     /* Detaches a clipping plane with Id from presentation thePrs */
2300     boolean DetachClippingPlane(in Prs3d thePrs, in long id);
2301     
2302     
2303     /* Get number of clipping planes */
2304     long GetClippingPlanesNb();
2305
2306     /*! Converts set of VTK files to the one MED-file
2307      * \param theVTKFiles sequence of VTK files
2308      * \param out MED-file
2309      * \param theMeshName mesh name. This parameter can be empty. In this case name
2310               of mesh is equal vtk2med
2311      * \param theTSNames values of time stamps. This array can be empty, in
2312               this case values of time stamps will be generated automatically ( 0, 1, 2 ... )
2313      * \return TRUE if operation has been completed successfully, FALSE otherwise
2314      */
2315     boolean VTK2MED( in string_array theVTKFiles,
2316                      in string theMEDFile,
2317                      in string theMeshName,
2318                      in double_array theTStamps );
2319
2320   };
2321
2322   /*! \brief %View interface
2323    *
2324    * Contains a set of methods used by the %View frame, which can be one of
2325    * the following types: 3d, Table, XY plot.
2326    * %View interface is a base for all types of %view interfaces.
2327    */
2328   interface View: Base, SALOME::GenericObj 
2329   {
2330     /*! \brief %ViewRepresentation enumeration
2331      *
2332      * displaying part ("ALL" isn't setable)
2333      */
2334     enum ViewRepresentation {
2335       OBJECTBROWSER,
2336       VIEWER,
2337       PYTHON,
2338       MESSAGES
2339     };
2340
2341     void ShowPart (in ViewRepresentation ViewRepr, in boolean state );
2342
2343     boolean IsPartShown( in ViewRepresentation ViewRepr );
2344
2345     /*!
2346      *  New methods for view parameters management.
2347      */
2348
2349     /*! \brief Split workarea of this view.
2350      *
2351      *  Horizontally split workarea of this view.
2352      *  This view is moved in a new right area.
2353      */
2354     void SplitRight();
2355
2356     /*! \brief Split workarea of this view.
2357      *
2358      *  Horizontally split workarea of this view.
2359      *  This view stays in an old left area, others are moved in a new right area.
2360      */
2361     void SplitLeft();
2362
2363     /*! \brief Split workarea of this view.
2364      *
2365      *  Vertically split workarea of this view.
2366      *  This view is moved in a new bottom area.
2367      */
2368     void SplitBottom();
2369
2370     /*! \brief Split workarea of this view.
2371      *
2372      *  Vertically split workarea of this view.
2373      *  This view stays in an old top area, others are moved in a new bottom area.
2374      */
2375     void SplitTop();
2376
2377     /*!
2378      *  Put this view window on top of its work area.
2379      */
2380     void OnTop();
2381
2382     /*!
2383      *  Put \a theView in workarea of this view right after it.
2384      *  If \a theView was alone in its workarea, workarea of \a theView will be destroyed.
2385      *  If \a theView was in the same workarea with this view, simple reordering will take place.
2386      *  \param theView A view window to be attracted to this one.
2387      */
2388     void Attract (in View theView);
2389
2390     /*!
2391      *  Put all the view windows from workarea of \a theView in workarea of this view right after it.
2392      *  Workarea of \a theView will be destroyed.
2393      *  If \a theView was in the same workarea with this view, simple reordering will take place.
2394      *  \param theView A view window to be attracted to this one together with all its workarea.
2395      */
2396     void AttractAll (in View theView);
2397
2398     /*!
2399      *  Set position of this view window relatively its splitter.
2400      *  \param thePosition Desired position of this view window relatively
2401      *         its splitter. Meaningfull values lays in range [0..1].
2402      *
2403      *  Direction of positioning is defined by the splitter orientation.
2404      */
2405     void SetRelativePositionInSplitter (in double thePosition);
2406
2407     /*!
2408      *  Set size of this view window relatively its splitter.
2409      *  \param theSize Desired size of this view window relatively
2410      *         its splitter. Meaningfull values lays in range [0..1].
2411      *
2412      *  Direction of resizing is defined by the splitter orientation.
2413      */
2414     void SetRelativeSizeInSplitter (in double theSize);
2415
2416     /*!
2417      *  Set horizontal position of this view window relatively its workstack.
2418      *  \param thePosition Desired horizontal position of this view window
2419      *         relatively its workstack. Meaningfull values lays in range [0..1].
2420      */
2421     void SetRelativePositionX (in double thePosition);
2422
2423     /*!
2424      *  Set vertical position of this view window relatively its workstack.
2425      *  \param thePosition Desired vertical position of this view window
2426      *         relatively its workstack. Meaningfull values lays in range [0..1].
2427      */
2428     void SetRelativePositionY (in double thePosition);
2429
2430     /*!
2431      *  Set horizontal size of this view window relatively its workstack.
2432      *  \param theSize Desired horizontal size of this view window relatively
2433      *         its workstack. Meaningfull values lays in range [0..1].
2434      */
2435     void SetRelativeSizeX (in double theSize);
2436
2437     /*!
2438      *  Set vertical size of this view window relatively its workstack.
2439      *  \param theSize Desired vertical size of this view window relatively
2440      *         its workstack. Meaningfull values lays in range [0..1].
2441      */
2442     void SetRelativeSizeY (in double theSize);
2443
2444     /*!
2445      *  Old methods for view parameters management, they don't work now
2446      */
2447     void SetViewWidth (in long Width); //setting width of view
2448     void SetViewHeight (in long Height); //setting height of view
2449     long GetViewWidth(); //getting view width
2450     long GetViewHeight(); //getting view height
2451     enum ViewPosition {TOP, CENTER, BOTTOM, RIGHT, LEFT}; //position of the study frame
2452     void SetViewPositionHorizontal (in ViewPosition ViewPosHor); //setting of the horizontal view position
2453     void SetViewPositionVertical (in ViewPosition ViewPosVer); //setting of the vertical view position
2454     void SetRelativePosition( in double x, in double y );
2455     void SetRelativeSize( in double x, in double y );
2456     void Minimize(); // Minimizes to the task bar or to the bottom of the Desktop the %View frame.
2457     void Restore(); // Restores the %View frame.
2458     void Maximize(); // Maximizes the %View frame.
2459
2460     /*!
2461      * Sets the title of the %View frame.
2462      * \param theTitle String parameter defining the title of the %View frame.
2463      */
2464     void SetTitle(in string theTitle);
2465
2466     /*!
2467      * Gets the title of the %View frame.
2468      */
2469     string GetTitle();
2470
2471     /*!
2472      * Sets background color of the %View frame.
2473      * \param theColor Background color defined in <VAR>SALOMEDS::Color</VAR> enumeration.
2474      */
2475     void SetBackground(in SALOMEDS::Color theColor);
2476
2477     /*!
2478      * Gets background color of the %View frame.
2479      */
2480     SALOMEDS::Color GetBackground();
2481
2482     /*!
2483      * Removes all presentations (presentable objects) from the %view.
2484      */
2485     void EraseAll();
2486
2487     /*!
2488      * Displays all presentations (presentable objects) in the %view.
2489      */
2490     void DisplayAll();
2491
2492     /*!
2493      * Removes a definite presentation (presentable object) from the %view.
2494      * \param thePrsObj The presentation (presentable object) which should be deleted.
2495      */
2496     void Erase(in PrsObject thePrsObj);
2497
2498     /*!
2499      * Displays a definite presentation (presentable object) in the %view.
2500      * \param thePrsObj The presentation (presentable object) which should be displayed.
2501      */
2502     void Display(in PrsObject thePrsObj);
2503
2504     /*!
2505      * Allows to display only a definite presentation (presentable object) in the %view.
2506      * All other presentations are removed from the %view.
2507      * \param thePrsObj The presentation (presentable object) which should be displayed.
2508      */
2509     void DisplayOnly(in PrsObject thePrsObj);
2510
2511     /*!
2512      * Updates the view.
2513      */
2514     void Update();
2515
2516     /*!
2517      * Saves the view.
2518      * \param theFileName The name of the file where the view will be saved.
2519      * \return True, if the view have been saved successfully.
2520      */
2521     boolean SavePicture(in string theFileName);
2522   };
2523
2524   //-------------------------------------------------------
2525   /*! \brief 3D view interface
2526    *
2527    *  This interface contains a set of methods necessary for representation of objects in 3D space.
2528    */
2529   interface View3D : View {
2530     /*!
2531      * This enumeration contains a set of elements determining a predefined point of view
2532      *  (position of the camera in 3D space relative to the presentable object).
2533      */
2534     enum ViewType{ FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM};
2535
2536     /*!
2537      * This enumeration contains a set of elements determining the axis
2538      */
2539     enum Axis{ XAxis, YAxis, ZAxis};
2540
2541     /*!
2542      * Data type defining coordinates in 3D space.
2543      */
2544     typedef double XYZ[3];
2545
2546     /*!
2547      * Makes all presentations, which are currently present in the %view, completely visible.
2548      */
2549     void FitAll();
2550
2551     /*!
2552      * Sets a predefined point of view (FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM). (In other words it means
2553      * a predefined position of the camera in 3D space with respect to the object which is represented.)
2554      */
2555     void SetView(in ViewType theType);
2556
2557     /*!
2558      * Sets the position of the camera in 3D space.
2559      * This point is used as the first point of the vector
2560      * defining the view direction of the camera.
2561      */
2562     void SetPointOfView(in XYZ theCoord);
2563
2564     /*!
2565      * Gets the position of the camera in 3D space.
2566      * This point is used as the first point of the vector
2567      * defining the view direction of the camera.
2568      */
2569     XYZ GetPointOfView();
2570
2571     /*!
2572      * Sets the vertical line of the camera in 3D space.
2573      */
2574     void SetViewUp(in XYZ theDir);
2575
2576     /*!
2577      * Gets the vertical line of the camera in 3D space.
2578      */
2579     XYZ GetViewUp();
2580
2581     /*!
2582      * Sets the point of sight of the camera. This point is used as the
2583      * second point of the vector defining the view direction of the camera.
2584      */
2585     void SetFocalPoint(in XYZ theDir);
2586
2587     /*!
2588      * Gets the point of sight of the camera. This point is used as the
2589      * second point of the vector defining the view direction of the camera.
2590      */
2591     XYZ GetFocalPoint();
2592
2593     /*!
2594      * Zooming of the presentable object. Sets the scale.
2595      */
2596     void SetParallelScale(in double theScale);
2597
2598     /*!
2599      * Zooming of the presentable object. Gets the scale.
2600      */
2601     double GetParallelScale();
2602
2603     /*!
2604      * Scaling of the view along a definite axis.
2605      * \param theAxis The axis of the scaling
2606      * \param theParam The coefficient of the scaling
2607      */
2608     void ScaleView(in Axis theAxis, in double theParam);
2609
2610     /*!
2611      * Removes the scaling of the view.
2612      */
2613     void RemoveScale();
2614
2615     /*!
2616      * Saves view parameters.
2617      * \return True if the view parameters have been created, False if the parameters have been modified.
2618      * \param theName The name under which the view parameters will be saved.
2619      */
2620     boolean SaveViewParams(in string theName);
2621
2622     /*! Restores view parameters.
2623      * \return True if the view parameters have been found and applied to the view,
2624      * False if the parameters with this name don't exist.
2625      * \param theName The name of the view parameters which will be restored.
2626      */
2627     boolean RestoreViewParams(in string theName);
2628
2629
2630     /*! Get representation type of the given presentation in this view.
2631      *  \param thePrs Object to get a representation type of.
2632      *  \return <VAR>PresentationType</VAR> Representation type of object in this view.
2633      */
2634     PresentationType GetPresentationType(in ScalarMap thePrs);
2635
2636     /*! Set representation type of the given presentation in this view.
2637      *  \param thePrs Object to set a representation type of.
2638      *  \param thePrsType Representation type to be set to the given object.
2639      *  \return Empty string in case of success, error description in case of failure.
2640      */
2641     string SetPresentationType(in ScalarMap thePrs, in PresentationType thePrsType);
2642
2643     /*! Get shrink state of the given presentation in this view.
2644      *  \param thePrs Object to get a shrink state of.
2645      *  \return TRUE if \a thePrs is shrinked in this view, FALSE overwise.
2646      */
2647     boolean IsShrinked(in ScalarMap thePrs);
2648
2649     /*! Make the given presentation shrinked or not shrinked in this view.
2650      *  \param thePrs Object to change a shrink state of.
2651      *  \param isShrinked Pass TRUE to make \a thePrs shrinked, FALSE overwise.
2652      *  \return Empty string in case of success, error description in case of failure.
2653      */
2654     string SetShrinked(in ScalarMap thePrs, in boolean isShrinked);
2655
2656     /*! Get shading state of the given presentation in this view.
2657      *  \param thePrs Object to get a shading state of.
2658      *  \return TRUE if \a thePrs is shaded in this view, FALSE overwise.
2659      */
2660     boolean IsShaded(in ScalarMap thePrs);
2661
2662     /*! Make the given presentation shaded or not shaded in this view.
2663      *  \param thePrs Object to set a shading state of.
2664      *  \param isShaded Pass TRUE to make \a thePrs shaded, FALSE overwise.
2665      *  \return Empty string in case of success, error description in case of failure.
2666      */
2667     string SetShaded(in ScalarMap thePrs, in boolean isShaded);
2668
2669     /*! Get opacity of the given presentation in this view.
2670      *  \param thePrs Object to get an opacity of.
2671      *  \return Opacity value in range [0, 1], 0 - transparent, 1 - opaque.
2672      */
2673     double GetOpacity(in ScalarMap thePrs);
2674
2675     /*! Set opacity of the given presentation in this view.
2676      *  \param thePrs Object to set an opacity of.
2677      *  \param theOpacity Opacity value [0, 1]. 0 - transparent, 1 - opaque.
2678      *  \return Empty string in case of success, error description in case of failure.
2679      */
2680     string SetOpacity(in ScalarMap thePrs, in double theOpacity);
2681
2682     /*! Get line width of the given presentation in this view.
2683      *  \param thePrs Object to get a line width of.
2684      *  \return Line width of \a thePrs in this view.
2685      */
2686     double GetLineWidth(in ScalarMap thePrs);
2687
2688     /*! Set line width of the given presentation in this view.
2689      *  \param thePrs Object to set a line width of.
2690      *  \param theLineWidth Line width value. Recommended values are in range [1, 10].
2691      *  \return Empty string in case of success, error description in case of failure.
2692      */
2693     string SetLineWidth(in ScalarMap thePrs, in double theLineWidth);
2694   };
2695
2696   //-------------------------------------------------------
2697   /*! \brief Interface of the Table view
2698    *
2699    * This interface is used for creation of a view necessary for presentation of a table.
2700    */
2701   interface TableView : View {
2702   };
2703
2704   //-------------------------------------------------------
2705   /*! \brief Interface of the 2D plot view
2706    *
2707    * This interface is used for creation of a view necessary for presentation
2708    * of a XY plot generated on the basis of one or several curve lines.
2709    */
2710   interface XYPlot : View {
2711     /*! Sets the title of the XY plot
2712      * \param theTitle  The title of the XY plot
2713      */
2714     void SetSubTitle(in string theTitle);
2715
2716     /*! Gets the title of the XY plot
2717      */
2718     string GetSubTitle();
2719
2720     /*!
2721      * This enumeration contains a set of elements determining the type
2722      * of the curve lines, which will be displayed in your XY plot.
2723      */
2724     enum CurveType { POINTS, MULTYLINE, SPLINE};
2725
2726     /*! Sets the type of the curve lines.
2727      * \param theType The type of the curve lines taken from <VAR>CurveType</VAR> enumeration.
2728      */
2729     void SetCurveType(in CurveType theType);
2730
2731     /*! Gets the type of the curve lines.
2732      */
2733     CurveType GetCurveType();
2734
2735     /*! Sets the size of the markers (data points) with help of
2736      * which the curve is constructed on the graphics.
2737      * \param theSize Long value defining the size of the markers.
2738      */
2739     void SetMarkerSize(in long theSize);
2740
2741     /*! Gets the size of the markers (data points) with help of
2742      * which the curve is constructed on the graphics.
2743      */
2744     long GetMarkerSize();
2745
2746     /*! Enable/disables X-axis grid of the 2D plot.
2747      */
2748     void EnableXGrid(in boolean theMajor, in long theNumMajor, in boolean theMinor, in long theNumMinor);
2749
2750     /*! Enable/disables Y-axis grid of the 2D plot.
2751      */
2752     void EnableYGrid(in boolean theMajor, in long theNumMajor, in boolean theMinor, in long theNumMinor);
2753
2754     /*! Sets horizontal scaling of the 2D plot.
2755      * \param theScaling Type of scaling taken from <VAR>Scaling</VAR> enumeration.
2756      */
2757     void SetHorScaling(in Scaling theScaling);
2758
2759     /*! Gets the type horizontal scaling of the 2D plot.
2760      */
2761     Scaling GetHorScaling();
2762
2763     /*! Sets vertical scaling of the 2D plot.
2764      * \param theScaling Type of scaling taken from <VAR>Scaling</VAR> enumeration.
2765      */
2766     void SetVerScaling(in Scaling theScaling);
2767
2768     /*! Gets the type vertical scaling of the 2D plot.
2769      */
2770     Scaling GetVerScaling();
2771
2772     /*! Sets the title of the X-axis of the plot.
2773      * \param theTitle String value defining the title of the X-axis of the plot.
2774      */
2775     void SetXTitle(in string theTitle);
2776
2777     /*! Gets the title of the X-axis of the plot.
2778      */
2779     string GetXTitle();
2780
2781     /*! Sets the title of the Y-axis of the plot.
2782      * \param theTitle String value defining the title of the X-axis of the plot.
2783      */
2784     void SetYTitle(in string theTitle);
2785
2786     /*! Gets the title of the Y-axis of the plot.
2787      */
2788     string GetYTitle();
2789
2790     /*! Shows/hides the legend (description) of the 2D plot.
2791      */
2792     void ShowLegend(in boolean theShowing);
2793
2794     /*! Shrinks and enlarges the 2D plot to fit the 2D viewer.
2795      */
2796     void FitAll();
2797
2798     /*! Set range of the 2D plot to X axis of the 2D viewer.
2799      */
2800     void FitXRange(in double xMin, in double xMax);
2801
2802     /*! Set range of the 2D plot to Y axis of the 2D viewer.
2803      */
2804     void FitYRange(in double yMin, in double yMax);
2805
2806     /*! Set range of the 2D plot to XY axis of the 2D viewer.
2807      */
2808     void FitRange(in double xMin, in double xMax,
2809                   in double yMin, in double yMax);
2810
2811     void GetFitRanges(out double xMin,out double xMax,
2812                       out double yMin,out double yMax);
2813   };
2814
2815   //-------------------------------------------------------
2816   /*! \brief Interface of the %ViewManager
2817    *
2818    * The ViewManager is necessary for work with view windows (creation and deletion).
2819    */
2820   interface ViewManager: Base {
2821     /*! \brief Getting an active %View Frame
2822      *
2823      * Returns an object reference to the active %View Frame.
2824      * Type of the %View must be checked.
2825      * \note <BR>Returns nil if there are no views currently opened.
2826      */
2827     View GetCurrentView();
2828
2829     /*! \brief Creation of a 3d %View.
2830      *
2831      * Returns an object reference to the newly created 3D %View.
2832      */
2833     View3D Create3DView();
2834
2835     /*! \brief Creation of a Table %View.
2836      *
2837      * Returns an object reference to the newly created Table %View.
2838      */
2839     TableView CreateTableView(in Table theTable);
2840
2841     /*! \brief Creation of a 2D plot %View.
2842      *
2843      * Returns an object reference to the newly created 2D plot %View.
2844      */
2845     XYPlot CreateXYPlot();
2846
2847     /*! Deletes a definite view.
2848      * \param theView The view which should be deleted.
2849      */
2850     void Destroy(in View theView);
2851   };
2852
2853
2854 };
2855
2856 #endif