• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef SkPDFUtils_DEFINED
18 #define SkPDFUtils_DEFINED
19 
20 #include "SkPath.h"
21 
22 class SkMatrix;
23 class SkPath;
24 class SkPDFArray;
25 struct SkRect;
26 
27 #if 0
28 #define PRINT_NOT_IMPL(str) fprintf(stderr, str)
29 #else
30 #define PRINT_NOT_IMPL(str)
31 #endif
32 
33 #define NOT_IMPLEMENTED(condition, assert)                         \
34     do {                                                           \
35         if (condition) {                                           \
36             PRINT_NOT_IMPL("NOT_IMPLEMENTED: " #condition "\n");   \
37             SkDEBUGCODE(SkASSERT(!assert);)                        \
38         }                                                          \
39     } while(0)
40 
41 class SkPDFUtils {
42 public:
43     static SkPDFArray* MatrixToArray(const SkMatrix& matrix);
44     static void AppendTransform(const SkMatrix& matrix, SkWStream* content);
45 
46     static void MoveTo(SkScalar x, SkScalar y, SkWStream* content);
47     static void AppendLine(SkScalar x, SkScalar y, SkWStream* content);
48     static void AppendCubic(SkScalar ctl1X, SkScalar ctl1Y,
49                             SkScalar ctl2X, SkScalar ctl2Y,
50                             SkScalar dstX, SkScalar dstY, SkWStream* content);
51     static void AppendRectangle(const SkRect& rect, SkWStream* content);
52     static void EmitPath(const SkPath& path, SkWStream* content);
53     static void ClosePath(SkWStream* content);
54     static void PaintPath(SkPaint::Style style, SkPath::FillType fill,
55                           SkWStream* content);
56     static void StrokePath(SkWStream* content);
57     static void DrawFormXObject(int objectIndex, SkWStream* content);
58     static void ApplyGraphicState(int objectIndex, SkWStream* content);
59 };
60 
61 #endif
62