[vtkusers] Fullscreen mode problem

ouanabil ouanabil at googlemail.com
Mon Jun 1 04:10:44 EDT 2009


Hi,

I'm having some trouble with the vtkRenderWindow full screen mode under 
X11. When I activate full screen mode, the window renders to full screen 
correctly, however all keyboard/mouse interaction with the window appears 
to cease, ie no further clicks/keypresses are received by the application.

hier is the code:
   typedef int PipeHandle;
   XtAppContext app_context; 
void handle_timer(vtkObject* caller, unsigned long, void* clientdata, void*)
{
    vtkRenderWindowInteractor* iren=
static_cast<vtkInteractorStyle*>(caller)->GetInteractor();
    vtkCamera* cam = reinterpret_cast<vtkCamera*>(clientdata);
    iren->CreateTimer(VTKI_TIMER_UPDATE);
    iren->Render();
    }

void handle_console_event(PipeHandle handle)
{
    static char buf[1024];
    int num_read=0;
    num_read = read(handle, buf, 1024);

    if(num_read == 5 && (strncmp("exit", buf, 4) == 0 || strncmp("quit",
buf, 4) == 0))
    {
        XtAppSetExitFlag(app_context);
    }
}

static void x11_handle_console_event(XtPointer, int* pipe, XtInputId*)
{
    handle_console_event(*pipe);
}

class vtkMyCallback : public vtkCommand 
{ 
    public:
     static vtkMyCallback *New() 
     { 
         return new vtkMyCallback; 
     } 
     
     virtual void Execute(vtkObject *caller1, unsigned long, void*) 
     {
         vtkXRenderWindowInteractor *interact =
reinterpret_cast<vtkXRenderWindowInteractor*>(caller1);
         
         char* key = interact->GetKeySym();
          if (*key=='g') 
         { 
             this->Actor->GetProperty()->SetColor(0,1,0);

         }
         
         if (*key=='b') 
         { 
             this->Actor->GetProperty()->SetColor(0,0,1);             
         }
         
         if (*key=='r') 
         { 
              this->Actor->GetProperty()->SetColor(1,0,0);              
         }

     }

    void SetActor(vtkActor *actor) 
    { 
        this->Actor = actor;
    }

    protected: 
        vtkActor *Actor;
        vtkRenderWindow* renWin;
};

int main()
{
    XtToolkitInitialize();
    app_context = XtCreateApplicationContext();
    XtAppAddInput(app_context, fileno(stdin),
(XtPointer)XtInputReadMask,x11_handle_console_event, NULL);
   
vtkRenderer* ren1 = vtkRenderer::New();
vtkRenderWindow* renWin = vtkRenderWindow::New();
   renWin->AddRenderer (ren1);

vtkXRenderWindowInteractor* iren1 = vtkXRenderWindowInteractor::New();
    iren1->SetRenderWindow(renWin);
    iren1->Initialize(app_context); 
    
vtkInteractorStyleTrackballCamera *style =
vtkInteractorStyleTrackballCamera::New();
    iren1->SetInteractorStyle(style);

vtkCylinderSource *cylinder1 = vtkCylinderSource::New();
     cylinder1->SetCenter(0,0,0); 
     cylinder1->SetRadius(1);
     cylinder1->SetHeight(2);
     cylinder1->SetResolution(100); 

     
 vtkPolyDataMapper *cylinderMapper1 = vtkPolyDataMapper::New();
    cylinderMapper1->SetInputConnection (cylinder1 ->GetOutputPort());

vtkActor *cylinderActor1 = vtkActor::New();
    cylinderActor1->SetMapper(cylinderMapper1);
    cylinderActor1->GetProperty()->SetColor(1,0,0);
    cylinderActor1->SetPosition(1,1,1); 
 
    ren1->AddActor(cylinderActor1);
    ren1->SetBackground(1, 1, 1 );
    renWin->FullScreenOn(); 
       
vtkCamera *cam1 = vtkCamera::New();
    ren1->ResetCamera();
    cam1 = ren1->GetActiveCamera();
    
vtkCallbackCommand* callback = vtkCallbackCommand::New();
    callback->SetClientData(cam1);
    callback->SetCallback(handle_timer);
    style->AddObserver(vtkCommand::TimerEvent, callback);

vtkMyCallback *cb = vtkMyCallback::New();
    cb->SetActor(cylinderActor1);
    style->AddObserver(vtkCommand::KeyReleaseEvent ,cb);
    iren1->CreateTimer(VTKI_TIMER_FIRST);

    printf("type 'exit' to quit\n");  
            
  while(!XtAppGetExitFlag(app_context))
  {
        float x=0,y=0,z=0;
        for( double i = 0; i<9;i++)
        {
            {x=fmod(i,6);
            y=fmod(i,3);
            z=fmod(i,9);
        }
           cylinderActor1 ->SetPosition(x,y,z);
         XtAppProcessEvent(app_context, XtIMAll);
 
        }    
  }
    return 0;
}

I am using Debian with VTK5.0, on a system with NVIDIA drivers.
Can anyone offer any suggestions as to why this is happening?

-- 
Cheers,
ouanabil

-- 
View this message in context: http://www.nabble.com/Fullscreen-mode-problem-tp23811369p23811369.html
Sent from the VTK - Users mailing list archive at Nabble.com.




More information about the vtkusers mailing list