d03c2c732e
Review URL: https://codereview.chromium.org/27057003 git-svn-id: http://skia.googlecode.com/svn/trunk@11735 2bbb7eff-a529-9590-31e7-b0007b416f81
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
/*
|
|
* Copyright 2013 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#include "SkPdfGraphicsState.h"
|
|
|
|
#include "SkDashPathEffect.h"
|
|
#include "SkPdfNativeTokenizer.h"
|
|
|
|
SkPdfContext::SkPdfContext(SkPdfNativeDoc* doc)
|
|
: fPdfDoc(doc)
|
|
, fTmpPageAllocator(new SkPdfAllocator()) {
|
|
}
|
|
|
|
SkPdfContext::~SkPdfContext() {
|
|
delete fTmpPageAllocator;
|
|
}
|
|
|
|
void SkPdfGraphicsState::applyGraphicsState(SkPaint* paint, bool stroking) {
|
|
if (stroking) {
|
|
fStroking.applyGraphicsState(paint);
|
|
} else {
|
|
fNonStroking.applyGraphicsState(paint);
|
|
}
|
|
|
|
// TODO(edisonn): Perf, we should load this option from pdfContext->options,
|
|
// or pdfContext->addPaintOptions(&paint);
|
|
paint->setAntiAlias(true);
|
|
|
|
// TODO(edisonn): miter, ...
|
|
if (stroking) {
|
|
paint->setStrokeWidth(SkDoubleToScalar(fLineWidth));
|
|
// TODO(edisonn): perf, avoid allocs of the intervals
|
|
if (fDashArrayLength > 0) {
|
|
paint->setPathEffect(new SkDashPathEffect(fDashArray,
|
|
fDashArrayLength,
|
|
fDashPhase))->unref();
|
|
}
|
|
}
|
|
|
|
// TODO(edisonn): NYI multiple blend modes
|
|
if (fBlendModesLength == 1 && fBlendModes[0] != SkXfermode::kSrc_Mode) {
|
|
paint->setXfermodeMode(fBlendModes[0]);
|
|
}
|
|
|
|
//paint->setStrokeMiter(SkDoubleToScalar(fMiterLimit));
|
|
// TODO(edisonn): impl cap and join
|
|
}
|