public void ResolveBrush(CircularGradientBrush linearGrBrush) { //for gradient : int pairCount = linearGrBrush.PairCount; //resolve linear gradient to agg object if (!isInit) { //temp fix isInit = true; } if (_moreSpanGenertors == null) { _moreSpanGenertors = new List <GradientSpanPart>(); } else { _moreSpanGenertors.Clear(); } // //more than 1 pair int partNo = 0; int partCount = linearGrBrush.PairCount; foreach (LinearGradientPair pair in linearGrBrush.GetColorPairIter()) { _grSpanGenPart = new GradientSpanPart(); _grSpanGenPart.SetData(_gvcCircular, pair); _grSpanGenPart._spanGenGr.PartNo = partNo; _grSpanGenPart._spanGenGr.IsLastPart = (partNo == partCount - 1); _moreSpanGenertors.Add(_grSpanGenPart); partNo++; } _grSpanGenPart = _moreSpanGenertors[0]; for (int i = 0; i < partCount - 1; ++i) { GradientSpanPart part = _moreSpanGenertors[i]; part._spanGenGr.RequestGradientPart += (fromPartNo) => { if (fromPartNo != partCount - 1) { return(_moreSpanGenertors[fromPartNo + 1]._spanGenGr); } else { return(null); } }; } }
public void ResolveBrush(LinearGradientBrush linearGrBrush) { //for gradient : int pairCount = linearGrBrush.PairCount; //resolve linear gradient to agg object if (!isInit) { //temp fix isInit = true; } if (_moreSpanGenertors == null) { _moreSpanGenertors = new List <GradientSpanPart>(); } else { _moreSpanGenertors.Clear(); } // //more than 1 pair int partNo = 0; int partCount = linearGrBrush.PairCount; foreach (LinearGradientPair pair in linearGrBrush.GetColorPairIter()) { IGradientValueCalculator gvc = null; switch (pair.Direction) { case LinearGradientPair.GradientDirection.Vertical: gvc = _gvcY; break; case LinearGradientPair.GradientDirection.Horizontal: gvc = _gvcX; break; default: //temp, //TODO: review here gvc = _gvcX; break; } _grSpanGenPart = new GradientSpanPart(); _grSpanGenPart.SetData(gvc, pair); _grSpanGenPart._spanGenGr.PartNo = partNo; _grSpanGenPart._spanGenGr.IsLastPart = (partNo == partCount - 1); _moreSpanGenertors.Add(_grSpanGenPart); partNo++; } _grSpanGenPart = _moreSpanGenertors[0]; for (int i = 0; i < partCount - 1; ++i) { GradientSpanPart part = _moreSpanGenertors[i]; part._spanGenGr.RequestGradientPart += (fromPartNo) => { if (fromPartNo < partCount) { return(_moreSpanGenertors[fromPartNo]._spanGenGr); } else { return(null); } }; } }