Added helper methods for changing samples, getting sample titles, and extracting pdf Data
http://codereview.appspot.com/4626073/


git-svn-id: http://skia.googlecode.com/svn/trunk@1704 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 8a8ac9c..74a0708 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -410,7 +410,8 @@
     if (this->height() && this->width()) {
         this->onSizeChange();
     }
-
+    
+    fPDFData = NULL;
 #ifdef SK_BUILD_FOR_MAC
     testpdf();
 #endif
@@ -760,7 +761,7 @@
     canvas.clipRegion(inval);
     canvas.drawColor(0xFFFF8080);
 }
-
+#include "SkData.h"
 void SampleWindow::afterChildren(SkCanvas* orig) {
     if (fSaveToPdf) {
         fSaveToPdf = false;
@@ -775,12 +776,19 @@
 #ifdef ANDROID
         name.prepend("/sdcard/");
 #endif
+        
+#ifdef SK_BUILD_FOR_IOS
+        SkDynamicMemoryWStream mstream;
+        doc.emitPDF(&mstream);
+        fPDFData = SkData::NewWithCopy(mstream.getStream(),mstream.getOffset());
+#endif
         SkFILEWStream stream(name.c_str());
         if (stream.isValid()) {
             doc.emitPDF(&stream);
             const char* desc = "File saved from Skia SampleApp";
             this->onPDFSaved(this->getTitle(), desc, name.c_str());
         }
+        
         delete fPdfCanvas;
         fPdfCanvas = NULL;
 
@@ -939,6 +947,27 @@
     return true;
 }
 
+bool SampleWindow::goToSample(int i) {
+    fCurrIndex = (i) % fSamples.count();
+    this->loadView(fSamples[fCurrIndex]());
+    return true;
+}
+
+SkString SampleWindow::getSampleTitle(int i) {
+    SkView* view = fSamples[i]();
+    SkString title;
+    SkEvent evt(gTitleEvtName);
+    if (view->doQuery(&evt)) {
+        title.set(evt.findString(gTitleEvtName));
+    }
+    view->unref();
+    return title;
+}
+
+int SampleWindow::sampleCount() {
+    return fSamples.count();
+}
+
 void SampleWindow::postAnimatingEvent() {
     if (fAnimating) {
         SkEvent* evt = new SkEvent(ANIMATING_EVENTTYPE);
diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h
index 35a2bb4..9c39ca4 100644
--- a/samplecode/SampleApp.h
+++ b/samplecode/SampleApp.h
@@ -33,6 +33,7 @@
 class SkGpuCanvas;
 class SkPicture;
 class SkTypeface;
+class SkData;
 
 enum SkTriState {
     kFalse_SkTriState,
@@ -58,9 +59,13 @@
     void changeZoomLevel(float delta);
     bool nextSample();
     bool previousSample();
+    bool goToSample(int i);
+    SkString getSampleTitle(int i);
+    int  sampleCount();
     bool handleTouch(int ownerId, float x, float y,
             SkView::Click::State state);
     void saveToPdf();
+    SkData* getPDFData() { return fPDFData; }
     void postInvalDelay();
 
 protected:
@@ -102,6 +107,7 @@
 
     bool fSaveToPdf;
     SkCanvas* fPdfCanvas;
+    SkData* fPDFData;
 
     bool fUseClip;
     bool fNClip;