void ViewFile::View( HWND hWnd ) { int idx; DWORD caps; BitmapInfo bi; Bitmap *map = NULL; TCHAR buf[256]; LoadString(hInst, IDS_DB_VIEW_FILE, buf, _countof(buf)); if (!TheManager->SelectFileInputEx(&bi, hWnd, buf, TRUE)) return; if (bi.Name()[0]) idx = TheManager->ioList.ResolveDevice(&bi); else idx = TheManager->ioList.FindDevice(bi.Device()); if (idx == -1) goto error; caps = TheManager->ioList.GetDeviceCapabilities(bi.Device()); TCHAR title[MAX_PATH]; if (caps & BMMIO_EXTENSION) _tcscpy(title,bi.Filename()); else _tcscpy(title,bi.Device()); if (caps & BMMIO_OWN_VIEWER) { BitmapIO *IO = TheManager->ioList.CreateDevInstance(bi.Device()); if(IO) { BOOL succeeded = IO->ShowImage(hWnd,&bi); delete IO; if(!succeeded) goto normal_view; } } else { normal_view: SetCursor(LoadCursor(NULL,IDC_WAIT)); map = TheManager->Load(&bi); if (map) { map->Display(title, BMM_CN, TRUE, FALSE); } else { error: TCHAR text[128]; TCHAR tmp[128]; LoadString(hInst, IDS_DB_NO_VIEW, tmp, _countof(tmp)); wsprintf(text,tmp,bi.Name()); LoadString(hInst, IDS_DB_VIEW_ERROR, tmp, _countof(tmp)); MessageBox(hWnd,text,tmp,MB_OK); } SetCursor(LoadCursor(NULL,IDC_ARROW)); } }
void plStaticEnvLayer::RenderCubicMap( INode *node ) { int res, size; BOOL success = 0; TSTR fname, fullname; Bitmap *bm = NULL; TSTR path, filename, ext, thisFilename; BitmapInfo biOutFile; static TCHAR suffixes[ 6 ][ 4 ] = { "_FR", "_BK", "_LF", "_RT", "_UP", "_DN" }; Interface *ip = GetCOREInterface(); size = fBitmapPB->GetInt( kBmpTextureSize, ip->GetTime() ); if( size <= 0 ) { return; } thisFilename = fBitmapPB->GetStr( kBmpBaseFilename, ip->GetTime() ); if( thisFilename.isNull() ) { return; } SplitFilename( thisFilename, &path, &filename, &ext ); BOOL wasHid = node->IsNodeHidden(); node->Hide( TRUE ); // Create a blank bitmap biOutFile.SetWidth( size ); biOutFile.SetHeight( size ); biOutFile.SetType( BMM_TRUE_64 ); biOutFile.SetAspect( 1.0f ); biOutFile.SetCurrentFrame( 0 ); bm = TheManager->Create( &biOutFile ); Matrix3 nodeTM = node->GetNodeTM( ip->GetTime() ); Matrix3 tm; INode *root = ip->GetRootNode(); bm->Display( GetString( IDS_CUBIC_RENDER_TITLE ) ); /// Set up rendering contexts ViewParams vp; vp.projType = PROJ_PERSPECTIVE; vp.hither = .001f; vp.yon = 1.0e30f; vp.fov = M_PI/2.0f; if( fBitmapPB->GetInt( kBmpUseMAXAtmosphere ) ) { vp.nearRange = 0; vp.farRange = fBitmapPB->GetFloat( kBmpFarDistance ); } else { vp.nearRange = vp.farRange = 1.0e30f; } BOOL saveUseEnvMap = ip->GetUseEnvironmentMap(); ip->SetUseEnvironmentMap( false ); res = ip->OpenCurRenderer( &vp ); for( int i = 0; i < 6; i++ ) { tm = IGetViewTM( i ); tm.PreTranslate( -nodeTM.GetTrans() ); vp.affineTM = tm; // Construct filename thisFilename.printf( _T( "%s\\%s%s%s" ), path, filename, suffixes[ i ], ext ); res = ip->CurRendererRenderFrame( ip->GetTime(), bm, NULL, 1.0f, &vp ); if( !res ) goto fail; if( !IWriteBM( &biOutFile, bm, thisFilename ) ) goto fail; } success = 1; fail: ip->CloseCurRenderer(); ip->SetUseEnvironmentMap( saveUseEnvMap ); bm->DeleteThis(); node->Hide( wasHid ); if( success ) { for(int i = 0; i < 6; i++ ) { BitmapInfo bi; thisFilename.printf( _T( "%s\\%s%s%s" ), path, filename, suffixes[ i ], ext ); bi.SetName( thisFilename ); PBBitmap pbBitmap( bi ); fBitmapPB->SetValue( kBmpFrontBitmap + i, ip->GetTime(), &pbBitmap ); } fBitmapPB->GetMap()->UpdateUI( ip->GetTime() ); } }