File indexing completed on 2024-05-12 15:59:31

0001 /*
0002  *  SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #ifndef _KO_COLOR_CONVERSION_ALPHA_TRANSFORMATION_H_
0008 #define _KO_COLOR_CONVERSION_ALPHA_TRANSFORMATION_H_
0009 
0010 #include "KoColorConversionTransformation.h"
0011 #include "KoColorConversionTransformationFactory.h"
0012 
0013 #include <KoConfig.h>
0014 #ifdef HAVE_OPENEXR
0015 #include <half.h>
0016 #endif
0017 
0018 /**
0019  * Create converter from the alpha color space to any color space
0020  * This class is for use by the KoColorConversionSystemn, no reason
0021  * to use it directly.
0022  */
0023 template<typename alpha_channel_type>
0024 class KoColorConversionFromAlphaTransformationFactoryImpl : public KoColorConversionTransformationFactory
0025 {
0026 public:
0027     KoColorConversionFromAlphaTransformationFactoryImpl(const QString& _dstModelId, const QString& _dstDepthId, const QString& _dstProfileName);
0028     KoColorConversionTransformation* createColorTransformation(const KoColorSpace* srcColorSpace,
0029                                                                        const KoColorSpace* dstColorSpace,
0030                                                                        KoColorConversionTransformation::Intent renderingIntent,
0031                                                                        KoColorConversionTransformation::ConversionFlags conversionFlags) const override;
0032 };
0033 
0034 typedef KoColorConversionFromAlphaTransformationFactoryImpl<quint8> KoColorConversionFromAlphaTransformationFactory;
0035 typedef KoColorConversionFromAlphaTransformationFactoryImpl<quint16> KoColorConversionFromAlphaU16TransformationFactory;
0036 #ifdef HAVE_OPENEXR
0037 typedef KoColorConversionFromAlphaTransformationFactoryImpl<half> KoColorConversionFromAlphaF16TransformationFactory;
0038 #endif
0039 typedef KoColorConversionFromAlphaTransformationFactoryImpl<float> KoColorConversionFromAlphaF32TransformationFactory;
0040 
0041 /**
0042  * Create converter to the alpha color space to any color space
0043  * This class is for use by the KoColorConversionSystemn, no reason
0044  * to use it directly.
0045  */
0046 template <typename alpha_channel_type>
0047 class KoColorConversionToAlphaTransformationFactoryImpl : public KoColorConversionTransformationFactory
0048 {
0049 public:
0050     KoColorConversionToAlphaTransformationFactoryImpl(const QString& _dstModelId, const QString& _dstDepthId, const QString& _srcProfileName);
0051     KoColorConversionTransformation* createColorTransformation(const KoColorSpace* srcColorSpace,
0052                                                                        const KoColorSpace* dstColorSpace,
0053                                                                        KoColorConversionTransformation::Intent renderingIntent,
0054                                                                        KoColorConversionTransformation::ConversionFlags conversionFlags) const override;
0055 };
0056 
0057 typedef KoColorConversionToAlphaTransformationFactoryImpl<quint8> KoColorConversionToAlphaTransformationFactory;
0058 typedef KoColorConversionToAlphaTransformationFactoryImpl<quint16> KoColorConversionToAlphaU16TransformationFactory;
0059 #ifdef HAVE_OPENEXR
0060 typedef KoColorConversionToAlphaTransformationFactoryImpl<half> KoColorConversionToAlphaF16TransformationFactory;
0061 #endif
0062 typedef KoColorConversionToAlphaTransformationFactoryImpl<float> KoColorConversionToAlphaF32TransformationFactory;
0063 
0064 #endif