9082f1be33c1e924b0e360e6852c78b93cb451a2
[occt.git] / src / STEPConstruct / STEPConstruct_Styles.cdl
1 -- Created on: 1999-09-10
2 -- Created by: Andrey BETENEV
3 -- Copyright (c) 1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class Styles from STEPConstruct inherits Tool from STEPConstruct
18
19     ---Purpose: Provides a mechanism for reading and writing shape styles
20     --          (such as color) to and from the STEP file
21     --          This tool maintains a list of styles, either taking them
22     --          from STEP model (reading), or filling it by calls to 
23     --          AddStyle or directly (writing).
24     --          Some methods deal with general structures of styles and
25     --          presentations in STEP, but there are methods which deal
26     --          with particular implementation of colors (as described in RP)
27
28 uses
29     WorkSession      from XSControl,
30     InterfaceModel   from Interface,
31     HGraph           from Interface,
32     FinderProcess    from Transfer,
33     TransientProcess from Transfer,
34     Shape            from TopoDS,
35     SequenceOfTransient from TColStd,
36     HSequenceOfTransient from TColStd,
37     MapOfShape       from TopTools,
38     RepresentationItem from StepRepr,
39     RepresentationContext from StepRepr,
40     PresentationStyleAssignment from StepVisual,
41     StyledItem       from StepVisual,
42     Colour           from StepVisual,
43     Color            from Quantity,
44     IndexedDataMapOfTransientTransient from TColStd,
45     MechanicalDesignGeometricPresentationRepresentation from StepVisual,
46     ContextDependentShapeRepresentation from StepShape,
47     ProductDefinitionShape from StepRepr,
48     DataMapOfAsciiStringTransient from STEPConstruct,
49     DataMapOfPointTransient from STEPConstruct
50 is
51
52     Create returns Styles;
53         ---Purpose: Creates an empty tool
54
55     Create (WS: WorkSession from XSControl) returns Styles;
56         ---Purpose: Creates a tool and initializes it
57         
58     Init (me: in out; WS: WorkSession from XSControl) returns Boolean;
59         ---Purpose: Initializes tool; returns True if succeeded
60
61     --Basic methods: general work with styles   
62
63     NbStyles (me) returns Integer;
64         ---Purpose: Returns number of defined styles
65
66     Style (me; i: Integer) returns StyledItem from StepVisual;
67         ---Purpose: Returns style with given index
68
69     ClearStyles (me: in out);
70         ---Purpose: Clears all defined styles and PSA sequence
71
72     AddStyle (me: in out; style: StyledItem from StepVisual);
73         ---Purpose: Adds a style to a sequence
74
75     AddStyle (me: in out; item: RepresentationItem from StepRepr;
76                           PSA: PresentationStyleAssignment from StepVisual;
77                           Override: StyledItem from StepVisual)
78     returns StyledItem from StepVisual;
79         ---Purpose: Create a style linking giving PSA to the item, and add it to the
80         --          sequence of stored styles. If Override is not Null, then 
81         --          the resulting style will be of the subtype OverridingStyledItem.
82         
83     AddStyle (me: in out; Shape: Shape from TopoDS;
84                           PSA: PresentationStyleAssignment from StepVisual;
85                           Override: StyledItem from StepVisual)
86     returns StyledItem from StepVisual;
87         ---Purpose: Create a style linking giving PSA to the Shape, and add it to the
88         --          sequence of stored styles. If Override is not Null, then 
89         --          the resulting style will be of the subtype OverridingStyledItem.
90         --          The Sape is used to find corresponding STEP entity by call to
91         --          STEPConstruct::FindEntity(), then previous method is called.
92
93     CreateMDGPR (me: in out; Context: RepresentationContext from StepRepr;
94                  MDGPR :in out MechanicalDesignGeometricPresentationRepresentation from StepVisual)
95     returns Boolean;
96         ---Purpose: Create MDGPR, fill it with all the styles previously defined,
97         --          and add it to the model
98         
99     CreateNAUOSRD (me: in out; Context: RepresentationContext from StepRepr;
100                    CDSR : ContextDependentShapeRepresentation from StepShape;
101                    initPDS : ProductDefinitionShape from StepRepr)
102     returns Boolean;
103         ---Purpose: Create MDGPR, fill it with all the styles previously defined,
104         --          and add it to the model
105         --          IMPORTANT: <initPDS> must be null when use for NAUO colors
106         --          <initPDS> initialised only for SHUO case.
107         
108     FindContext (me; Shape: Shape from TopoDS)
109     returns RepresentationContext from StepRepr;
110         ---Purpose: Searches the STEP model for the RepresentationContext in which
111         --          given shape is defined. This context (if found) can be used
112         --          then in call to CreateMDGPR()
113         
114     LoadStyles (me: in out) returns Boolean;
115         ---Purpose: Searches the STEP model for the MDGPR or DM entities
116         --          (which bring styles) and fills sequence of styles
117
118     LoadInvisStyles (me; InvSyles : in out HSequenceOfTransient from TColStd)
119     returns Boolean;
120         ---Purpose: Searches the STEP model for the INISIBILITY enteties
121         --          (which bring styles) and fills out sequence of styles
122
123     --Specialized methods: work with colors     
124
125     MakeColorPSA (me; item: RepresentationItem from StepRepr;
126                       SurfCol: Colour from StepVisual;
127                       CurveCol: Colour from StepVisual;
128                       isForNAUO : Boolean from Standard = Standard_False)
129     returns PresentationStyleAssignment from StepVisual;
130         ---Purpose: Create a PresentationStyleAssignment entity which defines
131         --          two colors (for filling surfaces and curves)
132         --          if isForNAUO true then returns PresentationStyleByContext
133         
134     GetColorPSA (me: in out; item: RepresentationItem from StepRepr;
135                              Col: Colour from StepVisual)
136     returns PresentationStyleAssignment from StepVisual;
137         ---Purpose: Returns a PresentationStyleAssignment entity which defines 
138         --          surface and curve colors as Col. This PSA is either created
139         --          or taken from internal map where all PSAs created by this
140         --          method are remembered.
141         
142     GetColors (me; style: StyledItem from StepVisual;
143                    SurfCol : out Colour from StepVisual;
144                    BoundCol: out Colour from StepVisual;
145                    CurveCol: out Colour from StepVisual;
146                    IsComponent: in out Boolean from Standard)
147     returns Boolean;
148         ---Purpose: Extract color definitions from the style entity
149         --          For each type of color supported, result can be either
150         --          NULL if it is not defined by that style, or last
151         --          definition (if they are 1 or more)
152
153     --Auxiliary methods: conversions between STEP and CASCADE color definitions
154
155      EncodeColor (myclass; Col: Color from Quantity) returns Colour from StepVisual;
156         ---Purpose: Create STEP color entity by given Quantity_Color
157         --          The analysis is performed for whether the color corresponds to
158         --          one of standard colors predefined in STEP. In that case, 
159         --          PredefinedColour entity is created instead of RGBColour
160     
161     EncodeColor (myclass; Col: Color from Quantity;
162                           DPDCs : in out DataMapOfAsciiStringTransient from STEPConstruct;
163                           ColRGBs : in out DataMapOfPointTransient from STEPConstruct)
164     returns Colour from StepVisual;
165         ---Purpose: Create STEP color entity by given Quantity_Color
166         --          The analysis is performed for whether the color corresponds to
167         --          one of standard colors predefined in STEP. In that case, 
168         --          PredefinedColour entity is created instead of RGBColour
169     
170     DecodeColor (myclass; Colour: Colour from StepVisual;
171                           Col : out Color from Quantity) 
172     returns Boolean;
173         ---Purpose: Decodes STEP color and fills the Quantity_Color. 
174         --          Returns True if OK or False if color is not recognized
175         
176 fields
177
178     myMapOfStyles : IndexedDataMapOfTransientTransient from TColStd;
179     myStyles      : SequenceOfTransient from TColStd;
180     myPSA         : SequenceOfTransient from TColStd;
181
182 end Styles;