[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commit-cp] classpath native/jni/gtk-peergnu_java_awt_peer_...
From: |
Roman Kennke |
Subject: |
[commit-cp] classpath native/jni/gtk-peergnu_java_awt_peer_... |
Date: |
Mon, 12 Jun 2006 10:32:47 +0000 |
CVSROOT: /cvsroot/classpath
Module name: classpath
Changes by: Roman Kennke <rabbit78> 06/06/12 10:32:45
Modified files:
native/jni/gtk-peer: gnu_java_awt_peer_gtk_CairoSurface.c
gnu_java_awt_peer_gtk_CairoGraphics2D.c
include : gnu_java_awt_peer_gtk_CairoSurface.h
gnu_java_awt_peer_gtk_CairoGraphics2D.h
gnu/java/awt/peer/gtk: CairoGraphics2D.java CairoSurface.java
. : ChangeLog
Log message:
2006-06-12 Roman Kennke <address@hidden>
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
(drawPixels): Include alpha in parameter list.
(cairoFill): Include alpha in parameter list.
(setComposite): Don't modify the color.
(draw(Shape))): Use fill when the current composite has an alpha
of != 1.0, so that the stroked shaped will be composited.
(fill(Shape)): Call cairoFill() with alpha.
(drawImage): Call drawPixels or drawSurface with alpha.
(drawGlyphVector): When composite alpha is != 1.0, render the
outline using fill() to enable compositing for text.
(drawRaster): Call drawPixels with alpha.
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
(nativeDrawSurface): Include alpha in parameter list.
(drawSurface): Include alpha in parameter list. Pass it to
nativeDrawSurface().
* include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
* include/gnu_java_awt_peer_gtk_CairoSurface.h:
Regenerated.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
(drawPixels): Handle possible alpha for compositing.
(cairoFill): Likewise.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
(nativeDrawSurface): Handle possible alpha for compositing.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c?cvsroot=classpath&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c?cvsroot=classpath&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h?cvsroot=classpath&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h?cvsroot=classpath&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java?cvsroot=classpath&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/CairoSurface.java?cvsroot=classpath&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7778&r2=1.7779
Patches:
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 10 Jun 2006
14:16:09 -0000 1.18
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 12 Jun 2006
10:32:44 -0000 1.19
@@ -181,7 +181,7 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeDrawSurface
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
- jlong surfacePointer, jlong context, jdoubleArray java_matrix)
+ jlong surfacePointer, jlong context, jdoubleArray java_matrix, double alpha)
{
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, context);
cairo_t *cr = gr->cr;
@@ -207,7 +207,11 @@
cairo_pattern_set_matrix (p, &mat);
cairo_set_source(cr, p);
+ if (alpha == 1.0)
cairo_paint(cr);
+ else
+ cairo_paint_with_alpha(cr, alpha);
+
cairo_pattern_destroy(p);
}
Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c 10 Jun 2006
14:16:09 -0000 1.9
+++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c 12 Jun 2006
10:32:44 -0000 1.10
@@ -188,7 +188,7 @@
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
jlong pointer, jintArray java_pixels,
- jint w, jint h, jint stride, jdoubleArray java_matrix)
+ jint w, jint h, jint stride, jdoubleArray java_matrix, jdouble alpha)
{
jint *native_pixels = NULL;
jdouble *native_matrix = NULL;
@@ -218,7 +218,11 @@
if (gr->pattern)
cairo_pattern_set_filter (p, cairo_pattern_get_filter (gr->pattern));
cairo_set_source (gr->cr, p);
+ if (alpha == 1.)
cairo_paint (gr->cr);
+ else
+ cairo_paint_with_alpha(gr->cr, alpha);
+
cairo_pattern_destroy (p);
cairo_surface_destroy (surf);
}
@@ -581,12 +585,20 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
- jlong pointer)
+ jlong pointer, jdouble alpha)
{
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
g_assert (gr != NULL);
+ if (alpha == 1.0)
cairo_fill (gr->cr);
+ else
+ {
+ cairo_save(gr->cr);
+ cairo_clip(gr->cr);
+ cairo_paint_with_alpha(gr->cr, alpha);
+ cairo_restore(gr->cr);
+ }
}
JNIEXPORT void JNICALL
@@ -653,6 +665,7 @@
}
}
+
/************************** FONT STUFF ****************************/
static void
install_font_peer(cairo_t *cr,
@@ -703,4 +716,3 @@
cairo_pattern_set_matrix (gr->pattern, &mat);
}
-
Index: include/gnu_java_awt_peer_gtk_CairoSurface.h
===================================================================
RCS file:
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- include/gnu_java_awt_peer_gtk_CairoSurface.h 10 Jun 2006 14:16:10
-0000 1.5
+++ include/gnu_java_awt_peer_gtk_CairoSurface.h 12 Jun 2006 10:32:44
-0000 1.6
@@ -14,7 +14,7 @@
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_destroy (JNIEnv
*env, jobject, jlong, jlong);
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetElem
(JNIEnv *env, jobject, jlong, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetElem
(JNIEnv *env, jobject, jlong, jint, jint);
-JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeDrawSurface (JNIEnv *env,
jobject, jlong, jlong, jdoubleArray);
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeDrawSurface (JNIEnv *env,
jobject, jlong, jlong, jdoubleArray, jdouble);
JNIEXPORT jintArray JNICALL
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetPixels (JNIEnv *env, jobject,
jlong, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetPixels
(JNIEnv *env, jobject, jlong, jintArray);
JNIEXPORT jlong JNICALL
Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer (JNIEnv *env, jobject,
jlong, jint);
Index: include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
===================================================================
RCS file:
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 10 Jun 2006 14:16:10
-0000 1.5
+++ include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 12 Jun 2006 10:32:44
-0000 1.6
@@ -12,7 +12,7 @@
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init
(JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative (JNIEnv *env, jobject,
jlong);
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
(JNIEnv *env, jobject, jlong, jintArray, jint, jint, jint, jdoubleArray);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
(JNIEnv *env, jobject, jlong, jintArray, jint, jint, jint, jdoubleArray,
jdouble);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
(JNIEnv *env, jobject, jlong, jdouble, jdouble, jdouble, jdouble, jint, jint,
jint, jint, jint, jint, jint, jint, jboolean);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setTexturePixels (JNIEnv *env,
jobject, jlong, jintArray, jint, jint, jint);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix (JNIEnv *env,
jobject, jlong, jdoubleArray);
@@ -32,7 +32,7 @@
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo (JNIEnv *env,
jobject, jlong, jdouble, jdouble);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo
(JNIEnv *env, jobject, jlong, jdouble, jdouble, jdouble, jdouble, jdouble,
jdouble);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
(JNIEnv *env, jobject, jlong);
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
(JNIEnv *env, jobject, jlong);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
(JNIEnv *env, jobject, jlong, jdouble);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
(JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip (JNIEnv *env,
jobject, jlong);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env,
jobject, jlong);
Index: gnu/java/awt/peer/gtk/CairoGraphics2D.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- gnu/java/awt/peer/gtk/CairoGraphics2D.java 11 Jun 2006 11:21:52 -0000
1.19
+++ gnu/java/awt/peer/gtk/CairoGraphics2D.java 12 Jun 2006 10:32:44 -0000
1.20
@@ -65,6 +65,7 @@
import java.awt.geom.AffineTransform;
import java.awt.geom.Arc2D;
import java.awt.geom.Area;
+import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.NoninvertibleTransformException;
import java.awt.geom.PathIterator;
@@ -309,7 +310,7 @@
* @param i2u - affine transform array
*/
private native void drawPixels(long pointer, int[] pixels, int w, int h,
- int stride, double[] i2u);
+ int stride, double[] i2u, double alpha);
private native void setGradient(long pointer, double x1, double y1,
double x2, double y2,
@@ -406,7 +407,7 @@
/**
* Fill current path
*/
- private native void cairoFill(long pointer);
+ private native void cairoFill(long pointer, double alpha);
/**
* Clip current path
@@ -802,9 +803,6 @@
{
AlphaComposite a = (AlphaComposite) comp;
cairoSetOperator(nativePointer, a.getRule());
- Color c = getColor();
- setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(),
- (int) (a.getAlpha() * ((float) c.getAlpha()))));
}
else
{
@@ -817,8 +815,21 @@
public void draw(Shape s)
{
- if (stroke != null && ! (stroke instanceof BasicStroke))
+ if ((stroke != null && ! (stroke instanceof BasicStroke))
+ || (comp instanceof AlphaComposite
+ && ((AlphaComposite) comp).getAlpha() != 1.0))
+ {
+ // FIXME: This is a hack to work around BasicStrokes's current
+ // limitations wrt cubic curves.
+ // See CubicSegment.getDisplacedSegments().
+ if (stroke instanceof BasicStroke)
{
+ PathIterator flatten = s.getPathIterator(new AffineTransform(),
+ 1.0);
+ GeneralPath p = new GeneralPath();
+ p.append(flatten, false);
+ s = p;
+ }
fill(stroke.createStrokedShape(s));
return;
}
@@ -849,7 +860,10 @@
else
walkPath(s.getPathIterator(null), false);
- cairoFill(nativePointer);
+ double alpha = 1.0;
+ if (comp instanceof AlphaComposite)
+ alpha = ((AlphaComposite) comp).getAlpha();
+ cairoFill(nativePointer, alpha);
}
/**
@@ -1125,9 +1139,13 @@
invertedXform.getMatrix(i2u);
+ double alpha = 1.0;
+ if (comp instanceof AlphaComposite)
+ alpha = ((AlphaComposite) comp).getAlpha();
+
if(db instanceof CairoSurface)
{
- ((CairoSurface)db).drawSurface(nativePointer, i2u);
+ ((CairoSurface)db).drawSurface(nativePointer, i2u, alpha);
return true;
}
@@ -1163,7 +1181,7 @@
null, 0, width);
}
- drawPixels(nativePointer, pixels, width, height, width, i2u);
+ drawPixels(nativePointer, pixels, width, height, width, i2u, alpha);
// Cairo seems to lose the current color which must be restored.
updateColor();
@@ -1295,7 +1313,10 @@
public void drawGlyphVector(GlyphVector gv, float x, float y)
{
- if (gv instanceof FreetypeGlyphVector)
+ double alpha = 1.0;
+ if (comp instanceof AlphaComposite)
+ alpha = ((AlphaComposite) comp).getAlpha();
+ if (gv instanceof FreetypeGlyphVector && alpha == 1.0)
{
int n = gv.getNumGlyphs ();
int[] codes = gv.getGlyphCodes (0, n, null);
@@ -1463,8 +1484,11 @@
for (int i = 0; i < pixels.length; i++)
pixels[i] |= 0xFF000000;
+ double alpha = 1.0;
+ if (comp instanceof AlphaComposite)
+ alpha = ((AlphaComposite) comp).getAlpha();
drawPixels(nativePointer, pixels, r.getWidth(), r.getHeight(),
- r.getWidth(), i2u);
+ r.getWidth(), i2u, alpha);
// Cairo seems to lose the current color which must be restored.
updateColor();
Index: gnu/java/awt/peer/gtk/CairoSurface.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/CairoSurface.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- gnu/java/awt/peer/gtk/CairoSurface.java 10 Jun 2006 10:33:18 -0000
1.8
+++ gnu/java/awt/peer/gtk/CairoSurface.java 12 Jun 2006 10:32:44 -0000
1.9
@@ -112,11 +112,11 @@
* with an affine transform given by i2u.
*/
public native void nativeDrawSurface(long surfacePointer, long
contextPointer,
- double[] i2u);
+ double[] i2u, double alpha);
- public void drawSurface(long contextPointer, double[] i2u)
+ public void drawSurface(long contextPointer, double[] i2u, double alpha)
{
- nativeDrawSurface(surfacePointer, contextPointer, i2u);
+ nativeDrawSurface(surfacePointer, contextPointer, i2u, alpha);
}
/**
Index: ChangeLog
===================================================================
RCS file: /cvsroot/classpath/classpath/ChangeLog,v
retrieving revision 1.7778
retrieving revision 1.7779
diff -u -b -r1.7778 -r1.7779
--- ChangeLog 12 Jun 2006 08:51:15 -0000 1.7778
+++ ChangeLog 12 Jun 2006 10:32:44 -0000 1.7779
@@ -1,3 +1,29 @@
+2006-06-12 Roman Kennke <address@hidden>
+
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawPixels): Include alpha in parameter list.
+ (cairoFill): Include alpha in parameter list.
+ (setComposite): Don't modify the color.
+ (draw(Shape))): Use fill when the current composite has an alpha
+ of != 1.0, so that the stroked shaped will be composited.
+ (fill(Shape)): Call cairoFill() with alpha.
+ (drawImage): Call drawPixels or drawSurface with alpha.
+ (drawGlyphVector): When composite alpha is != 1.0, render the
+ outline using fill() to enable compositing for text.
+ (drawRaster): Call drawPixels with alpha.
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (nativeDrawSurface): Include alpha in parameter list.
+ (drawSurface): Include alpha in parameter list. Pass it to
+ nativeDrawSurface().
+ * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
+ * include/gnu_java_awt_peer_gtk_CairoSurface.h:
+ Regenerated.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
+ (drawPixels): Handle possible alpha for compositing.
+ (cairoFill): Likewise.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c
+ (nativeDrawSurface): Handle possible alpha for compositing.
+
2006-06-12 Mark Wielaard <address@hidden>
* gnu/java/awt/peer/gtk/GdkPixbufDecoder.java (streamImage):
- [commit-cp] classpath native/jni/gtk-peergnu_java_awt_peer_...,
Roman Kennke <=