1d906702f7812807d79eeaba65acff62235990b64scroggo@google.com/* 2d906702f7812807d79eeaba65acff62235990b64scroggo@google.com * Copyright 2013 Google Inc. 3d906702f7812807d79eeaba65acff62235990b64scroggo@google.com * 4d906702f7812807d79eeaba65acff62235990b64scroggo@google.com * Use of this source code is governed by a BSD-style license that can be 5d906702f7812807d79eeaba65acff62235990b64scroggo@google.com * found in the LICENSE file. 6d906702f7812807d79eeaba65acff62235990b64scroggo@google.com */ 7d906702f7812807d79eeaba65acff62235990b64scroggo@google.com 8d1cf7696f501d7b445fd82137c76635db45e6fbcscroggo@google.com#ifndef SkPdfContext_DEFINED 9d1cf7696f501d7b445fd82137c76635db45e6fbcscroggo@google.com#define SkPdfContext_DEFINED 10d1cf7696f501d7b445fd82137c76635db45e6fbcscroggo@google.com 11d906702f7812807d79eeaba65acff62235990b64scroggo@google.com#include "SkMatrix.h" 12d906702f7812807d79eeaba65acff62235990b64scroggo@google.com#include "SkPdfGraphicsState.h" 13248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com#include "SkPdfNativeTokenizer.h" 14248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com#include "SkTDStackNester.h" 15248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com#include "SkTypes.h" 16d906702f7812807d79eeaba65acff62235990b64scroggo@google.com 17248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.comclass SkCanvas; 18d906702f7812807d79eeaba65acff62235990b64scroggo@google.comclass SkPdfNativeDoc; 19d906702f7812807d79eeaba65acff62235990b64scroggo@google.comclass SkPdfNativeObject; 20d906702f7812807d79eeaba65acff62235990b64scroggo@google.com 21248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com/** 22248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com * The context of the drawing. The document we draw from, the current stack of 23248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com * objects, ... 24d906702f7812807d79eeaba65acff62235990b64scroggo@google.com */ 25e3beb6bd7de7fa211681abbb0be58e80b19885e0commit-bot@chromium.orgclass SkPdfContext : SkNoncopyable { 26d906702f7812807d79eeaba65acff62235990b64scroggo@google.compublic: 27248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com // FIXME (scroggo): Add functions for accessing these. 28d906702f7812807d79eeaba65acff62235990b64scroggo@google.com SkTDStackNester<SkPdfNativeObject*> fObjectStack; 29d906702f7812807d79eeaba65acff62235990b64scroggo@google.com SkTDStackNester<SkPdfGraphicsState> fStateStack; 30d906702f7812807d79eeaba65acff62235990b64scroggo@google.com SkPdfGraphicsState fGraphicsState; 31d906702f7812807d79eeaba65acff62235990b64scroggo@google.com SkPdfNativeDoc* fPdfDoc; 32d906702f7812807d79eeaba65acff62235990b64scroggo@google.com SkMatrix fOriginalMatrix; 33d906702f7812807d79eeaba65acff62235990b64scroggo@google.com 34248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com // Does not take ownership of the doc. 35248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com explicit SkPdfContext(SkPdfNativeDoc* doc); 36248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com 37248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com /** 38248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com * Parse the stream and draw its commands to the canvas. 39248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com * FIXME (scroggo): May not be the best place for this, but leaving here 40248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com * for now, since it uses SkPdfContext's members. 41248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com */ 42248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com void parseStream(SkPdfNativeObject* stream, SkCanvas* canvas); 43248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com 44248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.comprivate: 45248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com // FIXME (scroggo): Is this the right place for the allocator? 46248647cebb3724fd2ce1d41745afb786516af4f8scroggo@google.com SkPdfAllocator fTmpPageAllocator; 47d906702f7812807d79eeaba65acff62235990b64scroggo@google.com}; 48d1cf7696f501d7b445fd82137c76635db45e6fbcscroggo@google.com#endif // SkPdfContext_DEFINED 49