/*
 * Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Sun designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Sun in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
 * CA 95054 USA or visit www.sun.com if you need additional information or
 * have any questions.
 */

#include <stdlib.h>
#include <string.h>
#include <sys/utsname.h>
#include "GraphicsPrimitiveMgr.h"
#include "java2d_Mlib.h"

typedef struct {
    AnyFunc  *func_c;
    AnyFunc  *func_vis;
} AnyFunc_pair;

#define DEF_FUNC(x)    \
    void x();          \
    void ADD_SUFF(x)();

#define ADD_FUNC(x)    \
    { & x, & ADD_SUFF(x) }

/***************************************************************/

DEF_FUNC(AnyByteDrawGlyphList)
DEF_FUNC(AnyByteDrawGlyphListXor)
DEF_FUNC(AnyByteIsomorphicCopy)
DEF_FUNC(AnyByteIsomorphicScaleCopy)
DEF_FUNC(AnyByteIsomorphicXorCopy)
DEF_FUNC(AnyByteSetLine)
DEF_FUNC(AnyByteSetRect)
DEF_FUNC(AnyByteSetSpans)
DEF_FUNC(AnyByteXorLine)
DEF_FUNC(AnyByteXorRect)
DEF_FUNC(AnyByteXorSpans)
DEF_FUNC(AnyShortDrawGlyphList)
DEF_FUNC(AnyShortDrawGlyphListXor)
DEF_FUNC(AnyShortIsomorphicCopy)
DEF_FUNC(AnyShortIsomorphicScaleCopy)
DEF_FUNC(AnyShortIsomorphicXorCopy)
DEF_FUNC(AnyShortSetLine)
DEF_FUNC(AnyShortSetRect)
DEF_FUNC(AnyShortSetSpans)
DEF_FUNC(AnyShortXorLine)
DEF_FUNC(AnyShortXorRect)
DEF_FUNC(AnyShortXorSpans)
DEF_FUNC(Any3ByteDrawGlyphList)
DEF_FUNC(Any3ByteDrawGlyphListXor)
DEF_FUNC(Any3ByteIsomorphicCopy)
DEF_FUNC(Any3ByteIsomorphicScaleCopy)
DEF_FUNC(Any3ByteIsomorphicXorCopy)
DEF_FUNC(Any3ByteSetLine)
DEF_FUNC(Any3ByteSetRect)
DEF_FUNC(Any3ByteSetSpans)
DEF_FUNC(Any3ByteXorLine)
DEF_FUNC(Any3ByteXorRect)
DEF_FUNC(Any3ByteXorSpans)
DEF_FUNC(Any4ByteDrawGlyphList)
DEF_FUNC(Any4ByteDrawGlyphListXor)
DEF_FUNC(Any4ByteIsomorphicCopy)
DEF_FUNC(Any4ByteIsomorphicScaleCopy)
DEF_FUNC(Any4ByteIsomorphicXorCopy)
DEF_FUNC(Any4ByteSetLine)
DEF_FUNC(Any4ByteSetRect)
DEF_FUNC(Any4ByteSetSpans)
DEF_FUNC(Any4ByteXorLine)
DEF_FUNC(Any4ByteXorRect)
DEF_FUNC(Any4ByteXorSpans)
DEF_FUNC(AnyIntDrawGlyphList)
DEF_FUNC(AnyIntDrawGlyphListXor)
DEF_FUNC(AnyIntIsomorphicCopy)
DEF_FUNC(AnyIntIsomorphicScaleCopy)
DEF_FUNC(AnyIntIsomorphicXorCopy)
DEF_FUNC(AnyIntSetLine)
DEF_FUNC(AnyIntSetRect)
DEF_FUNC(AnyIntSetSpans)
DEF_FUNC(AnyIntXorLine)
DEF_FUNC(AnyIntXorRect)
DEF_FUNC(AnyIntXorSpans)
DEF_FUNC(ByteGrayAlphaMaskFill)
DEF_FUNC(ByteGrayDrawGlyphListAA)
DEF_FUNC(ByteGraySrcMaskFill)
DEF_FUNC(ByteGraySrcOverMaskFill)
DEF_FUNC(ByteGrayToIntArgbConvert)
DEF_FUNC(ByteGrayToIntArgbScaleConvert)
DEF_FUNC(ByteIndexedBmToByteGrayScaleXparOver)
DEF_FUNC(ByteIndexedBmToByteGrayXparBgCopy)
DEF_FUNC(ByteIndexedBmToByteGrayXparOver)
DEF_FUNC(ByteIndexedToByteGrayConvert)
DEF_FUNC(ByteIndexedToByteGrayScaleConvert)
DEF_FUNC(Index12GrayToByteGrayConvert)
DEF_FUNC(Index12GrayToByteGrayScaleConvert)
DEF_FUNC(Index8GrayToByteGrayConvert)
DEF_FUNC(Index8GrayToByteGrayScaleConvert)
DEF_FUNC(IntArgbBmToByteGrayScaleXparOver)
DEF_FUNC(IntArgbBmToByteGrayXparBgCopy)
DEF_FUNC(IntArgbBmToByteGrayXparOver)
DEF_FUNC(IntArgbToByteGrayAlphaMaskBlit)
DEF_FUNC(IntArgbToByteGrayConvert)
DEF_FUNC(IntArgbToByteGrayScaleConvert)
DEF_FUNC(IntArgbToByteGraySrcOverMaskBlit)
DEF_FUNC(IntArgbToByteGrayXorBlit)
DEF_FUNC(IntRgbToByteGrayAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToByteGrayConvert)
DEF_FUNC(ThreeByteBgrToByteGrayScaleConvert)
DEF_FUNC(UshortGrayToByteGrayConvert)
DEF_FUNC(UshortGrayToByteGrayScaleConvert)
DEF_FUNC(ByteGrayToUshortGrayConvert)
DEF_FUNC(ByteGrayToUshortGrayScaleConvert)
DEF_FUNC(ByteIndexedBmToUshortGrayScaleXparOver)
DEF_FUNC(ByteIndexedBmToUshortGrayXparBgCopy)
DEF_FUNC(ByteIndexedBmToUshortGrayXparOver)
DEF_FUNC(ByteIndexedToUshortGrayConvert)
DEF_FUNC(ByteIndexedToUshortGrayScaleConvert)
DEF_FUNC(IntArgbBmToUshortGrayScaleXparOver)
DEF_FUNC(IntArgbToUshortGrayAlphaMaskBlit)
DEF_FUNC(IntArgbToUshortGrayConvert)
DEF_FUNC(IntArgbToUshortGrayScaleConvert)
DEF_FUNC(IntArgbToUshortGraySrcOverMaskBlit)
DEF_FUNC(IntArgbToUshortGrayXorBlit)
DEF_FUNC(IntRgbToUshortGrayAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToUshortGrayConvert)
DEF_FUNC(ThreeByteBgrToUshortGrayScaleConvert)
DEF_FUNC(UshortGrayAlphaMaskFill)
DEF_FUNC(UshortGrayDrawGlyphListAA)
DEF_FUNC(UshortGraySrcMaskFill)
DEF_FUNC(UshortGraySrcOverMaskFill)
DEF_FUNC(UshortGrayToIntArgbConvert)
DEF_FUNC(UshortGrayToIntArgbScaleConvert)
DEF_FUNC(ByteGrayToByteIndexedConvert)
DEF_FUNC(ByteGrayToByteIndexedScaleConvert)
DEF_FUNC(ByteIndexedAlphaMaskFill)
DEF_FUNC(ByteIndexedBmToByteIndexedScaleXparOver)
DEF_FUNC(ByteIndexedBmToByteIndexedXparBgCopy)
DEF_FUNC(ByteIndexedBmToByteIndexedXparOver)
DEF_FUNC(ByteIndexedDrawGlyphListAA)
DEF_FUNC(ByteIndexedToByteIndexedConvert)
DEF_FUNC(ByteIndexedToByteIndexedScaleConvert)
DEF_FUNC(Index12GrayToByteIndexedConvert)
DEF_FUNC(Index12GrayToByteIndexedScaleConvert)
DEF_FUNC(IntArgbBmToByteIndexedScaleXparOver)
DEF_FUNC(IntArgbBmToByteIndexedXparBgCopy)
DEF_FUNC(IntArgbBmToByteIndexedXparOver)
DEF_FUNC(IntArgbToByteIndexedAlphaMaskBlit)
DEF_FUNC(IntArgbToByteIndexedConvert)
DEF_FUNC(IntArgbToByteIndexedScaleConvert)
DEF_FUNC(IntArgbToByteIndexedXorBlit)
DEF_FUNC(IntRgbToByteIndexedAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToByteIndexedConvert)
DEF_FUNC(ThreeByteBgrToByteIndexedScaleConvert)
DEF_FUNC(ByteGrayToFourByteAbgrConvert)
DEF_FUNC(ByteGrayToFourByteAbgrScaleConvert)
DEF_FUNC(ByteIndexedBmToFourByteAbgrScaleXparOver)
DEF_FUNC(ByteIndexedBmToFourByteAbgrXparBgCopy)
DEF_FUNC(ByteIndexedBmToFourByteAbgrXparOver)
DEF_FUNC(ByteIndexedToFourByteAbgrConvert)
DEF_FUNC(ByteIndexedToFourByteAbgrScaleConvert)
DEF_FUNC(FourByteAbgrAlphaMaskFill)
DEF_FUNC(FourByteAbgrDrawGlyphListAA)
DEF_FUNC(FourByteAbgrSrcMaskFill)
DEF_FUNC(FourByteAbgrSrcOverMaskFill)
DEF_FUNC(FourByteAbgrToIntArgbConvert)
DEF_FUNC(FourByteAbgrToIntArgbScaleConvert)
DEF_FUNC(IntArgbBmToFourByteAbgrScaleXparOver)
DEF_FUNC(IntArgbToFourByteAbgrAlphaMaskBlit)
DEF_FUNC(IntArgbToFourByteAbgrConvert)
DEF_FUNC(IntArgbToFourByteAbgrScaleConvert)
DEF_FUNC(IntArgbToFourByteAbgrSrcOverMaskBlit)
DEF_FUNC(IntArgbToFourByteAbgrXorBlit)
DEF_FUNC(IntRgbToFourByteAbgrAlphaMaskBlit)
DEF_FUNC(IntRgbToFourByteAbgrConvert)
DEF_FUNC(IntRgbToFourByteAbgrScaleConvert)
DEF_FUNC(ThreeByteBgrToFourByteAbgrConvert)
DEF_FUNC(ThreeByteBgrToFourByteAbgrScaleConvert)
DEF_FUNC(ByteGrayToFourByteAbgrPreConvert)
DEF_FUNC(ByteGrayToFourByteAbgrPreScaleConvert)
DEF_FUNC(ByteIndexedBmToFourByteAbgrPreScaleXparOver)
DEF_FUNC(ByteIndexedBmToFourByteAbgrPreXparBgCopy)
DEF_FUNC(ByteIndexedBmToFourByteAbgrPreXparOver)
DEF_FUNC(ByteIndexedToFourByteAbgrPreConvert)
DEF_FUNC(ByteIndexedToFourByteAbgrPreScaleConvert)
DEF_FUNC(FourByteAbgrPreAlphaMaskFill)
DEF_FUNC(FourByteAbgrPreDrawGlyphListAA)
DEF_FUNC(FourByteAbgrPreSrcMaskFill)
DEF_FUNC(FourByteAbgrPreSrcOverMaskFill)
DEF_FUNC(FourByteAbgrPreToIntArgbConvert)
DEF_FUNC(FourByteAbgrPreToIntArgbScaleConvert)
DEF_FUNC(IntArgbBmToFourByteAbgrPreScaleXparOver)
DEF_FUNC(IntArgbToFourByteAbgrPreAlphaMaskBlit)
DEF_FUNC(IntArgbToFourByteAbgrPreConvert)
DEF_FUNC(IntArgbToFourByteAbgrPreScaleConvert)
DEF_FUNC(IntArgbToFourByteAbgrPreSrcOverMaskBlit)
DEF_FUNC(IntArgbToFourByteAbgrPreXorBlit)
DEF_FUNC(IntRgbToFourByteAbgrPreAlphaMaskBlit)
DEF_FUNC(IntRgbToFourByteAbgrPreConvert)
DEF_FUNC(IntRgbToFourByteAbgrPreScaleConvert)
DEF_FUNC(ThreeByteBgrToFourByteAbgrPreConvert)
DEF_FUNC(ThreeByteBgrToFourByteAbgrPreScaleConvert)
DEF_FUNC(ByteIndexedBmToIntArgbScaleXparOver)
DEF_FUNC(ByteIndexedBmToIntArgbXparBgCopy)
DEF_FUNC(ByteIndexedBmToIntArgbXparOver)
DEF_FUNC(ByteIndexedToIntArgbConvert)
DEF_FUNC(ByteIndexedToIntArgbScaleConvert)
DEF_FUNC(Index12GrayToIntArgbConvert)
DEF_FUNC(IntArgbAlphaMaskFill)
DEF_FUNC(IntArgbBmToIntArgbScaleXparOver)
DEF_FUNC(IntArgbDrawGlyphListAA)
DEF_FUNC(IntArgbSrcMaskFill)
DEF_FUNC(IntArgbSrcOverMaskFill)
DEF_FUNC(IntArgbToIntArgbAlphaMaskBlit)
DEF_FUNC(IntArgbToIntArgbSrcOverMaskBlit)
DEF_FUNC(IntArgbToIntArgbXorBlit)
DEF_FUNC(IntRgbToIntArgbAlphaMaskBlit)
DEF_FUNC(ByteIndexedBmToIntArgbBmScaleXparOver)
DEF_FUNC(ByteIndexedBmToIntArgbBmXparBgCopy)
DEF_FUNC(ByteIndexedBmToIntArgbBmXparOver)
DEF_FUNC(ByteIndexedToIntArgbBmConvert)
DEF_FUNC(ByteIndexedToIntArgbBmScaleConvert)
DEF_FUNC(IntArgbBmAlphaMaskFill)
DEF_FUNC(IntArgbBmDrawGlyphListAA)
DEF_FUNC(IntArgbBmToIntArgbConvert)
DEF_FUNC(IntArgbToIntArgbBmAlphaMaskBlit)
DEF_FUNC(IntArgbToIntArgbBmConvert)
DEF_FUNC(IntArgbToIntArgbBmScaleConvert)
DEF_FUNC(IntArgbToIntArgbBmXorBlit)
DEF_FUNC(ByteGrayToIntArgbPreConvert)
DEF_FUNC(ByteGrayToIntArgbPreScaleConvert)
DEF_FUNC(ByteIndexedBmToIntArgbPreScaleXparOver)
DEF_FUNC(ByteIndexedBmToIntArgbPreXparBgCopy)
DEF_FUNC(ByteIndexedBmToIntArgbPreXparOver)
DEF_FUNC(ByteIndexedToIntArgbPreConvert)
DEF_FUNC(ByteIndexedToIntArgbPreScaleConvert)
DEF_FUNC(IntArgbPreAlphaMaskFill)
DEF_FUNC(IntArgbPreDrawGlyphListAA)
DEF_FUNC(IntArgbPreSrcMaskFill)
DEF_FUNC(IntArgbPreSrcOverMaskFill)
DEF_FUNC(IntArgbPreToIntArgbConvert)
DEF_FUNC(IntArgbPreToIntArgbScaleConvert)
DEF_FUNC(IntArgbToIntArgbPreAlphaMaskBlit)
DEF_FUNC(IntArgbToIntArgbPreConvert)
DEF_FUNC(IntArgbToIntArgbPreScaleConvert)
DEF_FUNC(IntArgbToIntArgbPreSrcOverMaskBlit)
DEF_FUNC(IntArgbToIntArgbPreXorBlit)
DEF_FUNC(IntRgbToIntArgbPreAlphaMaskBlit)
DEF_FUNC(IntRgbToIntArgbPreConvert)
DEF_FUNC(IntRgbToIntArgbPreScaleConvert)
DEF_FUNC(ThreeByteBgrToIntArgbPreConvert)
DEF_FUNC(ThreeByteBgrToIntArgbPreScaleConvert)
DEF_FUNC(ByteIndexedBmToIntBgrScaleXparOver)
DEF_FUNC(ByteIndexedBmToIntBgrXparBgCopy)
DEF_FUNC(ByteIndexedBmToIntBgrXparOver)
DEF_FUNC(ByteIndexedToIntBgrConvert)
DEF_FUNC(ByteIndexedToIntBgrScaleConvert)
DEF_FUNC(IntArgbBmToIntBgrScaleXparOver)
DEF_FUNC(IntArgbBmToIntBgrXparBgCopy)
DEF_FUNC(IntArgbBmToIntBgrXparOver)
DEF_FUNC(IntArgbToIntBgrAlphaMaskBlit)
DEF_FUNC(IntArgbToIntBgrConvert)
DEF_FUNC(IntArgbToIntBgrScaleConvert)
DEF_FUNC(IntArgbToIntBgrSrcOverMaskBlit)
DEF_FUNC(IntArgbToIntBgrXorBlit)
DEF_FUNC(IntBgrAlphaMaskFill)
DEF_FUNC(IntBgrDrawGlyphListAA)
DEF_FUNC(IntBgrSrcMaskFill)
DEF_FUNC(IntBgrSrcOverMaskFill)
DEF_FUNC(IntBgrToIntArgbConvert)
DEF_FUNC(IntBgrToIntArgbScaleConvert)
DEF_FUNC(IntBgrToIntBgrAlphaMaskBlit)
DEF_FUNC(IntRgbToIntBgrAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToIntBgrConvert)
DEF_FUNC(ThreeByteBgrToIntBgrScaleConvert)
DEF_FUNC(ByteGrayToIntRgbConvert)
DEF_FUNC(ByteGrayToIntRgbScaleConvert)
DEF_FUNC(IntArgbBmToIntRgbXparBgCopy)
DEF_FUNC(IntArgbBmToIntRgbXparOver)
DEF_FUNC(IntArgbToIntRgbAlphaMaskBlit)
DEF_FUNC(IntArgbToIntRgbSrcOverMaskBlit)
DEF_FUNC(IntArgbToIntRgbXorBlit)
DEF_FUNC(IntRgbAlphaMaskFill)
DEF_FUNC(IntRgbDrawGlyphListAA)
DEF_FUNC(IntRgbSrcMaskFill)
DEF_FUNC(IntRgbSrcOverMaskFill)
DEF_FUNC(IntRgbToIntArgbConvert)
DEF_FUNC(IntRgbToIntArgbScaleConvert)
DEF_FUNC(IntRgbToIntRgbAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToIntRgbConvert)
DEF_FUNC(ThreeByteBgrToIntRgbScaleConvert)
DEF_FUNC(ByteGrayToIntRgbxConvert)
DEF_FUNC(ByteGrayToIntRgbxScaleConvert)
DEF_FUNC(ByteIndexedBmToIntRgbxScaleXparOver)
DEF_FUNC(ByteIndexedBmToIntRgbxXparBgCopy)
DEF_FUNC(ByteIndexedBmToIntRgbxXparOver)
DEF_FUNC(ByteIndexedToIntRgbxConvert)
DEF_FUNC(ByteIndexedToIntRgbxScaleConvert)
DEF_FUNC(IntArgbBmToIntRgbxScaleXparOver)
DEF_FUNC(IntArgbToIntRgbxConvert)
DEF_FUNC(IntArgbToIntRgbxScaleConvert)
DEF_FUNC(IntArgbToIntRgbxXorBlit)
DEF_FUNC(IntRgbxDrawGlyphListAA)
DEF_FUNC(IntRgbxToIntArgbConvert)
DEF_FUNC(IntRgbxToIntArgbScaleConvert)
DEF_FUNC(ThreeByteBgrToIntRgbxConvert)
DEF_FUNC(ThreeByteBgrToIntRgbxScaleConvert)
DEF_FUNC(ByteGrayToThreeByteBgrConvert)
DEF_FUNC(ByteGrayToThreeByteBgrScaleConvert)
DEF_FUNC(ByteIndexedBmToThreeByteBgrScaleXparOver)
DEF_FUNC(ByteIndexedBmToThreeByteBgrXparBgCopy)
DEF_FUNC(ByteIndexedBmToThreeByteBgrXparOver)
DEF_FUNC(ByteIndexedToThreeByteBgrConvert)
DEF_FUNC(ByteIndexedToThreeByteBgrScaleConvert)
DEF_FUNC(IntArgbBmToThreeByteBgrScaleXparOver)
DEF_FUNC(IntArgbBmToThreeByteBgrXparBgCopy)
DEF_FUNC(IntArgbBmToThreeByteBgrXparOver)
DEF_FUNC(IntArgbToThreeByteBgrAlphaMaskBlit)
DEF_FUNC(IntArgbToThreeByteBgrConvert)
DEF_FUNC(IntArgbToThreeByteBgrScaleConvert)
DEF_FUNC(IntArgbToThreeByteBgrSrcOverMaskBlit)
DEF_FUNC(IntArgbToThreeByteBgrXorBlit)
DEF_FUNC(IntRgbToThreeByteBgrAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrAlphaMaskFill)
DEF_FUNC(ThreeByteBgrDrawGlyphListAA)
DEF_FUNC(ThreeByteBgrSrcMaskFill)
DEF_FUNC(ThreeByteBgrSrcOverMaskFill)
DEF_FUNC(ThreeByteBgrToIntArgbConvert)
DEF_FUNC(ThreeByteBgrToIntArgbScaleConvert)
DEF_FUNC(ByteGrayToIndex8GrayConvert)
DEF_FUNC(ByteGrayToIndex8GrayScaleConvert)
DEF_FUNC(ByteIndexedBmToIndex8GrayXparBgCopy)
DEF_FUNC(ByteIndexedBmToIndex8GrayXparOver)
DEF_FUNC(ByteIndexedToIndex8GrayConvert)
DEF_FUNC(ByteIndexedToIndex8GrayScaleConvert)
DEF_FUNC(Index12GrayToIndex8GrayConvert)
DEF_FUNC(Index12GrayToIndex8GrayScaleConvert)
DEF_FUNC(Index8GrayAlphaMaskFill)
DEF_FUNC(Index8GrayDrawGlyphListAA)
DEF_FUNC(Index8GraySrcOverMaskFill)
DEF_FUNC(Index8GrayToIndex8GrayConvert)
DEF_FUNC(Index8GrayToIndex8GrayScaleConvert)
DEF_FUNC(IntArgbToIndex8GrayAlphaMaskBlit)
DEF_FUNC(IntArgbToIndex8GrayConvert)
DEF_FUNC(IntArgbToIndex8GrayScaleConvert)
DEF_FUNC(IntArgbToIndex8GraySrcOverMaskBlit)
DEF_FUNC(IntArgbToIndex8GrayXorBlit)
DEF_FUNC(IntRgbToIndex8GrayAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToIndex8GrayConvert)
DEF_FUNC(ThreeByteBgrToIndex8GrayScaleConvert)
DEF_FUNC(UshortGrayToIndex8GrayScaleConvert)
DEF_FUNC(ByteGrayToIndex12GrayConvert)
DEF_FUNC(ByteGrayToIndex12GrayScaleConvert)
DEF_FUNC(ByteIndexedBmToIndex12GrayXparBgCopy)
DEF_FUNC(ByteIndexedBmToIndex12GrayXparOver)
DEF_FUNC(ByteIndexedToIndex12GrayConvert)
DEF_FUNC(ByteIndexedToIndex12GrayScaleConvert)
DEF_FUNC(Index12GrayAlphaMaskFill)
DEF_FUNC(Index12GrayDrawGlyphListAA)
DEF_FUNC(Index12GraySrcOverMaskFill)
DEF_FUNC(Index12GrayToIndex12GrayConvert)
DEF_FUNC(Index12GrayToIndex12GrayScaleConvert)
DEF_FUNC(Index12GrayToIntArgbScaleConvert)
DEF_FUNC(Index8GrayToIndex12GrayConvert)
DEF_FUNC(Index8GrayToIndex12GrayScaleConvert)
DEF_FUNC(IntArgbToIndex12GrayAlphaMaskBlit)
DEF_FUNC(IntArgbToIndex12GrayConvert)
DEF_FUNC(IntArgbToIndex12GrayScaleConvert)
DEF_FUNC(IntArgbToIndex12GraySrcOverMaskBlit)
DEF_FUNC(IntArgbToIndex12GrayXorBlit)
DEF_FUNC(IntRgbToIndex12GrayAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToIndex12GrayConvert)
DEF_FUNC(ThreeByteBgrToIndex12GrayScaleConvert)
DEF_FUNC(UshortGrayToIndex12GrayScaleConvert)
DEF_FUNC(ByteBinary1BitAlphaMaskFill)
DEF_FUNC(ByteBinary1BitDrawGlyphList)
DEF_FUNC(ByteBinary1BitDrawGlyphListAA)
DEF_FUNC(ByteBinary1BitDrawGlyphListXor)
DEF_FUNC(ByteBinary1BitSetLine)
DEF_FUNC(ByteBinary1BitSetRect)
DEF_FUNC(ByteBinary1BitSetSpans)
DEF_FUNC(ByteBinary1BitToByteBinary1BitConvert)
DEF_FUNC(ByteBinary1BitToIntArgbAlphaMaskBlit)
DEF_FUNC(ByteBinary1BitToIntArgbConvert)
DEF_FUNC(ByteBinary1BitXorLine)
DEF_FUNC(ByteBinary1BitXorRect)
DEF_FUNC(ByteBinary1BitXorSpans)
DEF_FUNC(IntArgbToByteBinary1BitAlphaMaskBlit)
DEF_FUNC(IntArgbToByteBinary1BitConvert)
DEF_FUNC(IntArgbToByteBinary1BitXorBlit)
DEF_FUNC(ByteBinary2BitAlphaMaskFill)
DEF_FUNC(ByteBinary2BitDrawGlyphList)
DEF_FUNC(ByteBinary2BitDrawGlyphListAA)
DEF_FUNC(ByteBinary2BitDrawGlyphListXor)
DEF_FUNC(ByteBinary2BitSetLine)
DEF_FUNC(ByteBinary2BitSetRect)
DEF_FUNC(ByteBinary2BitSetSpans)
DEF_FUNC(ByteBinary2BitToByteBinary2BitConvert)
DEF_FUNC(ByteBinary2BitToIntArgbAlphaMaskBlit)
DEF_FUNC(ByteBinary2BitToIntArgbConvert)
DEF_FUNC(ByteBinary2BitXorLine)
DEF_FUNC(ByteBinary2BitXorRect)
DEF_FUNC(ByteBinary2BitXorSpans)
DEF_FUNC(IntArgbToByteBinary2BitAlphaMaskBlit)
DEF_FUNC(IntArgbToByteBinary2BitConvert)
DEF_FUNC(IntArgbToByteBinary2BitXorBlit)
DEF_FUNC(ByteBinary4BitAlphaMaskFill)
DEF_FUNC(ByteBinary4BitDrawGlyphList)
DEF_FUNC(ByteBinary4BitDrawGlyphListAA)
DEF_FUNC(ByteBinary4BitDrawGlyphListXor)
DEF_FUNC(ByteBinary4BitSetLine)
DEF_FUNC(ByteBinary4BitSetRect)
DEF_FUNC(ByteBinary4BitSetSpans)
DEF_FUNC(ByteBinary4BitToByteBinary4BitConvert)
DEF_FUNC(ByteBinary4BitToIntArgbAlphaMaskBlit)
DEF_FUNC(ByteBinary4BitToIntArgbConvert)
DEF_FUNC(ByteBinary4BitXorLine)
DEF_FUNC(ByteBinary4BitXorRect)
DEF_FUNC(ByteBinary4BitXorSpans)
DEF_FUNC(IntArgbToByteBinary4BitAlphaMaskBlit)
DEF_FUNC(IntArgbToByteBinary4BitConvert)
DEF_FUNC(IntArgbToByteBinary4BitXorBlit)
DEF_FUNC(ByteGrayToUshort555RgbConvert)
DEF_FUNC(ByteGrayToUshort555RgbScaleConvert)
DEF_FUNC(ByteIndexedBmToUshort555RgbScaleXparOver)
DEF_FUNC(ByteIndexedBmToUshort555RgbXparBgCopy)
DEF_FUNC(ByteIndexedBmToUshort555RgbXparOver)
DEF_FUNC(ByteIndexedToUshort555RgbConvert)
DEF_FUNC(ByteIndexedToUshort555RgbScaleConvert)
DEF_FUNC(IntArgbBmToUshort555RgbScaleXparOver)
DEF_FUNC(IntArgbBmToUshort555RgbXparBgCopy)
DEF_FUNC(IntArgbBmToUshort555RgbXparOver)
DEF_FUNC(IntArgbToUshort555RgbAlphaMaskBlit)
DEF_FUNC(IntArgbToUshort555RgbConvert)
DEF_FUNC(IntArgbToUshort555RgbScaleConvert)
DEF_FUNC(IntArgbToUshort555RgbSrcOverMaskBlit)
DEF_FUNC(IntArgbToUshort555RgbXorBlit)
DEF_FUNC(IntRgbToUshort555RgbAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToUshort555RgbConvert)
DEF_FUNC(ThreeByteBgrToUshort555RgbScaleConvert)
DEF_FUNC(Ushort555RgbAlphaMaskFill)
DEF_FUNC(Ushort555RgbDrawGlyphListAA)
DEF_FUNC(Ushort555RgbSrcMaskFill)
DEF_FUNC(Ushort555RgbSrcOverMaskFill)
DEF_FUNC(Ushort555RgbToIntArgbConvert)
DEF_FUNC(Ushort555RgbToIntArgbScaleConvert)
DEF_FUNC(ByteGrayToUshort555RgbxConvert)
DEF_FUNC(ByteGrayToUshort555RgbxScaleConvert)
DEF_FUNC(ByteIndexedBmToUshort555RgbxScaleXparOver)
DEF_FUNC(ByteIndexedBmToUshort555RgbxXparBgCopy)
DEF_FUNC(ByteIndexedBmToUshort555RgbxXparOver)
DEF_FUNC(ByteIndexedToUshort555RgbxConvert)
DEF_FUNC(ByteIndexedToUshort555RgbxScaleConvert)
DEF_FUNC(IntArgbBmToUshort555RgbxScaleXparOver)
DEF_FUNC(IntArgbToUshort555RgbxConvert)
DEF_FUNC(IntArgbToUshort555RgbxScaleConvert)
DEF_FUNC(IntArgbToUshort555RgbxXorBlit)
DEF_FUNC(ThreeByteBgrToUshort555RgbxConvert)
DEF_FUNC(ThreeByteBgrToUshort555RgbxScaleConvert)
DEF_FUNC(Ushort555RgbxDrawGlyphListAA)
DEF_FUNC(Ushort555RgbxToIntArgbConvert)
DEF_FUNC(Ushort555RgbxToIntArgbScaleConvert)
DEF_FUNC(ByteGrayToUshort565RgbConvert)
DEF_FUNC(ByteGrayToUshort565RgbScaleConvert)
DEF_FUNC(ByteIndexedBmToUshort565RgbScaleXparOver)
DEF_FUNC(ByteIndexedBmToUshort565RgbXparBgCopy)
DEF_FUNC(ByteIndexedBmToUshort565RgbXparOver)
DEF_FUNC(ByteIndexedToUshort565RgbConvert)
DEF_FUNC(ByteIndexedToUshort565RgbScaleConvert)
DEF_FUNC(IntArgbBmToUshort565RgbScaleXparOver)
DEF_FUNC(IntArgbBmToUshort565RgbXparBgCopy)
DEF_FUNC(IntArgbBmToUshort565RgbXparOver)
DEF_FUNC(IntArgbToUshort565RgbAlphaMaskBlit)
DEF_FUNC(IntArgbToUshort565RgbConvert)
DEF_FUNC(IntArgbToUshort565RgbScaleConvert)
DEF_FUNC(IntArgbToUshort565RgbSrcOverMaskBlit)
DEF_FUNC(IntArgbToUshort565RgbXorBlit)
DEF_FUNC(IntRgbToUshort565RgbAlphaMaskBlit)
DEF_FUNC(ThreeByteBgrToUshort565RgbConvert)
DEF_FUNC(ThreeByteBgrToUshort565RgbScaleConvert)
DEF_FUNC(Ushort565RgbAlphaMaskFill)
DEF_FUNC(Ushort565RgbDrawGlyphListAA)
DEF_FUNC(Ushort565RgbSrcMaskFill)
DEF_FUNC(Ushort565RgbSrcOverMaskFill)
DEF_FUNC(Ushort565RgbToIntArgbConvert)
DEF_FUNC(Ushort565RgbToIntArgbScaleConvert)

/***************************************************************/

static AnyFunc_pair vis_func_pair_array[] = {
    ADD_FUNC(AnyByteDrawGlyphList),
    ADD_FUNC(AnyByteDrawGlyphListXor),
    ADD_FUNC(AnyByteIsomorphicCopy),
    ADD_FUNC(AnyByteIsomorphicScaleCopy),
    ADD_FUNC(AnyByteIsomorphicXorCopy),
    ADD_FUNC(AnyByteSetLine),
    ADD_FUNC(AnyByteSetRect),
    ADD_FUNC(AnyByteSetSpans),
    ADD_FUNC(AnyByteXorLine),
    ADD_FUNC(AnyByteXorRect),
    ADD_FUNC(AnyByteXorSpans),
    ADD_FUNC(AnyShortDrawGlyphList),
    ADD_FUNC(AnyShortDrawGlyphListXor),
    ADD_FUNC(AnyShortIsomorphicCopy),
    ADD_FUNC(AnyShortIsomorphicScaleCopy),
    ADD_FUNC(AnyShortIsomorphicXorCopy),
    ADD_FUNC(AnyShortSetLine),
    ADD_FUNC(AnyShortSetRect),
    ADD_FUNC(AnyShortSetSpans),
    ADD_FUNC(AnyShortXorLine),
    ADD_FUNC(AnyShortXorRect),
    ADD_FUNC(AnyShortXorSpans),
    ADD_FUNC(Any3ByteIsomorphicCopy),
    ADD_FUNC(Any3ByteIsomorphicScaleCopy),
    ADD_FUNC(Any3ByteIsomorphicXorCopy),
    ADD_FUNC(Any3ByteSetLine),
    ADD_FUNC(Any3ByteSetRect),
    ADD_FUNC(Any3ByteSetSpans),
    ADD_FUNC(Any3ByteXorLine),
    ADD_FUNC(Any3ByteXorRect),
    ADD_FUNC(Any3ByteXorSpans),
    ADD_FUNC(Any4ByteDrawGlyphList),
    ADD_FUNC(Any4ByteDrawGlyphListXor),
    ADD_FUNC(Any4ByteIsomorphicCopy),
    ADD_FUNC(Any4ByteIsomorphicScaleCopy),
    ADD_FUNC(Any4ByteIsomorphicXorCopy),
    ADD_FUNC(Any4ByteSetLine),
    ADD_FUNC(Any4ByteSetRect),
    ADD_FUNC(Any4ByteSetSpans),
    ADD_FUNC(Any4ByteXorLine),
    ADD_FUNC(Any4ByteXorRect),
    ADD_FUNC(Any4ByteXorSpans),
    ADD_FUNC(AnyIntDrawGlyphList),
    ADD_FUNC(AnyIntDrawGlyphListXor),
    ADD_FUNC(AnyIntIsomorphicCopy),
    ADD_FUNC(AnyIntIsomorphicScaleCopy),
    ADD_FUNC(AnyIntIsomorphicXorCopy),
    ADD_FUNC(AnyIntSetLine),
    ADD_FUNC(AnyIntSetRect),
    ADD_FUNC(AnyIntSetSpans),
    ADD_FUNC(AnyIntXorLine),
    ADD_FUNC(AnyIntXorRect),
    ADD_FUNC(AnyIntXorSpans),
    ADD_FUNC(ByteGrayAlphaMaskFill),
    ADD_FUNC(ByteGrayDrawGlyphListAA),
    ADD_FUNC(ByteGraySrcMaskFill),
    ADD_FUNC(ByteGraySrcOverMaskFill),
    ADD_FUNC(ByteGrayToIntArgbConvert),
    ADD_FUNC(ByteGrayToIntArgbScaleConvert),
    ADD_FUNC(ByteIndexedBmToByteGrayScaleXparOver),
    ADD_FUNC(ByteIndexedBmToByteGrayXparBgCopy),
    ADD_FUNC(ByteIndexedBmToByteGrayXparOver),
    ADD_FUNC(ByteIndexedToByteGrayConvert),
    ADD_FUNC(ByteIndexedToByteGrayScaleConvert),
    ADD_FUNC(Index12GrayToByteGrayConvert),
    ADD_FUNC(Index12GrayToByteGrayScaleConvert),
    ADD_FUNC(Index8GrayToByteGrayConvert),
    ADD_FUNC(Index8GrayToByteGrayScaleConvert),
    ADD_FUNC(IntArgbBmToByteGrayScaleXparOver),
    ADD_FUNC(IntArgbBmToByteGrayXparBgCopy),
    ADD_FUNC(IntArgbBmToByteGrayXparOver),
    ADD_FUNC(IntArgbToByteGrayAlphaMaskBlit),
    ADD_FUNC(IntArgbToByteGrayConvert),
    ADD_FUNC(IntArgbToByteGrayScaleConvert),
    ADD_FUNC(IntArgbToByteGraySrcOverMaskBlit),
    ADD_FUNC(IntArgbToByteGrayXorBlit),
    ADD_FUNC(IntRgbToByteGrayAlphaMaskBlit),
    ADD_FUNC(ThreeByteBgrToByteGrayConvert),
    ADD_FUNC(ThreeByteBgrToByteGrayScaleConvert),
    ADD_FUNC(UshortGrayToByteGrayConvert),
    ADD_FUNC(UshortGrayToByteGrayScaleConvert),
    ADD_FUNC(ByteGrayToUshortGrayConvert),
    ADD_FUNC(ByteGrayToUshortGrayScaleConvert),
    ADD_FUNC(ByteIndexedBmToUshortGrayScaleXparOver),
    ADD_FUNC(ByteIndexedBmToUshortGrayXparBgCopy),
    ADD_FUNC(ByteIndexedBmToUshortGrayXparOver),
    ADD_FUNC(ByteIndexedToUshortGrayConvert),
    ADD_FUNC(ByteIndexedToUshortGrayScaleConvert),
    ADD_FUNC(IntArgbBmToUshortGrayScaleXparOver),
    ADD_FUNC(IntArgbToUshortGrayConvert),
    ADD_FUNC(IntArgbToUshortGrayScaleConvert),
    ADD_FUNC(ThreeByteBgrToUshortGrayConvert),
    ADD_FUNC(ThreeByteBgrToUshortGrayScaleConvert),
    ADD_FUNC(UshortGrayToIntArgbConvert),
    ADD_FUNC(UshortGrayToIntArgbScaleConvert),
    ADD_FUNC(ByteGrayToByteIndexedConvert),
    ADD_FUNC(ByteGrayToByteIndexedScaleConvert),
    ADD_FUNC(ByteIndexedBmToByteIndexedScaleXparOver),
    ADD_FUNC(ByteIndexedBmToByteIndexedXparBgCopy),
    ADD_FUNC(ByteIndexedBmToByteIndexedXparOver),
    ADD_FUNC(ByteIndexedToByteIndexedConvert),
    ADD_FUNC(ByteIndexedToByteIndexedScaleConvert),
    ADD_FUNC(Index12GrayToByteIndexedConvert),
    ADD_FUNC(Index12GrayToByteIndexedScaleConvert),
    ADD_FUNC(IntArgbBmToByteIndexedScaleXparOver),
    ADD_FUNC(IntArgbBmToByteIndexedXparBgCopy),
    ADD_FUNC(IntArgbBmToByteIndexedXparOver),
    ADD_FUNC(IntArgbToByteIndexedConvert),
    ADD_FUNC(IntArgbToByteIndexedScaleConvert),
    ADD_FUNC(IntArgbToByteIndexedXorBlit),
    ADD_FUNC(ThreeByteBgrToByteIndexedConvert),
    ADD_FUNC(ThreeByteBgrToByteIndexedScaleConvert),
    ADD_FUNC(ByteGrayToFourByteAbgrConvert),
    ADD_FUNC(ByteGrayToFourByteAbgrScaleConvert),
    ADD_FUNC(ByteIndexedBmToFourByteAbgrScaleXparOver),
    ADD_FUNC(ByteIndexedBmToFourByteAbgrXparBgCopy),
    ADD_FUNC(ByteIndexedBmToFourByteAbgrXparOver),
    ADD_FUNC(ByteIndexedToFourByteAbgrConvert),
    ADD_FUNC(ByteIndexedToFourByteAbgrScaleConvert),
    ADD_FUNC(FourByteAbgrAlphaMaskFill),
    ADD_FUNC(FourByteAbgrDrawGlyphListAA),
    ADD_FUNC(FourByteAbgrSrcMaskFill),
    ADD_FUNC(FourByteAbgrSrcOverMaskFill),
    ADD_FUNC(FourByteAbgrToIntArgbConvert),
    ADD_FUNC(FourByteAbgrToIntArgbScaleConvert),
    ADD_FUNC(IntArgbBmToFourByteAbgrScaleXparOver),
    ADD_FUNC(IntArgbToFourByteAbgrAlphaMaskBlit),
    ADD_FUNC(IntArgbToFourByteAbgrConvert),
    ADD_FUNC(IntArgbToFourByteAbgrScaleConvert),
    ADD_FUNC(IntArgbToFourByteAbgrSrcOverMaskBlit),
    ADD_FUNC(IntArgbToFourByteAbgrXorBlit),
    ADD_FUNC(IntRgbToFourByteAbgrAlphaMaskBlit),
    ADD_FUNC(IntRgbToFourByteAbgrConvert),
    ADD_FUNC(IntRgbToFourByteAbgrScaleConvert),
    ADD_FUNC(ThreeByteBgrToFourByteAbgrConvert),
    ADD_FUNC(ThreeByteBgrToFourByteAbgrScaleConvert),
    ADD_FUNC(ByteGrayToFourByteAbgrPreConvert),
    ADD_FUNC(ByteGrayToFourByteAbgrPreScaleConvert),
    ADD_FUNC(ByteIndexedBmToFourByteAbgrPreScaleXparOver),
    ADD_FUNC(ByteIndexedBmToFourByteAbgrPreXparBgCopy),
    ADD_FUNC(ByteIndexedBmToFourByteAbgrPreXparOver),
    ADD_FUNC(ByteIndexedToFourByteAbgrPreConvert),
    ADD_FUNC(ByteIndexedToFourByteAbgrPreScaleConvert),
    ADD_FUNC(FourByteAbgrPreAlphaMaskFill),
    ADD_FUNC(FourByteAbgrPreDrawGlyphListAA),
    ADD_FUNC(FourByteAbgrPreSrcMaskFill),
    ADD_FUNC(FourByteAbgrPreSrcOverMaskFill),
    ADD_FUNC(FourByteAbgrPreToIntArgbConvert),
    ADD_FUNC(FourByteAbgrPreToIntArgbScaleConvert),
    ADD_FUNC(IntArgbBmToFourByteAbgrPreScaleXparOver),
    ADD_FUNC(IntArgbToFourByteAbgrPreAlphaMaskBlit),
    ADD_FUNC(IntArgbToFourByteAbgrPreConvert),
    ADD_FUNC(IntArgbToFourByteAbgrPreScaleConvert),
    ADD_FUNC(IntArgbToFourByteAbgrPreSrcOverMaskBlit),
    ADD_FUNC(IntArgbToFourByteAbgrPreXorBlit),
    ADD_FUNC(IntRgbToFourByteAbgrPreAlphaMaskBlit),
    ADD_FUNC(IntRgbToFourByteAbgrPreConvert),
    ADD_FUNC(IntRgbToFourByteAbgrPreScaleConvert),
    ADD_FUNC(ThreeByteBgrToFourByteAbgrPreConvert),
    ADD_FUNC(ThreeByteBgrToFourByteAbgrPreScaleConvert),
    ADD_FUNC(ByteIndexedBmToIntArgbScaleXparOver),
    ADD_FUNC(ByteIndexedBmToIntArgbXparBgCopy),
    ADD_FUNC(ByteIndexedBmToIntArgbXparOver),
    ADD_FUNC(ByteIndexedToIntArgbConvert),
    ADD_FUNC(ByteIndexedToIntArgbScaleConvert),
    ADD_FUNC(Index12GrayToIntArgbConvert),
    ADD_FUNC(IntArgbAlphaMaskFill),
    ADD_FUNC(IntArgbBmToIntArgbScaleXparOver),
    ADD_FUNC(IntArgbDrawGlyphListAA),
    ADD_FUNC(IntArgbSrcMaskFill),
    ADD_FUNC(IntArgbSrcOverMaskFill),
    ADD_FUNC(IntArgbToIntArgbAlphaMaskBlit),
    ADD_FUNC(IntArgbToIntArgbSrcOverMaskBlit),
    ADD_FUNC(IntArgbToIntArgbXorBlit),
    ADD_FUNC(IntRgbToIntArgbAlphaMaskBlit),
    ADD_FUNC(ByteIndexedBmToIntArgbBmScaleXparOver),
    ADD_FUNC(ByteIndexedBmToIntArgbBmXparBgCopy),
    ADD_FUNC(ByteIndexedBmToIntArgbBmXparOver),
    ADD_FUNC(ByteIndexedToIntArgbBmConvert),
    ADD_FUNC(ByteIndexedToIntArgbBmScaleConvert),
    ADD_FUNC(IntArgbBmDrawGlyphListAA),
    ADD_FUNC(IntArgbBmToIntArgbConvert),
    ADD_FUNC(IntArgbToIntArgbBmConvert),
    ADD_FUNC(IntArgbToIntArgbBmScaleConvert),
    ADD_FUNC(IntArgbToIntArgbBmXorBlit),
    ADD_FUNC(ByteGrayToIntArgbPreConvert),
    ADD_FUNC(ByteGrayToIntArgbPreScaleConvert),
    ADD_FUNC(ByteIndexedBmToIntArgbPreScaleXparOver),
    ADD_FUNC(ByteIndexedBmToIntArgbPreXparBgCopy),
    ADD_FUNC(ByteIndexedBmToIntArgbPreXparOver),
    ADD_FUNC(ByteIndexedToIntArgbPreConvert),
    ADD_FUNC(ByteIndexedToIntArgbPreScaleConvert),
    ADD_FUNC(IntArgbPreAlphaMaskFill),
    ADD_FUNC(IntArgbPreDrawGlyphListAA),
    ADD_FUNC(IntArgbPreSrcMaskFill),
    ADD_FUNC(IntArgbPreSrcOverMaskFill),
    ADD_FUNC(IntArgbPreToIntArgbConvert),
    ADD_FUNC(IntArgbPreToIntArgbScaleConvert),
    ADD_FUNC(IntArgbToIntArgbPreAlphaMaskBlit),
    ADD_FUNC(IntArgbToIntArgbPreConvert),
    ADD_FUNC(IntArgbToIntArgbPreScaleConvert),
    ADD_FUNC(IntArgbToIntArgbPreSrcOverMaskBlit),
    ADD_FUNC(IntArgbToIntArgbPreXorBlit),
    ADD_FUNC(IntRgbToIntArgbPreAlphaMaskBlit),
    ADD_FUNC(IntRgbToIntArgbPreConvert),
    ADD_FUNC(IntRgbToIntArgbPreScaleConvert),
    ADD_FUNC(ThreeByteBgrToIntArgbPreConvert),
    ADD_FUNC(ThreeByteBgrToIntArgbPreScaleConvert),
    ADD_FUNC(ByteIndexedBmToIntBgrScaleXparOver),
    ADD_FUNC(ByteIndexedBmToIntBgrXparBgCopy),
    ADD_FUNC(ByteIndexedBmToIntBgrXparOver),
    ADD_FUNC(ByteIndexedToIntBgrConvert),
    ADD_FUNC(ByteIndexedToIntBgrScaleConvert),
    ADD_FUNC(IntArgbBmToIntBgrScaleXparOver),
    ADD_FUNC(IntArgbBmToIntBgrXparBgCopy),
    ADD_FUNC(IntArgbBmToIntBgrXparOver),
    ADD_FUNC(IntArgbToIntBgrAlphaMaskBlit),
    ADD_FUNC(IntArgbToIntBgrConvert),
    ADD_FUNC(IntArgbToIntBgrScaleConvert),
    ADD_FUNC(IntArgbToIntBgrSrcOverMaskBlit),
    ADD_FUNC(IntArgbToIntBgrXorBlit),
    ADD_FUNC(IntBgrAlphaMaskFill),
    ADD_FUNC(IntBgrDrawGlyphListAA),
    ADD_FUNC(IntBgrSrcMaskFill),
    ADD_FUNC(IntBgrSrcOverMaskFill),
    ADD_FUNC(IntBgrToIntArgbConvert),
    ADD_FUNC(IntBgrToIntArgbScaleConvert),
    ADD_FUNC(IntBgrToIntBgrAlphaMaskBlit),
    ADD_FUNC(IntRgbToIntBgrAlphaMaskBlit),
    ADD_FUNC(ThreeByteBgrToIntBgrConvert),
    ADD_FUNC(ThreeByteBgrToIntBgrScaleConvert),
    ADD_FUNC(ByteGrayToIntRgbConvert),
    ADD_FUNC(ByteGrayToIntRgbScaleConvert),
    ADD_FUNC(IntArgbBmToIntRgbXparBgCopy),
    ADD_FUNC(IntArgbBmToIntRgbXparOver),
    ADD_FUNC(IntArgbToIntRgbAlphaMaskBlit),
    ADD_FUNC(IntArgbToIntRgbSrcOverMaskBlit),
    ADD_FUNC(IntArgbToIntRgbXorBlit),
    ADD_FUNC(IntRgbAlphaMaskFill),
    ADD_FUNC(IntRgbDrawGlyphListAA),
    ADD_FUNC(IntRgbSrcMaskFill),
    ADD_FUNC(IntRgbSrcOverMaskFill),
    ADD_FUNC(IntRgbToIntArgbConvert),
    ADD_FUNC(IntRgbToIntArgbScaleConvert),
    ADD_FUNC(IntRgbToIntRgbAlphaMaskBlit),
    ADD_FUNC(ThreeByteBgrToIntRgbConvert),
    ADD_FUNC(ThreeByteBgrToIntRgbScaleConvert),
    ADD_FUNC(ByteGrayToIntRgbxConvert),
    ADD_FUNC(ByteGrayToIntRgbxScaleConvert),
    ADD_FUNC(ByteIndexedBmToIntRgbxScaleXparOver),
    ADD_FUNC(ByteIndexedBmToIntRgbxXparBgCopy),
    ADD_FUNC(ByteIndexedBmToIntRgbxXparOver),
    ADD_FUNC(ByteIndexedToIntRgbxConvert),
    ADD_FUNC(ByteIndexedToIntRgbxScaleConvert),
    ADD_FUNC(IntArgbBmToIntRgbxScaleXparOver),
    ADD_FUNC(IntArgbToIntRgbxConvert),
    ADD_FUNC(IntArgbToIntRgbxScaleConvert),
    ADD_FUNC(IntArgbToIntRgbxXorBlit),
    ADD_FUNC(IntRgbxDrawGlyphListAA),
    ADD_FUNC(IntRgbxToIntArgbConvert),
    ADD_FUNC(IntRgbxToIntArgbScaleConvert),
    ADD_FUNC(ThreeByteBgrToIntRgbxConvert),
    ADD_FUNC(ThreeByteBgrToIntRgbxScaleConvert),
    ADD_FUNC(ThreeByteBgrAlphaMaskFill),
    ADD_FUNC(ThreeByteBgrSrcMaskFill),
    ADD_FUNC(ThreeByteBgrSrcOverMaskFill),
    ADD_FUNC(ThreeByteBgrToIntArgbConvert),
    ADD_FUNC(ThreeByteBgrToIntArgbScaleConvert),
};

/***************************************************************/

#define NUM_VIS_FUNCS sizeof(vis_func_pair_array)/sizeof(AnyFunc_pair)

/***************************************************************/

#define HASH_SIZE     1024 /* must be power of 2 and > number of functions */
#define PTR_SHIFT     ((sizeof(void*) == 4) ? 2 : 3)
#define HASH_FUNC(x)  (((jint)(x) >> PTR_SHIFT) & (HASH_SIZE - 1))
#define NEXT_INDEX(j) ((j + 1) & (HASH_SIZE - 1))

static AnyFunc* hash_table[HASH_SIZE];
static AnyFunc* hash_table_vis[HASH_SIZE];

/***************************************************************/

static int initialized;
static int usevis = JNI_TRUE;

#ifdef __linux__
#   define ULTRA_CHIP   "sparc64"
#else
#   define ULTRA_CHIP   "sun4u"
#endif

extern TransformInterpFunc *pBilinearFunc;
extern TransformInterpFunc *pBicubicFunc;
extern TransformInterpFunc vis_BilinearBlend;
extern TransformInterpFunc vis_BicubicBlend;

/*
 * This function returns a pointer to the VIS accelerated version
 * of the indicated C function if it exists and if the conditions
 * are correct to use the VIS functions.
 */
AnyFunc* MapAccelFunction(AnyFunc *func_c)
{
    jint i, j;

    if (!initialized) {
        struct utsname name;

        /*
         * Only use the vis loops if the environment variable is set.
         * Find out the machine name. If it is an SUN ultra, we
         * can use the vis library
         */
        if (uname(&name) < 0 || strcmp(name.machine, ULTRA_CHIP) != 0) {
            usevis = JNI_FALSE;
        } else {
            char *vis_env = getenv("J2D_USE_VIS_LOOPS");
            if (vis_env != 0) {
                switch (*vis_env) {
                case 'T':
                    fprintf(stderr, "VIS loops enabled\n");
                case 't':
                    usevis = JNI_TRUE;
                    break;

                case 'F':
                    fprintf(stderr, "VIS loops disabled\n");
                case 'f':
                    usevis = JNI_FALSE;
                    break;

                default:
                    fprintf(stderr, "VIS loops %s by default\n",
                            usevis ? "enabled" : "disabled");
                    break;
                }
            }
        }
        initialized = 1;
        if (usevis) {
            /* fill hash table */
            memset(hash_table, 0, sizeof(hash_table));
            for (i = 0; i < NUM_VIS_FUNCS; i++) {
                AnyFunc* func = vis_func_pair_array[i].func_c;
                j = HASH_FUNC(func);
                while (hash_table[j] != NULL) {
                    j = NEXT_INDEX(j);
                }
                hash_table[j] = func;
                hash_table_vis[j] = vis_func_pair_array[i].func_vis;
            }
            pBilinearFunc = vis_BilinearBlend;
            pBicubicFunc = vis_BicubicBlend;
        }
    }
    if (!usevis) {
        return func_c;
    }

    j = HASH_FUNC(func_c);
    while (hash_table[j] != NULL) {
        if (hash_table[j] == func_c) {
            return hash_table_vis[j];
        }
        j = NEXT_INDEX(j);
    }

    return func_c;
}

/***************************************************************/
