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
diff --git a/include/core/SkPath.h b/include/core/SkPath.h
index be49ebd..c7289e8 100644
--- a/include/core/SkPath.h
+++ b/include/core/SkPath.h
@@ -82,16 +82,28 @@
     */
     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 @@
     mutable SkRect      fBounds;
     mutable uint8_t     fBoundsIsDirty;
     uint8_t             fFillType;
+    uint8_t             fIsConvex;
 
     // called, if dirty, by getBounds()
     void computeBounds() const;
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp
index 8719e67..0394056 100644
--- a/samplecode/SampleAll.cpp
+++ b/samplecode/SampleAll.cpp
@@ -30,8 +30,6 @@
 #include "SkXfermode.h"
 
 #include <math.h>
-
-extern void Dump();
     
 static inline SkPMColor rgb2gray(SkPMColor c)
 {
@@ -427,7 +425,6 @@
                     break;
             } while (true);
         }
-        Dump();
     }
     
     void drawPicture(SkCanvas* canvas, int spriteOffset)
@@ -710,7 +707,6 @@
     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 @@
             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;
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index 919c251..02b6f92 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -214,11 +214,11 @@
     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 @@
         }
         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 @@
             return;
         }
         
+        canvas->translate(SkIntToScalar(20), 0);
+
         Patch   patch;
         
         paint.setShader(fShader0);
diff --git a/samplecode/SampleText.cpp b/samplecode/SampleText.cpp
index 7b8bcf0..6deb5d0 100644
--- a/samplecode/SampleText.cpp
+++ b/samplecode/SampleText.cpp
@@ -436,7 +436,7 @@
 
         test_breakText();        
         test_typefaceCache();
-        test_poly();
+//        test_poly();
     }
     
     virtual ~TextSpeedView()
diff --git a/src/core/SkMemory_stdlib.cpp b/src/core/SkMemory_stdlib.cpp
index f1ac36b..6952ae8 100644
--- a/src/core/SkMemory_stdlib.cpp
+++ b/src/core/SkMemory_stdlib.cpp
@@ -156,17 +156,11 @@
     }
 };
 
-void Dump()
-{
-    SkBlockHeader::Dump();
-}
-
 void ValidateHeap()
 {
     SkBlockHeader::Validate();
 }
 #else
-void Dump() {}
 void ValidateHeap() {}
 #endif
 
diff --git a/src/core/SkPath.cpp b/src/core/SkPath.cpp
index 0cb50fb..2127bb4 100644
--- a/src/core/SkPath.cpp
+++ b/src/core/SkPath.cpp
@@ -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 @@
     }
     
     ~SkAutoPathBoundsUpdate() {
+        fPath->setIsConvex(fEmpty);
         if (fEmpty) {
             fPath->fBounds = fRect;
             fPath->fBoundsIsDirty = false;
@@ -52,13 +56,13 @@
     }
     
 private:
-    const SkPath*   fPath;
-    SkRect          fRect;
-    bool            fDirty;
-    bool            fEmpty;
+    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 @@
 
 ////////////////////////////////////////////////////////////////////////////
 
-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 @@
         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 @@
         fVerbs.swap(other.fVerbs);
         SkTSwap<uint8_t>(fFillType, other.fFillType);
         SkTSwap<uint8_t>(fBoundsIsDirty, other.fBoundsIsDirty);
+        SkTSwap<uint8_t>(fIsConvex, other.fIsConvex);
     }
 }
 
diff --git a/src/gl/SkGLDevice.cpp b/src/gl/SkGLDevice.cpp
index 148f9e9..d839498 100644
--- a/src/gl/SkGLDevice.cpp
+++ b/src/gl/SkGLDevice.cpp
@@ -169,6 +169,7 @@
     SkMatrix matrix;
     SkShader::TileMode tileModes[2];
     if (!shader->asABitmap(&bitmap, &matrix, tileModes)) {
+        SkGL_unimpl("shader->asABitmap() == false");
         return NULL;
     }
     
@@ -232,6 +233,7 @@
                        this->updateMatrixClip());
 }
 
+// must be in SkCanvas::PointMode order
 static const GLenum gPointMode2GL[] = {
     GL_POINTS,
     GL_LINES,
@@ -339,6 +341,7 @@
             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 @@
                           const SkPaint& paint) {
     TRACE_DRAW("coreDrawPath", this, draw);
     if (paint.getStyle() == SkPaint::kStroke_Style) {
+        SkGL_unimpl("stroke path");
         return;
     }
     
@@ -599,7 +603,7 @@
     SkGLDrawProcs* procs = (SkGLDrawProcs*)state.fDraw->fProcs;
     
     x += glyph.fLeft;
-    y  += glyph.fTop;
+    y += glyph.fTop;
     
     // check if we're clipped out (nothing to draw)
 	SkIRect bounds;
@@ -636,6 +640,7 @@
         }
         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 @@
      - 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 @@
                              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::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");
 }
 
diff --git a/tests/PathTest.cpp b/tests/PathTest.cpp
index c17fa45..89fe93b 100644
--- a/tests/PathTest.cpp
+++ b/tests/PathTest.cpp
@@ -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 @@
     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));
diff --git a/xcode/sampleapp_sdl/SDLApp.xcodeproj/project.pbxproj b/xcode/sampleapp_sdl/SDLApp.xcodeproj/project.pbxproj
index 1d07278..b348e94 100644
--- a/xcode/sampleapp_sdl/SDLApp.xcodeproj/project.pbxproj
+++ b/xcode/sampleapp_sdl/SDLApp.xcodeproj/project.pbxproj
@@ -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;
 		};