bool ProcessInstance::CanExecuteOn( const ImageVariant& image, String& whyNot ) const { if ( !image.IsSharedImage() || !image.IsCompletelySelected() ) { ImageVariant tmp; tmp.CreateSharedImageAs( image ).AssignImage( image ); return CanExecuteOn( tmp, whyNot ); } image.PushSelections(); image.ResetSelections(); ImageInfo info1( *image ); image.PopSelections(); whyNot.Clear(); whyNot.Reserve( WHYNOT_MAXLENGTH ); bool ok = (*API->Process->ValidateImageExecution)( handle, image.SharedImageHandle(), whyNot.c_str(), WHYNOT_MAXLENGTH ) != api_false; image.PushSelections(); image.ResetSelections(); ImageInfo info2( *image ); image.PopSelections(); if ( info1 != info2 ) APIHackingAttempt( "ValidateImageExecution" ); return ok; }
bool ProcessInstance::ExecuteOn( ImageVariant& image, const IsoString& hints ) { if ( !image.IsSharedImage() || !image.IsCompletelySelected() ) { ImageVariant tmp; tmp.CreateSharedImageAs( image ).AssignImage( image ); if ( !ExecuteOn( tmp ) ) return false; if ( image.IsCompletelySelected() ) image.AssignImage( tmp ); else image.Apply( tmp, ImageOp::Mov, image.SelectedRectangle().LeftTop() ); return true; } return (*API->Process->ExecuteOnImage)( handle, image.SharedImageHandle(), hints.c_str(), 0/*flags*/ ) != api_false; }