michael@0: /* michael@0: * Copyright 2011 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #include "SkTypes.h" michael@0: michael@0: #include "SkBitmapProcShader.h" michael@0: #include "SkMallocPixelRef.h" michael@0: #include "SkPathEffect.h" michael@0: #include "SkPixelRef.h" michael@0: #include "SkXfermode.h" michael@0: michael@0: #include "Sk1DPathEffect.h" michael@0: #include "Sk2DPathEffect.h" michael@0: #include "SkArithmeticMode.h" michael@0: #include "SkAvoidXfermode.h" michael@0: #include "SkBicubicImageFilter.h" michael@0: #include "SkBitmapSource.h" michael@0: #include "SkBlurDrawLooper.h" michael@0: #include "SkBlurImageFilter.h" michael@0: #include "SkBlurMaskFilter.h" michael@0: #include "SkColorFilter.h" michael@0: #include "SkColorFilterImageFilter.h" michael@0: #include "SkColorMatrixFilter.h" michael@0: #include "SkColorShader.h" michael@0: #include "SkComposeImageFilter.h" michael@0: #include "SkComposeShader.h" michael@0: #include "SkCornerPathEffect.h" michael@0: #include "SkDashPathEffect.h" michael@0: #include "SkDiscretePathEffect.h" michael@0: #include "SkDisplacementMapEffect.h" michael@0: #include "SkDropShadowImageFilter.h" michael@0: #include "SkEmptyShader.h" michael@0: #include "SkEmbossMaskFilter.h" michael@0: #include "SkFlattenable.h" michael@0: #include "SkGradientShader.h" michael@0: #include "SkImages.h" michael@0: #include "SkLayerDrawLooper.h" michael@0: #include "SkLayerRasterizer.h" michael@0: #include "SkLerpXfermode.h" michael@0: #include "SkLightingImageFilter.h" michael@0: #include "SkLumaColorFilter.h" michael@0: #include "SkMagnifierImageFilter.h" michael@0: #include "SkMatrixConvolutionImageFilter.h" michael@0: #include "SkMergeImageFilter.h" michael@0: #include "SkMorphologyImageFilter.h" michael@0: #include "SkOffsetImageFilter.h" michael@0: #include "SkOnce.h" michael@0: #include "SkPerlinNoiseShader.h" michael@0: #include "SkPictureImageFilter.h" michael@0: #include "SkPixelXorXfermode.h" michael@0: #include "SkRectShaderImageFilter.h" michael@0: #include "SkResizeImageFilter.h" michael@0: #include "SkStippleMaskFilter.h" michael@0: #include "SkTableColorFilter.h" michael@0: #include "SkTestImageFilters.h" michael@0: #include "SkTileImageFilter.h" michael@0: #include "SkXfermodeImageFilter.h" michael@0: michael@0: static void InitializeFlattenables(int*) { michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkAvoidXfermode) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBicubicImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapProcShader) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapSource) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurDrawLooper) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorMatrixFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposePathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkCornerPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDashPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDilateImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiscretePathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDisplacementMapEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDropShadowImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmbossMaskFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkErodeImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerDrawLooper) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerRasterizer) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLerpXfermode) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLumaColorFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath1DPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Sk2DPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLine2DPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath2DPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPerlinNoiseShader) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPixelXorXfermode) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRectShaderImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkResizeImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkStippleMaskFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTileImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkXfermodeImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMagnifierImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixConvolutionImageFilter) michael@0: michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkOffsetImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMergeImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDownSampleImageFilter) michael@0: SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMallocPixelRef) michael@0: michael@0: SkArithmeticMode::InitializeFlattenables(); michael@0: SkBlurMaskFilter::InitializeFlattenables(); michael@0: SkColorFilter::InitializeFlattenables(); michael@0: SkGradientShader::InitializeFlattenables(); michael@0: SkImages::InitializeFlattenables(); michael@0: SkLightingImageFilter::InitializeFlattenables(); michael@0: SkTableColorFilter::InitializeFlattenables(); michael@0: SkXfermode::InitializeFlattenables(); michael@0: } michael@0: michael@0: void SkFlattenable::InitializeFlattenablesIfNeeded() { michael@0: int dummy; michael@0: SK_DECLARE_STATIC_ONCE(once); michael@0: SkOnce(&once, InitializeFlattenables, &dummy); michael@0: }