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