pdfviewer: gs operator implementation: dashing and font
Review URL: https://codereview.chromium.org/20810002
git-svn-id: http://skia.googlecode.com/svn/trunk@10403 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/PdfViewer/SkPdfBasics.cpp b/experimental/PdfViewer/SkPdfBasics.cpp
index e689b14..dc320a5 100644
--- a/experimental/PdfViewer/SkPdfBasics.cpp
+++ b/experimental/PdfViewer/SkPdfBasics.cpp
@@ -1,6 +1,8 @@
#include "SkPdfBasics.h"
#include "SkPdfNativeTokenizer.h"
+#include "SkDashPathEffect.h"
+
PdfContext::PdfContext(SkNativeParsedPDF* doc)
: fPdfDoc(doc)
, fTmpPageAllocator(new SkPdfAllocator()) {
@@ -9,3 +11,25 @@
PdfContext::~PdfContext() {
delete fTmpPageAllocator;
}
+
+void SkPdfGraphicsState::applyGraphicsState(SkPaint* paint, bool stroking) {
+ if (stroking) {
+ fStroking.applyGraphicsState(paint);
+ } else {
+ fNonStroking.applyGraphicsState(paint);
+ }
+
+ // TODO(edisonn): get this from pdfContext->options,
+ // or pdfContext->addPaintOptions(&paint);
+ paint->setAntiAlias(true);
+
+ // TODO(edisonn): miter, ...
+ if (stroking) {
+ paint->setStrokeWidth(SkDoubleToScalar(fLineWidth));
+ // TODO(edisonn): perf, two sets of allocs, create SkDashPathEffect constr that takes ownership
+ // of the intervals
+ if (fDashArrayLength > 0 && fDashPhase > 0) {
+ paint->setPathEffect(new SkDashPathEffect(fDashArray, fDashArrayLength, fDashPhase))->unref();
+ }
+ }
+}