void emit_definitions( const wrSourceFile& srcFile ) { OSFileName fileName = GetDestFileName( srcFile.name, WR_SOURCE_FILE_EXT ); FileWriter outputStream( fileName.ToChars() ); mxTextWriter tw( &outputStream ); tw << MXC("/* This ALWAYS GENERATED file contains the implementation for the interfaces */\n") << MXC("/* File created by HLSL wrapper generator version ") << WR_VERSION_STRING << MXC(" ") << GetCurrentDateTimeString() << MXC(" */\n") ; tw << MXC("namespace ") << WR_NAMESPACE << MXC("\n{\n"); // Initialization order: // 1) Render targets // 2) State objects // 3) Shaders // 4) Input layouts // 5) Everything else /* TList< const wrRenderTarget* > sortedRTs; for( UINT iRenderTarget = 0; iRenderTarget < srcFile.renderTargets.Num(); iRenderTarget++ ) { sortedRTs.Add( &srcFile.renderTargets[ iRenderTarget ] ); } // Sort render targets by size. InsertionSort< const wrRenderTarget*, wrRenderTarget >( sortedRTs.ToPtr(), 0, sortedRTs.Num()-1 ); */ Emit_initialize_render_targets( srcFile.renderTargets, tw ); emit_line_separator_comment( tw ); Emit_initialize_sampler_states( srcFile.samplerStates, tw ); emit_line_separator_comment( tw ); emit_initialize_depth_stencil_states( srcFile.depthStencilStates, tw ); tw << MXC("void SetupGPUResources( const SHADER_LIB_CREATE& creationParams )\n{\n") ; tw << MXC("\n}//SetupGPUResources\n") << MXC("SetupRenderTargets( creationParams );\n") << MXC("SetupSamplerStates( creationParams );\n") << MXC("SetupDepthStencilStates( creationParams );\n") << MXC("SetupRasterizerStates( creationParams );\n") << MXC("SetupBlendStates( creationParams );\n") ; tw << MXC("\n}//SetupGPUResources\n") ; tw << MXC("\n}//namespace ") << WR_NAMESPACE << MXC("\n"); }
void emit_declarations( const wrSourceFile& srcFile ) { OSFileName fileName = GetDestFileName( srcFile.name, WR_HEADER_FILE_EXT ); FileWriter outputStream( fileName.ToChars() ); mxTextWriter tw( &outputStream ); tw << MXC("/* This ALWAYS GENERATED file contains the definitions for the interfaces */\n") << MXC("/* File created by HLSL wrapper generator version ") << WR_VERSION_STRING << MXC(" ") << GetCurrentDateTimeString() << MXC(" */\n") ; tw << MXC("namespace ") << WR_NAMESPACE << MXC("\n{\n"); tw << MXC("// Render targets\n"); emit_render_target_declarations( srcFile.renderTargets, tw ); tw << MXC("// Sampler states\n"); emit_sampler_state_declarations( srcFile.samplerStates, tw ); tw << MXC("// Depth-stencil states\n"); emit_depth_stencil_states_declarations( srcFile.depthStencilStates, tw ); tw << MXC("\n}//namespace ") << WR_NAMESPACE << MXC("\n"); }
void CTransformationThread::Process(size_t index) { ASSERT(index < files_.size()); ASSERT(files_[index] != 0); ASSERT(index < files_.size()); PhotoInfo& photo= *files_[index]; // output file Path output= GetDestFileName(index); if (transformation_.size() == 1 && transformation_.front().needs_input_file_) { transformation_.front().fn_transform_img_(photo.GetOriginalPath(), output); return; // exclusive transformation done, exit } // start loading SetOperationLabel(IDS_IMG_TRANSFORM_LOADING); CImageDecoderPtr decoder= photo.GetDecoder(); decoder->SetProgressCallback(boost::bind(&CTransformationThread::LinesDecoded, this, _1, _2, _3)); CSize img_size(0, 0); Dib dib; if (ImageStat status= decoder->DecodeImg(dib, img_size, false)) throw ImageStatMsg(status); SetOperationLabel(IDS_IMG_TRANSFORM_APPLYING); for (size_t i= 0; i < transformation_.size(); ++i) { ASSERT(!transformation_[i].needs_input_file_); transformation_[i].fn_transform_bmp_(dib); } // EXIF block std::vector<uint8> exif; if (params_.copy_exif_ && photo.IsExifDataPresent()) { ExifBlock exifBlock; if (photo.ReadExifBlock(exifBlock)) { exifBlock.ModifySizeFields(dib.GetSize(), true); exifBlock.GetExifMarkerBlock(exif); } } // start storing result SetOperationLabel(IDS_IMG_TRANSFORM_STORING); // destination file CFileDataDestination fdest(output.c_str()); // write transformed photo if (!encoder_->Encode(fdest, &dib, &exif)) throw _T("Error encoding JPEG file."); }