1/*
2 * Copyright 2011 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 "include/core/SkFlattenable.h"
9
10#if defined(SK_DISABLE_EFFECT_DESERIALIZATION)
11
12    void SkFlattenable::PrivateInitializer::InitEffects() {}
13    void SkFlattenable::PrivateInitializer::InitImageFilters() {}
14
15#else
16
17    #include "include/core/SkBBHFactory.h"
18    #include "include/core/SkColorFilter.h"
19    #include "include/core/SkPathEffect.h"
20    #include "include/effects/Sk1DPathEffect.h"
21    #include "include/effects/Sk2DPathEffect.h"
22    #include "include/effects/SkCornerPathEffect.h"
23    #include "include/effects/SkDiscretePathEffect.h"
24    #include "include/effects/SkGradientShader.h"
25    #include "include/effects/SkOverdrawColorFilter.h"
26    #include "include/effects/SkPerlinNoiseShader.h"
27    #include "include/effects/SkShaderMaskFilter.h"
28    #include "include/effects/SkTableColorFilter.h"
29    #include "src/core/SkBlendModeBlender.h"
30    #include "src/core/SkColorFilter_Matrix.h"
31    #include "src/core/SkImageFilter_Base.h"
32    #include "src/core/SkRecordedDrawable.h"
33    #include "src/effects/SkDashImpl.h"
34    #include "src/effects/SkEmbossMaskFilter.h"
35    #include "src/effects/SkOpPE.h"
36    #include "src/effects/SkTrimPE.h"
37    #include "src/shaders/SkBitmapProcShader.h"
38    #include "src/shaders/SkColorFilterShader.h"
39    #include "src/shaders/SkColorShader.h"
40    #include "src/shaders/SkComposeShader.h"
41    #include "src/shaders/SkEmptyShader.h"
42    #include "src/shaders/SkImageShader.h"
43    #include "src/shaders/SkLocalMatrixShader.h"
44    #include "src/shaders/SkPictureShader.h"
45    #include "src/shaders/SkShaderBase.h"
46
47    #include "include/effects/SkImageFilters.h"
48    #include "src/core/SkLocalMatrixImageFilter.h"
49    #include "src/core/SkMatrixImageFilter.h"
50
51#ifdef SK_ENABLE_SKSL
52    #include "include/effects/SkRuntimeEffect.h"
53#endif
54
55#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
56    #include "include/effects/SkLayerDrawLooper.h"
57#endif
58
59    /**
60     *  Register most effects for deserialization.
61     *
62     *  None of these are strictly required for Skia to operate, so if you're
63     *  not using deserialization yourself, you can define
64     *  SK_DISABLE_EFFECT_SERIALIZATION, or modify/replace this file as needed.
65     */
66    void SkFlattenable::PrivateInitializer::InitEffects() {
67        // Shaders.
68        SK_REGISTER_FLATTENABLE(SkColor4Shader);
69        SK_REGISTER_FLATTENABLE(SkColorFilterShader);
70        SK_REGISTER_FLATTENABLE(SkColorShader);
71        SK_REGISTER_FLATTENABLE(SkShader_Blend);
72        SK_REGISTER_FLATTENABLE(SkEmptyShader);
73        SK_REGISTER_FLATTENABLE(SkLocalMatrixShader);
74        SK_REGISTER_FLATTENABLE(SkPictureShader);
75        SkGradientShader::RegisterFlattenables();
76        SkPerlinNoiseShader::RegisterFlattenables();
77        SkShaderBase::RegisterFlattenables();
78
79        // Color filters.
80        SkColorFilter_Matrix::RegisterFlattenables();
81        SkColorFilterBase::RegisterFlattenables();
82        SkTableColorFilter::RegisterFlattenables();
83
84        // Blenders.
85        SK_REGISTER_FLATTENABLE(SkBlendModeBlender);
86
87#ifdef SK_ENABLE_SKSL
88        // Runtime shaders, color filters, and blenders.
89        SkRuntimeEffect::RegisterFlattenables();
90#endif
91
92        // Mask filters.
93        SK_REGISTER_FLATTENABLE(SkEmbossMaskFilter);
94        SkMaskFilter::RegisterFlattenables();
95        SkShaderMaskFilter::RegisterFlattenables();
96
97        // Path effects.
98        SkCornerPathEffect::RegisterFlattenables();
99        SK_REGISTER_FLATTENABLE(SkDashImpl);
100        SkDiscretePathEffect::RegisterFlattenables();
101        SkLine2DPathEffect::RegisterFlattenables();
102        SkPath2DPathEffect::RegisterFlattenables();
103        SK_REGISTER_FLATTENABLE(SkMatrixPE);
104        SK_REGISTER_FLATTENABLE(SkOpPE);
105        SkPath1DPathEffect::RegisterFlattenables();
106        SK_REGISTER_FLATTENABLE(SkStrokePE);
107        SK_REGISTER_FLATTENABLE(SkStrokeAndFillPE);
108        SK_REGISTER_FLATTENABLE(SkTrimPE);
109        SkPathEffectBase::RegisterFlattenables();
110
111        // Misc.
112#ifdef SK_SUPPORT_LEGACY_DRAWLOOPER
113        SK_REGISTER_FLATTENABLE(SkLayerDrawLooper);
114#endif
115        SK_REGISTER_FLATTENABLE(SkRecordedDrawable);
116    }
117
118    /*
119     *  Register SkImageFilters for deserialization.
120     *
121     *  None of these are strictly required for Skia to operate, so if you're
122     *  not using deserialization yourself, you can define
123     *  SK_DISABLE_EFFECT_SERIALIZATION, or modify/replace this file as needed.
124     */
125    void SkFlattenable::PrivateInitializer::InitImageFilters() {
126        SkRegisterAlphaThresholdImageFilterFlattenable();
127        SkRegisterArithmeticImageFilterFlattenable();
128        SkRegisterBlendImageFilterFlattenable();
129        SkRegisterBlurImageFilterFlattenable();
130        SkRegisterColorFilterImageFilterFlattenable();
131        SkRegisterComposeImageFilterFlattenable();
132        SkRegisterCropImageFilterFlattenable();
133        SkRegisterDisplacementMapImageFilterFlattenable();
134        SkRegisterDropShadowImageFilterFlattenable();
135        SkRegisterImageImageFilterFlattenable();
136        SkRegisterLightingImageFilterFlattenables();
137        SkRegisterMagnifierImageFilterFlattenable();
138        SkRegisterMatrixConvolutionImageFilterFlattenable();
139        SkRegisterMergeImageFilterFlattenable();
140        SkRegisterMorphologyImageFilterFlattenables();
141        SkRegisterOffsetImageFilterFlattenable();
142        SkRegisterPictureImageFilterFlattenable();
143#ifdef SK_ENABLE_SKSL
144        SkRegisterRuntimeImageFilterFlattenable();
145#endif
146        SkRegisterShaderImageFilterFlattenable();
147        SkRegisterTileImageFilterFlattenable();
148        SK_REGISTER_FLATTENABLE(SkLocalMatrixImageFilter);
149        SK_REGISTER_FLATTENABLE(SkMatrixImageFilter);
150    }
151
152#endif
153