180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/*
280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2012 Google Inc.
380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru *
480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be
580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file.
680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */
780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkDWriteToPath_DEFINED
980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkDWriteToPath_DEFINED
1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkTypes.h"
1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkPath;
1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include <dwrite.h>
1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include <d2d1.h>
1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruclass SkDWriteGeometrySink : public IDWriteGeometrySink {
1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate:
2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    LONG fRefCount;
2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkPath* fPath;
2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDWriteGeometrySink(const SkDWriteGeometrySink&);
2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    SkDWriteGeometrySink& operator=(const SkDWriteGeometrySink&);
2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected:
2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    explicit SkDWriteGeometrySink(SkPath* path);
2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ~SkDWriteGeometrySink();
2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic:
3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void **object) SK_OVERRIDE;
3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ULONG STDMETHODCALLTYPE AddRef(void) SK_OVERRIDE;
3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual ULONG STDMETHODCALLTYPE Release(void) SK_OVERRIDE;
3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void STDMETHODCALLTYPE SetFillMode(D2D1_FILL_MODE fillMode) SK_OVERRIDE;
3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void STDMETHODCALLTYPE SetSegmentFlags(D2D1_PATH_SEGMENT vertexFlags) SK_OVERRIDE;
3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void STDMETHODCALLTYPE BeginFigure(D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN figureBegin) SK_OVERRIDE;
3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void STDMETHODCALLTYPE AddLines(const D2D1_POINT_2F *points, UINT pointsCount) SK_OVERRIDE;
3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void STDMETHODCALLTYPE AddBeziers(const D2D1_BEZIER_SEGMENT *beziers, UINT beziersCount) SK_OVERRIDE;
4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual void STDMETHODCALLTYPE EndFigure(D2D1_FIGURE_END figureEnd) SK_OVERRIDE;
4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    virtual HRESULT STDMETHODCALLTYPE Close() SK_OVERRIDE;
4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru    static HRESULT Create(SkPath* path, IDWriteGeometrySink** geometryToPath);
4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru};
4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru
4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif
47