• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "SkBitmapProcShader.h"
9 #include "SkColorFilter.h"
10 #include "SkColorFilterShader.h"
11 #include "SkColorShader.h"
12 #include "SkComposeShader.h"
13 #include "SkEmptyShader.h"
14 #include "SkFlattenable.h"
15 #include "SkImageShader.h"
16 #include "SkLocalMatrixShader.h"
17 #include "SkMatrixImageFilter.h"
18 #include "SkOnce.h"
19 #include "SkPathEffect.h"
20 #include "SkPictureShader.h"
21 #include "SkRecordedDrawable.h"
22 #include "SkShaderBase.h"
23 
24 /*
25  *  Registers all of the required effects subclasses for picture deserialization.
26  *
27  *  Optional subclasses (e.g. Blur) should be registered in the ports/ version of this file,
28  *  inside the InitEffects() method.
29  */
InitCore()30 void SkFlattenable::PrivateInitializer::InitCore() {
31     // Shader
32     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterShader)
33     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader)
34     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColor4Shader)
35     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader)
36     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader)
37     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLocalMatrixShader)
38     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader)
39 
40 
41     // ImageFilter
42     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter)
43 
44     SkColorFilter::InitializeFlattenables();
45     SkPathEffect::InitializeFlattenables();
46     SkShaderBase::InitializeFlattenables();
47 
48     // Drawable
49     SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRecordedDrawable)
50 
51     // Now initialize any optional/additional effects (implemented in src/ports)
52     InitEffects();
53 };
54 
InitializeFlattenablesIfNeeded()55 void SkFlattenable::InitializeFlattenablesIfNeeded() {
56     static SkOnce once;
57     once(SkFlattenable::PrivateInitializer::InitCore);
58 }
59