The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
/* $Id: IPA.c,v 1.3 2007/08/21 12:10:29 dk Exp $ */

#include "IPAsupp.h"

PImage_vmt CImage;

extern void register_IPA__Global_Package( void);
extern void register_IPA__Geometry_Package( void);
extern void register_IPA__Misc_Package( void);
extern void register_IPA__Local_Package( void);
extern void register_IPA__Point_Package( void);
extern void register_IPA__Morphology_Package( void);

XS( boot_IPA)
{
    dXSARGS;

    (void)items;

    XS_VERSION_BOOTCHECK;

    CImage = (PImage_vmt)gimme_the_vmt( "Prima::Image");
    register_IPA__Global_Package( );
    register_IPA__Geometry_Package( );
    register_IPA__Misc_Package( );
    register_IPA__Local_Package( );
    register_IPA__Point_Package( );
    register_IPA__Morphology_Package( );

    ST(0) = &sv_yes;
    XSRETURN(1);
}

PImage create_compatible_image(PImage img,Bool copyData)
{
    PImage oimg;
    oimg=createImage(img->w,img->h,img->type);
    if (!oimg) {
        return NULL;
    }
    if ((( img-> type & imBPP) <= 8) && !(img->type & imGrayScale))
       memcpy(oimg->palette,img->palette,img->palSize * 3);
    if (copyData)
        memcpy(oimg->data,img->data,img->dataSize);
    return oimg;
}