/// <summary> /// Create a tree node /// </summary> public TreeNode CreateTreeNode(OmrOutputData data) { TreeNode retVal = new TreeNode(); if (data is OmrBubbleData) { var bubble = (data as OmrBubbleData); retVal.Text = string.Format("{0} = {1}", bubble.Key, bubble.Value); retVal.ImageIndex = retVal.StateImageIndex = 1; } else if (data is OmrBarcodeData) { var barcode = (data as OmrBarcodeData); retVal.Text = string.Format("{0}", barcode.BarcodeData); retVal.ImageIndex = retVal.StateImageIndex = 2; } else if (data is OmrOutputDataCollection) { var collection = (data as OmrOutputDataCollection); retVal.Text = string.Format("{0}", collection.Id); if (data is OmrAggregateDataOutput) { retVal.Text += string.Format(" ({0} = {1})", (data as OmrAggregateDataOutput).Function, (data as OmrAggregateDataOutput).AggregateValue); } retVal.ImageIndex = retVal.StateImageIndex = 3; foreach (var itm in collection.Details) { retVal.Nodes.Add(this.CreateTreeNode(itm)); } } return(retVal); }
/// <summary> /// Already answered? /// </summary> public bool AlreadyAnswered(OmrOutputData data) { if (!(data is OmrBubbleData)) { return(false); } var bubble = data as OmrBubbleData; var existing = this.Details.OfType <OmrBubbleData>().FirstOrDefault(o => o.Key == bubble.Key); if (existing == null) { return(false); } else if (existing.BlobArea < bubble.BlobArea) { this.Details.Remove(existing); } else { return(true); } return(false); }