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

0001 /*
0002  *  SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com>
0003  *  SPDX-FileCopyrightText: 2022 L. E. Segovia <amy@amyspark.me>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #include "KoAlphaMaskApplicatorFactoryImpl.h"
0009 
0010 #if XSIMD_UNIVERSAL_BUILD_PASS
0011 #include "KoAlphaMaskApplicator.h"
0012 
0013 #include <KoConfig.h>
0014 #ifdef HAVE_OPENEXR
0015 #include <half.h>
0016 #endif
0017 
0018 template<typename _channels_type_,
0019          int _channels_nb_,
0020          int _alpha_pos_>
0021 template<typename _impl>
0022 KoAlphaMaskApplicatorBase*
0023 KoAlphaMaskApplicatorFactoryImpl<_channels_type_, _channels_nb_, _alpha_pos_>::create(int)
0024 {
0025     return new KoAlphaMaskApplicator<_channels_type_,
0026                                      _channels_nb_,
0027                                      _alpha_pos_,
0028                                      _impl>();
0029 }
0030 
0031 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint8,  4, 3>::create<xsimd::current_arch>(int);
0032 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint16, 4, 3>::create<xsimd::current_arch>(int);
0033 #ifdef HAVE_OPENEXR
0034 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<half,    4, 3>::create<xsimd::current_arch>(int);
0035 #endif
0036 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<float,   4, 3>::create<xsimd::current_arch>(int);
0037 
0038 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint8,  5, 4>::create<xsimd::current_arch>(int);
0039 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint16, 5, 4>::create<xsimd::current_arch>(int);
0040 #ifdef HAVE_OPENEXR
0041 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<half,    5, 4>::create<xsimd::current_arch>(int);
0042 #endif
0043 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<float,   5, 4>::create<xsimd::current_arch>(int);
0044 
0045 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint8,  2, 1>::create<xsimd::current_arch>(int);
0046 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint16, 2, 1>::create<xsimd::current_arch>(int);
0047 #ifdef HAVE_OPENEXR
0048 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<half,    2, 1>::create<xsimd::current_arch>(int);
0049 #endif
0050 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<float,   2, 1>::create<xsimd::current_arch>(int);
0051 
0052 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint8,  1, 0>::create<xsimd::current_arch>(int);
0053 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<quint16, 1, 0>::create<xsimd::current_arch>(int);
0054 #ifdef HAVE_OPENEXR
0055 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<half,    1, 0>::create<xsimd::current_arch>(int);
0056 #endif
0057 template KoAlphaMaskApplicatorBase* KoAlphaMaskApplicatorFactoryImpl<float,   1, 0>::create<xsimd::current_arch>(int);
0058 
0059 #endif // XSIMD_UNIVERSAL_BUILD_PASS