Esempio n. 1
0
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");
}
Esempio n. 2
0
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");
}
Esempio n. 3
0
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.");
}