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