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