@Override
  public ImageData filter(ImageData source, boolean copy) {
    if (null == source) {
      return null;
    }
    if (false == isActive()) {
      return source;
    }
    if (copy) {
      source = source.copy();
    }
    int size = size();

    for (int i = 0; i < size; i++) {
      ImageDataFilter<?> filter = m_filters.get(i);

      if ((null != filter) && (filter.isActive())) {
        ImageData imdata = filter.filter(source, false);

        if (null != imdata) {
          source = imdata;
        }
      }
    }
    return source;
  }