#include <ULIS>
void OnEventCompleteCallDirty(
const FRectI& iGeometry,
void* iUserData )
{
reinterpret_cast< FBlock* >( iUserData )->Dirty( iGeometry );
}
int
main( int argc, char *argv[] ) {
FHardwareMetrics hw;
FBlock blockA( 1024, 1024, fmt );
FBlock blockB( 1024, 1024, fmt );
FBlock blockC( 1024, 1024, fmt );
FBlock canvas( 1024, 1024, fmt );
{
ctx.Clear( blockA, blockA.Rect(), policy_mono_chunk, 0, nullptr, &events[0] );
ctx.Clear( blockB, blockB.Rect(), policy_mono_chunk, 0, nullptr, &events[1] );
ctx.Clear( blockC, blockC.Rect(), policy_mono_chunk, 0, nullptr, &events[2] );
ctx.Fill( blockA, blockA.Rect(), colors[0], policy_mono_chunk, 1, &events[0], &events[3] );
ctx.Fill( blockB, blockB.Rect(), colors[1], policy_mono_chunk, 1, &events[1], &events[4] );
ctx.Fill( blockC, blockC.Rect(), colors[2], policy_mono_chunk, 1, &events[2], &events[5] );
ctx.Blend( blockC, canvas, blockC.Rect(),
FVec2I( 0, 0 ),
Blend_Normal,
Alpha_Normal, 1.f, policy_cache_efficient, 3, &events[3], &events[6] );
ctx.Blend( blockA, canvas, blockA.Rect(),
FVec2I( 0, 0 ),
Blend_Normal,
Alpha_Normal, 0.5f, policy_cache_efficient, 1, &events[6], &events[7] );
ctx.Blend( blockB, canvas, blockB.Rect(),
FVec2I( 0, 0 ),
Blend_Normal,
Alpha_Normal, 0.1f, policy_cache_efficient, 1, &events[7], &events[8] );
ctx.BlendAA( blockB, canvas,
FRectI( 0, 0, 512, 512 ),
FVec2F( 64.5f, 64.5f ),
Blend_Normal,
Alpha_Normal, 1.f, policy_cache_efficient, 1, &events[9], &events[10] );
ctx.BlendTiled( blockA, canvas,
FRectI( 16, 16, 32, 32 ),
FRectI( 512, 512, 128, 128 ),
FVec2I(),
Blend_Normal,
Alpha_Normal, 1.f, policy_cache_efficient, 1, &events[10 ], &events[11] );
ctx.Finish();
}
return 0;
}