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 23 /* 24 * Registers all of the required effects subclasses for picture deserialization. 25 * 26 * Optional subclasses (e.g. Blur) should be registered in the ports/ version of this file, 27 * inside the InitEffects() method. 28 */ InitCore()29void SkFlattenable::PrivateInitializer::InitCore() { 30 // Shader 31 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterShader) 32 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader) 33 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColor4Shader) 34 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader) 35 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader) 36 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLocalMatrixShader) 37 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader) 38 39 40 // ImageFilter 41 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter) 42 43 SkColorFilter::InitializeFlattenables(); 44 SkPathEffect::InitializeFlattenables(); 45 SkShader::InitializeFlattenables(); 46 SkXfermode::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()55void SkFlattenable::InitializeFlattenablesIfNeeded() { 56 static SkOnce once; 57 once(SkFlattenable::PrivateInitializer::InitCore); 58 } 59