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