blob: 6f8f8d67b2ea775a16f786a2b50a356939f2ae64 [file] [log] [blame]
reed6054d682016-01-13 08:47:54 -08001/*
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"
msarett95416f42016-04-27 13:51:20 -070017#include "SkMatrixImageFilter.h"
reed6054d682016-01-13 08:47:54 -080018#include "SkOnce.h"
19#include "SkPathEffect.h"
20#include "SkPictureShader.h"
msarett95416f42016-04-27 13:51:20 -070021#include "SkRecordedDrawable.h"
reed6054d682016-01-13 08:47:54 -080022
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 */
29void SkFlattenable::PrivateInitializer::InitCore() {
30 // Shader
reed6054d682016-01-13 08:47:54 -080031 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterShader)
32 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader)
reed0ccc62d2016-05-04 13:09:39 -070033 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColor4Shader)
reed6054d682016-01-13 08:47:54 -080034 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader)
35 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader)
reed6054d682016-01-13 08:47:54 -080036 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLocalMatrixShader)
37 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader)
38
39 // PathEffect
40 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposePathEffect)
41
42 // ImageFilter
43 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter)
44
45 // ColorFilter
46 SkColorFilter::InitializeFlattenables();
47
reed320a40d2016-08-02 06:12:06 -070048 SkShader::InitializeFlattenables();
49
reed6054d682016-01-13 08:47:54 -080050 // Xfermode
51 SkXfermode::InitializeFlattenables();
52
msarett95416f42016-04-27 13:51:20 -070053 // Drawable
54 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRecordedDrawable)
55
reed6054d682016-01-13 08:47:54 -080056 // Now initialize any optional/additional effects (implemented in src/ports)
57 InitEffects();
58};
59
reed6054d682016-01-13 08:47:54 -080060void SkFlattenable::InitializeFlattenablesIfNeeded() {
mtkleind9dd4282016-04-18 08:09:11 -070061 static SkOnce once;
62 once(SkFlattenable::PrivateInitializer::InitCore);
reed6054d682016-01-13 08:47:54 -080063}