Home | History | Annotate | Download | only in core
      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