SkGlobalInitialization_default.cpp revision e92c68f7d7398e8a510b7157a38747b23cb883ae
15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu/*
25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * Copyright 2011 Google Inc.
35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu *
45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * Use of this source code is governed by a BSD-style license that can be
55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu * found in the LICENSE file.
65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu */
75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkTypes.h"
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkBitmapProcShader.h"
115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkMallocPixelRef.h"
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkPathEffect.h"
135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkPixelRef.h"
145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkXfermode.h"
155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "Sk1DPathEffect.h"
175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "Sk2DPathEffect.h"
185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkArithmeticMode.h"
195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkAvoidXfermode.h"
205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkBicubicImageFilter.h"
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkBitmapSource.h"
225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkBlurDrawLooper.h"
235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkBlurImageFilter.h"
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkBlurMaskFilter.h"
255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkColorFilter.h"
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkColorFilterImageFilter.h"
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkColorMatrixFilter.h"
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkColorShader.h"
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkComposeImageFilter.h"
305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkComposeShader.h"
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkCornerPathEffect.h"
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkDashPathEffect.h"
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkDiscretePathEffect.h"
345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkDisplacementMapEffect.h"
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkDropShadowImageFilter.h"
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkEmptyShader.h"
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkEmbossMaskFilter.h"
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkFlattenable.h"
395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkGradientShader.h"
405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkImages.h"
415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkLayerDrawLooper.h"
425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkLayerRasterizer.h"
435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkLerpXfermode.h"
445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkLightingImageFilter.h"
455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkLocalMatrixShader.h"
465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkLumaColorFilter.h"
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "SkMagnifierImageFilter.h"
485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkMatrixConvolutionImageFilter.h"
495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkMergeImageFilter.h"
505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkMorphologyImageFilter.h"
515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkOffsetImageFilter.h"
525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkOnce.h"
535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkPerlinNoiseShader.h"
545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkPictureImageFilter.h"
555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkPictureShader.h"
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkPixelXorXfermode.h"
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "SkRectShaderImageFilter.h"
585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkStippleMaskFilter.h"
595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkTableColorFilter.h"
605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkTestImageFilters.h"
615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkTileImageFilter.h"
625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkMatrixImageFilter.h"
635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "SkXfermodeImageFilter.h"
645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistatic void InitializeFlattenables(int*) {
665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkAvoidXfermode)
675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBicubicImageFilter)
685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapProcShader)
695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapSource)
705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurDrawLooper)
715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurImageFilter)
725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorMatrixFilter)
735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader)
745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposePathEffect)
755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader)
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkCornerPathEffect)
7746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDashPathEffect)
785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDilateImageFilter)
795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiscretePathEffect)
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDisplacementMapEffect)
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDropShadowImageFilter)
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmbossMaskFilter)
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader)
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkErodeImageFilter)
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerDrawLooper)
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerRasterizer)
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLerpXfermode)
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLocalMatrixShader)
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLumaColorFilter)
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath1DPathEffect)
915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Sk2DPathEffect)
925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLine2DPathEffect)
935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath2DPathEffect)
945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPerlinNoiseShader)
955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureImageFilter)
965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader)
9746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPixelXorXfermode)
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRectShaderImageFilter)
995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkStippleMaskFilter)
1005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect)
1015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTileImageFilter)
1025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter)
1035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkXfermodeImageFilter)
1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMagnifierImageFilter)
1055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixConvolutionImageFilter)
1065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkOffsetImageFilter)
1085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeImageFilter)
1095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMergeImageFilter)
1105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterImageFilter)
111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDownSampleImageFilter)
11246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMallocPixelRef)
11346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkArithmeticMode::InitializeFlattenables();
1155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkBlurMaskFilter::InitializeFlattenables();
1165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkColorFilter::InitializeFlattenables();
1175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkGradientShader::InitializeFlattenables();
1185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkImages::InitializeFlattenables();
1195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkLightingImageFilter::InitializeFlattenables();
1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    SkTableColorFilter::InitializeFlattenables();
1215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    SkXfermode::InitializeFlattenables();
1225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
1245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
1255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid SkFlattenable::InitializeFlattenablesIfNeeded() {
1265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu    int dummy;
127cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    SK_DECLARE_STATIC_ONCE(once);
12846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    SkOnce(&once, InitializeFlattenables, &dummy);
12946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
1305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu