2913 (*fp_g_object_unref)(pixbuf);
2914 pixbuf = scaledPixbuf;
2915 }
2916
2917 if (pixbuf) {
2918 int nchan = (*fp_gdk_pixbuf_get_n_channels)(pixbuf);
2919 int stride = (*fp_gdk_pixbuf_get_rowstride)(pixbuf);
2920 if ((*fp_gdk_pixbuf_get_width)(pixbuf) == width
2921 && (*fp_gdk_pixbuf_get_height)(pixbuf) == height
2922 && (*fp_gdk_pixbuf_get_bits_per_sample)(pixbuf) == 8
2923 && (*fp_gdk_pixbuf_get_colorspace)(pixbuf) == GDK_COLORSPACE_RGB
2924 && nchan >= 3
2925 ) {
2926 guchar *p, *pix = (*fp_gdk_pixbuf_get_pixels)(pixbuf);
2927 ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
2928 if (ary) {
2929 jint _x, _y;
2930 int index;
2931 for (_y = 0; _y < height; _y++) {
2932 for (_x = 0; _x < width; _x++) {
2933 p = pix + _y * stride + _x * nchan;
2934
2935 index = (_y + dy) * jwidth + (_x + dx);
2936 ary[index] = 0xff000000
2937 | (p[0] << 16)
2938 | (p[1] << 8)
2939 | (p[2]);
2940
2941 }
2942 }
2943 (*env)->ReleasePrimitiveArrayCritical(env, pixelArray, ary, 0);
2944 }
2945 }
2946 (*fp_g_object_unref)(pixbuf);
2947 }
2948 return JNI_FALSE;
2949 }
2950
2951 static GdkWindow* gtk3_get_window(void *widget) {
2952 return fp_gtk_widget_get_window((GtkWidget*)widget);
2953 }
|
2913 (*fp_g_object_unref)(pixbuf);
2914 pixbuf = scaledPixbuf;
2915 }
2916
2917 if (pixbuf) {
2918 int nchan = (*fp_gdk_pixbuf_get_n_channels)(pixbuf);
2919 int stride = (*fp_gdk_pixbuf_get_rowstride)(pixbuf);
2920 if ((*fp_gdk_pixbuf_get_width)(pixbuf) == width
2921 && (*fp_gdk_pixbuf_get_height)(pixbuf) == height
2922 && (*fp_gdk_pixbuf_get_bits_per_sample)(pixbuf) == 8
2923 && (*fp_gdk_pixbuf_get_colorspace)(pixbuf) == GDK_COLORSPACE_RGB
2924 && nchan >= 3
2925 ) {
2926 guchar *p, *pix = (*fp_gdk_pixbuf_get_pixels)(pixbuf);
2927 ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
2928 if (ary) {
2929 jint _x, _y;
2930 int index;
2931 for (_y = 0; _y < height; _y++) {
2932 for (_x = 0; _x < width; _x++) {
2933 p = pix + (intptr_t) _y * stride + _x * nchan;
2934
2935 index = (_y + dy) * jwidth + (_x + dx);
2936 ary[index] = 0xff000000
2937 | (p[0] << 16)
2938 | (p[1] << 8)
2939 | (p[2]);
2940
2941 }
2942 }
2943 (*env)->ReleasePrimitiveArrayCritical(env, pixelArray, ary, 0);
2944 }
2945 }
2946 (*fp_g_object_unref)(pixbuf);
2947 }
2948 return JNI_FALSE;
2949 }
2950
2951 static GdkWindow* gtk3_get_window(void *widget) {
2952 return fp_gtk_widget_get_window((GtkWidget*)widget);
2953 }
|