C++程序  |  156行  |  5.88 KB

/*
 * Copyright 2011 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#include "SkFlattenable.h"

#if defined(SK_DISABLE_EFFECT_DESERIALIZATION)

    void SkFlattenable::PrivateInitializer::InitEffects() {}
    void SkFlattenable::PrivateInitializer::InitImageFilters() {}

#else

    #include "../../src/effects/SkDashImpl.h"
    #include "../../src/effects/SkEmbossMaskFilter.h"
    #include "../../src/effects/SkOpPE.h"
    #include "../../src/effects/SkTrimPE.h"
    #include "Sk1DPathEffect.h"
    #include "Sk2DPathEffect.h"
    #include "SkBitmapProcShader.h"
    #include "SkColorFilter.h"
    #include "SkColorFilterShader.h"
    #include "SkColorMatrixFilterRowMajor255.h"
    #include "SkColorShader.h"
    #include "SkComposeShader.h"
    #include "SkCornerPathEffect.h"
    #include "SkDiscretePathEffect.h"
    #include "SkEmptyShader.h"
    #include "SkGradientShader.h"
    #include "SkHighContrastFilter.h"
    #include "SkImageShader.h"
    #include "SkLayerDrawLooper.h"
    #include "SkLightingShader.h"
    #include "SkLocalMatrixShader.h"
    #include "SkLumaColorFilter.h"
    #include "SkNormalSource.h"
    #include "SkOverdrawColorFilter.h"
    #include "SkPathEffect.h"
    #include "SkPerlinNoiseShader.h"
    #include "SkPictureShader.h"
    #include "SkRecordedDrawable.h"
    #include "SkShaderBase.h"
    #include "SkShaderMaskFilter.h"
    #include "SkTableColorFilter.h"
    #include "SkToSRGBColorFilter.h"

    #include "SkAlphaThresholdFilter.h"
    #include "SkBlurImageFilter.h"
    #include "SkColorFilterImageFilter.h"
    #include "SkComposeImageFilter.h"
    #include "SkDisplacementMapEffect.h"
    #include "SkDropShadowImageFilter.h"
    #include "SkImageSource.h"
    #include "SkLightingImageFilter.h"
    #include "SkLocalMatrixImageFilter.h"
    #include "SkMagnifierImageFilter.h"
    #include "SkMatrixConvolutionImageFilter.h"
    #include "SkMatrixImageFilter.h"
    #include "SkMergeImageFilter.h"
    #include "SkMorphologyImageFilter.h"
    #include "SkOffsetImageFilter.h"
    #include "SkPaintImageFilter.h"
    #include "SkPictureImageFilter.h"
    #include "SkTileImageFilter.h"
    #include "SkXfermodeImageFilter.h"

    /*
     *  Register most effects for deserialization.
     *
     *  None of these are strictly required for Skia to operate, so if you're
     *  not using deserialization yourself, you can define
     *  SK_DISABLE_EFFECT_SERIALIZATION, or modify/replace this file as needed.
     */
    void SkFlattenable::PrivateInitializer::InitEffects() {
        // Shaders.
        SK_REGISTER_FLATTENABLE(SkColor4Shader);
        SK_REGISTER_FLATTENABLE(SkColorFilterShader);
        SK_REGISTER_FLATTENABLE(SkColorShader);
        SK_REGISTER_FLATTENABLE(SkComposeShader);
        SK_REGISTER_FLATTENABLE(SkEmptyShader);
        SK_REGISTER_FLATTENABLE(SkLocalMatrixShader);
        SK_REGISTER_FLATTENABLE(SkPictureShader);
        SkGradientShader::RegisterFlattenables();
        SkLightingShader::RegisterFlattenables();
        SkPerlinNoiseShader::RegisterFlattenables();
        SkShaderBase::RegisterFlattenables();

        // Color filters.
        SK_REGISTER_FLATTENABLE(SkColorMatrixFilterRowMajor255);
        SK_REGISTER_FLATTENABLE(SkLumaColorFilter);
        SK_REGISTER_FLATTENABLE(SkToSRGBColorFilter);
        SkColorFilter::RegisterFlattenables();
        SkHighContrastFilter::RegisterFlattenables();
        SkOverdrawColorFilter::RegisterFlattenables();
        SkTableColorFilter::RegisterFlattenables();

        // Mask filters.
        SK_REGISTER_FLATTENABLE(SkEmbossMaskFilter);
        SkMaskFilter::RegisterFlattenables();
        SkShaderMaskFilter::RegisterFlattenables();

        // Path effects.
        SK_REGISTER_FLATTENABLE(SkCornerPathEffect);
        SK_REGISTER_FLATTENABLE(SkDashImpl);
        SK_REGISTER_FLATTENABLE(SkDiscretePathEffect);
        SK_REGISTER_FLATTENABLE(SkLine2DPathEffect);
        SK_REGISTER_FLATTENABLE(SkMatrixPE);
        SK_REGISTER_FLATTENABLE(SkOpPE);
        SK_REGISTER_FLATTENABLE(SkPath1DPathEffect);
        SK_REGISTER_FLATTENABLE(SkPath2DPathEffect);
        SK_REGISTER_FLATTENABLE(SkStrokePE);
        SK_REGISTER_FLATTENABLE(SkTrimPE);
        SkPathEffect::RegisterFlattenables();

        // Misc.
        SK_REGISTER_FLATTENABLE(SkLayerDrawLooper);
        SK_REGISTER_FLATTENABLE(SkRecordedDrawable);
        SkNormalSource::RegisterFlattenables();
    }

    /*
     *  Register SkImageFilters for deserialization.
     *
     *  None of these are strictly required for Skia to operate, so if you're
     *  not using deserialization yourself, you can define
     *  SK_DISABLE_EFFECT_SERIALIZATION, or modify/replace this file as needed.
     */
    void SkFlattenable::PrivateInitializer::InitImageFilters() {
        SkAlphaThresholdFilter::RegisterFlattenables();
        SkImageFilter::RegisterFlattenables();
        SkArithmeticImageFilter::RegisterFlattenables();
        SkXfermodeImageFilter::RegisterFlattenables();
        SK_REGISTER_FLATTENABLE(SkDilateImageFilter);
        SK_REGISTER_FLATTENABLE(SkDisplacementMapEffect);
        SK_REGISTER_FLATTENABLE(SkDropShadowImageFilter);
        SK_REGISTER_FLATTENABLE(SkErodeImageFilter);
        SK_REGISTER_FLATTENABLE(SkImageSource);
        SK_REGISTER_FLATTENABLE(SkLocalMatrixImageFilter);
        SK_REGISTER_FLATTENABLE(SkPaintImageFilter);
        SK_REGISTER_FLATTENABLE(SkPictureImageFilter);
        SK_REGISTER_FLATTENABLE(SkTileImageFilter);
        SK_REGISTER_FLATTENABLE(SkMagnifierImageFilter);
        SK_REGISTER_FLATTENABLE(SkMatrixConvolutionImageFilter);
        SK_REGISTER_FLATTENABLE(SkMatrixImageFilter);
        SK_REGISTER_FLATTENABLE(SkOffsetImageFilter);
        SK_REGISTER_FLATTENABLE(SkComposeImageFilter);
        SK_REGISTER_FLATTENABLE(SkMergeImageFilter);
        SK_REGISTER_FLATTENABLE(SkColorFilterImageFilter);
        SkLightingImageFilter::RegisterFlattenables();
    }

#endif