/*=================================================================*/ void SetInitialSeed( int S1, int S2 ){ Ig1[1] = S1; Ig2[1] = S2; InitGenerator( 1, InitialSeed ); for ( int g = 2 ; g <= NumberOfGenerators; g++ ) { Ig1[g] = MultMod( A1VW, Ig1[g-1], M1 ); Ig2[g] = MultMod( A2VW, Ig2[g-1], M2 ); InitGenerator( g, InitialSeed ); } };
bool mitk::MovieGenerator::WriteCurrentFrameToMovie() { if (m_renderer) { m_renderer->GetRenderWindow()->MakeCurrent(); if(!m_initialized) { RenderingManager::GetInstance()->ForceImmediateUpdate(m_renderer->GetRenderWindow()); m_initialized = InitGenerator(); } if (!m_initialized) { TerminateGenerator(); return false; } int imgSize = 3 * m_width * m_height; GLbyte *data = new GLbyte[imgSize]; RenderingManager::GetInstance()->ForceImmediateUpdate(m_renderer->GetRenderWindow()); glReadPixels( 5, 5, m_width, m_height, GL_BGR, GL_UNSIGNED_BYTE, (void*)data ); AddFrame( data ); delete[] data; } return true; }
/*=================================================================*/ void NewSeeds( int consume ) { IntArrayPtr shuffle; int i, temp, g, ndx ; shuffle = new int[NumberOfGenerators+1]; g = consume % NumberOfGenerators ; AdvanceState( g, consume ) ; for ( i = 1 ; i <= NumberOfGenerators - 1; i++ ) { shuffle[i] = BddRandom( g, i + 1, NumberOfGenerators + 1 ) ; } ; for ( i = 1 ; i <= NumberOfGenerators - 1 ; i++ ) { ndx = shuffle[i] ; temp = Ig1[ndx] ; Ig1[ndx] = Ig1[i] ; Ig1[i] = temp ; temp = Ig2[ndx] ; Ig2[ndx] = Ig2[i] ; Ig2[i] = temp ; InitGenerator( i, InitialSeed ); } ; InitGenerator( NumberOfGenerators, InitialSeed ) ; delete(shuffle); };
bool mitk::MovieGenerator::WriteMovie() { bool ok = false; if (m_stepper) { if (m_renderer) m_renderer->GetRenderWindow()->MakeCurrent(); //m_stepper->First(); RenderingManager::GetInstance()->ForceImmediateUpdate(m_renderer->GetRenderWindow()); ok = InitGenerator(); if (!ok) { TerminateGenerator(); return false; } int imgSize = 3 * m_width * m_height; printf( "Video size = %i x %i\n", m_width, m_height ); GLbyte *data = new GLbyte[imgSize]; //duplicate steps if pingPong option is switched to on. unsigned int numOfSteps = m_stepper->GetSteps(); if( m_stepper->GetPingPong() ) numOfSteps*=2; for (unsigned int i=0; i<numOfSteps; i++) { if (m_renderer) m_renderer->GetRenderWindow()->MakeCurrent(); RenderingManager::GetInstance()->ForceImmediateUpdate(m_renderer->GetRenderWindow()); glReadPixels( 5, 5, m_width, m_height, GL_BGR, GL_UNSIGNED_BYTE, (void*)data ); AddFrame( data ); m_stepper->Next(); } ok = TerminateGenerator(); delete[] data; } return ok; }
/*=================================================================*/ void ResetGenerators( SeedType Where ){ for (int g = 1;g <= NumberOfGenerators; g++) InitGenerator(g,Where); };
/*=================================================================*/ void SetSeed( int g , int S1, int S2 ) { Ig1[g] = S1; Ig2[g] = S2; InitGenerator( g, InitialSeed ); };