public void PrepareFilter(IFeatureClass fc, IQueryFilter queryFilter)
		{
			// prepare filter for drawing

			// must add OID
			queryFilter.AddField(fc.OIDFieldName);

			m_ShapeType = fc.ShapeType;
			if (m_ShapeType == esriGeometryType.esriGeometryPoint)
			{
                if (m_sRotationField != null)
                {
                    if (m_sRotationField != "")
                    {
                        queryFilter.AddField(m_sRotationField);
                    }
                }
			}

			// save the fc and the query filter so that multiple cursors can be built in DrawSymbols
			m_pFeatureClass = fc;
			m_pQueryFilter = queryFilter;

			// prepare filters on constituent renderers so I can use SymbolByFeature in Draw
			if (m_pShapePatternRend != null)
					m_pShapePatternRend.PrepareFilter(fc, queryFilter);
			if (m_pColorRend1 != null)
					m_pColorRend1.PrepareFilter(fc, queryFilter);
			if (m_pColorRend2 != null)
					m_pColorRend2.PrepareFilter(fc, queryFilter);
			if (m_pSizeRend != null)
					m_pSizeRend.PrepareFilter(fc, queryFilter);

			// if we're combining colors from two (sequential) quantitative schemes, build color matrix now
			//   this gives flexibility to extend in future
			// in current impl. we determine combined color based on two colors, one from each constituent 
			//   ClassBreaksRenderer.  so, we could determine color on demand when drawing. but, by creating 
			//   the color matrix here and storing for later use, we leave open the possibility of swapping in 
			//   different logic for determining combined colors based on all known colors in each constituent
			//   renderer, not just the colors for the given feature
			if ((m_pColorRend1 != null) & (m_pColorRend2 != null))
			{
				if (! (m_eColorCombinationMethod == EColorCombinationType.enuComponents))
					BuildColorMatrix();
			}
			
			//implementation of IExportSupport
			AddExportFields(fc, queryFilter);

		}