blob: 76c4120fa33998f36449235c1228eacf3cbf827a [file] [log] [blame]
edisonn@google.comcf2cfa12013-08-21 16:31:37 +00001/*
2 * Copyright 2013 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
edisonn@google.com3aa35552013-08-14 18:26:20 +00008#include "SkPdfGraphicsState.h"
edisonn@google.com2ccc3af2013-07-23 17:43:18 +00009
edisonn@google.coma0cefa12013-07-28 18:34:14 +000010#include "SkDashPathEffect.h"
edisonn@google.coma0cefa12013-07-28 18:34:14 +000011
12void SkPdfGraphicsState::applyGraphicsState(SkPaint* paint, bool stroking) {
13 if (stroking) {
14 fStroking.applyGraphicsState(paint);
15 } else {
16 fNonStroking.applyGraphicsState(paint);
17 }
18
edisonn@google.come50d9a12013-10-10 20:58:22 +000019 // TODO(edisonn): Perf, we should load this option from pdfContext->options,
edisonn@google.coma0cefa12013-07-28 18:34:14 +000020 // or pdfContext->addPaintOptions(&paint);
21 paint->setAntiAlias(true);
22
23 // TODO(edisonn): miter, ...
24 if (stroking) {
25 paint->setStrokeWidth(SkDoubleToScalar(fLineWidth));
edisonn@google.comd03c2c72013-10-11 18:26:45 +000026 // TODO(edisonn): perf, avoid allocs of the intervals
edisonn@google.comf111a4b2013-07-31 18:22:36 +000027 if (fDashArrayLength > 0) {
commit-bot@chromium.org0a2bf902014-02-20 20:40:19 +000028 paint->setPathEffect(SkDashPathEffect::Create(fDashArray,
29 fDashArrayLength,
30 fDashPhase))->unref();
edisonn@google.coma0cefa12013-07-28 18:34:14 +000031 }
32 }
edisonn@google.comf111a4b2013-07-31 18:22:36 +000033
34 // TODO(edisonn): NYI multiple blend modes
35 if (fBlendModesLength == 1 && fBlendModes[0] != SkXfermode::kSrc_Mode) {
36 paint->setXfermodeMode(fBlendModes[0]);
37 }
edisonn@google.com9a43c182013-08-01 20:06:42 +000038
39 //paint->setStrokeMiter(SkDoubleToScalar(fMiterLimit));
40 // TODO(edisonn): impl cap and join
edisonn@google.coma0cefa12013-07-28 18:34:14 +000041}