示例#1
0
        public int Reprocess(bool keepManualCommercialOverrides)
        {
            int result = 0;

            Log("Reprocessing.");

            var oldData = Data;
            var newData = new Data_info();

            newData.Fields          = oldData.Fields;
            newData.ManualCutFields = oldData.ManualCutFields;
            _data = newData;

            DetectThresholds();

            result = FindBlackFields();

            if (keepManualCommercialOverrides)
            {
                // Copy manual commercial overrides from old blocks to new blocks.
                if ((oldData.Blocks.Count > 0) && (newData.Blocks.Count > 0))
                {
                    int   oldIndex = 0;
                    int   newIndex = 0;
                    Block oldBlock = null;
                    Block newBlock = null;
                    while ((oldIndex < oldData.Blocks.Count) && (newIndex < newData.Blocks.Count))
                    {
                        var oldBlockNext = oldData.Blocks[oldIndex];
                        var newBlockNext = newData.Blocks[newIndex];

                        if (oldBlockNext.StartFieldNumber < newBlockNext.StartFieldNumber)
                        {
                            oldIndex++;
                        }
                        else if (oldBlockNext.StartFieldNumber > newBlockNext.StartFieldNumber)
                        {
                            newIndex++;
                        }
                        else
                        {
                            if ((oldBlock != null) && (newBlock != null))
                            {
                                newBlock.IsCommercialOverride = oldBlock.IsCommercialOverride;
                            }

                            oldBlock = oldBlockNext;
                            newBlock = newBlockNext;
                            oldIndex++;
                            newIndex++;
                            continue;
                        }
                        oldBlock = null;
                        newBlock = null;
                    }
                }
            }

            return(result);
        }
示例#2
0
        public Field Clone(Data_info container)
        {
            var f = new Field(container);

            foreach (var key in _values.Keys)
            {
                f._values[key] = _values[key];
            }
            f.FieldNumber = FieldNumber;
            f.PTS         = PTS;
            f.State       = State;
            f.Invalid     = Invalid;
            return(f);
        }
示例#3
0
 public Field(Data_info container)
 {
     _columnIds = container.ColumnIds;
 }