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 */ 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 // Finalize flattenable initialization. 55 SkFlattenable::Finalize(); 56 }; 57 58 void SkFlattenable::InitializeFlattenablesIfNeeded() { 59 static SkOnce once; 60 once(SkFlattenable::PrivateInitializer::InitCore); 61 } 62