add isConvex() hit to SkPath, to be used to speed up fills and opengl

set linewidth in gldevice for hair rects
remove some cruft from samples
add more gl-unimpl messages



git-svn-id: http://skia.googlecode.com/svn/trunk@199 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
reed@android.com 2009-06-03 02:35:01 +00:00
Родитель 4a7fd2bd27
Коммит 6b82d1adc6
9 изменённых файлов: 98 добавлений и 70 удалений

Просмотреть файл

@ -82,16 +82,28 @@ public:
*/
void toggleInverseFillType() { fFillType ^= 2; }
/** Returns true if the path is flagged as being convex. This is not a
confirmed by any analysis, it is just the value set earlier.
*/
bool isConvex() const { return fIsConvex; }
/** Set the isConvex flag to true or false. Convex paths may draw faster if
this flag is set, though setting this to true on a path that is in fact
not convex can give undefined results when drawn. Paths default to
isConvex == false
*/
void setIsConvex(bool isConvex) { fIsConvex = (isConvex != 0); }
/** Clear any lines and curves from the path, making it empty. This frees up
internal storage associated with those segments.
This does NOT change the fill-type setting.
This does NOT change the fill-type setting nor isConvex
*/
void reset();
/** Similar to reset(), in that all lines and curves are removed from the
path. However, any internal storage for those lines/curves is retained,
making reuse of the path potentially faster.
This does NOT change the fill-type setting.
This does NOT change the fill-type setting nor isConvex
*/
void rewind();
@ -562,6 +574,7 @@ private:
mutable SkRect fBounds;
mutable uint8_t fBoundsIsDirty;
uint8_t fFillType;
uint8_t fIsConvex;
// called, if dirty, by getBounds()
void computeBounds() const;

Просмотреть файл

@ -31,8 +31,6 @@
#include <math.h>
extern void Dump();
static inline SkPMColor rgb2gray(SkPMColor c)
{
unsigned r = SkGetPackedR32(c);
@ -427,7 +425,6 @@ protected:
break;
} while (true);
}
Dump();
}
void drawPicture(SkCanvas* canvas, int spriteOffset)
@ -710,7 +707,6 @@ SkCornerPathEffect.h:28:class SkCornerPathEffect : public SkPathEffect {
void drawOneRaster(SkCanvas* canvas)
{
canvas->save();
// canvas->scale(SK_Scalar1*2, SK_Scalar1*2, 0, 0);
SkScalar x = SkIntToScalar(20);
SkScalar y = SkIntToScalar(40);
@ -742,31 +738,13 @@ SkCornerPathEffect.h:28:class SkCornerPathEffect : public SkPathEffect {
paint.setStyle(SkPaint::kStroke_Style);
canvas->drawOval(oval, paint);
paint.setStyle(SkPaint::kFill_Style);
if (0)
{
SkPath path;
paint.getTextPath(str.c_str(), str.size(), x + SkIntToScalar(260), y, &path);
canvas->drawPath(path, paint);
}
y += paint.getFontSpacing();
}
canvas->restore();
if (0)
{
SkPoint pts[] = { 0, 0, 0, SkIntToScalar(150) };
SkColor colors[] = { 0xFFE6E6E6, 0xFFFFFFFF };
SkShader* s = SkGradientShader::CreateLinear(pts, colors, NULL, 2, SkShader::kClamp_TileMode);
paint.reset();
paint.setShader(s)->unref();
canvas->drawRectCoords(0, 0, SkIntToScalar(120), SkIntToScalar(150), paint);
}
if (1)
{
if (1) {
SkAvoidXfermode mode(SK_ColorWHITE, 0xFF,
SkAvoidXfermode::kTargetColor_Mode);
SkPaint paint;

Просмотреть файл

@ -214,11 +214,11 @@ static void drawpatches(SkCanvas* canvas, const SkPaint& paint, int nu, int nv,
SkAutoCanvasRestore ar(canvas, true);
patch->draw(canvas, paint, 10, 10, false, false);
canvas->translate(SkIntToScalar(300), 0);
canvas->translate(SkIntToScalar(180), 0);
patch->draw(canvas, paint, 10, 10, true, false);
canvas->translate(SkIntToScalar(300), 0);
canvas->translate(SkIntToScalar(180), 0);
patch->draw(canvas, paint, 10, 10, false, true);
canvas->translate(SkIntToScalar(300), 0);
canvas->translate(SkIntToScalar(180), 0);
patch->draw(canvas, paint, 10, 10, true, true);
}
@ -237,20 +237,20 @@ public:
}
fShader1 = make_shader1(fSize1);
const SkScalar S = SkIntToScalar(90);
const SkScalar T = SkIntToScalar(64);
fPts[0].set(S*1, T);
fPts[1].set(S*2, T);
fPts[2].set(S*3, T);
fPts[3].set(S*4, T);
fPts[4].set(S*4, T*2);
fPts[5].set(S*4, T*3);
fPts[6].set(S*4, T*4);
fPts[7].set(S*3, T*4);
fPts[8].set(S*2, T*4);
fPts[9].set(S*1, T*4);
fPts[10].set(S*1, T*3);
fPts[11].set(S*1, T*2);
const SkScalar S = SkIntToScalar(50);
const SkScalar T = SkIntToScalar(40);
fPts[0].set(S*0, T);
fPts[1].set(S*1, T);
fPts[2].set(S*2, T);
fPts[3].set(S*3, T);
fPts[4].set(S*3, T*2);
fPts[5].set(S*3, T*3);
fPts[6].set(S*3, T*4);
fPts[7].set(S*2, T*4);
fPts[8].set(S*1, T*4);
fPts[9].set(S*0, T*4);
fPts[10].set(S*0, T*3);
fPts[11].set(S*0, T*2);
}
virtual ~PatchView() {
@ -352,6 +352,8 @@ protected:
return;
}
canvas->translate(SkIntToScalar(20), 0);
Patch patch;
paint.setShader(fShader0);

Просмотреть файл

@ -436,7 +436,7 @@ public:
test_breakText();
test_typefaceCache();
test_poly();
// test_poly();
}
virtual ~TextSpeedView()

Просмотреть файл

@ -156,17 +156,11 @@ private:
}
};
void Dump()
{
SkBlockHeader::Dump();
}
void ValidateHeap()
{
SkBlockHeader::Validate();
}
#else
void Dump() {}
void ValidateHeap() {}
#endif

Просмотреть файл

@ -28,6 +28,9 @@
It captures some state about the path up front (i.e. if it already has a
cached bounds), and the if it can, it updates the cache bounds explicitly,
avoiding the need to revisit all of the points in getBounds().
It also notes if the path was originally empty, and if so, sets isConvex
to true. Thus it can only be used if the contour being added is convex.
*/
class SkAutoPathBoundsUpdate {
public:
@ -42,6 +45,7 @@ public:
}
~SkAutoPathBoundsUpdate() {
fPath->setIsConvex(fEmpty);
if (fEmpty) {
fPath->fBounds = fRect;
fPath->fBoundsIsDirty = false;
@ -52,13 +56,13 @@ public:
}
private:
const SkPath* fPath;
SkPath* fPath;
SkRect fRect;
bool fDirty;
bool fEmpty;
// returns true if we should proceed
void init(const SkPath* path) {
void init(SkPath* path) {
fPath = path;
fDirty = path->fBoundsIsDirty;
fEmpty = path->isEmpty();
@ -91,7 +95,9 @@ static void compute_pt_bounds(SkRect* bounds, const SkTDArray<SkPoint>& pts) {
////////////////////////////////////////////////////////////////////////////
SkPath::SkPath() : fBoundsIsDirty(true), fFillType(kWinding_FillType) {}
SkPath::SkPath() : fBoundsIsDirty(true), fFillType(kWinding_FillType) {
fIsConvex = false;
}
SkPath::SkPath(const SkPath& src) {
SkDEBUGCODE(src.validate();)
@ -111,12 +117,15 @@ SkPath& SkPath::operator=(const SkPath& src) {
fVerbs = src.fVerbs;
fFillType = src.fFillType;
fBoundsIsDirty = src.fBoundsIsDirty;
fIsConvex = src.fIsConvex;
}
SkDEBUGCODE(this->validate();)
return *this;
}
bool operator==(const SkPath& a, const SkPath& b) {
// note: don't need to look at isConvex or bounds, since just comparing the
// raw data is sufficient.
return &a == &b ||
(a.fFillType == b.fFillType && a.fVerbs == b.fVerbs && a.fPts == b.fPts);
}
@ -130,6 +139,7 @@ void SkPath::swap(SkPath& other) {
fVerbs.swap(other.fVerbs);
SkTSwap<uint8_t>(fFillType, other.fFillType);
SkTSwap<uint8_t>(fBoundsIsDirty, other.fBoundsIsDirty);
SkTSwap<uint8_t>(fIsConvex, other.fIsConvex);
}
}

Просмотреть файл

@ -169,6 +169,7 @@ SkGLDevice::TexCache* SkGLDevice::setupGLPaintShader(const SkPaint& paint) {
SkMatrix matrix;
SkShader::TileMode tileModes[2];
if (!shader->asABitmap(&bitmap, &matrix, tileModes)) {
SkGL_unimpl("shader->asABitmap() == false");
return NULL;
}
@ -232,6 +233,7 @@ void SkGLDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
this->updateMatrixClip());
}
// must be in SkCanvas::PointMode order
static const GLenum gPointMode2GL[] = {
GL_POINTS,
GL_LINES,
@ -339,6 +341,7 @@ void SkGLDevice::drawRect(const SkDraw& draw, const SkRect& rect,
vertex[2].setScalars(rect.fRight, rect.fBottom);
vertex[3].setScalars(rect.fLeft, rect.fBottom);
vertex[4].setScalars(rect.fLeft, rect.fTop);
glLineWidth(1);
}
} else {
vertCount = 4;
@ -355,6 +358,7 @@ void SkGLDevice::drawPath(const SkDraw& draw, const SkPath& path,
const SkPaint& paint) {
TRACE_DRAW("coreDrawPath", this, draw);
if (paint.getStyle() == SkPaint::kStroke_Style) {
SkGL_unimpl("stroke path");
return;
}
@ -636,6 +640,7 @@ static void SkGL_Draw1Glyph(const SkDraw1Glyph& state, const SkGlyph& glyph,
}
strike = textCache->addGlyphAndBind(glyph, aa, &offset);
if (NULL == strike) {
SkGL_unimpl("addGlyphAndBind failed, too big");
// too big to cache, need to draw as is...
return;
}
@ -772,6 +777,7 @@ void SkGLDevice::drawText(const SkDraw& draw, const void* text,
- option to have draw call the font cache, which we could patch (?)
*/
if (draw.fMatrix->getType() & SkMatrix::kPerspective_Mask) {
SkGL_unimpl("drawText in perspective");
return;
}
@ -787,6 +793,7 @@ void SkGLDevice::drawPosText(const SkDraw& draw, const void* text,
SkScalar constY, int scalarsPerPos,
const SkPaint& paint) {
if (draw.fMatrix->getType() & SkMatrix::kPerspective_Mask) {
SkGL_unimpl("drawPosText in perspective");
return;
}
@ -801,6 +808,6 @@ void SkGLDevice::drawPosText(const SkDraw& draw, const void* text,
void SkGLDevice::drawTextOnPath(const SkDraw& draw, const void* text,
size_t byteLength, const SkPath& path,
const SkMatrix* m, const SkPaint& paint) {
// not supported yet
SkGL_unimpl("drawTextOnPath");
}

Просмотреть файл

@ -1,11 +1,27 @@
#include "Test.h"
#include "SkPath.h"
static void check_convex_bounds(skiatest::Reporter* reporter, const SkPath& p,
const SkRect& bounds) {
REPORTER_ASSERT(reporter, p.isConvex());
REPORTER_ASSERT(reporter, p.getBounds() == bounds);
SkPath p2(p);
REPORTER_ASSERT(reporter, p2.isConvex());
REPORTER_ASSERT(reporter, p2.getBounds() == bounds);
SkPath other;
other.swap(p2);
REPORTER_ASSERT(reporter, other.isConvex());
REPORTER_ASSERT(reporter, other.getBounds() == bounds);
}
static void TestPath(skiatest::Reporter* reporter) {
SkPath p, p2;
SkRect bounds, bounds2;
REPORTER_ASSERT(reporter, p.isEmpty());
REPORTER_ASSERT(reporter, !p.isConvex());
REPORTER_ASSERT(reporter, p.getFillType() == SkPath::kWinding_FillType);
REPORTER_ASSERT(reporter, !p.isInverseFillType());
REPORTER_ASSERT(reporter, p == p2);
@ -14,8 +30,20 @@ static void TestPath(skiatest::Reporter* reporter) {
REPORTER_ASSERT(reporter, p.getBounds().isEmpty());
bounds.set(0, 0, SK_Scalar1, SK_Scalar1);
p.setIsConvex(false);
p.addRoundRect(bounds, SK_Scalar1, SK_Scalar1);
check_convex_bounds(reporter, p, bounds);
p.reset();
p.setIsConvex(false);
p.addOval(bounds);
check_convex_bounds(reporter, p, bounds);
p.reset();
p.setIsConvex(false);
p.addRect(bounds);
REPORTER_ASSERT(reporter, bounds == p.getBounds());
check_convex_bounds(reporter, p, bounds);
REPORTER_ASSERT(reporter, p != p2);
REPORTER_ASSERT(reporter, !(p == p2));

Просмотреть файл

@ -44,13 +44,11 @@
0064EE490FC72BEE00D71FB0 /* SamplePoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE150FC72BEE00D71FB0 /* SamplePoints.cpp */; };
0064EE4B0FC72BEE00D71FB0 /* SampleRegion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE170FC72BEE00D71FB0 /* SampleRegion.cpp */; };
0064EE4E0FC72BEE00D71FB0 /* SampleStrokeText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE1A0FC72BEE00D71FB0 /* SampleStrokeText.cpp */; };
0064EE500FC72BEE00D71FB0 /* SampleText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE1C0FC72BEE00D71FB0 /* SampleText.cpp */; };
0064EE510FC72BEE00D71FB0 /* SampleTextAlpha.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE1D0FC72BEE00D71FB0 /* SampleTextAlpha.cpp */; };
0064EE520FC72BEE00D71FB0 /* SampleTextEffects.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE1E0FC72BEE00D71FB0 /* SampleTextEffects.cpp */; };
0064EE530FC72BEE00D71FB0 /* SampleTextOnPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE1F0FC72BEE00D71FB0 /* SampleTextOnPath.cpp */; };
0064EE540FC72BEE00D71FB0 /* SampleTiling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE200FC72BEE00D71FB0 /* SampleTiling.cpp */; };
0064EE550FC72BEE00D71FB0 /* SampleTypeface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE210FC72BEE00D71FB0 /* SampleTypeface.cpp */; };
0064EE570FC72BEE00D71FB0 /* SampleXfermodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE230FC72BEE00D71FB0 /* SampleXfermodes.cpp */; };
0064EE580FC72BEE00D71FB0 /* vertexdump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE240FC72BEE00D71FB0 /* vertexdump.cpp */; };
0064EE960FC7318500D71FB0 /* SkImageRefPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE930FC7318500D71FB0 /* SkImageRefPool.cpp */; };
0064EE970FC7318500D71FB0 /* SkImageRef_GlobalPool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE940FC7318500D71FB0 /* SkImageRef_GlobalPool.cpp */; };
@ -75,11 +73,9 @@
006DC7EC0FC7475F00BF5F45 /* libcore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 006DC7E90FC7475900BF5F45 /* libcore.a */; };
00A728490FD43E7600D5051F /* SampleMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE0C0FC72BEE00D71FB0 /* SampleMovie.cpp */; };
00A7284D0FD43E8900D5051F /* SkMovie.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A7284B0FD43E8900D5051F /* SkMovie.cpp */; };
00A7288C0FD4702A00D5051F /* SampleTestGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00A7288B0FD4702A00D5051F /* SampleTestGL.cpp */; };
2762F6040FCCC832002BD8B4 /* SampleShapes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE190FC72BEE00D71FB0 /* SampleShapes.cpp */; };
2762F6420FCCCA6C002BD8B4 /* SkFlipPixelRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2762F6400FCCCA6C002BD8B4 /* SkFlipPixelRef.cpp */; };
2762F6430FCCCA6C002BD8B4 /* SkPageFlipper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2762F6410FCCCA6C002BD8B4 /* SkPageFlipper.cpp */; };
2762F6C20FCCCBC0002BD8B4 /* SampleAll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EDF00FC72BEE00D71FB0 /* SampleAll.cpp */; };
2778363D0FCF8908006549E4 /* SkGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 277836370FCF8908006549E4 /* SkGL.cpp */; };
2778363E0FCF8908006549E4 /* SkGLCanvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 277836380FCF8908006549E4 /* SkGLCanvas.cpp */; };
2778363F0FCF8908006549E4 /* SkGLDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 277836390FCF8908006549E4 /* SkGLDevice.cpp */; };
@ -87,8 +83,11 @@
277836410FCF8908006549E4 /* SkGLTextCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2778363B0FCF8908006549E4 /* SkGLTextCache.cpp */; };
277836420FCF8908006549E4 /* SkTextureCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2778363C0FCF8908006549E4 /* SkTextureCache.cpp */; };
277836500FCF89F9006549E4 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2778364F0FCF89F9006549E4 /* OpenGL.framework */; };
2779F2330FD61326005D376E /* SamplePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE100FC72BEE00D71FB0 /* SamplePatch.cpp */; };
2779F2540FD614D1005D376E /* SampleAll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EDF00FC72BEE00D71FB0 /* SampleAll.cpp */; };
2779F2610FD61678005D376E /* SampleXfermodes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE230FC72BEE00D71FB0 /* SampleXfermodes.cpp */; };
2779F27E0FD61829005D376E /* SampleText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE1C0FC72BEE00D71FB0 /* SampleText.cpp */; };
27E1AAA70FD0C51B00098FC5 /* SampleVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE220FC72BEE00D71FB0 /* SampleVertices.cpp */; };
27E1AACB0FD0C87200098FC5 /* SamplePatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE100FC72BEE00D71FB0 /* SamplePatch.cpp */; };
27E1AAE00FD0C9B500098FC5 /* SampleShaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE180FC72BEE00D71FB0 /* SampleShaders.cpp */; };
27E1AB2B0FD0D06600098FC5 /* SamplePageFlip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0064EE0F0FC72BEE00D71FB0 /* SamplePageFlip.cpp */; };
8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
@ -214,7 +213,6 @@
0096585B0FC7201800C3AE15 /* maccore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = maccore.xcodeproj; path = ../maccore/maccore.xcodeproj; sourceTree = SOURCE_ROOT; };
00A7284B0FD43E8900D5051F /* SkMovie.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkMovie.cpp; path = ../../src/images/SkMovie.cpp; sourceTree = SOURCE_ROOT; };
00A7284C0FD43E8900D5051F /* SkMovie_gif.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkMovie_gif.cpp; path = ../../src/images/SkMovie_gif.cpp; sourceTree = SOURCE_ROOT; };
00A7288B0FD4702A00D5051F /* SampleTestGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SampleTestGL.cpp; sourceTree = "<group>"; };
089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
2762F6400FCCCA6C002BD8B4 /* SkFlipPixelRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SkFlipPixelRef.cpp; path = ../../src/images/SkFlipPixelRef.cpp; sourceTree = SOURCE_ROOT; };
@ -266,7 +264,6 @@
0064EDFB0FC72BEE00D71FB0 /* SampleEmboss.cpp */,
0064EDFC0FC72BEE00D71FB0 /* SampleEncode.cpp */,
0064EDFD0FC72BEE00D71FB0 /* SampleFillType.cpp */,
00A7288B0FD4702A00D5051F /* SampleTestGL.cpp */,
0064EDFE0FC72BEE00D71FB0 /* SampleFilter.cpp */,
0064EDFF0FC72BEE00D71FB0 /* SampleFilter2.cpp */,
0064EE000FC72BEE00D71FB0 /* SampleFontCache.cpp */,
@ -592,14 +589,12 @@
0064EE490FC72BEE00D71FB0 /* SamplePoints.cpp in Sources */,
0064EE4B0FC72BEE00D71FB0 /* SampleRegion.cpp in Sources */,
0064EE4E0FC72BEE00D71FB0 /* SampleStrokeText.cpp in Sources */,
0064EE500FC72BEE00D71FB0 /* SampleText.cpp in Sources */,
0064EE510FC72BEE00D71FB0 /* SampleTextAlpha.cpp in Sources */,
0064EE520FC72BEE00D71FB0 /* SampleTextEffects.cpp in Sources */,
0064EE530FC72BEE00D71FB0 /* SampleTextOnPath.cpp in Sources */,
0064EE540FC72BEE00D71FB0 /* SampleTiling.cpp in Sources */,
0064EE550FC72BEE00D71FB0 /* SampleTypeface.cpp in Sources */,
0064EE480FC72BEE00D71FB0 /* SamplePicture.cpp in Sources */,
0064EE570FC72BEE00D71FB0 /* SampleXfermodes.cpp in Sources */,
0064EE580FC72BEE00D71FB0 /* vertexdump.cpp in Sources */,
0064EE960FC7318500D71FB0 /* SkImageRefPool.cpp in Sources */,
0064EE970FC7318500D71FB0 /* SkImageRef_GlobalPool.cpp in Sources */,
@ -622,7 +617,6 @@
2762F6040FCCC832002BD8B4 /* SampleShapes.cpp in Sources */,
2762F6420FCCCA6C002BD8B4 /* SkFlipPixelRef.cpp in Sources */,
2762F6430FCCCA6C002BD8B4 /* SkPageFlipper.cpp in Sources */,
2762F6C20FCCCBC0002BD8B4 /* SampleAll.cpp in Sources */,
2778363D0FCF8908006549E4 /* SkGL.cpp in Sources */,
2778363E0FCF8908006549E4 /* SkGLCanvas.cpp in Sources */,
2778363F0FCF8908006549E4 /* SkGLDevice.cpp in Sources */,
@ -630,12 +624,14 @@
277836410FCF8908006549E4 /* SkGLTextCache.cpp in Sources */,
277836420FCF8908006549E4 /* SkTextureCache.cpp in Sources */,
27E1AAA70FD0C51B00098FC5 /* SampleVertices.cpp in Sources */,
27E1AACB0FD0C87200098FC5 /* SamplePatch.cpp in Sources */,
27E1AAE00FD0C9B500098FC5 /* SampleShaders.cpp in Sources */,
27E1AB2B0FD0D06600098FC5 /* SamplePageFlip.cpp in Sources */,
00A728490FD43E7600D5051F /* SampleMovie.cpp in Sources */,
00A7284D0FD43E8900D5051F /* SkMovie.cpp in Sources */,
00A7288C0FD4702A00D5051F /* SampleTestGL.cpp in Sources */,
2779F2330FD61326005D376E /* SamplePatch.cpp in Sources */,
2779F2540FD614D1005D376E /* SampleAll.cpp in Sources */,
2779F2610FD61678005D376E /* SampleXfermodes.cpp in Sources */,
2779F27E0FD61829005D376E /* SampleText.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};