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