2 #include <Xw_WidthMap.ixx>
3 #include <Aspect_WidthOfLine.hxx>
5 // Routines C a declarer en extern
7 #include <Xw_Cextern.hxx>
10 //-Static data definitions
12 static char *ErrorMessag ;
13 static int ErrorNumber ;
14 static int ErrorGravity ;
15 static XW_STATUS status ;
17 Xw_WidthMap::Xw_WidthMap () {
20 Xw_WidthMap::Xw_WidthMap (const Standard_CString Connexion) {
22 MyExtendedDisplay = Xw_open_display((Standard_PCharacter)Connexion) ;
24 if( !MyExtendedDisplay ) {
25 ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
27 Aspect_WidthMapDefinitionError::Raise (ErrorMessag) ;
28 else Xw_print_error() ;
31 MyExtendedWidthMap = Xw_def_widthmap(MyExtendedDisplay,(int)0) ;
33 if( !Xw_isdefine_widthmap(MyExtendedWidthMap) ) {
34 ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
36 Aspect_WidthMapDefinitionError::Raise (ErrorMessag) ;
37 else Xw_print_error() ;
41 void Xw_WidthMap::SetEntry (const Aspect_WidthMapEntry& Entry) {
42 int fwidth = (int) Entry.Index() ;
43 float width = (float) TOMILLIMETER(Entry.Width()) ;
45 if( fwidth ) { /* Don't change Default index 0,One pixel Width */
46 status = Xw_def_width(MyExtendedWidthMap,fwidth,width) ;
49 ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
50 if( ErrorGravity > 2 )
51 Aspect_BadAccess::Raise (ErrorMessag) ;
52 else Xw_print_error() ;
58 void Xw_WidthMap::SetEntries (const Handle(Aspect_WidthMap)& Widthmap) {
59 Standard_Integer size = Widthmap->Size() ;
62 if( !Xw_isdefine_widthmap(MyExtendedWidthMap) ) {
63 ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
64 if( ErrorGravity > 2 )
65 Aspect_WidthMapDefinitionError::Raise (ErrorMessag) ;
66 else Xw_print_error() ;
69 for( i=1 ; i<=size ; i++ ) {
70 SetEntry(Widthmap->Entry(i)) ;
74 void Xw_WidthMap::Destroy() {
76 if( MyExtendedWidthMap ) {
77 Xw_close_widthmap(MyExtendedWidthMap) ;
78 MyExtendedWidthMap = NULL ;
82 Standard_Integer Xw_WidthMap::FreeWidths( ) const {
83 Standard_Integer nwidth ;
84 int mwidth,uwidth,dwidth,fwidth ;
86 status = Xw_get_widthmap_info(MyExtendedWidthMap,
87 &mwidth,&uwidth,&dwidth,&fwidth) ;
90 ErrorMessag = Xw_get_error(&ErrorNumber,&ErrorGravity) ;
91 if( ErrorGravity > 2 )
92 Aspect_BadAccess::Raise (ErrorMessag) ;
93 else Xw_print_error() ;
96 nwidth = uwidth - dwidth ;
101 Standard_Address Xw_WidthMap::ExtendedWidthMap () const {
103 return (MyExtendedWidthMap);