blob: 1bce61455496a054d955bbb17208ba58bbe34e0d [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2011 Google Inc.
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000010#ifndef SkPDFUtils_DEFINED
11#define SkPDFUtils_DEFINED
12
vandebo@chromium.org683001c2012-05-09 17:17:51 +000013#include "SkPaint.h"
vandebo@chromium.orgf71b2102011-04-04 19:46:31 +000014#include "SkPath.h"
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000015
16class SkMatrix;
17class SkPath;
18class SkPDFArray;
vandebo@chromium.org8989d312011-05-18 22:10:09 +000019struct SkRect;
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000020
vandebo@chromium.orgf71b2102011-04-04 19:46:31 +000021#if 0
22#define PRINT_NOT_IMPL(str) fprintf(stderr, str)
23#else
24#define PRINT_NOT_IMPL(str)
25#endif
26
27#define NOT_IMPLEMENTED(condition, assert) \
28 do { \
29 if (condition) { \
30 PRINT_NOT_IMPL("NOT_IMPLEMENTED: " #condition "\n"); \
31 SkDEBUGCODE(SkASSERT(!assert);) \
32 } \
ctguil@chromium.orga5c72342011-08-15 23:55:03 +000033 } while (0)
vandebo@chromium.orgf71b2102011-04-04 19:46:31 +000034
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000035class SkPDFUtils {
36public:
37 static SkPDFArray* MatrixToArray(const SkMatrix& matrix);
vandebo@chromium.org75f97e42011-04-11 23:24:18 +000038 static void AppendTransform(const SkMatrix& matrix, SkWStream* content);
vandebo@chromium.orgcae5fba2011-03-28 19:03:50 +000039
40 static void MoveTo(SkScalar x, SkScalar y, SkWStream* content);
41 static void AppendLine(SkScalar x, SkScalar y, SkWStream* content);
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000042 static void AppendCubic(SkScalar ctl1X, SkScalar ctl1Y,
43 SkScalar ctl2X, SkScalar ctl2Y,
vandebo@chromium.orgcae5fba2011-03-28 19:03:50 +000044 SkScalar dstX, SkScalar dstY, SkWStream* content);
vandebo@chromium.org9fbdf872011-05-09 07:55:58 +000045 static void AppendRectangle(const SkRect& rect, SkWStream* content);
vandebo@chromium.org683001c2012-05-09 17:17:51 +000046 static void EmitPath(const SkPath& path, SkPaint::Style paintStyle,
47 SkWStream* content);
vandebo@chromium.orgcae5fba2011-03-28 19:03:50 +000048 static void ClosePath(SkWStream* content);
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000049 static void PaintPath(SkPaint::Style style, SkPath::FillType fill,
vandebo@chromium.orgcae5fba2011-03-28 19:03:50 +000050 SkWStream* content);
51 static void StrokePath(SkWStream* content);
vandebo@chromium.org6112c212011-05-13 03:50:38 +000052 static void DrawFormXObject(int objectIndex, SkWStream* content);
53 static void ApplyGraphicState(int objectIndex, SkWStream* content);
ctguil@chromium.orgf966fd32011-03-04 21:47:04 +000054};
55
56#endif