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