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); }