1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#include <Xw_MarkMap.ixx>
#include <Aspect_TypeOfMarker.hxx>
#include <Aspect_MarkerStyle.hxx>
#include <Standard_ShortReal.hxx>
#include <TShort_Array1OfShortReal.hxx>
#include <TColStd_Array1OfBoolean.hxx>
// Routines C a declarer en extern
//extern "C" {
#include <Xw_Cextern.hxx>
//}
//-Static data definitions
static char *ErrorMessag ;
static int ErrorNumber ;
static int ErrorGravity ;
static XW_STATUS status ;
Xw_MarkMap::Xw_MarkMap () {
}
Xw_MarkMap::Xw_MarkMap (const Standard_CString Connexion) {
MyExtendedDisplay = Xw_open_display((Standard_PCharacter)Connexion) ;
if( !MyExtendedDisplay ) {
ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
if( ErrorGravity )
Aspect_MarkMapDefinitionError::Raise (ErrorMessag) ;
else Xw_print_error() ;
}
MyExtendedMarkMap = Xw_def_markmap(MyExtendedDisplay,(int)0) ;
if( !Xw_isdefine_markmap(MyExtendedMarkMap) ) {
ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
if( ErrorGravity )
Aspect_MarkMapDefinitionError::Raise (ErrorMessag) ;
else Xw_print_error() ;
}
}
void Xw_MarkMap::SetEntry (const Aspect_MarkMapEntry& anEntry) {
Aspect_MarkerStyle style = anEntry.Style() ;
int length = (int) style.Length() ;
int index = (int) anEntry.Index() ;
const TShort_Array1OfShortReal& xvalues(style.XValues()) ;
const TShort_Array1OfShortReal& yvalues(style.YValues()) ;
const TColStd_Array1OfBoolean& svalues(style.SValues()) ;
float *X = (float*) &xvalues.Value(xvalues.Lower());
float *Y = (float*) &yvalues.Value(yvalues.Lower());
int *S = (int*) &svalues.Value(svalues.Lower());
Standard_Integer i;
for( i=1 ; i<=length ; i++ ) {
// Standard_Real xcoord,ycoord;
// Standard_Boolean state = style.Values(i,xcoord,ycoord);
}
if( index ) { /* Index 0 is default POINT Marker ,cann't be changed */
status = Xw_def_marker(MyExtendedMarkMap,index,length,S,X,Y) ;
if( !status ) {
ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
if( ErrorGravity > 2 )
Aspect_BadAccess::Raise (ErrorMessag) ;
else Xw_print_error() ;
}
}
}
void Xw_MarkMap::SetEntries (const Handle(Aspect_MarkMap)& Markmap) {
Standard_Integer size = Markmap->Size() ;
Standard_Integer i ;
if( !Xw_isdefine_markmap(MyExtendedMarkMap) ) {
ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
if( ErrorGravity > 2 )
Aspect_MarkMapDefinitionError::Raise (ErrorMessag) ;
else Xw_print_error() ;
}
for( i=1 ; i<=size ; i++ ) {
SetEntry(Markmap->Entry(i)) ;
}
}
void Xw_MarkMap::Destroy() {
if( MyExtendedMarkMap ) {
Xw_close_markmap(MyExtendedMarkMap) ;
MyExtendedMarkMap = NULL ;
}
}
Standard_Integer Xw_MarkMap::FreeMarkers( ) const {
Standard_Integer ntype ;
int mtype,utype,dtype,ftype ;
status = Xw_get_markmap_info(MyExtendedMarkMap,
&mtype,&utype,&dtype,&ftype) ;
if( !status ) {
ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
if( ErrorGravity > 2 )
Aspect_BadAccess::Raise (ErrorMessag) ;
else Xw_print_error() ;
}
ntype = utype - dtype ;
return (ntype) ;
}
Standard_Address Xw_MarkMap::ExtendedMarkMap () const {
return (MyExtendedMarkMap);
}
|