/// <summary> /// It handles the event fired when a field formatter is added to /// the collection of field formatters. /// </summary> /// <param name="sender"> /// The object sending the event. /// </param> /// <param name="e"> /// The event parameters. /// </param> private void OnFieldsFormatterAdded(object sender, FieldFormatterEventArgs e) { if (e.FieldFormatter is BitMapFieldFormatter) { // Check if is in our bitmap table. for (int i = _bitmaps.Length - 1; i >= 0; i--) { if (_bitmaps[i] == e.FieldFormatter.FieldNumber) { // It's in, don't add. return; } } if (_bitmaps[0] != int.MinValue) { // It's full, expand it. int[] bitmaps = new int[_bitmaps.Length * 2]; InitializeBitmapTable(bitmaps); // Copy previous data. for (int i = _bitmaps.Length - 1; i >= 0; i--) { bitmaps[_bitmaps.Length + i] = _bitmaps[i]; } _bitmaps = bitmaps; } _bitmaps[0] = e.FieldFormatter.FieldNumber; Array.Sort(_bitmaps); } }
/// <summary> /// It handles the event fired when a field formatter is removed from /// the collection of field formatters. /// </summary> /// <param name="sender"> /// The object sending the event. /// </param> /// <param name="e"> /// The event parameters. /// </param> private void OnFieldsFormatterRemoved(object sender, FieldFormatterEventArgs e) { if (e.FieldFormatter is BitMapFieldFormatter) { // Check if is in our bitmap table. for (int i = _bitmaps.Length - 1; i >= 0; i--) { if (_bitmaps[i] == e.FieldFormatter.FieldNumber) { // Located, erase it. _bitmaps[i] = int.MinValue; Array.Sort(_bitmaps); break; } } } }