Salome HOME
This commit was generated by cvs2git to track changes on a CVS vendor
[modules/visu.git] / idl / VISU_Gen.idl
1 //  Copyright (C) 2003  CEA/DEN, EDF R&D
2 //
3 //
4 //
5 //  File   : VISU_Gen.idl
6 //  Author : Alexey Petrov
7
8 /*! \file VISU_Gen.idl This file conatins a set of interfaces of %VISU module.
9       This module will provide various forms of data visualization in %SALOME application.
10       These forms include data tables, XY plots, 3d representations
11       and combination of these forms.
12 */
13 /*!
14  \defgroup Visu SALOME VISU module
15 */
16
17 #ifndef __VISU_GEN__
18 #define __VISU_GEN__
19
20 #include "SALOME_Exception.idl"
21 #include "SALOME_Component.idl"
22 #include "SALOMEDS.idl"
23 #include "SALOMEDS_Attributes.idl"
24 #include "MED.idl"
25
26 /*! \ingroup Visu
27   The main package of interfaces of the module %VISU.
28 */
29 module VISU {
30   //-------------------------------------------------------
31   typedef string IdType;
32   enum Scaling{ LINEAR, LOGARITHMIC};
33   enum Entity{ NODE, EDGE, FACE, CELL};
34 /*!
35  This enumeration contains a set of elements defining the type of the module.
36 */
37    enum VISUType{ TNONE,
38                   TCURVE, TTABLE, TCONTAINER, TMESH, TSCALARMAP,
39                   TISOSURFACE, TDEFORMEDSHAPE, TCUTPLANES, TCUTLINES, TVECTORS, TSTREAMLINES,
40                   TVISUGEN, TVIEWMANAGER, TRESULT,
41                   TXYPLOT, TTABLEVIEW, TVIEW3D,
42                   TENTITY, TFAMILY, TGROUP, TFIELD, TTIMESTAMP,
43                   TALL};
44   interface Base {
45 /*!
46    Returns ID of the object.
47 */
48     IdType GetID();
49 /*!
50 Returns the type of the presentable object
51 */
52     VISUType GetType();
53   };   
54 /*! \brief Presentable object interface
55
56  It is the root class of all presentable objects.
57 */
58   interface PrsObject : Base{
59   };
60   //-------------------------------------------------------
61 /*! \brief %Table representation interface
62
63 Presentation parameters of the %Table view.
64 */
65   interface Table : PrsObject {
66 /*!
67 Sets the title of the table.
68 */
69     void SetTitle(in string theTitle);
70 /*!
71 Gets the title of the table.
72 */
73     string GetTitle();
74 /*!
75  This enumeration contains a set of elements defining the orientation of the table.
76 */
77     enum Orientation{ HORIZONTAL, /*!<Horizontal orientation of the table.*/
78                        VERTIACAL /*!<Vertical orientation of the table.*/
79                     };
80 /*!
81 Sets orientation of the table.
82 */
83     void SetOrientation(in Orientation theOrientation);
84 /*!
85 Gets orientation of the table.
86 */
87     Orientation GetOrientation();
88  /*!
89 Gets the number of rows of the table
90  */
91     long GetNbRows();
92  /*!
93 Gets the number of columns of the table
94  */
95     long GetNbColumns();
96   };
97   //-------------------------------------------------------
98 /*! \brief Interface of curve representation.
99
100 Manages presentation parameters of one curve.
101 It can be used for presentation of a set of curves using a combined presentation.
102 */
103   interface Curve : PrsObject{
104 /*!
105 Sets the title of the curve.
106 */
107     void SetTitle(in string theTitle);
108 /*!
109 Gets the title of the curve.
110 */
111     string GetTitle();
112 /*!
113 Sets the color of the curve.
114 */
115     void SetColor(in SALOMEDS::Color theColor);
116 /*!
117 Gets the color of the curve.
118 */
119     SALOMEDS::Color GetColor();
120  /*!
121  This enumeration contains a set of elements defining the representation type of markers (data points) with help of
122 which the curve is constructed on the graphics.
123 */
124     enum MarkerType{ NONE, CIRCLE, RECTANGLE, DIAMOND,
125                      DTRIANGLE, UTRIANGLE, LTRIANGLE, RTRIANGLE,
126                      CROSS, XCROSS };
127 /*!
128 Sets the representation type of markers (data points) with help of
129 which the curve is constructed on the graphics.
130 */
131     void SetMarker(in MarkerType theType);
132 /*!
133 Gets the representation type of markers (data points) with help of
134 which the curve is constructed on the graphics.
135 */
136     MarkerType GetMarker();
137 /*!
138  This enumeration contains a set of elements defining the
139  type of representation of curve lines on the graphics.
140 */
141     enum LineType{ VOIDLINE, SOLIDLINE, DASHLINE, DOTLINE, DASHDOTLINE, DASHDOTDOTLINE};
142 /*!
143 Sets the type of representation of curve lines on the graphics.
144 */
145     void SetLine(in LineType theType, in long theLineWidth);
146 /*!
147 Gets the type of representation of curve lines on the graphics.
148 */
149     LineType GetLine();
150
151 /*!
152 Gets the width of the curve line.
153 */
154     long GetLineWidth();
155   };
156 //-------------------------------------------------------
157 /*! \brief The %Container presentable object interface
158 This interface contains a set of methods used for management of a group of curves
159 which are stored in the container.
160 */
161   interface Container : PrsObject{
162 /*!
163 Adds a curve into the container.
164 */
165     void AddCurve(in Curve theCurve);
166 /*!
167 Removes a curve from the container.
168 */
169     void RemoveCurve(in Curve theCurve);
170 /*!
171 Gets the number of curves which are stored in the container.
172 */
173     long GetNbCurves();
174 /*!
175 Removes all curves from the container.
176 */
177     void Clear();
178
179   };
180   //-------------------------------------------------------
181     interface Prs3d : PrsObject{
182       void Destroy();
183     };
184 /*!
185  This enumeration contains a set of elements defining the
186  type of representation of the mesh.
187 */
188
189     enum PresentationType{ POINT,
190                            WIREFRAME,
191                            SHADED,
192                            SHRINK
193                          };
194 /*! \brief Interface of the mesh.
195
196 This interface manages the presentation parameters of the mesh.
197 */
198     interface Mesh : Prs3d{
199 /*!
200 Sets the color of mesh cells.
201 */
202     void SetCellColor(in SALOMEDS::Color theColor);
203 /*!
204 Gets the color of mesh cells.
205 */
206     SALOMEDS::Color GetCellColor();
207 /*!
208 Sets the color of mesh nodes.
209 */
210     void SetNodeColor(in SALOMEDS::Color theColor);
211 /*!
212 Gets the color of mesh nodes.
213 */
214     SALOMEDS::Color GetNodeColor();
215
216 /*!
217 Sets the color of mesh links.
218 */
219     void SetLinkColor(in SALOMEDS::Color theColor);
220 /*!
221 Gets the color of mesh links.
222 */
223     SALOMEDS::Color GetLinkColor();
224 /*!
225 Sets the type of representation of the mesh.
226 */
227     void SetPresentationType(in PresentationType theType);
228 /*!
229 Gets the type of representation of the mesh.
230 */
231     PresentationType GetPresentationType();
232   };
233   //-------------------------------------------------------
234 /*! \brief Interface of the %Scalar Map presentation
235
236 This interface contains presentation parameters of the ScalarMap presentation
237 */
238   interface ScalarMap : Prs3d{
239     void SetScalarMode(in long theScaling);
240     long GetScalarMode();
241     void SetScaling(in Scaling theScaling);
242 /*!
243 Gets the type of scaling of the values reflected by this presentation.
244 */
245     Scaling GetScaling();
246 /*!
247 Sets scalar range - min and max boundaries of this presentable object.
248 \param theMin  Min boundary of this presentable object.
249 \param theMax  Max boundary of this presentable object.
250 */
251     void SetRange(in double theMin, in double theMax);
252 /*!
253  Gets the min boundary of this presentable object.
254 */
255     double GetMin();
256 /*!
257  Gets the max boundary of this presentable object.
258 */
259     double GetMax();
260
261 /*! %Orientation of this presentable object. */
262     enum Orientation{
263                      HORIZONTAL, /*!< Horizontal orientation of this presentable object.*/
264                        VERTICAL  /*!< Vertical orientation of this presentable object.*/
265                     };
266 /*!
267  Sets the type of orientation of this presentable object.
268 */
269     void SetOrientation(in Orientation theOrientation);
270 /*!
271  Gets the type of orientation of this presentable object.
272 */
273     Orientation GetOrientation();
274
275 /*! \brief Position of this presentable object.
276
277 Sets the position of this presentable object origin on the screen.
278 \param X   Horizontal position. The value can be between 0 and 1.
279 \param Y   Vertical position. The value can be between 0 and 1.
280 */
281     void SetPosition(in double X, in double Y);
282 /*!
283   Gets horizontal position of this presentable object origin.
284 */
285     double GetPosX();
286 /*!
287   Gets vertical position of this presentable object origin.
288 */
289     double GetPosY();
290 /*! \brief Size of this presentable object.
291
292 Sets the size of the scalar bar.
293 \param theWidth  Width of this presentable object. The value can be between 0 and 1.
294 \param theHeight  Height of this presentable object. The value can be between 0 and 1.
295 */
296     void SetSize(in double theWidth, in double theHeight);
297 /*!
298 Gets the width of this presentable object.
299 */
300     double GetWidth();
301 /*!
302 Gets the height of this presentable object.
303 */
304     double GetHeight();
305 /*!
306 Sets the number of colors which will be used for presentation of this presentable object.
307 */
308     void SetNbColors(in long theNbColors);
309 /*!
310 Gets the number of colors which will be used for presentation of this presentable object.
311 */
312     long GetNbColors();
313 /*!
314 Sets the number of labels which will be used for indication of the gradation
315  of this presentable object.
316 */
317     void SetLabels(in long theNbLabels);
318 /*!
319 Gets the number of labels which will be used for indication of the gradation
320  of this presentable object.
321 */
322     long GetLabels();
323 /*!
324 Sets the title of this presentable object. For scalar bar by default - the name of the selected result is used.
325 */
326     void SetTitle(in string theName);
327 /*!
328 Gets the title of this presentable object.
329 */
330     string GetTitle();
331   };
332   //-------------------------------------------------------
333 /*! \brief Deformed shape presentation interface
334
335 Presentation parameters of the deformed shape presentation.
336 */
337     interface DeformedShape : ScalarMap{
338 /*!
339 Sets the scale of the presentatable object.
340 */
341     void SetScale(in double theScale);
342 /*!
343 Gets the scale of the presentatable object.
344 */
345     double GetScale();
346   };
347   //-------------------------------------------------------
348 /*! \brief Cut planes interface
349
350 Presentation parameters of Cut planes presentation.
351 */
352   interface CutPlanes : ScalarMap{
353 /*!
354  This enumeration contains a set of elements defining the orientation in 3D space
355  of cut planes presentation.
356 */
357     enum Orientation {XY, YZ, ZX};
358 /*!
359 Sets the type of orientation in 3D space of cut planes presentation.
360 */
361     void SetOrientationType(in Orientation theNb);
362 /*!
363 Gets the type of orientation in 3D space of cut planes presentation.
364 */
365     Orientation GetOrientationType();
366     void SetDisplacement(in double theDisp);
367     double GetDisplacement();
368 /*!
369 Sets the number of cut planes.
370 */
371     void SetNbPlanes(in long theNb);
372 /*!
373 Gets the number of cut planes.
374 */
375     long GetNbPlanes();
376 /*! Rotation around X-axis.
377 Sets rotation angle of the cut plane presentation.
378 */
379     void SetRotateX(in double theAngle);
380 /*! Rotation around X-axis.
381 Gets rotation angle of the cut plane presentation.
382 */
383     double GetRotateX();
384 /*! Rotation around Y-axis.
385 Sets rotation angle of the cut plane presentation.
386 */
387     void SetRotateY(in double theAngle);
388 /*! Rotation around Y-axis.
389 Sets rotation angle of the cut plane presentation.
390 */
391     double GetRotateY();
392   };
393   //-------------------------------------------------------
394   /*! \brief Interface of the stream lines representation    
395   This interface contains presentation parameters of
396   stream lines presentations.
397   */
398 /*! \brief Cut lines interface
399
400 Presentation parameters of Cut lines presentation.
401 */
402   interface CutLines : ScalarMap{
403
404     void SetOrientationType(in CutPlanes::Orientation theNb);
405     void SetOrientationType2(in CutPlanes::Orientation theNb);
406
407     CutPlanes::Orientation GetOrientationType();
408     CutPlanes::Orientation GetOrientationType2();
409
410     void SetDisplacement(in double theDisp);
411     void SetDisplacement2(in double theDisp);
412
413     double GetDisplacement();
414     double GetDisplacement2();
415
416     void SetNbLines(in long theNb);
417     long GetNbLines();
418
419     void SetRotateX(in double theAngle);
420     void SetRotateX2(in double theAngle);
421
422     double GetRotateX();
423     double GetRotateX2();
424
425     void SetRotateY(in double theAngle);
426     void SetRotateY2(in double theAngle);
427
428     double GetRotateY();
429     double GetRotateY2();
430   };
431
432   interface StreamLines : DeformedShape{
433     enum Direction{ FORWARD,
434                     BACKWARD,
435                     BOTH
436     };
437
438     void SetDirection(in Direction theDirection);
439     Direction GetDirection();
440
441     void SetStepLength(in double theStep);
442     double GetStepLength();
443
444     void SetPropagationTime(in double theTime);
445     double GetPropagationTime();
446
447     void SetIntegrationStep(in double theStep);
448     double GetIntegrationStep();
449
450     void SetSource(in Prs3d thePrs3d);
451     Prs3d GetSource();
452
453     void SetUsedPoints(in double thePercents);
454     double GetUsedPoints();
455   };
456
457
458 /*! \brief Interface of the isometric surface representation
459
460    This interface contains presentation parameters of
461     isometric surface presentations.
462 */
463   interface IsoSurfaces : ScalarMap{
464 /*!
465    Sets the number of isometric surfaces.
466 */
467     void SetNbSurfaces(in long theNb);
468 /*!
469    Gets the number of isometric surfaces
470 */
471     long GetNbSurfaces();
472   };
473   //-------------------------------------------------------
474 /*! \brief Interface of the vector presentation.
475
476 This interface contains presentation parameters of the vector.
477 */
478   interface Vectors : DeformedShape{
479 /*!
480 Sets the width of the line of the vector.
481 */
482     void SetLineWidth(in double theWidth);
483 /*!
484 Gets the width of the line of the vector.
485 */
486     double GetLineWidth();
487 /*!
488  This enumeration contains a set of elements defining the type of representation of the vector head.
489 */
490     enum GlyphType{ ARROW,
491                     CONE2,
492                     CONE6,
493                     NONE
494                   };
495 /*!
496 Sets the type of representation of the vector head.
497 */
498     void SetGlyphType(in GlyphType theType);
499 /*!
500 Gets the type of representation of the vector head.
501 */
502     GlyphType GetGlyphType();
503 /*!
504  This enumeration contains a set of elements defining the position of the vector head.
505 */
506
507     enum GlyphPos{ CENTER, /*!<In the center of the vector.*/
508                    TAIL,   /*!<In the tail of the vector.*/
509                    HEAD  /*!<In the head of the vector.*/
510                  };
511 /*!
512 Sets the position of the vector head.
513 */
514     void SetGlyphPos(in GlyphPos thePos);
515 /*!
516 Gets the position of the vector head.
517 */
518     GlyphPos GetGlyphPos();
519   };
520   //-------------------------------------------------------
521   interface Animation : Base{
522     void addField(in SALOMEDS::SObject theObject);
523
524     void generatePresentations(in long theFieldNum);
525     boolean generateFrames();
526     void clearView();
527
528     void startAnimation();
529     void stopAnimation();
530
531     void nextFrame();
532     void prevFrame();
533     void firstFrame();
534     void lastFrame();
535     void gotoFrame(in long theFrame);
536
537     long getNbFields();
538     long getNbFrames();
539     boolean isRunning();
540     long getCurrentFrame();
541
542     ScalarMap getPresentation(in long theField, in long theFrame);
543
544     void setPresentationType(in long theFieldNum, in VISUType theType);
545     VISUType getPresentationType(in long theFieldNum);
546
547     void setSpeed(in long theSpeed);
548     long getSpeed();
549
550     boolean isProportional();
551
552     void setAnimationRange(in double theMin, in double theMax);
553     double getMinRange();
554     double getMaxRange();
555     boolean isRangeDefined();
556
557     void dumpTo(in string thePath);
558
559     boolean isCycling();
560
561     double getMinTime();
562     double getMaxTime();
563
564     void setProportional(in boolean theProp);
565     void setCycling(in boolean theCycle);
566   };
567
568 /*! \brief Interface %Result
569
570 This interface serves for inner representation of data generated in other sources. (MED object or file)
571 This data is needed for further construction of graphical presentations.
572 */
573   interface Result : Base {
574   };
575   //-------------------------------------------------------
576   interface ViewManager;
577   interface View3D;
578 /*! \brief %VISU_Gen interface
579
580 This is the main interface of %VISU component. It is necessary for creation of
581 post-processing presentations from given %Result and %Table object reference, using the views
582 provided by %ViewManager.
583 */
584    interface VISU_Gen : Engines::Component, SALOMEDS::Driver, Base{
585      void SetCurrentStudy(in SALOMEDS::Study theStudy);
586      SALOMEDS::Study GetCurrentStudy();
587 /*!
588     Gets the %ViewManager which is used for creation of
589     post-processing presentations.
590 */
591     ViewManager GetViewManager();
592
593 /*!
594 Imports tables from a file and create TableAttribute in Sudy
595 */
596     SALOMEDS::SObject ImportTables(in string theFileName);
597 /*!
598 Imports data from a file.
599 */
600     Result ImportFile(in string theFileName);
601 /*!
602 Imports data from a %MED object.
603 */
604     Result ImportMed(in SALOMEDS::SObject theMedSObject);
605 /*!
606 Imports data from a %MED field.
607 */
608     Result ImportMedField(in SALOME_MED::FIELD theField);
609 /*!
610 Creates a %Mesh on the basis of the data generated in other sources (MED object or file).
611 */
612     Mesh MeshOnEntity(in Result theResult, in string theMeshName, in Entity theEntity);
613     Mesh FamilyMeshOnEntity(in Result theResult, in string theMeshName, in Entity theEntity, in string theFamilyName);
614     Mesh GroupMesh(in Result theResult, in string theMeshName, in string theGroupName);
615 /*!
616 Creates a scalar bar presentation.
617 \param theResult   Data generated in other sources. (MED object or file)
618 \param theMeshName  One of the meshes presented in MED file
619 \param theEntity Type of entity where the field is defined
620 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
621 \param theIteration  Number of iteration on the field
622 */
623     ScalarMap ScalarMapOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
624 /*!
625 Creates a deformed shape presentation.
626 \param theResult   Data generated in other sources. (MED object or file)
627 \param theMeshName  One of the meshes presented in MED file
628 \param theEntity Type of entity where the field is defined
629 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
630 \param theIteration  Number of iteration on the field
631 */
632     DeformedShape DeformedShapeOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
633 /*!
634 Creates a vector presentation.
635 \param theResult   Data generated in other sources. (MED object or file)
636 \param theMeshName  One of the meshes presented in MED file
637 \param theEntity Type of entity where the field is defined
638 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
639 \param theIteration  Number of iteration on the field
640 */
641
642     Vectors VectorsOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
643 /*!
644 Creates an iso surface presentation.
645 \param theResult   Data generated in other sources. (MED object or file)
646 \param theMeshName  One of the meshes presented in MED file
647 \param theEntity Type of entity where the field is defined
648 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
649 \param theIteration  Number of iteration on the field
650 */
651
652     IsoSurfaces IsoSurfacesOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
653 /*!
654 Creates an stream lines presentation.
655 \param theResult   Data generated in other sources. (MED object or file)
656 \param theMeshName  One of the meshes presented in MED file
657 \param theEntity Type of entity where the field is defined
658 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
659 \param theIteration  Number of iteration on the field
660 */    
661     StreamLines StreamLinesOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
662
663 /*!
664 Creates a presentation of cut planes.
665 \param theResult   Data generated in other sources. (MED object or file)
666 \param theMeshName  One of the meshes presented in MED file
667 \param theEntity Type of entity where the field is defined
668 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
669 \param theIteration  Number of iteration on the field
670 */
671     CutPlanes CutPlanesOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
672
673 /*!
674 Creates a presentation of cut lines.
675 \param theResult   Data generated in other sources. (MED object or file)
676 \param theMeshName  One of the meshes presented in MED file
677 \param theEntity Type of entity where the field is defined
678 \param theFieldName  Group of data attributed to the %MESH. The data can be scalar or vector.
679 \param theIteration  Number of iteration on the field
680 */
681     CutLines CutLinesOnField(in Result theResult, in string theMeshName, in Entity theEntity, in string theFieldName, in double theIteration);
682
683 /*!
684 Creates a table presentation.
685 */
686     Table CreateTable(in string theTableEntry);
687 /*!
688 Creates a curve on the basis of points, whose values are taken from the table.
689 \param theTable  Table containing the data for construction of curves.
690 \param HRow  Index of the row in the table:  abscissa of the point.
691 \param VRow  Index of the row in the table:  ordinate of the point.
692 */
693     Curve CreateCurve(in Table theTable, in long theHRow, in long theVRow);
694 /*!
695 Creates a presentation form containing an array of references to the curves.
696 */
697      Container CreateContainer();
698
699      Animation CreateAnimation(in View3D theView3d);
700   };
701 /*! \brief %View interface
702
703  Contains a set of methods used by the %View frame, which can be one of
704  the following types: 3d, Table, XY plot.
705  %View interface is a base for all types of %view interfaces.
706 */
707   interface View: Base{
708 /*!
709 Sets the title of the %View frame.
710 */
711     void SetTitle(in string theTitle);
712 /*!
713 Gets the title of the %View frame.
714 */
715     string GetTitle();
716 /*!
717 Sets background color of the %View frame.
718 */
719     void SetBackground(in SALOMEDS::Color theColor);
720 /*!
721 Gets background color of the %View frame.
722 */
723     SALOMEDS::Color GetBackground();
724 /*!
725 Minimizes to the task bar or to the bottom of the Desktop the %View frame.
726 */
727     void Minimize();
728 /*!
729 Restores the %View frame.
730 */
731     void Restore();
732 /*!
733 Maximizes the %View frame.
734 */
735     void Maximize();
736 /*!
737 Removes all presentations (presentable objects) from the %view.
738 */
739     void EraseAll();
740 /*!
741 Displays all presentations (presentable objects) in the %view.
742 */
743     void DisplayAll();
744 /*!
745 Removes a definite presentation (presentable object) from the %view.
746 */
747     void Erase(in PrsObject thePrsObj);
748 /*!
749 Displays a definite presentation (presentable object) in the %view.
750 */
751     void Display(in PrsObject thePrsObj);
752 /*!
753 Allows to display only a definite presentation (presentable object) in the %view.
754 All other presentations are removed from the %view.
755 */
756     void DisplayOnly(in PrsObject thePrsObj);
757 /*!
758 Updates the view.
759 */
760     void Update();
761
762 /*!
763 Saves the view.
764 */
765     boolean SavePicture(in string theFileName);
766   };
767
768   //-------------------------------------------------------
769 /*! \brief 3D view interface
770
771 This interface contains a set of methods necessary for representation of objects in 3D space.
772 */
773
774   interface View3D : View {
775 /*!
776 This enumeration contains a set of elements determining a predefined point of view
777   (position of the camera in 3D space relative to the presentable object).
778 */
779     enum ViewType{ FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM};
780 /*!
781 This enumeration contains a set of elements determining the axis
782 */
783     enum Axis{ XAxis, YAxis, ZAxis};
784 /*!
785 Data type defining coordinates in 3D space.
786 */
787     typedef double XYZ[3];
788
789 /*!
790  Makes all presentations, which are currently present in the %view, completely visible.
791 */
792
793     void FitAll();
794
795 /*!
796 Sets a predefined point of view (FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM). (In other words it means
797  a predefined position of the camera in 3D space with respect to the object which is represented.)
798 */
799     void SetView(in ViewType theType);
800
801 /*!
802 Sets the position of the camera in 3D space. This point is used as the first point of the vector defining
803 the view direction of the camera.
804 */
805     void SetPointOfView(in XYZ theCoord);
806 /*!
807 Gets the position of the camera in 3D space.This point is used as the first point of the vector defining
808 the view direction of the camera.
809 */
810     XYZ GetPointOfView();
811 /*!
812 Sets the vertical line of the camera in 3D space.
813 */
814     void SetViewUp(in XYZ theDir);
815 /*!
816 Gets the vertical line of the camera in 3D space.
817 */
818     XYZ GetViewUp();
819 /*!
820 Sets the point of sight of the camera. This point is used as the second point of the vector defining
821 the view direction of the camera.
822 */
823     void SetFocalPoint(in XYZ theDir);
824 /*!
825 Gets the point of sight of the camera. This point is used as the second point of the vector defining
826 the view direction of the camera.
827 */
828     XYZ GetFocalPoint();
829 /*!
830 Zooming of the presentable object. Sets the scale.
831 */
832     void SetParallelScale(in double theScale);
833 /*!
834 Zooming of the presentable object. Gets the scale.
835 */
836     double GetParallelScale();
837 /*!
838 Scaling of the view along a definite axis.
839 \param theAxis The axis of the scaling
840 \param theParam The coefficient of the scaling
841 */
842     void ScaleView(in Axis theAxis, in double theParam);
843 /*!
844 Removes the scaling of the view.
845 */
846     void RemoveScale();
847 /*!
848 Returns True if the view parameters have been created, False if the parameters have been modified.
849 */
850     boolean SaveViewParams(in string theName);
851 /*!
852 Returns True if the view parameters have been found and applied to the view,
853 False if the parameters with this name don't exist.
854 */
855     boolean RestoreViewParams(in string theName);
856   };
857
858
859   //-------------------------------------------------------
860   interface TableView : View {
861    
862   };
863
864
865   //-------------------------------------------------------
866   interface XYPlot : View {
867     void SetSubTitle(in string theTitle);
868     string GetSubTitle();
869
870     enum CurveType { POINTS, MULTYLINE, SPLINE};
871     void SetCurveType(in CurveType theType);
872     CurveType GetCurveType();
873         
874     void SetMarkerSize(in long theSize);
875     long GetMarkerSize();
876
877     void EnableXGrid(in boolean theMajor, in long theNumMajor, in boolean theMinor, in long theNumMinor);
878     void EnableYGrid(in boolean theMajor, in long theNumMajor, in boolean theMinor, in long theNumMinor);
879  
880     void SetHorScaling(in Scaling theScaling);
881     Scaling GetHorScaling();
882     void SetVerScaling(in Scaling theScaling);
883     Scaling GetVerScaling();
884
885     void SetXTitle(in string theTitle);
886     string GetXTitle();
887
888     void SetYTitle(in string theTitle);
889     string GetYTitle();
890
891     void ShowLegend(in boolean theShowing);
892
893     void FitAll();
894   };
895
896   //-------------------------------------------------------
897 /*! \brief Interface of the %ViewManager
898
899    The %ViewManager is necessary for work with view windows (creation and deletion).
900 */
901
902     interface ViewManager: Base{
903 /*! \brief Getting an active %View Frame
904
905  Returns an object reference to the active %View Frame.
906  Type of the %View must be checked.
907  \note <BR>Returns nil if there are no views currently opened.
908 */
909
910     View GetCurrentView();
911 /*! \brief Creation of a 3d %View.
912
913  Returns an object reference to the newly created 3d %View.
914 */
915     View3D Create3DView();
916
917     TableView CreateTableView(in Table theTable);
918
919     XYPlot CreateXYPlot();
920
921     void Destroy(in View theView);
922
923  };
924 };
925 #endif
926
927