Example #1
0
CQuestionManager::Question CQuestionManager::GenOneQuestion()
{
    Question ques = { { 0 }, 0 };
    CFileListManager &file_manager = GetInst( CFileListManager );
    int r = 0;

    // alpha image
    CImage img_alpha;
    CreateImgFromBuffer( file_manager.GetAlpha(), img_alpha );

    // 1.generate the background.
    CImage back;
    CreateImgFromBuffer( file_manager.GetRandBack(), back );
    r = random( 3 );
    CImage *img_cover;
    for( int i = 0; i < r; ++ i )
    {
        img_cover = MP_NEW CImage();
        CreateImgFromBuffer( file_manager.GetRandBack(), *img_cover );
        back.AlphaBlend( img_cover, 0, 0, ( random( 55 ) + 100 ) / 255.0f );
        MP_DELETE(img_cover);
    }

    // 2.generate small pictures.
    ques.answer = BlendSmallImage( back, img_alpha );

    // 3.covert the image to raw buffer.
    if( !back.ExportJpegToMemory( (BYTE*&) ques.data.buf, (DWORD&) ques.data.size, 85 ) )
    {
        ques.data.buf = 0;
        ques.data.size = 0;
        PutoutLog( LOG_FILE, LT_ERROR, "Export jpeg failed." );
    }

    DumpImage( &back );
    return ques;
}