summaryrefslogtreecommitdiff
path: root/src/ImageUtility/ImageUtility_XWD.cxx
blob: 4b9fbd8be8780a4bc9937b859ec4449098e1ac89 (plain)
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
#include <Image_Image.hxx>
#include <AlienImage_XAlienImage.hxx>
#include <OSD_Process.hxx>
#include <OSD_File.hxx>
#include <ImageUtility_XWD.ixx>

ImageUtility_XWD::ImageUtility_XWD()

{ myXAlienImage = NULL ;
  myImage	= NULL ;
}

Handle(Image_Image) ImageUtility_XWD::Image() const 
{ return myImage ; }

Handle(AlienImage_XAlienImage) ImageUtility_XWD::XAlienImage() const
{ return myXAlienImage; }
 
Standard_Boolean ImageUtility_XWD::XWD( const Standard_CString xwdOptions )

{ Standard_Boolean RetStatus ;

  OSD_File File = OSD_File::BuildTemporary() ;

  TCollection_AsciiString s, Name ;
  OSD_Path Path ;
  OSD_Process Process ;

  File.Path( Path ) ;

  Path.SystemName( Name, OSD_Default ) ;

#ifdef TRACE
  cout << "BuildTemporaryFile :" << Name << endl << flush ;
#endif

  s = TCollection_AsciiString("xwd ") 
	+ TCollection_AsciiString(xwdOptions) 
	+ TCollection_AsciiString(" -out ") 
	+ Name ;

  Process.Spawn( s ) ;

  myXAlienImage = new AlienImage_XAlienImage() ;

  if (( RetStatus = myXAlienImage->Read( File ) )) {
	myImage = myXAlienImage->ToImage() ;
  }
  else {
	myImage 	= NULL ;
	myXAlienImage 	= NULL ;
  }

  return RetStatus ;
}