26 #ifdef G4VIS_BUILD_OI_DRIVER
38 #include <Inventor/errors/SoDebugError.h>
39 #include <Inventor/elements/SoViewportRegionElement.h>
40 #include <Inventor/actions/SoGLRenderAction.h>
53 typedef unsigned char Uchar;
58 static int sWidth = 0;
59 static int sHeight = 0;
60 static float* sImage = 0;
61 static int getRGB(
unsigned int,
unsigned int,
double&,
double&,
double&);
82 SO_NODE_ADD_FIELD(fileName,(
"out.ps"));
122 SoGLRenderAction* aAction
129 if(!fEnabled)
return;
130 SbViewportRegion vpr = SoViewportRegionElement::get(aAction->getState());
131 const SbVec2s& win = vpr.getWindowSize();
135 SoDebugError::postInfo(
"SoImageWriter::GLRender",
"null area window !");
142 float* image =
new float[
s];
148 glReadPixels(x,y,w,h,GL_RGB,GL_FLOAT,image);
183 SoDebugError::postInfo(
"SoImageWriter::GLRender",
184 "can't open file \"%s\".",
fileName.getValue().getString());
339 float* pimag = sImage + 3 * (sWidth * (sHeight - 1 - aY) + aX);
340 aRed = *pimag;pimag++;
341 aGreen = *pimag;pimag++;
342 aBlue = *pimag;pimag++;
void clearColorBuffer(float, float, float)
void putImageInStream(unsigned int, unsigned int, GetRGB_Function)
void openFileForWriting(const char *)
const G4ThreeVector const G4double const
virtual void GLRender(SoGLRenderAction *)
typedef void(XMLCALL *XML_ElementDeclHandler)(void *userData
void setWindowSize(int, int)
void setBitsPerPixel(int)