| Index: samplecode/SampleApp.cpp
|
| ===================================================================
|
| --- samplecode/SampleApp.cpp (revision 9812)
|
| +++ samplecode/SampleApp.cpp (working copy)
|
| @@ -15,6 +15,7 @@
|
| #include "SkPaint.h"
|
| #include "SkPicture.h"
|
| #include "SkStream.h"
|
| +#include "SkTSort.h"
|
| #include "SkTime.h"
|
| #include "SkWindow.h"
|
|
|
| @@ -54,6 +55,19 @@
|
| }
|
| };
|
|
|
| +#ifdef SAMPLE_PDF_FILE_VIEWER
|
| +extern SampleView* CreateSamplePdfFileViewer(const char filename[]);
|
| +
|
| +class PdfFileViewerFactory : public SkViewFactory {
|
| + SkString fFilename;
|
| +public:
|
| + PdfFileViewerFactory(const SkString& filename) : fFilename(filename) {}
|
| + virtual SkView* operator() () const SK_OVERRIDE {
|
| + return CreateSamplePdfFileViewer(fFilename.c_str());
|
| + }
|
| +};
|
| +#endif // SAMPLE_PDF_FILE_VIEWER
|
| +
|
| #define PIPE_FILEx
|
| #ifdef PIPE_FILE
|
| #define FILE_PATH "/path/to/drawing.data"
|
| @@ -690,14 +704,31 @@
|
| }
|
|
|
| static void usage(const char * argv0) {
|
| - SkDebugf("%s [--slide sampleName] [-i resourcePath] [--msaa sampleCount] [--pictureDir dirPath] [--picture path]\n", argv0);
|
| + SkDebugf("%s [--slide sampleName] [-i resourcePath] [--msaa sampleCount] [--pictureDir dirPath] [--picture path] [--sort]\n", argv0);
|
| +#ifdef SAMPLE_PDF_FILE_VIEWER
|
| + SkDebugf(" [--pdfDir pdfPath]\n");
|
| + SkDebugf(" pdfPath: path to directory pdf files are read from\n");
|
| +#endif // SAMPLE_PDF_FILE_VIEWER
|
| SkDebugf(" sampleName: sample at which to start.\n");
|
| SkDebugf(" resourcePath: directory that stores image resources.\n");
|
| SkDebugf(" msaa: request multisampling with the given sample count.\n");
|
| SkDebugf(" dirPath: path to directory skia pictures are read from\n");
|
| SkDebugf(" path: path to skia picture\n");
|
| + SkDebugf(" --sort: sort samples by title, this would help to compare pdf rendering (P:foo.pdf) with skp rendering (P:foo.pdf)\n");
|
| }
|
|
|
| +static SkString getSampleTitle(const SkViewFactory* sampleFactory) {
|
| + SkView* view = (*sampleFactory)();
|
| + SkString title;
|
| + SampleCode::RequestTitle(view, &title);
|
| + view->unref();
|
| + return title;
|
| +}
|
| +
|
| +bool compareSampleTitle(const SkViewFactory* first, const SkViewFactory* second) {
|
| + return strcmp(getSampleTitle(first).c_str(), getSampleTitle(second).c_str()) < 0;
|
| +}
|
| +
|
| SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* devManager)
|
| : INHERITED(hwnd)
|
| , fDevManager(NULL) {
|
| @@ -706,6 +737,9 @@
|
|
|
| this->registerPictFileSamples(argv, argc);
|
| this->registerPictFileSample(argv, argc);
|
| +#ifdef SAMPLE_PDF_FILE_VIEWER
|
| + this->registerPdfFileViewerSamples(argv, argc);
|
| +#endif // SAMPLE_PDF_FILE_VIEWER
|
| SkGMRegistyToSampleRegistry();
|
| {
|
| const SkViewRegister* reg = SkViewRegister::Head();
|
| @@ -715,6 +749,20 @@
|
| }
|
| }
|
|
|
| + bool sort = false;
|
| + for (int i = 0; i < argc; ++i) {
|
| + if (!strcmp(argv[i], "--sort")) {
|
| + sort = true;
|
| + break;
|
| + }
|
| + }
|
| +
|
| + if (sort) {
|
| + // Sort samples, so foo.skp and foo.pdf are consecutive and we can quickly spot where
|
| + // skp -> pdf -> png fails.
|
| + SkTQSort(fSamples.begin(), fSamples.end() ? fSamples.end() - 1 : NULL, compareSampleTitle);
|
| + }
|
| +
|
| const char* resourcePath = NULL;
|
| fMSAASampleCount = 0;
|
|
|
| @@ -969,6 +1017,32 @@
|
| }
|
| }
|
|
|
| +#ifdef SAMPLE_PDF_FILE_VIEWER
|
| +void SampleWindow::registerPdfFileViewerSamples(char** argv, int argc) {
|
| + const char* pdfDir = NULL;
|
| +
|
| + for (int i = 0; i < argc; ++i) {
|
| + if (!strcmp(argv[i], "--pdfDir")) {
|
| + i += 1;
|
| + if (i < argc) {
|
| + pdfDir = argv[i];
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + if (pdfDir) {
|
| + SkOSFile::Iter iter(pdfDir, "pdf");
|
| + SkString filename;
|
| + while (iter.next(&filename)) {
|
| + SkString path;
|
| + make_filepath(&path, pdfDir, filename);
|
| + *fSamples.append() = new PdfFileViewerFactory(path);
|
| + }
|
| + }
|
| +}
|
| +#endif // SAMPLE_PDF_FILE_VIEWER
|
| +
|
| +
|
| int SampleWindow::findByTitle(const char title[]) {
|
| int i, count = fSamples.count();
|
| for (i = 0; i < count; i++) {
|
| @@ -1534,11 +1608,7 @@
|
| }
|
|
|
| SkString SampleWindow::getSampleTitle(int i) {
|
| - SkView* view = (*fSamples[i])();
|
| - SkString title;
|
| - SampleCode::RequestTitle(view, &title);
|
| - view->unref();
|
| - return title;
|
| + return ::getSampleTitle(fSamples[i]);
|
| }
|
|
|
| int SampleWindow::sampleCount() {
|
|
|