use SkRegion instead of SkScan/SkBlitter, as we want to privatize the latter
git-svn-id: http://skia.googlecode.com/svn/trunk@5037 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
59823f7f3b
commit
6db9375b4f
@ -8,25 +8,9 @@
|
||||
|
||||
|
||||
#include "Sk2DPathEffect.h"
|
||||
#include "SkBlitter.h"
|
||||
#include "SkFlattenableBuffers.h"
|
||||
#include "SkPath.h"
|
||||
#include "SkScan.h"
|
||||
|
||||
class Sk2DPathEffectBlitter : public SkBlitter {
|
||||
public:
|
||||
Sk2DPathEffectBlitter(Sk2DPathEffect* pe, SkPath* dst)
|
||||
: fPE(pe), fDst(dst) {}
|
||||
|
||||
virtual void blitH(int x, int y, int count) {
|
||||
fPE->nextSpan(x, y, count, fDst);
|
||||
}
|
||||
private:
|
||||
Sk2DPathEffect* fPE;
|
||||
SkPath* fDst;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include "SkRegion.h"
|
||||
|
||||
Sk2DPathEffect::Sk2DPathEffect(const SkMatrix& mat) : fMatrix(mat) {
|
||||
fMatrixIsInvertible = mat.invert(&fInverse);
|
||||
@ -37,7 +21,6 @@ bool Sk2DPathEffect::filterPath(SkPath* dst, const SkPath& src, SkStrokeRec*) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Sk2DPathEffectBlitter blitter(this, dst);
|
||||
SkPath tmp;
|
||||
SkIRect ir;
|
||||
|
||||
@ -45,7 +28,17 @@ bool Sk2DPathEffect::filterPath(SkPath* dst, const SkPath& src, SkStrokeRec*) {
|
||||
tmp.getBounds().round(&ir);
|
||||
if (!ir.isEmpty()) {
|
||||
this->begin(ir, dst);
|
||||
SkScan::FillPath(tmp, ir, &blitter);
|
||||
|
||||
SkRegion rgn;
|
||||
rgn.setPath(tmp, SkRegion(ir));
|
||||
SkRegion::Iterator iter(rgn);
|
||||
for (; !iter.done(); iter.next()) {
|
||||
const SkIRect& rect = iter.rect();
|
||||
for (int y = rect.fTop; y < rect.fBottom; ++y) {
|
||||
this->nextSpan(rect.fLeft, y, rect.width(), dst);
|
||||
}
|
||||
}
|
||||
|
||||
this->end(dst);
|
||||
}
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user