Covarage of Pixbuf constructor using byte[] and does scaling

View: New views
7 Messages — Rating Filter:   Alert me  

Covarage of Pixbuf constructor using byte[] and does scaling

by Serkan Kaba-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The following bundle adds the mentioned cunstroctor but duplicates most
(actually only a single line is changed) of the code from the
non-scaling version.

Can it be added without code duplication, Martin maybe you have an idea
since you introduced its coverage.

Thanks in advance.
- --
Sincerely,
Serkan KABA
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAko+EtcACgkQRh6X64ivZaJiSACeMKPzlBJOvXHz7+wZoeXj6cji
X6QAnRTMBWn4gFQ/qqVHNSE2gfVsQ2Cc
=hZId
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

Re: Covarage of Pixbuf constructor using byte[] and does scaling

by Serkan Kaba-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Actually attaching the bundle.

- --
Sincerely,
Serkan KABA
Gentoo Developer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAko+HKYACgkQRh6X64ivZaJH2ACdG55esL8kxgaLtKg2UDDRIPLe
bhIAmwU1TiQiT5t1gmfYMlFnSUKvsv2s
=D4Jr
-----END PGP SIGNATURE-----

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: serkan@...
# target_branch: ../mainline/
# testament_sha1: 8bb0e4d97e250c71d6f2e80129648c1054a36396
# timestamp: 2009-06-21 13:36:13 +0300
# base_revision_id: andrew@...-\
#   a8yn061ibbtx05zv
#
# Begin patch
=== modified file 'src/bindings/org/gnome/gdk/GdkPixbufOverride.c'
--- src/bindings/org/gnome/gdk/GdkPixbufOverride.c 2009-02-02 09:22:37 +0000
+++ src/bindings/org/gnome/gdk/GdkPixbufOverride.c 2009-06-21 00:56:39 +0000
@@ -33,8 +33,8 @@
  jbyteArray result;
  int size;
  int j, p;
-
-
+
+
  // convert parameter self
  self = (GdkPixbuf*) _self;
 
@@ -44,17 +44,17 @@
  * formula is in the GDK docs [and more to the point, in the source
  * code of gdk_pixbuf_new()] but, as finally implemented, we don't
  * need it since we're extracting the rows individually, thereby
- * jettisoning the padding.
+ * jettisoning the padding.
  */
-
+
  width = gdk_pixbuf_get_width(self);
  height = gdk_pixbuf_get_height(self);
  rowstride = gdk_pixbuf_get_rowstride(self);
  n_channels = gdk_pixbuf_get_n_channels(self);
  bits_per_sample = gdk_pixbuf_get_bits_per_sample(self);
-
+
  // length =  ((height - 1) * rowstride) + (width * ((n_channels * bits_per_sample + 7) / 8));
-
+
  if (bits_per_sample != 8) {
  bindings_java_throw(env, "This algorithm only supports 8 bits per channel");
  /*
@@ -64,14 +64,14 @@
  */
  return NULL;
  }
-
+
  /*
  * Now we can extract the image data, and return it.
  */
 
  // call function
  data = gdk_pixbuf_get_pixels(self);
-
+
 
  /*
  * Now copy the bytes of each pixel out row by row. Most of the time
@@ -80,20 +80,20 @@
  * dangling last row. We orginally had this in Pixbuf.java, but this
  * turns out to be 20% faster under heavy load.
  */
-
+
  size = width * n_channels;
-
+
  result = (*env)->NewByteArray(env, height * size);
-
+
  p = 0;
-
+
  for (j = 0; j < height; j++) {
  (*env)->SetByteArrayRegion(env, result, p, size, (jbyte*) data);
-
+
  data += rowstride;
  p += size;
  }
-
+
  // and finally
  return result;
 }
@@ -145,3 +145,53 @@
 
  return (jlong) result;
 }
+
+//FIXME: Duplicate code.
+JNIEXPORT jlong JNICALL Java_org_gnome_gdk_GdkPixbufOverride_gdk_1pixbuf_1new_1from_1stream_1at_1scale
+(
+ JNIEnv* env,
+ jclass cls,
+ jbyteArray _data,
+ jint _width,
+ jint _height,
+ jboolean _preserveAspectRatio
+)
+{
+ GInputStream *input_stream;
+ gssize len;
+ void *data;
+ GdkPixbuf* result;
+ GError* error = NULL;
+
+ // set up the length and input stream parameters.
+ len = (*env)->GetArrayLength(env, _data);
+ data = (*env)->GetByteArrayElements(env, _data, NULL);
+
+ /*
+ * Jump through the necessary hoops to feed an array of bytes to the
+ * GdkPixbuf constructor
+ */
+
+ input_stream = g_memory_input_stream_new_from_data(data, len, NULL);
+
+ result = gdk_pixbuf_new_from_stream_at_scale(input_stream, _width, _height, _preserveAspectRatio, NULL, &error);
+
+ g_input_stream_close(input_stream, NULL, NULL);
+ g_object_unref(input_stream);
+
+ // cleanup parameter data
+ (*env)->ReleaseByteArrayElements(env, _data, data, 0);
+
+ // cleanup return value
+ if (result != NULL) {
+ bindings_java_memory_cleanup((GObject*)result, TRUE);
+ }
+
+ // check for a GError
+ if (error) {
+ bindings_java_throw_gerror(env, error);
+ return 0L;
+ }
+
+ return (jlong) result;
+}

=== modified file 'src/bindings/org/gnome/gdk/GdkPixbufOverride.java'
--- src/bindings/org/gnome/gdk/GdkPixbufOverride.java 2009-01-06 09:26:19 +0000
+++ src/bindings/org/gnome/gdk/GdkPixbufOverride.java 2009-06-21 00:56:39 +0000
@@ -36,4 +36,19 @@
     }
 
     private static native final long gdk_pixbuf_new_from_stream(byte[] data) throws GlibException;
+
+    static final long createPixbufFromArrayAtScale(byte[] data, int width, int height,
+            boolean preserveAspectRatio) throws GlibException {
+        if (data == null) {
+            throw new IllegalArgumentException("byte array can't be null");
+        }
+
+        synchronized (lock) {
+            return gdk_pixbuf_new_from_stream_at_scale(data, width, height, preserveAspectRatio);
+        }
+    }
+
+    private static native final long gdk_pixbuf_new_from_stream_at_scale(byte[] data, int width,
+            int height, boolean preserveAspectRatio) throws GlibException;
+
 }

=== modified file 'src/bindings/org/gnome/gdk/Pixbuf.java'
--- src/bindings/org/gnome/gdk/Pixbuf.java 2009-02-02 09:22:37 +0000
+++ src/bindings/org/gnome/gdk/Pixbuf.java 2009-06-21 00:58:05 +0000
@@ -29,6 +29,7 @@
  * will facilitate.</i>
  *
  * @author Andrew Cowie
+ * @author Serkan Kaba
  * @since 4.0.0
  */
 public class Pixbuf extends org.gnome.glib.Object
@@ -127,6 +128,32 @@
     }
 
     /**
+     * Construct a new Pixbuf from in-memory data and scale it. See
+     * {@link #Pixbuf(byte[])} for info on in-memory data.<br>
+     * See {@link #Pixbuf(String, int, int, boolean)} for info on scaling.
+     *
+     * @since 4.0.12
+     */
+    public Pixbuf(byte[] data, int width, int height, boolean preserveAspectRatio) throws IOException {
+        super(checkPixbufFromArrayAtScale(data, width, height, preserveAspectRatio));
+    }
+
+    private static long checkPixbufFromArrayAtScale(byte[] data, int width, int height,
+            boolean preserveAspectRatio) throws IOException {
+        try {
+            return GdkPixbufOverride.createPixbufFromArrayAtScale(data, width, height,
+                    preserveAspectRatio);
+        } catch (GlibException ge) {
+            /*
+             * FIXME this will need to be more specific when our GError
+             * handling is better! IOException is the usual in stream-ish
+             * cases, but is it really appropriate here?
+             */
+            throw new IOException(ge.getMessage());
+        }
+    }
+
+    /**
      * Create an identical copy of this Pixbuf.
      *
      * <p>

# Begin bundle
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
hrUfCmA=

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

Re: Covarage of Pixbuf constructor using byte[] and does scaling

by Andrew Cowie :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Sun, 2009-06-21 at 14:42 +0300, Serkan Kaba wrote:
> Actually attaching the bundle.

Serkan and I chatted about this last night on IRC.

Essentially my feedback to him was "yes, duplication is bad, but hacky
attempts to avoid duplication are worse."

So I'll certainly accept this patch.

++

I just looked at gdk_pixbuf_new_from_stream_at_scale() in devhelp, and
noticed that it takes -1 for width and height.

So maybe we can implement both Pixbuf(byte[]) and Pixbuf(byte[], int,
int, boolean) using the same code path, but using

        GdkPixbufOverride.createPixbufFromArrayAtScale(data, -1, -1,
        false);

for the original method?

I looked at the code in GTK's gdk-pixbuf/gdk-pixbuf-io.c, however, and
I'm not actually sure that's a good idea. The at scale code paths do
considerable extra work that we'd want to avoid.

But I thought I'd mention the possibility for you to think about.

AfC
Sydney



------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

signature.asc (205 bytes) Download Attachment

Re: Covarage of Pixbuf constructor using byte[] and does scaling

by Serkan Kaba-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Here's a more debuggable *hack* Please review it.

Thanks,
- --
Sincerely,
Serkan KABA
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAko/xy4ACgkQRh6X64ivZaJH+ACePrgVztX4a3XB92o3d8AO5Ywz
tRMAnjx6+TOtCkkp14pDJ17Jqu1Try8x
=LyGn
-----END PGP SIGNATURE-----

=== modified file 'src/bindings/org/gnome/gdk/GdkPixbufOverride.c'
--- src/bindings/org/gnome/gdk/GdkPixbufOverride.c 2009-06-21 00:56:39 +0000
+++ src/bindings/org/gnome/gdk/GdkPixbufOverride.c 2009-06-22 17:59:08 +0000
@@ -98,55 +98,6 @@
  return result;
 }
 
-
-JNIEXPORT jlong JNICALL
-Java_org_gnome_gdk_GdkPixbufOverride_gdk_1pixbuf_1new_1from_1stream
-(
- JNIEnv* env,
- jclass cls,
- jbyteArray _data
-)
-{
- GInputStream *input_stream;
- gssize len;
- void *data;
- GdkPixbuf* result;
- GError* error = NULL;
-
- // set up the length and input stream parameters.
- len = (*env)->GetArrayLength(env, _data);
- data = (*env)->GetByteArrayElements(env, _data, NULL);
-
- /*
- * Jump through the necessary hoops to feed an array of bytes to the
- * GdkPixbuf constructor
- */
-
- input_stream = g_memory_input_stream_new_from_data(data, len, NULL);
-
- result = gdk_pixbuf_new_from_stream(input_stream, NULL, &error);
-
- g_input_stream_close(input_stream, NULL, NULL);
- g_object_unref(input_stream);
-
- // cleanup parameter data
- (*env)->ReleaseByteArrayElements(env, _data, data, 0);
-
- // cleanup return value
- if (result != NULL) {
- bindings_java_memory_cleanup((GObject*)result, TRUE);
- }
-
- // check for a GError
- if (error) {
- bindings_java_throw_gerror(env, error);
- return 0L;
- }
-
- return (jlong) result;
-}
-
-//FIXME: Duplicate code.
 JNIEXPORT jlong JNICALL Java_org_gnome_gdk_GdkPixbufOverride_gdk_1pixbuf_1new_1from_1stream_1at_1scale
 (
  JNIEnv* env,
@@ -154,7 +105,8 @@
  jbyteArray _data,
  jint _width,
  jint _height,
- jboolean _preserveAspectRatio
+ jboolean _preserveAspectRatio,
+ jboolean _scale
 )
 {
  GInputStream *input_stream;
@@ -173,8 +125,10 @@
  */
 
  input_stream = g_memory_input_stream_new_from_data(data, len, NULL);
-
- result = gdk_pixbuf_new_from_stream_at_scale(input_stream, _width, _height, _preserveAspectRatio, NULL, &error);
+ if(_scale)
+ result = gdk_pixbuf_new_from_stream_at_scale(input_stream, _width, _height, _preserveAspectRatio, NULL, &error);
+ else
+ result = gdk_pixbuf_new_from_stream(input_stream, NULL, &error);
 
  g_input_stream_close(input_stream, NULL, NULL);
  g_object_unref(input_stream);

=== modified file 'src/bindings/org/gnome/gdk/GdkPixbufOverride.java'
--- src/bindings/org/gnome/gdk/GdkPixbufOverride.java 2009-06-21 00:56:39 +0000
+++ src/bindings/org/gnome/gdk/GdkPixbufOverride.java 2009-06-22 17:59:55 +0000
@@ -25,30 +25,18 @@
 
     private static native final byte[] gdk_pixbuf_get_pixels(long self);
 
-    static final long createPixbufFromArray(byte[] data) throws GlibException {
-        if (data == null) {
-            throw new IllegalArgumentException("byte array can't be null");
-        }
-
-        synchronized (lock) {
-            return gdk_pixbuf_new_from_stream(data);
-        }
-    }
-
-    private static native final long gdk_pixbuf_new_from_stream(byte[] data) throws GlibException;
-
-    static final long createPixbufFromArrayAtScale(byte[] data, int width, int height,
-            boolean preserveAspectRatio) throws GlibException {
-        if (data == null) {
-            throw new IllegalArgumentException("byte array can't be null");
-        }
-
-        synchronized (lock) {
-            return gdk_pixbuf_new_from_stream_at_scale(data, width, height, preserveAspectRatio);
+    static final long createPixbufFromArray(byte[] data, int width, int height,
+            boolean preserveAspectRatio, boolean scale) throws GlibException {
+        if (data == null) {
+            throw new IllegalArgumentException("byte array can't be null");
+        }
+
+        synchronized (lock) {
+            return gdk_pixbuf_new_from_stream_at_scale(data, width, height, preserveAspectRatio, scale);
         }
     }
 
     private static native final long gdk_pixbuf_new_from_stream_at_scale(byte[] data, int width,
-            int height, boolean preserveAspectRatio) throws GlibException;
+            int height, boolean preserveAspectRatio, boolean scale) throws GlibException;
 
 }

=== modified file 'src/bindings/org/gnome/gdk/Pixbuf.java'
--- src/bindings/org/gnome/gdk/Pixbuf.java 2009-06-21 00:58:05 +0000
+++ src/bindings/org/gnome/gdk/Pixbuf.java 2009-06-22 17:59:39 +0000
@@ -116,7 +116,7 @@
 
     private static long checkPixbufFromArray(byte[] data) throws IOException {
         try {
-            return GdkPixbufOverride.createPixbufFromArray(data);
+            return GdkPixbufOverride.createPixbufFromArray(data, 0, 0, true, false);
         } catch (GlibException ge) {
             /*
              * FIXME this will need to be more specific when our GError
@@ -128,8 +128,9 @@
     }
 
     /**
-     * Construct a new Pixbuf from in-memory data and scale it. See
-     * {@link #Pixbuf(byte[])} for info on in-memory data.<br>
+     * Construct a new Pixbuf from in-memory data and scale it.
+     * <p>
+     * See {@link #Pixbuf(byte[])} for info on in-memory data.<br>
      * See {@link #Pixbuf(String, int, int, boolean)} for info on scaling.
      *
      * @since 4.0.12
@@ -141,8 +142,8 @@
     private static long checkPixbufFromArrayAtScale(byte[] data, int width, int height,
             boolean preserveAspectRatio) throws IOException {
         try {
-            return GdkPixbufOverride.createPixbufFromArrayAtScale(data, width, height,
-                    preserveAspectRatio);
+            return GdkPixbufOverride.createPixbufFromArray(data, width, height, preserveAspectRatio,
+                    true);
         } catch (GlibException ge) {
             /*
              * FIXME this will need to be more specific when our GError


------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

Re: Covarage of Pixbuf constructor using byte[] and does scaling

by Andrew Cowie :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Mon, 2009-06-22 at 21:02 +0300, Serkan Kaba wrote:
> + jboolean _scale

That's the other thing I was going to suggest. :)

Go for it!

AfC
Sydney



------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

signature.asc (205 bytes) Download Attachment

Re: Covarage of Pixbuf constructor using byte[] and does scaling

by Serkan Kaba-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Thanks for the review. Here's the new bundle.

- --
Sincerely,
Serkan KABA
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkpATdYACgkQRh6X64ivZaIwSgCfZsW/QvOrvKxWZ2mtkJUb5SZL
RCAAn3wor+DERQQPSMXX2PQlWhfiEjS3
=UvDF
-----END PGP SIGNATURE-----

# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: serkan@...
# target_branch: ../mainline/
# testament_sha1: e2d9bd3e98667f1837e89d6e39f3bd67d15ced68
# timestamp: 2009-06-23 06:35:51 +0300
# base_revision_id: andrew@...-\
#   a8yn061ibbtx05zv
#
# Begin patch
=== modified file 'src/bindings/org/gnome/gdk/GdkPixbufOverride.c'
--- src/bindings/org/gnome/gdk/GdkPixbufOverride.c 2009-02-02 09:22:37 +0000
+++ src/bindings/org/gnome/gdk/GdkPixbufOverride.c 2009-06-23 03:31:42 +0000
@@ -33,8 +33,8 @@
  jbyteArray result;
  int size;
  int j, p;
-
-
+
+
  // convert parameter self
  self = (GdkPixbuf*) _self;
 
@@ -44,17 +44,17 @@
  * formula is in the GDK docs [and more to the point, in the source
  * code of gdk_pixbuf_new()] but, as finally implemented, we don't
  * need it since we're extracting the rows individually, thereby
- * jettisoning the padding.
+ * jettisoning the padding.
  */
-
+
  width = gdk_pixbuf_get_width(self);
  height = gdk_pixbuf_get_height(self);
  rowstride = gdk_pixbuf_get_rowstride(self);
  n_channels = gdk_pixbuf_get_n_channels(self);
  bits_per_sample = gdk_pixbuf_get_bits_per_sample(self);
-
+
  // length =  ((height - 1) * rowstride) + (width * ((n_channels * bits_per_sample + 7) / 8));
-
+
  if (bits_per_sample != 8) {
  bindings_java_throw(env, "This algorithm only supports 8 bits per channel");
  /*
@@ -64,14 +64,14 @@
  */
  return NULL;
  }
-
+
  /*
  * Now we can extract the image data, and return it.
  */
 
  // call function
  data = gdk_pixbuf_get_pixels(self);
-
+
 
  /*
  * Now copy the bytes of each pixel out row by row. Most of the time
@@ -80,31 +80,33 @@
  * dangling last row. We orginally had this in Pixbuf.java, but this
  * turns out to be 20% faster under heavy load.
  */
-
+
  size = width * n_channels;
-
+
  result = (*env)->NewByteArray(env, height * size);
-
+
  p = 0;
-
+
  for (j = 0; j < height; j++) {
  (*env)->SetByteArrayRegion(env, result, p, size, (jbyte*) data);
-
+
  data += rowstride;
  p += size;
  }
-
+
  // and finally
  return result;
 }
 
-
-JNIEXPORT jlong JNICALL
-Java_org_gnome_gdk_GdkPixbufOverride_gdk_1pixbuf_1new_1from_1stream
+JNIEXPORT jlong JNICALL Java_org_gnome_gdk_GdkPixbufOverride_gdk_1pixbuf_1new_1from_1stream
 (
  JNIEnv* env,
  jclass cls,
- jbyteArray _data
+ jbyteArray _data,
+ jint _width,
+ jint _height,
+ jboolean _preserveAspectRatio,
+ jboolean _scale
 )
 {
  GInputStream *input_stream;
@@ -123,8 +125,10 @@
  */
 
  input_stream = g_memory_input_stream_new_from_data(data, len, NULL);
-
- result = gdk_pixbuf_new_from_stream(input_stream, NULL, &error);
+ if(_scale)
+ result = gdk_pixbuf_new_from_stream_at_scale(input_stream, _width, _height, _preserveAspectRatio, NULL, &error);
+ else
+ result = gdk_pixbuf_new_from_stream(input_stream, NULL, &error);
 
  g_input_stream_close(input_stream, NULL, NULL);
  g_object_unref(input_stream);

=== modified file 'src/bindings/org/gnome/gdk/GdkPixbufOverride.java'
--- src/bindings/org/gnome/gdk/GdkPixbufOverride.java 2009-01-06 09:26:19 +0000
+++ src/bindings/org/gnome/gdk/GdkPixbufOverride.java 2009-06-23 03:31:42 +0000
@@ -25,15 +25,18 @@
 
     private static native final byte[] gdk_pixbuf_get_pixels(long self);
 
-    static final long createPixbufFromArray(byte[] data) throws GlibException {
+    static final long createPixbufFromArray(byte[] data, int width, int height,
+            boolean preserveAspectRatio, boolean scale) throws GlibException {
         if (data == null) {
             throw new IllegalArgumentException("byte array can't be null");
         }
 
         synchronized (lock) {
-            return gdk_pixbuf_new_from_stream(data);
+            return gdk_pixbuf_new_from_stream(data, width, height, preserveAspectRatio, scale);
         }
     }
 
-    private static native final long gdk_pixbuf_new_from_stream(byte[] data) throws GlibException;
+    private static native final long gdk_pixbuf_new_from_stream(byte[] data, int width,
+            int height, boolean preserveAspectRatio, boolean scale) throws GlibException;
+
 }

=== modified file 'src/bindings/org/gnome/gdk/Pixbuf.java'
--- src/bindings/org/gnome/gdk/Pixbuf.java 2009-02-02 09:22:37 +0000
+++ src/bindings/org/gnome/gdk/Pixbuf.java 2009-06-23 03:31:42 +0000
@@ -29,6 +29,7 @@
  * will facilitate.</i>
  *
  * @author Andrew Cowie
+ * @author Serkan Kaba
  * @since 4.0.0
  */
 public class Pixbuf extends org.gnome.glib.Object
@@ -115,7 +116,35 @@
 
     private static long checkPixbufFromArray(byte[] data) throws IOException {
         try {
-            return GdkPixbufOverride.createPixbufFromArray(data);
+            // Parameters 2-4 have no meaning when we're not scaling
+            return GdkPixbufOverride.createPixbufFromArray(data, 0, 0, true, false);
+        } catch (GlibException ge) {
+            /*
+             * FIXME this will need to be more specific when our GError
+             * handling is better! IOException is the usual in stream-ish
+             * cases, but is it really appropriate here?
+             */
+            throw new IOException(ge.getMessage());
+        }
+    }
+
+    /**
+     * Construct a new Pixbuf from in-memory data and scale it.
+     * <p>
+     * See {@link #Pixbuf(byte[])} for info on in-memory data.<br>
+     * See {@link #Pixbuf(String, int, int, boolean)} for info on scaling.
+     *
+     * @since 4.0.12
+     */
+    public Pixbuf(byte[] data, int width, int height, boolean preserveAspectRatio) throws IOException {
+        super(checkPixbufFromArrayAtScale(data, width, height, preserveAspectRatio));
+    }
+
+    private static long checkPixbufFromArrayAtScale(byte[] data, int width, int height,
+            boolean preserveAspectRatio) throws IOException {
+        try {
+            return GdkPixbufOverride.createPixbufFromArray(data, width, height, preserveAspectRatio,
+                    true);
         } catch (GlibException ge) {
             /*
              * FIXME this will need to be more specific when our GError

# Begin bundle
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

------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

Re: Covarage of Pixbuf constructor using byte[] and does scaling

by Andrew Cowie :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 2009-06-23 at 06:36 +0300, Serkan Kaba wrote:
> Thanks for the review. Here's the new bundle.

Made a few cleanups, then merged to 'mainline'.

AfC
Sydney



------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
java-gnome-hackers mailing list
java-gnome-hackers@...
https://lists.sourceforge.net/lists/listinfo/java-gnome-hackers

signature.asc (205 bytes) Download Attachment