SkLayerRasterizer.h revision fdba4041c350b72791a1844ff0bc0af28cbb4199
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
108b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#ifndef SkLayerRasterizer_DEFINED
118b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#define SkLayerRasterizer_DEFINED
12b83b6b4f7690fe929d8d6b1a3d2b7ed562b95ba6robertphillips@google.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRasterizer.h"
1430da745bbf67a0ee0f305ca7bbdb685cc8a9e686reed@google.com#include "SkDeque.h"
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkScalar.h"
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkPaint;
189fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SK_API SkLayerRasterizer : public SkRasterizer {
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic:
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            SkLayerRasterizer();
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    virtual ~SkLayerRasterizer();
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
249fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    void addLayer(const SkPaint& paint) {
259fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        this->addLayer(paint, 0, 0);
26c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com    }
27c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com
28c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com    /**    Add a new layer (above any previous layers) to the rasterizer.
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        The layer will extract those fields that affect the mask from
309fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        the specified paint, but will not retain a reference to the paint
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        object itself, so it may be reused without danger of side-effects.
329fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    */
339fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    void addLayer(const SkPaint& paint, SkScalar dx, SkScalar dy);
349fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed
359fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerRasterizer)
369fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed
379fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedprotected:
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkLayerRasterizer(SkFlattenableReadBuffer&);
399fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
40c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com
419fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    // override from SkRasterizer
42c73dd5c6880739f26216f198c757028fd28df1a4djsollen@google.com    virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix,
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                             const SkIRect* clipBounds,
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com                             SkMask* mask, SkMask::CreateMode mode) const;
458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
4630da745bbf67a0ee0f305ca7bbdb685cc8a9e686reed@google.comprivate:
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkDeque fLayers;
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    typedef SkRasterizer INHERITED;
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com