public ProcessingResult <ICollection <ICroppedArea> > CropUserInput(Bitmap bitmapToCropIntoParts, Guid documentId, ITemplatePageDefinition definitionForCropping) { if (definitionForCropping == null) { return(ProcessingResult <ICollection <ICroppedArea> > .Failure(new PageDefinitionNotProvided())); } if (documentId == Guid.Empty) { return(ProcessingResult <ICollection <ICroppedArea> > .Failure(new MissingDocumentId())); } //Can this be more granular without downloading bitmap all over again? //Maybe parent holding bitmap and just passing it over to all children? using (bitmapToCropIntoParts) { var results = new List <ICroppedArea>(); foreach (var templateArea in definitionForCropping.DefinedAreas) { try { var croppedAreaParts = new List <OrderedBitmap>(); if (templateArea.InterestPoints == null || templateArea.InterestPoints.Count == 0) { croppedAreaParts.Add( new OrderedBitmap(0, new Crop(templateArea.AreaDimension).Apply(bitmapToCropIntoParts))); } else { foreach (var areaPart in templateArea.InterestPoints) { croppedAreaParts.Add( new OrderedBitmap(areaPart.OrderInArea, new Crop(areaPart.Dimension).Apply(bitmapToCropIntoParts))); } } results.Add(new CroppedArea(templateArea, croppedAreaParts, documentId)); } catch (UnsupportedImageFormatException) { return(ProcessingResult <ICollection <ICroppedArea> > .Failure(new UnsupportedImageFormat())); } catch (Exception ex) { ProcessingResult <ICollection <ICroppedArea> > .Failure(new UncaughtException(ex)); } } return(ProcessingResult <ICollection <ICroppedArea> > .Success(results)); } }
public TemplateModificationResult AddPageDefinition(ITemplatePageDefinition pageDefinition) { if (pageDefinition == null) { return(TemplateModificationResult.Failure(new EmptyInput())); } if (_definedPages.ContainsKey(pageDefinition.PageNumber)) { return(TemplateModificationResult.Failure(new DuplicatedPageNumber(pageDefinition.PageNumber))); } _definedPages.Add(pageDefinition.PageNumber, pageDefinition); return(TemplateModificationResult.Success()); }
public ProcessingResult <Bitmap> ExtractHandwrittenInput(Bitmap userInput, ITemplatePageDefinition templatePage) { if (userInput == null || templatePage == null) { return(ProcessingResult <Bitmap> .Failure(new EmptyInput())); } using (userInput) { Bitmap canvasBitmap = null; try { canvasBitmap = _canvasBitmapQueryHandler.Handle( new GetCanvasBitmapForTemplatePage { TemplatePageId = templatePage.Id }).FileData.AsBitmap(); if (canvasBitmap == null) { //TODO: ResultMessage for failed HTTP request or pipe from ResourceQueryHandler return(new ProcessingResult <Bitmap>(StepOutcome.Failure, null, null)); } if (canvasBitmap.Size != userInput.Size) { using (var oldCanvas = canvasBitmap) { canvasBitmap = new ResizeBilinear(userInput.Width, userInput.Height).Apply(oldCanvas); } } var result = new Invert().Apply(new Difference(userInput).Apply(canvasBitmap)); return(ProcessingResult <Bitmap> .Success(result)); } catch (UnsupportedImageFormatException) { return(ProcessingResult <Bitmap> .Failure(new UnsupportedImageFormat())); } finally { canvasBitmap?.Dispose(); } } }
public PageAreaNotInPageDefinition(Guid templatePagePartId, ITemplatePageDefinition pageDefinition) { PagePartId = templatePagePartId; PageDefinitionId = pageDefinition.Id; }