/**
 * Loads a pixbuf from a file.
 */
JNIEXPORT jboolean JNICALL
Java_gnu_java_awt_peer_gtk_GtkImage_loadPixbuf
(JNIEnv *env, jobject obj, jstring name)
{
    const char *filename;
    int width, height;
    GdkPixbuf *pixbuf;

    /* Don't use the JCL convert function because it throws an exception
       on failure */
    filename = (*env)->GetStringUTFChars (env, name, 0);

    if (filename == NULL)
        return JNI_FALSE;

    pixbuf = gdk_pixbuf_new_from_file (filename, NULL);
    if (pixbuf == NULL)
    {
        (*env)->ReleaseStringUTFChars (env, name, filename);
        return JNI_FALSE;
    }

    width =  gdk_pixbuf_get_width (pixbuf);
    height = gdk_pixbuf_get_height (pixbuf);

    createRawData (env, obj, pixbuf);
    setWidthHeight(env, obj, width, height);
    (*env)->ReleaseStringUTFChars (env, name, filename);

    return JNI_TRUE;
}
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkImage_createFromPixbuf
(JNIEnv *env, jobject obj)
{
    int width, heigth;
    GdkPixbuf *pixbuf = cp_gtk_image_get_pixbuf (env, obj);
    width =  gdk_pixbuf_get_width (pixbuf);
    heigth = gdk_pixbuf_get_height (pixbuf);
    setWidthHeight(env, obj, width, heigth);
}
예제 #3
0
void fg_FillType::_regenerateImage(GR_Graphics * pG)
{
	UT_return_if_fail(m_pGraphic);
	UT_return_if_fail(m_pDocLayout);
	DELETEP(m_pImage);
	m_pImage = m_pGraphic->regenerateImage(pG);
	setWidthHeight(pG,m_iWidth,m_iHeight);
	UT_Rect rec(0,0,m_iWidth,m_iHeight);
	m_pImage->scaleImageTo(pG,rec);
	m_iGraphicTick = m_pDocLayout->getGraphicTick();
}
예제 #4
0
/*!
 * set this class to have an image background for fills.
 */
void fg_FillType::setImage(FG_Graphic * pGraphic, GR_Image * pImage, GR_Graphics * pG, UT_sint32 iWidth, UT_sint32 iHeight)
{
	m_FillType = FG_FILL_IMAGE;
	DELETEP(m_pImage);
	DELETEP(m_pGraphic);	
	m_pImage = pImage;
	m_pGraphic = pGraphic;
	m_bTransparentForPrint = false;
	setWidthHeight(pG,iWidth,iHeight);
	m_pDocImage = NULL;
}
/*
 * Creates the image from an array of java bytes.
 */
JNIEXPORT jboolean JNICALL
Java_gnu_java_awt_peer_gtk_GtkImage_loadImageFromData
(JNIEnv *env, jobject obj, jbyteArray data)
{
    jbyte *src;
    GdkPixbuf* pixbuf;
    GdkPixbufLoader* loader;
    int len;
    int width;
    int height;

    src = (*env)->GetByteArrayElements (env, data, NULL);
    len = (*env)->GetArrayLength (env, data);

    loader = gdk_pixbuf_loader_new ();

    gdk_pixbuf_loader_write (loader, (guchar *)src, len, NULL);
    gdk_pixbuf_loader_close (loader, NULL);

    (*env)->ReleaseByteArrayElements (env, data, src, 0);

    pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);

    if (pixbuf == NULL)
    {
        g_object_unref (loader);
        createRawData (env, obj, NULL);
        return JNI_FALSE;
    }

    g_object_ref (pixbuf);
    g_object_unref (loader);

    width =  gdk_pixbuf_get_width (pixbuf);
    height = gdk_pixbuf_get_height (pixbuf);

    createRawData (env, obj, pixbuf);
    setWidthHeight(env, obj, width, height);

    return JNI_TRUE;
}