1d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com/*
2d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com * Copyright 2011 Google Inc.
3d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com *
4d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com * Use of this source code is governed by a BSD-style license that can be
5d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com * found in the LICENSE file.
6d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com */
7d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com
8d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com#include "SkTypes.h"
9d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com
10d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com#include "SkBitmapProcShader.h"
11d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com#include "SkMallocPixelRef.h"
12d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com#include "SkPathEffect.h"
13d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com#include "SkPixelRef.h"
14d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com#include "SkXfermode.h"
15d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com
16a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "Sk1DPathEffect.h"
17a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "Sk2DPathEffect.h"
189a6eb0e1e8a8de7371cd9604f34619b8f87de66fsenorblanco@chromium.org#include "SkArithmeticMode.h"
19a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkAvoidXfermode.h"
20d912ca419927e8548e9e931156bbbc81f26969aesenorblanco@chromium.org#include "SkBitmapSource.h"
21a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkBlurDrawLooper.h"
22a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkBlurImageFilter.h"
23a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkBlurMaskFilter.h"
24a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkColorFilter.h"
25392e14eaaf952565e25e11b8e5133507e4e7d0d8senorblanco@chromium.org#include "SkColorFilterImageFilter.h"
26a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkColorMatrixFilter.h"
27a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkColorShader.h"
281c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#include "SkComposeImageFilter.h"
29b3c0f4886e22b6d2041c1049a1f295943959fff1scroggo#include "SkComposeShader.h"
30a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkCornerPathEffect.h"
31a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkDashPathEffect.h"
32a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkDiscretePathEffect.h"
33781cc76e0f1ebb06e0796a9237045ae9d4bddd21sugoi@google.com#include "SkDisplacementMapEffect.h"
34f44fcdca01722959c3be335f44e88b59dbb33a10junov@chromium.org#include "SkDropShadowImageFilter.h"
35a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkEmptyShader.h"
3672ae6bd24eb72be13d5745129c16058e4d54e2f4scroggo@google.com#include "SkEmbossMaskFilter.h"
37a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkFlattenable.h"
38a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkGradientShader.h"
39a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkLayerDrawLooper.h"
40a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkLayerRasterizer.h"
418c6411a603266e94dd87445ac30e0b1abc36b0afreed@google.com#include "SkLerpXfermode.h"
420833777df1f05adafd9b70c666a72d80defa4f6bdjsollen@google.com#include "SkLightingImageFilter.h"
435970f625e96cdc007c563ae72f343ae0d71719a1commit-bot@chromium.org#include "SkLocalMatrixShader.h"
446c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#include "SkLumaColorFilter.h"
4535c5ff0be81f2bbba9a7f31b055124a51e6168f4senorblanco@chromium.org#include "SkMagnifierImageFilter.h"
46b4ca9df976951adf632388371f9a8a9219d93014senorblanco@chromium.org#include "SkMatrixConvolutionImageFilter.h"
474a9a612b5200597cca0bda0a356250835cbdc7d6senorblanco@chromium.org#include "SkMergeImageFilter.h"
48a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkMorphologyImageFilter.h"
494a9a612b5200597cca0bda0a356250835cbdc7d6senorblanco@chromium.org#include "SkOffsetImageFilter.h"
50c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org#include "SkOnce.h"
51e3b4c5097a6fd9b6c09d2ffbc3db170a287fdd99sugoi@google.com#include "SkPerlinNoiseShader.h"
529e5f85e89d03a850d435fc951e74e9861a0c1bddcommit-bot@chromium.org#include "SkPictureImageFilter.h"
53c5d9bb0f677069f62ec76373b9730e70e7352455commit-bot@chromium.org#include "SkPictureShader.h"
54a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkPixelXorXfermode.h"
55cf292b7b32732330f7e0a55e6dd323426e466f80commit-bot@chromium.org#include "SkRectShaderImageFilter.h"
56a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkTableColorFilter.h"
57a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkTestImageFilters.h"
580ac74b2c0d0f740bdf1c0dcba2bef77bc33f77e9sugoi@google.com#include "SkTileImageFilter.h"
59fd0ec2c76a27ce26a62da23eb75017839959e7cbsenorblanco@chromium.org#include "SkMatrixImageFilter.h"
6086fc266eda887920e3dd104bee8121ae19729cf5senorblanco@chromium.org#include "SkXfermodeImageFilter.h"
61a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com
629fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedclass SkPrivateEffectInitializer {
639fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedpublic:
649fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    static void Init() {
659fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkAvoidXfermode)
669fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapProcShader)
679fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapSource)
689fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurDrawLooper)
699fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurImageFilter)
709fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorMatrixFilter)
719fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader)
729fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposePathEffect)
739fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader)
749fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkCornerPathEffect)
759fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDashPathEffect)
769fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDilateImageFilter)
779fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiscretePathEffect)
789fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDisplacementMapEffect)
799fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDropShadowImageFilter)
809fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmbossMaskFilter)
819fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader)
829fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkErodeImageFilter)
839fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerDrawLooper)
849fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerRasterizer)
859fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLerpXfermode)
869fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLocalMatrixShader)
879fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLumaColorFilter)
889fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath1DPathEffect)
899fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLine2DPathEffect)
909fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath2DPathEffect)
919fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPerlinNoiseShader)
929fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureImageFilter)
939fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader)
949fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPixelXorXfermode)
959fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRectShaderImageFilter)
969fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect)
979fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTileImageFilter)
989fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter)
999fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkXfermodeImageFilter)
1009fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMagnifierImageFilter)
1019fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixConvolutionImageFilter)
102a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com
1039fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkOffsetImageFilter)
1049fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeImageFilter)
1059fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMergeImageFilter)
1069fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterImageFilter)
1079fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDownSampleImageFilter)
1085370cd969d8f3957e4306068e6195ac1bca3d6cddjsollen@google.com
1099fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkArithmeticMode::InitializeFlattenables();
1109fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkBlurMaskFilter::InitializeFlattenables();
1119fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkColorFilter::InitializeFlattenables();
1129fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkGradientShader::InitializeFlattenables();
1139fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkLightingImageFilter::InitializeFlattenables();
1149fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkTableColorFilter::InitializeFlattenables();
1159fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed        SkXfermode::InitializeFlattenables();
1169fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    }
1179fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed};
118c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org
119c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.orgvoid SkFlattenable::InitializeFlattenablesIfNeeded() {
120c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org    SK_DECLARE_STATIC_ONCE(once);
1219fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed    SkOnce(&once, SkPrivateEffectInitializer::Init);
122c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org}
123