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" 203f2d45aff69260fcf39d4eea8586387ed44402bbsenorblanco@chromium.org#include "SkBicubicImageFilter.h" 21d912ca419927e8548e9e931156bbbc81f26969aesenorblanco@chromium.org#include "SkBitmapSource.h" 22a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkBlurDrawLooper.h" 23a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkBlurImageFilter.h" 24a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkBlurMaskFilter.h" 25a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkColorFilter.h" 26392e14eaaf952565e25e11b8e5133507e4e7d0d8senorblanco@chromium.org#include "SkColorFilterImageFilter.h" 27a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkColorMatrixFilter.h" 28a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkColorShader.h" 291c4c9ef43747b42d2c31b5f17fe5e054fb3fee64commit-bot@chromium.org#include "SkComposeImageFilter.h" 30b3c0f4886e22b6d2041c1049a1f295943959fff1scroggo#include "SkComposeShader.h" 31a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkCornerPathEffect.h" 32a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkDashPathEffect.h" 33a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkDiscretePathEffect.h" 34781cc76e0f1ebb06e0796a9237045ae9d4bddd21sugoi@google.com#include "SkDisplacementMapEffect.h" 35f44fcdca01722959c3be335f44e88b59dbb33a10junov@chromium.org#include "SkDropShadowImageFilter.h" 36a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkEmptyShader.h" 3772ae6bd24eb72be13d5745129c16058e4d54e2f4scroggo@google.com#include "SkEmbossMaskFilter.h" 38a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkFlattenable.h" 39a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkGradientShader.h" 40a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkLayerDrawLooper.h" 41a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkLayerRasterizer.h" 428c6411a603266e94dd87445ac30e0b1abc36b0afreed@google.com#include "SkLerpXfermode.h" 430833777df1f05adafd9b70c666a72d80defa4f6bdjsollen@google.com#include "SkLightingImageFilter.h" 445970f625e96cdc007c563ae72f343ae0d71719a1commit-bot@chromium.org#include "SkLocalMatrixShader.h" 456c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#include "SkLumaColorFilter.h" 4635c5ff0be81f2bbba9a7f31b055124a51e6168f4senorblanco@chromium.org#include "SkMagnifierImageFilter.h" 47b4ca9df976951adf632388371f9a8a9219d93014senorblanco@chromium.org#include "SkMatrixConvolutionImageFilter.h" 484a9a612b5200597cca0bda0a356250835cbdc7d6senorblanco@chromium.org#include "SkMergeImageFilter.h" 49a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkMorphologyImageFilter.h" 504a9a612b5200597cca0bda0a356250835cbdc7d6senorblanco@chromium.org#include "SkOffsetImageFilter.h" 51c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org#include "SkOnce.h" 52e3b4c5097a6fd9b6c09d2ffbc3db170a287fdd99sugoi@google.com#include "SkPerlinNoiseShader.h" 539e5f85e89d03a850d435fc951e74e9861a0c1bddcommit-bot@chromium.org#include "SkPictureImageFilter.h" 54c5d9bb0f677069f62ec76373b9730e70e7352455commit-bot@chromium.org#include "SkPictureShader.h" 55a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkPixelXorXfermode.h" 56cf292b7b32732330f7e0a55e6dd323426e466f80commit-bot@chromium.org#include "SkRectShaderImageFilter.h" 57088719ecdc89b399dd3a3a65f8cced262e50d951robertphillips@google.com#include "SkStippleMaskFilter.h" 58a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkTableColorFilter.h" 59a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com#include "SkTestImageFilters.h" 600ac74b2c0d0f740bdf1c0dcba2bef77bc33f77e9sugoi@google.com#include "SkTileImageFilter.h" 61fd0ec2c76a27ce26a62da23eb75017839959e7cbsenorblanco@chromium.org#include "SkMatrixImageFilter.h" 6286fc266eda887920e3dd104bee8121ae19729cf5senorblanco@chromium.org#include "SkXfermodeImageFilter.h" 63a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com 641b81877880253c75f835eede9a8ee21b9e7b584amtkleinstatic void InitializeFlattenables() { 65a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkAvoidXfermode) 663f2d45aff69260fcf39d4eea8586387ed44402bbsenorblanco@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBicubicImageFilter) 67a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapProcShader) 68d912ca419927e8548e9e931156bbbc81f26969aesenorblanco@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBitmapSource) 69a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurDrawLooper) 70a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurImageFilter) 71a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorMatrixFilter) 72a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorShader) 73a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposePathEffect) 74b3c0f4886e22b6d2041c1049a1f295943959fff1scroggo SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeShader) 75a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkCornerPathEffect) 76a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDashPathEffect) 77a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDilateImageFilter) 78a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDiscretePathEffect) 79781cc76e0f1ebb06e0796a9237045ae9d4bddd21sugoi@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDisplacementMapEffect) 80f44fcdca01722959c3be335f44e88b59dbb33a10junov@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDropShadowImageFilter) 8172ae6bd24eb72be13d5745129c16058e4d54e2f4scroggo@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmbossMaskFilter) 82a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkEmptyShader) 83a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkErodeImageFilter) 84a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerDrawLooper) 85a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLayerRasterizer) 868c6411a603266e94dd87445ac30e0b1abc36b0afreed@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLerpXfermode) 875970f625e96cdc007c563ae72f343ae0d71719a1commit-bot@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLocalMatrixShader) 886c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLumaColorFilter) 89a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath1DPathEffect) 90d8a6cc814f1a0a8faaddad05ae765ad2f6b11aacscroggo@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(Sk2DPathEffect) 91d8a6cc814f1a0a8faaddad05ae765ad2f6b11aacscroggo@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLine2DPathEffect) 92a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPath2DPathEffect) 93e3b4c5097a6fd9b6c09d2ffbc3db170a287fdd99sugoi@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPerlinNoiseShader) 949e5f85e89d03a850d435fc951e74e9861a0c1bddcommit-bot@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureImageFilter) 95c5d9bb0f677069f62ec76373b9730e70e7352455commit-bot@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPictureShader) 96a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkPixelXorXfermode) 97cf292b7b32732330f7e0a55e6dd323426e466f80commit-bot@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRectShaderImageFilter) 98941ee9303b62163ae08bbdcd7ad514e1a6389bdarobertphillips@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkStippleMaskFilter) 99a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSumPathEffect) 1000ac74b2c0d0f740bdf1c0dcba2bef77bc33f77e9sugoi@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTileImageFilter) 101fd0ec2c76a27ce26a62da23eb75017839959e7cbsenorblanco@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixImageFilter) 10286fc266eda887920e3dd104bee8121ae19729cf5senorblanco@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkXfermodeImageFilter) 10382aa7482cbf55ce6d42c692550cadee5e23146e4bsalomon@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMagnifierImageFilter) 104b4ca9df976951adf632388371f9a8a9219d93014senorblanco@chromium.org SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMatrixConvolutionImageFilter) 105a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com 106a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkOffsetImageFilter) 107a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkComposeImageFilter) 108a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMergeImageFilter) 109a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkColorFilterImageFilter) 110a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDownSampleImageFilter) 1115370cd969d8f3957e4306068e6195ac1bca3d6cddjsollen@google.com SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkMallocPixelRef) 1125370cd969d8f3957e4306068e6195ac1bca3d6cddjsollen@google.com 1139a6eb0e1e8a8de7371cd9604f34619b8f87de66fsenorblanco@chromium.org SkArithmeticMode::InitializeFlattenables(); 114a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SkBlurMaskFilter::InitializeFlattenables(); 115a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SkColorFilter::InitializeFlattenables(); 116a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SkGradientShader::InitializeFlattenables(); 1170833777df1f05adafd9b70c666a72d80defa4f6bdjsollen@google.com SkLightingImageFilter::InitializeFlattenables(); 118a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SkTableColorFilter::InitializeFlattenables(); 119a2ca41e3afdd8fad5e0e924dec029f33918e0a67djsollen@google.com SkXfermode::InitializeFlattenables(); 120e92c68f7d7398e8a510b7157a38747b23cb883aeskia.committer@gmail.com 121d26147adbbdca85f07dff432025afee0c8614387caryclark@google.com} 122c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org 123c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.orgvoid SkFlattenable::InitializeFlattenablesIfNeeded() { 124c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org SK_DECLARE_STATIC_ONCE(once); 1251b81877880253c75f835eede9a8ee21b9e7b584amtklein SkOnce(&once, InitializeFlattenables); 126c0b7e10c6a68f59e1653e6c18e6bc954b3c3f0cfcommit-bot@chromium.org} 127