Integration of OCCT 6.5.0 from SVN
[occt.git] / src / IGESDimen / IGESDimen_ToolFlagNote.cxx
CommitLineData
7fd59977 1//--------------------------------------------------------------------
2//
3// File Name : IGESDimen_FlagNote.cxx
4// Date :
5// Author : CKY / Contract Toubro-Larsen
6// Copyright : MATRA-DATAVISION 1993
7//
8//--------------------------------------------------------------------
9
10#include <IGESDimen_ToolFlagNote.ixx>
11#include <IGESData_ParamCursor.hxx>
12#include <gp_XYZ.hxx>
13#include <IGESDimen_LeaderArrow.hxx>
14#include <IGESDimen_GeneralNote.hxx>
15#include <IGESDimen_HArray1OfLeaderArrow.hxx>
16#include <IGESData_Dump.hxx>
17#include <Interface_Macros.hxx>
18
19
20IGESDimen_ToolFlagNote::IGESDimen_ToolFlagNote () { }
21
22
23void IGESDimen_ToolFlagNote::ReadOwnParams
24 (const Handle(IGESDimen_FlagNote)& ent,
25 const Handle(IGESData_IGESReaderData)& IR, IGESData_ParamReader& PR) const
26{
27 //Standard_Boolean st; //szv#4:S4163:12Mar99 moved down
28
29 gp_XYZ lowerLeft;
30 Standard_Real angle;
31 Handle(IGESDimen_GeneralNote) note;
32 Standard_Integer nbval;
33 Handle(IGESDimen_HArray1OfLeaderArrow) leaders;
34
35 PR.ReadXYZ (PR.CurrentList(1, 3), "Lower Left Corner Co-ords", lowerLeft); //szv#4:S4163:12Mar99 `st=` not needed
36
37 PR.ReadReal(PR.Current(), "Rotation Angle", angle); //szv#4:S4163:12Mar99 `st=` not needed
38
39 PR.ReadEntity(IR, PR.Current(), "General Note Entity",
40 STANDARD_TYPE(IGESDimen_GeneralNote), note); //szv#4:S4163:12Mar99 `st=` not needed
41
42 Standard_Boolean st = PR.ReadInteger(PR.Current(), "Number of Leaders", nbval);
43 if (st && nbval > 0)
44 {
45 leaders = new IGESDimen_HArray1OfLeaderArrow(1, nbval);
46
47 for (Standard_Integer i = 1; i <= nbval; i++)
48 {
49 Handle(IGESDimen_LeaderArrow) anentity;
50 //st = PR.ReadEntity(IR, PR.Current(), "Leaders",
51 //STANDARD_TYPE(IGESDimen_LeaderArrow), anentity); //szv#4:S4163:12Mar99 moved in if
52 if (PR.ReadEntity(IR, PR.Current(), "Leaders", STANDARD_TYPE(IGESDimen_LeaderArrow), anentity))
53 leaders->SetValue(i, anentity);
54 }
55 }
56 else if (nbval < 0)
57 PR.AddFail("Number of Leaders: Less than zero");
58
59 DirChecker(ent).CheckTypeAndForm(PR.CCheck(),ent);
60 ent->Init(lowerLeft, angle, note, leaders);
61}
62
63void IGESDimen_ToolFlagNote::WriteOwnParams
64 (const Handle(IGESDimen_FlagNote)& ent, IGESData_IGESWriter& IW) const
65{
66 IW.Send(ent->LowerLeftCorner().X());
67 IW.Send(ent->LowerLeftCorner().Y());
68 IW.Send(ent->LowerLeftCorner().Z());
69 IW.Send(ent->Angle());
70 IW.Send(ent->Note());
71 Standard_Integer upper = ent->NbLeaders();
72 IW.Send(upper);
73 for (Standard_Integer i = 1; i <= upper; i ++)
74 IW.Send(ent->Leader(i));
75}
76
77void IGESDimen_ToolFlagNote::OwnShared
78 (const Handle(IGESDimen_FlagNote)& ent, Interface_EntityIterator& iter) const
79{
80 iter.GetOneItem(ent->Note());
81 Standard_Integer upper = ent->NbLeaders();
82 for (Standard_Integer i = 1; i <= upper; i ++)
83 iter.GetOneItem(ent->Leader(i));
84}
85
86void IGESDimen_ToolFlagNote::OwnCopy
87 (const Handle(IGESDimen_FlagNote)& another,
88 const Handle(IGESDimen_FlagNote)& ent, Interface_CopyTool& TC) const
89{
90 gp_XYZ lowerLeft = (another->LowerLeftCorner()).XYZ();
91 Standard_Real angle = another->Angle();
92 DeclareAndCast(IGESDimen_GeneralNote, note,
93 TC.Transferred(another->Note()));
94 Standard_Integer nbval = another->NbLeaders();
95
96 Handle(IGESDimen_HArray1OfLeaderArrow) leaders;
97
98 if ( nbval > 0 )
99 {
100 leaders = new IGESDimen_HArray1OfLeaderArrow(1, nbval);
101 for (Standard_Integer i = 1; i <= nbval; i++)
102 {
103 DeclareAndCast(IGESDimen_LeaderArrow, new_ent,
104 TC.Transferred(another->Leader(i)));
105 leaders->SetValue(i, new_ent);
106 }
107 }
108 ent->Init(lowerLeft, angle, note, leaders);
109}
110
111IGESData_DirChecker IGESDimen_ToolFlagNote::DirChecker
112 (const Handle(IGESDimen_FlagNote)& /* ent */ ) const
113{
114 IGESData_DirChecker DC (208, 0);
115 DC.Structure(IGESData_DefVoid);
116 DC.LineFont(IGESData_DefAny);
117 DC.LineWeight(IGESData_DefValue);
118 DC.Color(IGESData_DefAny);
119 DC.UseFlagRequired(1);
120 return DC;
121}
122
123void IGESDimen_ToolFlagNote::OwnCheck
124 (const Handle(IGESDimen_FlagNote)& /* ent */,
125 const Interface_ShareTool& , Handle(Interface_Check)& /* ach */) const
126{
127}
128
129void IGESDimen_ToolFlagNote::OwnDump
130 (const Handle(IGESDimen_FlagNote)& ent, const IGESData_IGESDumper& dumper,
131 const Handle(Message_Messenger)& S, const Standard_Integer level) const
132{
133 Standard_Integer sublevel = (level > 4) ? 1 : 0;
134
135 S << "IGESDimen_FlagNote" << endl;
136 S << "LowerLeftCorner : ";
137 IGESData_DumpXYZL(S,level, ent->LowerLeftCorner(), ent->Location());
138 S << endl << "Rotation Angle: " << ent->Angle() << endl;
139 S << "General Note Entity : ";
140 dumper.Dump(ent->Note(),S, sublevel);
141 S << endl;
142 S << "Number of Leaders : " << ent->NbLeaders() << " Leaders : ";
143 IGESData_DumpEntities(S,dumper ,level,1, ent->NbLeaders(),ent->Leader);
144 S << endl;
145}