1 /* 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 8 #ifndef SkPdfContext_DEFINED 9 #define SkPdfContext_DEFINED 10 11 #include "SkMatrix.h" 12 #include "SkPdfGraphicsState.h" 13 #include "SkPdfNativeTokenizer.h" 14 #include "SkTDStackNester.h" 15 #include "SkTypes.h" 16 17 class SkCanvas; 18 class SkPdfNativeDoc; 19 class SkPdfNativeObject; 20 21 /** 22 * The context of the drawing. The document we draw from, the current stack of 23 * objects, ... 24 */ 25 class SkPdfContext : SkNoncopyable { 26 public: 27 // FIXME (scroggo): Add functions for accessing these. 28 SkTDStackNester<SkPdfNativeObject*> fObjectStack; 29 SkTDStackNester<SkPdfGraphicsState> fStateStack; 30 SkPdfGraphicsState fGraphicsState; 31 SkPdfNativeDoc* fPdfDoc; 32 SkMatrix fOriginalMatrix; 33 34 // Does not take ownership of the doc. 35 explicit SkPdfContext(SkPdfNativeDoc* doc); 36 37 /** 38 * Parse the stream and draw its commands to the canvas. 39 * FIXME (scroggo): May not be the best place for this, but leaving here 40 * for now, since it uses SkPdfContext's members. 41 */ 42 void parseStream(SkPdfNativeObject* stream, SkCanvas* canvas); 43 44 private: 45 // FIXME (scroggo): Is this the right place for the allocator? 46 SkPdfAllocator fTmpPageAllocator; 47 }; 48 #endif // SkPdfContext_DEFINED 49