Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1344)

Unified Diff: samplecode/SampleApp.cpp

Issue 17904006: Add an option to have a PdfViewer in SampleApp. Add a parameter --pdfDir to pass the dir with pdfs.… (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « samplecode/SampleApp.h ('k') | samplecode/SamplePdfFileViewer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « samplecode/SampleApp.h ('k') | samplecode/SamplePdfFileViewer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698