mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-05 05:00:26 +08:00
configure: Regenerate.
2006-06-13 Thomas Fitzsimmons <fitzsim@redhat.com> * configure: Regenerate. * Makefile.in: Regenerate. * configure.ac (--enable-plugin): New option. (ac_configure_args): Add --enable-tool-wrappers. (ac_configure_args): Add --disable-plugin unless --enable-plugin was specified. * gcj/Makefile.in: Regenerate. * sources.am (gnu_java_net_source_files): Add classpath/gnu/java/net/IndexListParser.java. (property_files): Remove classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties, classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties. Add classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties, classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties, classpath/resource/gnu/classpath/tools/getopt/Messages.properties, classpath/resource/gnu/classpath/tools/jar/messages.properties, classpath/resource/gnu/classpath/tools/jarsigner/messages.properties, classpath/resource/gnu/classpath/tools/keytool/messages.properties, classpath/resource/gnu/classpath/tools/native2ascii/messages.properties, classpath/resource/gnu/classpath/tools/serialver/messages.properties. * classpath/Makefile.in: Regenerate. * classpath/native/jni/gtk-peer/cairographics2d.h, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c: Merge from GNU Classpath. * classpath/native/Makefile.in: Regenerate. * classpath/native/jawt/Makefile.in: Regenerate. * classpath/native/jawt/Makefile.am: Install libjawt.so in GCJ's versioned library directory. * classpath/native/Makefile.am: Add plugin directory if --enable-plugin was specified. * classpath/native/plugin/Makefile.in: Regenerate. * classpath/native/plugin/Makefile.am: Install libgcjwebplugin.so in GCJ's versioned library directory. * classpath/resource/gnu/classpath/tools/native2ascii/messages.properties: New file. * classpath/resource/gnu/classpath/tools/getopt/Messages.properties: Likewise. * classpath/resource/gnu/classpath/tools/jarsigner/messages.properties: Likewise. * classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties: Remove file. * classpath/resource/gnu/classpath/tools/keytool/messages.properties: New file. * classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties: Remove file. * classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties: New file. * classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties: Likewise. * classpath/resource/gnu/classpath/tools/jar/messages.properties: Likewise. * classpath/resource/gnu/classpath/tools/serialver/messages.properties: Likewise. * classpath/gnu/java/net/IndexListParser.java: Likewise. * classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java, classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java, classpath/gnu/java/awt/peer/gtk/CairoSurface.java, classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java, classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java, classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java, classpath/gnu/java/awt/peer/gtk/GdkTextLayout.java, classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java, classpath/gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java, classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java, classpath/gnu/java/awt/font/opentype/truetype/VirtualMachine.java, classpath/gnu/java/awt/java2d/PolyEdge.java, classpath/gnu/java/awt/java2d/AbstractGraphics2D.java: Merge from GNU Classpath. * classpath/tools/toolwrapper.c: Replace tools.zip reference with libgcj-tools-4.2.0.jar. * classpath/tools/Makefile.in: Regenerate. * classpath/tools/Makefile.am: Rename tools.zip to libgcj-tools-4.2.0.jar. Install libgcj-tools-4.2.0.jar in $(datadir)/java. * classpath/javax/swing/JTabbedPane.java, classpath/javax/swing/text/DefaultStyledDocument.java, classpath/javax/swing/text/html/HTMLDocument.java, classpath/javax/swing/text/GapContent.java, classpath/javax/swing/JComponent.java, classpath/javax/swing/RepaintManager.java, classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java, classpath/javax/swing/plaf/basic/BasicScrollBarUI.java, classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java, classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java, classpath/javax/swing/plaf/basic/BasicLookAndFeel.java, classpath/javax/swing/plaf/metal/MetalButtonUI.java, classpath/java/text/Bidi.java, classpath/java/awt/image/BufferedImage.java, classpath/java/awt/datatransfer/DataFlavor.java, classpath/java/awt/geom/AffineTransform.java, classpath/java/awt/dnd/DropTargetDropEvent.java, classpath/java/awt/dnd/DropTargetContext.java, classpath/java/awt/font/TextLayout.java, classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h, classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h, classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h, classpath/include/gnu_java_awt_peer_gtk_GdkTextLayout.h, classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h, classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h: Merge from GNU Classpath. * classpath/include/gnu_java_awt_peer_gtk_GdkGraphics.h, classpath/include/gnu_java_awt_peer_gtk_GdkGraphics2D.h, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c, classpath/native/jni/gtk-peer/gtkcairopeer.h, classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c: Remove files. * classpath/Makefile.am (SUBDIRS, DIST_SUBDIRS): Include tools directory. * include/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. From-SVN: r114633
This commit is contained in:
parent
e3d437c056
commit
648e8d6dd3
@ -1,3 +1,124 @@
|
||||
2006-06-13 Thomas Fitzsimmons <fitzsim@redhat.com>
|
||||
|
||||
* configure: Regenerate.
|
||||
* Makefile.in: Regenerate.
|
||||
* configure.ac (--enable-plugin): New option.
|
||||
(ac_configure_args): Add --enable-tool-wrappers.
|
||||
(ac_configure_args): Add --disable-plugin unless --enable-plugin
|
||||
was specified.
|
||||
* gcj/Makefile.in: Regenerate.
|
||||
* sources.am (gnu_java_net_source_files): Add
|
||||
classpath/gnu/java/net/IndexListParser.java.
|
||||
(property_files): Remove
|
||||
classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties,
|
||||
classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties.
|
||||
Add
|
||||
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties,
|
||||
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties,
|
||||
classpath/resource/gnu/classpath/tools/getopt/Messages.properties,
|
||||
classpath/resource/gnu/classpath/tools/jar/messages.properties,
|
||||
classpath/resource/gnu/classpath/tools/jarsigner/messages.properties,
|
||||
classpath/resource/gnu/classpath/tools/keytool/messages.properties,
|
||||
classpath/resource/gnu/classpath/tools/native2ascii/messages.properties,
|
||||
classpath/resource/gnu/classpath/tools/serialver/messages.properties.
|
||||
* classpath/Makefile.in: Regenerate.
|
||||
* classpath/native/jni/gtk-peer/cairographics2d.h,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c:
|
||||
Merge from GNU Classpath.
|
||||
* classpath/native/Makefile.in: Regenerate.
|
||||
* classpath/native/jawt/Makefile.in: Regenerate.
|
||||
* classpath/native/jawt/Makefile.am: Install libjawt.so in GCJ's
|
||||
versioned library directory.
|
||||
* classpath/native/Makefile.am: Add plugin directory if
|
||||
--enable-plugin was specified.
|
||||
* classpath/native/plugin/Makefile.in: Regenerate. *
|
||||
classpath/native/plugin/Makefile.am: Install libgcjwebplugin.so in
|
||||
GCJ's versioned library directory.
|
||||
* classpath/resource/gnu/classpath/tools/native2ascii/messages.properties:
|
||||
New file.
|
||||
* classpath/resource/gnu/classpath/tools/getopt/Messages.properties:
|
||||
Likewise.
|
||||
* classpath/resource/gnu/classpath/tools/jarsigner/messages.properties:
|
||||
Likewise.
|
||||
* classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties:
|
||||
Remove file.
|
||||
* classpath/resource/gnu/classpath/tools/keytool/messages.properties:
|
||||
New file.
|
||||
* classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties:
|
||||
Remove file.
|
||||
* classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties:
|
||||
New file.
|
||||
* classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties:
|
||||
Likewise.
|
||||
* classpath/resource/gnu/classpath/tools/jar/messages.properties:
|
||||
Likewise.
|
||||
* classpath/resource/gnu/classpath/tools/serialver/messages.properties:
|
||||
Likewise.
|
||||
* classpath/gnu/java/net/IndexListParser.java:
|
||||
Likewise.
|
||||
* classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java,
|
||||
classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,
|
||||
classpath/gnu/java/awt/peer/gtk/CairoSurface.java,
|
||||
classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java,
|
||||
classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
|
||||
classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,
|
||||
classpath/gnu/java/awt/peer/gtk/GdkTextLayout.java,
|
||||
classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,
|
||||
classpath/gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java,
|
||||
classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java,
|
||||
classpath/gnu/java/awt/font/opentype/truetype/VirtualMachine.java,
|
||||
classpath/gnu/java/awt/java2d/PolyEdge.java,
|
||||
classpath/gnu/java/awt/java2d/AbstractGraphics2D.java: Merge from
|
||||
GNU Classpath.
|
||||
* classpath/tools/toolwrapper.c: Replace tools.zip reference with
|
||||
libgcj-tools-4.2.0.jar.
|
||||
* classpath/tools/Makefile.in: Regenerate.
|
||||
* classpath/tools/Makefile.am: Rename tools.zip to
|
||||
libgcj-tools-4.2.0.jar. Install libgcj-tools-4.2.0.jar in
|
||||
$(datadir)/java.
|
||||
* classpath/javax/swing/JTabbedPane.java,
|
||||
classpath/javax/swing/text/DefaultStyledDocument.java,
|
||||
classpath/javax/swing/text/html/HTMLDocument.java,
|
||||
classpath/javax/swing/text/GapContent.java,
|
||||
classpath/javax/swing/JComponent.java,
|
||||
classpath/javax/swing/RepaintManager.java,
|
||||
classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java,
|
||||
classpath/javax/swing/plaf/basic/BasicScrollBarUI.java,
|
||||
classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java,
|
||||
classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java,
|
||||
classpath/javax/swing/plaf/basic/BasicLookAndFeel.java,
|
||||
classpath/javax/swing/plaf/metal/MetalButtonUI.java,
|
||||
classpath/java/text/Bidi.java,
|
||||
classpath/java/awt/image/BufferedImage.java,
|
||||
classpath/java/awt/datatransfer/DataFlavor.java,
|
||||
classpath/java/awt/geom/AffineTransform.java,
|
||||
classpath/java/awt/dnd/DropTargetDropEvent.java,
|
||||
classpath/java/awt/dnd/DropTargetContext.java,
|
||||
classpath/java/awt/font/TextLayout.java,
|
||||
classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h,
|
||||
classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,
|
||||
classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h,
|
||||
classpath/include/gnu_java_awt_peer_gtk_GdkTextLayout.h,
|
||||
classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h,
|
||||
classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h: Merge from
|
||||
GNU Classpath.
|
||||
* classpath/include/gnu_java_awt_peer_gtk_GdkGraphics.h,
|
||||
classpath/include/gnu_java_awt_peer_gtk_GdkGraphics2D.h,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c,
|
||||
classpath/native/jni/gtk-peer/gtkcairopeer.h,
|
||||
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c:
|
||||
Remove files.
|
||||
* classpath/Makefile.am (SUBDIRS, DIST_SUBDIRS): Include tools
|
||||
directory.
|
||||
* include/Makefile.in: Regenerate.
|
||||
* testsuite/Makefile.in: Regenerate.
|
||||
|
||||
2006-06-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* configure.host (hppa*-*): Set 'enable_hash_synchronization_default'
|
||||
|
@ -436,8 +436,6 @@ AWK = @AWK@
|
||||
BACKTRACESPEC = @BACKTRACESPEC@
|
||||
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
||||
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
||||
CAIRO_CFLAGS = @CAIRO_CFLAGS@
|
||||
CAIRO_LIBS = @CAIRO_LIBS@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
@ -473,8 +471,6 @@ GCSPEC = @GCSPEC@
|
||||
GCTESTSPEC = @GCTESTSPEC@
|
||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||
GLIB_LIBS = @GLIB_LIBS@
|
||||
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
|
||||
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
|
||||
GTK_CFLAGS = @GTK_CFLAGS@
|
||||
GTK_LIBS = @GTK_LIBS@
|
||||
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
||||
@ -527,8 +523,6 @@ PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@
|
||||
PANGOFT2_LIBS = @PANGOFT2_LIBS@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
@ -1663,6 +1657,7 @@ classpath/gnu/java/net/DefaultContentHandlerFactory.java \
|
||||
classpath/gnu/java/net/EmptyX509TrustManager.java \
|
||||
classpath/gnu/java/net/GetLocalHostAction.java \
|
||||
classpath/gnu/java/net/HeaderFieldHelper.java \
|
||||
classpath/gnu/java/net/IndexListParser.java \
|
||||
classpath/gnu/java/net/LineInputStream.java \
|
||||
gnu/java/net/PlainDatagramSocketImpl.java \
|
||||
gnu/java/net/PlainSocketImpl.java \
|
||||
@ -6931,8 +6926,14 @@ bc_objects = \
|
||||
org-xml.lo
|
||||
|
||||
property_files = \
|
||||
classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties \
|
||||
classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties \
|
||||
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties \
|
||||
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties \
|
||||
classpath/resource/gnu/classpath/tools/getopt/Messages.properties \
|
||||
classpath/resource/gnu/classpath/tools/jar/messages.properties \
|
||||
classpath/resource/gnu/classpath/tools/jarsigner/messages.properties \
|
||||
classpath/resource/gnu/classpath/tools/keytool/messages.properties \
|
||||
classpath/resource/gnu/classpath/tools/native2ascii/messages.properties \
|
||||
classpath/resource/gnu/classpath/tools/serialver/messages.properties \
|
||||
classpath/resource/gnu/java/awt/peer/gtk/font.properties \
|
||||
classpath/resource/gnu/javax/print/PrinterDialog.properties \
|
||||
classpath/resource/gnu/javax/print/PrinterDialog_de.properties \
|
||||
|
@ -1,10 +1,8 @@
|
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
# lib first, to compile .class files before native code, last examples
|
||||
## GCJ LOCAL: we remove 'tools' for the time being.
|
||||
## We don't build any of them into actual tools yet.
|
||||
SUBDIRS = lib doc external include native resource scripts $(EXAMPLESDIR)
|
||||
DIST_SUBDIRS = lib doc external include native resource scripts examples
|
||||
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
|
||||
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
|
||||
|
||||
## GCJ LOCAL: we need an extra -I here.
|
||||
ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
|
||||
|
@ -295,8 +295,8 @@ target_vendor = @target_vendor@
|
||||
vm_classes = @vm_classes@
|
||||
|
||||
# lib first, to compile .class files before native code, last examples
|
||||
SUBDIRS = lib doc external include native resource scripts $(EXAMPLESDIR)
|
||||
DIST_SUBDIRS = lib doc external include native resource scripts examples
|
||||
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
|
||||
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
|
||||
ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
|
||||
EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE \
|
||||
ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 \
|
||||
|
@ -1066,6 +1066,10 @@ class VirtualMachine
|
||||
stack[sp] = ((e1 != 0) || (stack[sp] != 0)) ? 1 : 0;
|
||||
break;
|
||||
|
||||
case 0x5C: // NOT
|
||||
stack[sp] = (stack[sp] != 0) ? 0 : 1;
|
||||
break;
|
||||
|
||||
case 0x5e: // SDB, Set Delta Base in the graphics state
|
||||
deltaBase = stack[sp--];
|
||||
break;
|
||||
@ -1764,7 +1768,7 @@ class VirtualMachine
|
||||
/* 50 */ "LT", "LTEQ", "GT", "GTEQ",
|
||||
/* 54 */ "EQ", "NEQ", "INST_56", "INST_57",
|
||||
/* 58 */ "IF", "EIF", "AND", "OR",
|
||||
/* 5c */ "INST_5C", "INST_5D", "SDB", "SDS",
|
||||
/* 5c */ "NOT", "INST_5D", "SDB", "SDS",
|
||||
/* 60 */ "ADD", "SUB", "DIV", "MUL",
|
||||
/* 64 */ "ABS", "NEG", "FLOOR", "CEILING",
|
||||
/* 68 */ "ROUND[0]", "ROUND[1]", "ROUND[2]", "ROUND[3]",
|
||||
|
@ -1331,8 +1331,8 @@ public abstract class AbstractGraphics2D
|
||||
{
|
||||
AffineTransform t = new AffineTransform();
|
||||
t.translate(x, y);
|
||||
double scaleX = (double) image.getWidth(observer) / (double) width;
|
||||
double scaleY = (double) image.getHeight(observer) / (double) height;
|
||||
double scaleX = (double) width / (double) image.getWidth(observer);
|
||||
double scaleY = (double) height / (double) image.getHeight(observer);
|
||||
t.scale(scaleX, scaleY);
|
||||
return drawImage(image, t, observer);
|
||||
}
|
||||
@ -1473,15 +1473,11 @@ public abstract class AbstractGraphics2D
|
||||
antialias = (v == RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
}
|
||||
|
||||
double offs = 0.5;
|
||||
if (antialias)
|
||||
offs = offs / AA_SAMPLING;
|
||||
|
||||
Rectangle2D userBounds = s.getBounds2D();
|
||||
Rectangle2D deviceBounds = new Rectangle2D.Double();
|
||||
ArrayList segs = getSegments(s, transform, deviceBounds, false, offs);
|
||||
ArrayList segs = getSegments(s, transform, deviceBounds, false);
|
||||
Rectangle2D clipBounds = new Rectangle2D.Double();
|
||||
ArrayList clipSegs = getSegments(clip, transform, clipBounds, true, offs);
|
||||
ArrayList clipSegs = getSegments(clip, transform, clipBounds, true);
|
||||
segs.addAll(clipSegs);
|
||||
Rectangle2D inclClipBounds = new Rectangle2D.Double();
|
||||
Rectangle2D.union(clipBounds, deviceBounds, inclClipBounds);
|
||||
@ -1676,7 +1672,10 @@ public abstract class AbstractGraphics2D
|
||||
|
||||
// Scan all relevant lines.
|
||||
int minYInt = (int) Math.ceil(icMinY);
|
||||
for (int y = minYInt; y <= maxY; y++)
|
||||
|
||||
Rectangle devClip = getDeviceBounds();
|
||||
int scanlineMax = (int) Math.min(maxY, devClip.getMaxY());
|
||||
for (int y = minYInt; y < scanlineMax; y++)
|
||||
{
|
||||
ArrayList bucket = edgeTable[y - minYInt];
|
||||
// Update all the x intersections in the current activeEdges table
|
||||
@ -2169,8 +2168,7 @@ public abstract class AbstractGraphics2D
|
||||
* @return a list of PolyEdge that form the shape in device space
|
||||
*/
|
||||
private ArrayList getSegments(Shape s, AffineTransform t,
|
||||
Rectangle2D deviceBounds, boolean isClip,
|
||||
double offs)
|
||||
Rectangle2D deviceBounds, boolean isClip)
|
||||
{
|
||||
// Flatten the path. TODO: Determine the best flattening factor
|
||||
// wrt to speed and quality.
|
||||
@ -2213,14 +2211,14 @@ public abstract class AbstractGraphics2D
|
||||
else if (segType == PathIterator.SEG_CLOSE)
|
||||
{
|
||||
// Close the polyline.
|
||||
PolyEdge edge = new PolyEdge(segX, segY - offs,
|
||||
polyX, polyY - offs, isClip);
|
||||
PolyEdge edge = new PolyEdge(segX, segY,
|
||||
polyX, polyY, isClip);
|
||||
segs.add(edge);
|
||||
}
|
||||
else if (segType == PathIterator.SEG_LINETO)
|
||||
{
|
||||
PolyEdge edge = new PolyEdge(segX, segY - offs,
|
||||
seg[0], seg[1] - offs, isClip);
|
||||
PolyEdge edge = new PolyEdge(segX, segY,
|
||||
seg[0], seg[1], isClip);
|
||||
segs.add(edge);
|
||||
segX = seg[0];
|
||||
segY = seg[1];
|
||||
|
@ -118,6 +118,7 @@ public class PolyEdge
|
||||
public String toString()
|
||||
{
|
||||
return "Edge: " + x0 + ", " + y0 + ", " + x1 + ", " + y1 + ", slope: "
|
||||
+ slope + ", xIntersection: " + xIntersection;
|
||||
+ slope + ", xIntersection: " + xIntersection
|
||||
+ ", isClip: " + isClip;
|
||||
}
|
||||
}
|
||||
|
@ -38,14 +38,12 @@ exception statement from your version. */
|
||||
|
||||
package gnu.java.awt.peer.gtk;
|
||||
|
||||
import gnu.classpath.Configuration;
|
||||
import gnu.java.awt.ClasspathToolkit;
|
||||
|
||||
import java.awt.AlphaComposite;
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Color;
|
||||
import java.awt.Composite;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.GradientPaint;
|
||||
@ -63,11 +61,12 @@ import java.awt.TexturePaint;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.font.FontRenderContext;
|
||||
import java.awt.font.GlyphVector;
|
||||
import java.awt.font.TextLayout;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.Arc2D;
|
||||
import java.awt.geom.Area;
|
||||
import java.awt.geom.Line2D;
|
||||
import java.awt.geom.GeneralPath;
|
||||
import java.awt.geom.Line2D;
|
||||
import java.awt.geom.NoninvertibleTransformException;
|
||||
import java.awt.geom.PathIterator;
|
||||
import java.awt.geom.Point2D;
|
||||
@ -77,12 +76,11 @@ import java.awt.image.AffineTransformOp;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.BufferedImageOp;
|
||||
import java.awt.image.ColorModel;
|
||||
import java.awt.image.CropImageFilter;
|
||||
import java.awt.image.DataBuffer;
|
||||
import java.awt.image.DataBufferInt;
|
||||
import java.awt.image.DirectColorModel;
|
||||
import java.awt.image.FilteredImageSource;
|
||||
import java.awt.image.ImageObserver;
|
||||
import java.awt.image.ImageProducer;
|
||||
import java.awt.image.ImagingOpException;
|
||||
import java.awt.image.MultiPixelPackedSampleModel;
|
||||
import java.awt.image.Raster;
|
||||
@ -94,7 +92,6 @@ import java.awt.image.renderable.RenderableImage;
|
||||
import java.text.AttributedCharacterIterator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Stack;
|
||||
|
||||
/**
|
||||
* This is an abstract implementation of Graphics2D on Cairo.
|
||||
@ -241,13 +238,10 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
bg = new Color(g.bg.getRGB());
|
||||
}
|
||||
|
||||
if (g.clip == null)
|
||||
clip = null;
|
||||
else
|
||||
clip = new Rectangle(g.getClipBounds());
|
||||
clip = g.getClip();
|
||||
|
||||
if (g.transform == null)
|
||||
transform = new AffineTransform();
|
||||
transform = null;
|
||||
else
|
||||
transform = new AffineTransform(g.transform);
|
||||
|
||||
@ -257,7 +251,8 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
setBackground(bg);
|
||||
setPaint(paint);
|
||||
setStroke(stroke);
|
||||
setTransform(transform);
|
||||
setTransformImpl(transform);
|
||||
setClip(clip);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -275,8 +270,8 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
* they have additional native structures.
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
disposeNative();
|
||||
{
|
||||
disposeNative(nativePointer);
|
||||
nativePointer = 0;
|
||||
}
|
||||
|
||||
@ -304,7 +299,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
/**
|
||||
* Dispose of allocate native resouces.
|
||||
*/
|
||||
public native void disposeNative();
|
||||
public native void disposeNative(long pointer);
|
||||
|
||||
/**
|
||||
* Draw pixels as an RGBA int matrix
|
||||
@ -312,163 +307,186 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
* @param stride - stride of the array width
|
||||
* @param i2u - affine transform array
|
||||
*/
|
||||
private native void drawPixels(int[] pixels, int w, int h, int stride,
|
||||
double[] i2u);
|
||||
private native void drawPixels(long pointer, int[] pixels, int w, int h,
|
||||
int stride, double[] i2u, double alpha);
|
||||
|
||||
private native void setGradient(double x1, double y1, double x2, double y2,
|
||||
private native void setGradient(long pointer, double x1, double y1,
|
||||
double x2, double y2,
|
||||
int r1, int g1, int b1, int a1, int r2,
|
||||
int g2, int b2, int a2, boolean cyclic);
|
||||
|
||||
private native void setTexturePixels(int[] pixels, int w, int h, int stride);
|
||||
private native void setTexturePixels(long pointer, int[] pixels, int w,
|
||||
int h, int stride);
|
||||
|
||||
/**
|
||||
* Set the current transform matrix
|
||||
*/
|
||||
private native void cairoSetMatrix(double[] m);
|
||||
private native void cairoSetMatrix(long pointer, double[] m);
|
||||
|
||||
/**
|
||||
* Set the compositing operator
|
||||
*/
|
||||
private native void cairoSetOperator(int cairoOperator);
|
||||
private native void cairoSetOperator(long pointer, int cairoOperator);
|
||||
|
||||
/**
|
||||
* Sets the current color in RGBA as a 0.0-1.0 double
|
||||
*/
|
||||
private native void cairoSetRGBAColor(double red, double green,
|
||||
private native void cairoSetRGBAColor(long pointer, double red, double green,
|
||||
double blue, double alpha);
|
||||
|
||||
/**
|
||||
* Sets the current winding rule in Cairo
|
||||
*/
|
||||
private native void cairoSetFillRule(int cairoFillRule);
|
||||
private native void cairoSetFillRule(long pointer, int cairoFillRule);
|
||||
|
||||
/**
|
||||
* Set the line style, cap, join and miter limit.
|
||||
* Cap and join parameters are in the BasicStroke enumerations.
|
||||
*/
|
||||
private native void cairoSetLine(double width, int cap, int join, double miterLimit);
|
||||
private native void cairoSetLine(long pointer, double width, int cap,
|
||||
int join, double miterLimit);
|
||||
|
||||
/**
|
||||
* Set the dash style
|
||||
*/
|
||||
private native void cairoSetDash(double[] dashes, int ndash, double offset);
|
||||
private native void cairoSetDash(long pointer, double[] dashes, int ndash,
|
||||
double offset);
|
||||
|
||||
/*
|
||||
* Draws a Glyph Vector
|
||||
*/
|
||||
native void cairoDrawGlyphVector(GdkFontPeer font,
|
||||
native void cairoDrawGlyphVector(long pointer, GdkFontPeer font,
|
||||
float x, float y, int n,
|
||||
int[] codes, float[] positions);
|
||||
|
||||
|
||||
private native void cairoRelCurveTo(double dx1, double dy1, double dx2,
|
||||
double dy2, double dx3, double dy3);
|
||||
private native void cairoRelCurveTo(long pointer, double dx1, double dy1,
|
||||
double dx2, double dy2, double dx3,
|
||||
double dy3);
|
||||
|
||||
/**
|
||||
* Appends a rectangle to the current path
|
||||
*/
|
||||
private native void cairoRectangle(double x, double y, double width,
|
||||
double height);
|
||||
private native void cairoRectangle(long pointer, double x, double y,
|
||||
double width, double height);
|
||||
|
||||
/**
|
||||
* New current path
|
||||
*/
|
||||
private native void cairoNewPath();
|
||||
private native void cairoNewPath(long pointer);
|
||||
|
||||
/**
|
||||
* Close current path
|
||||
*/
|
||||
private native void cairoClosePath();
|
||||
private native void cairoClosePath(long pointer);
|
||||
|
||||
/** moveTo */
|
||||
private native void cairoMoveTo(double x, double y);
|
||||
private native void cairoMoveTo(long pointer, double x, double y);
|
||||
|
||||
/** relative moveTo */
|
||||
private native void cairoRelMoveTo(double dx, double dy);
|
||||
private native void cairoRelMoveTo(long pointer, double dx, double dy);
|
||||
|
||||
/** lineTo */
|
||||
private native void cairoLineTo(double x, double y);
|
||||
private native void cairoLineTo(long pointer, double x, double y);
|
||||
|
||||
/** relative lineTo */
|
||||
private native void cairoRelLineTo(double dx, double dy);
|
||||
private native void cairoRelLineTo(long pointer, double dx, double dy);
|
||||
|
||||
/** Cubic curve-to */
|
||||
private native void cairoCurveTo(double x1, double y1, double x2, double y2,
|
||||
private native void cairoCurveTo(long pointer, double x1, double y1,
|
||||
double x2, double y2,
|
||||
double x3, double y3);
|
||||
|
||||
/**
|
||||
* Stroke current path
|
||||
*/
|
||||
private native void cairoStroke();
|
||||
private native void cairoStroke(long pointer);
|
||||
|
||||
/**
|
||||
* Fill current path
|
||||
*/
|
||||
private native void cairoFill();
|
||||
private native void cairoFill(long pointer, double alpha);
|
||||
|
||||
/**
|
||||
* Clip current path
|
||||
*/
|
||||
private native void cairoClip();
|
||||
private native void cairoClip(long pointer);
|
||||
|
||||
/**
|
||||
* Save clip
|
||||
*/
|
||||
private native void cairoPreserveClip();
|
||||
private native void cairoPreserveClip(long pointer);
|
||||
|
||||
/**
|
||||
* Save clip
|
||||
*/
|
||||
private native void cairoResetClip();
|
||||
private native void cairoResetClip(long pointer);
|
||||
|
||||
/**
|
||||
* Set interpolation types
|
||||
*/
|
||||
private native void cairoSurfaceSetFilter(int filter);
|
||||
private native void cairoSurfaceSetFilter(long pointer, int filter);
|
||||
|
||||
///////////////////////// TRANSFORMS ///////////////////////////////////
|
||||
/**
|
||||
* Set the current transform
|
||||
*/
|
||||
public void setTransform(AffineTransform tx)
|
||||
{
|
||||
// Transform clip into target space using the old transform.
|
||||
updateClip(transform);
|
||||
|
||||
// Update the native transform.
|
||||
setTransformImpl(tx);
|
||||
|
||||
// Transform the clip back into user space using the inverse new transform.
|
||||
try
|
||||
{
|
||||
updateClip(transform.createInverse());
|
||||
}
|
||||
catch (NoninvertibleTransformException ex)
|
||||
{
|
||||
// TODO: How can we deal properly with this?
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
if (clip != null)
|
||||
setClip(clip);
|
||||
}
|
||||
|
||||
private void setTransformImpl(AffineTransform tx)
|
||||
{
|
||||
transform = tx;
|
||||
if (transform != null)
|
||||
{
|
||||
double[] m = new double[6];
|
||||
transform.getMatrix(m);
|
||||
cairoSetMatrix(m);
|
||||
double[] m = new double[6];
|
||||
transform.getMatrix(m);
|
||||
cairoSetMatrix(nativePointer, m);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void transform(AffineTransform tx)
|
||||
{
|
||||
if (transform == null)
|
||||
transform = new AffineTransform(tx);
|
||||
else
|
||||
transform.concatenate(tx);
|
||||
setTransform(transform);
|
||||
|
||||
if (clip != null)
|
||||
{
|
||||
// FIXME: this should actuall try to transform the shape
|
||||
// rather than degrade to bounds.
|
||||
Rectangle2D r = clip.getBounds2D();
|
||||
double[] coords = new double[]
|
||||
{
|
||||
r.getX(), r.getY(), r.getX() + r.getWidth(),
|
||||
r.getY() + r.getHeight()
|
||||
};
|
||||
try
|
||||
{
|
||||
tx.createInverse().transform(coords, 0, coords, 0, 2);
|
||||
r.setRect(coords[0], coords[1], coords[2] - coords[0],
|
||||
coords[3] - coords[1]);
|
||||
clip = r;
|
||||
}
|
||||
catch (java.awt.geom.NoninvertibleTransformException e)
|
||||
{
|
||||
}
|
||||
try
|
||||
{
|
||||
AffineTransform clipTransform = tx.createInverse();
|
||||
updateClip(clipTransform);
|
||||
}
|
||||
catch (NoninvertibleTransformException ex)
|
||||
{
|
||||
// TODO: How can we deal properly with this?
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
setTransformImpl(transform);
|
||||
}
|
||||
|
||||
public void rotate(double theta)
|
||||
@ -501,18 +519,21 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
{
|
||||
// FIXME: this should actuall try to transform the shape
|
||||
// rather than degrade to bounds.
|
||||
Rectangle2D r;
|
||||
|
||||
if (clip instanceof Rectangle2D)
|
||||
r = (Rectangle2D) clip;
|
||||
{
|
||||
Rectangle2D r = (Rectangle2D) clip;
|
||||
r.setRect(r.getX() - tx, r.getY() - ty, r.getWidth(),
|
||||
r.getHeight());
|
||||
}
|
||||
else
|
||||
r = clip.getBounds2D();
|
||||
|
||||
r.setRect(r.getX() - tx, r.getY() - ty, r.getWidth(), r.getHeight());
|
||||
clip = r;
|
||||
{
|
||||
AffineTransform clipTransform =
|
||||
AffineTransform.getTranslateInstance(-tx, -ty);
|
||||
updateClip(clipTransform);
|
||||
}
|
||||
}
|
||||
|
||||
setTransform(transform);
|
||||
setTransformImpl(transform);
|
||||
}
|
||||
|
||||
public void translate(int x, int y)
|
||||
@ -531,19 +552,27 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
{
|
||||
// Do not touch clip when s == null.
|
||||
if (s == null)
|
||||
return;
|
||||
{
|
||||
// The spec says this should clear the clip. The reference
|
||||
// implementation throws a NullPointerException instead. I think,
|
||||
// in this case we should conform to the specs, as it shouldn't
|
||||
// affect compatibility.
|
||||
setClip(null);
|
||||
return;
|
||||
}
|
||||
|
||||
// If the current clip is still null, initialize it.
|
||||
if (clip == null)
|
||||
clip = originalClip;
|
||||
|
||||
// This is so common, let's optimize this.
|
||||
else if (clip instanceof Rectangle2D && s instanceof Rectangle2D)
|
||||
{
|
||||
clip = getRealBounds();
|
||||
}
|
||||
|
||||
// This is so common, let's optimize this.
|
||||
if (clip instanceof Rectangle2D && s instanceof Rectangle2D)
|
||||
{
|
||||
Rectangle2D clipRect = (Rectangle2D) clip;
|
||||
Rectangle2D r = (Rectangle2D) s;
|
||||
Rectangle2D.intersect(clipRect, r, clipRect);
|
||||
// Call setClip so that subclasses get notified.
|
||||
setClip(clipRect);
|
||||
}
|
||||
else
|
||||
@ -603,7 +632,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
AffineTransformOp op = new AffineTransformOp(at, getRenderingHints());
|
||||
BufferedImage texture = op.filter(img, null);
|
||||
int[] pixels = texture.getRGB(0, 0, width, height, null, 0, width);
|
||||
setTexturePixels(pixels, width, height, width);
|
||||
setTexturePixels(nativePointer, pixels, width, height, width);
|
||||
}
|
||||
else if (paint instanceof GradientPaint)
|
||||
{
|
||||
@ -612,9 +641,10 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
Point2D p2 = gp.getPoint2();
|
||||
Color c1 = gp.getColor1();
|
||||
Color c2 = gp.getColor2();
|
||||
setGradient(p1.getX(), p1.getY(), p2.getX(), p2.getY(), c1.getRed(),
|
||||
c1.getGreen(), c1.getBlue(), c1.getAlpha(), c2.getRed(),
|
||||
c2.getGreen(), c2.getBlue(), c2.getAlpha(), gp.isCyclic());
|
||||
setGradient(nativePointer, p1.getX(), p1.getY(), p2.getX(), p2.getY(),
|
||||
c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha(),
|
||||
c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha(),
|
||||
gp.isCyclic());
|
||||
}
|
||||
else
|
||||
throw new java.lang.UnsupportedOperationException();
|
||||
@ -631,7 +661,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
if (stroke instanceof BasicStroke)
|
||||
{
|
||||
BasicStroke bs = (BasicStroke) stroke;
|
||||
cairoSetLine(bs.getLineWidth(), bs.getEndCap(),
|
||||
cairoSetLine(nativePointer, bs.getLineWidth(), bs.getEndCap(),
|
||||
bs.getLineJoin(), bs.getMiterLimit());
|
||||
|
||||
float[] dashes = bs.getDashArray();
|
||||
@ -640,11 +670,11 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
double[] double_dashes = new double[dashes.length];
|
||||
for (int i = 0; i < dashes.length; i++)
|
||||
double_dashes[i] = dashes[i];
|
||||
cairoSetDash(double_dashes, double_dashes.length,
|
||||
cairoSetDash(nativePointer, double_dashes, double_dashes.length,
|
||||
(double) bs.getDashPhase());
|
||||
}
|
||||
else
|
||||
cairoSetDash(new double[0], 0, 0.0);
|
||||
cairoSetDash(nativePointer, new double[0], 0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@ -675,8 +705,9 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
{
|
||||
if (fg == null)
|
||||
fg = Color.BLACK;
|
||||
cairoSetRGBAColor(fg.getRed() / 255.0, fg.getGreen() / 255.0,
|
||||
fg.getBlue() / 255.0, fg.getAlpha() / 255.0);
|
||||
cairoSetRGBAColor(nativePointer, fg.getRed() / 255.0,
|
||||
fg.getGreen() / 255.0,fg.getBlue() / 255.0,
|
||||
fg.getAlpha() / 255.0);
|
||||
}
|
||||
|
||||
public Color getColor()
|
||||
@ -686,15 +717,30 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|
||||
public void clipRect(int x, int y, int width, int height)
|
||||
{
|
||||
clip(new Rectangle(x, y, width, height));
|
||||
if (clip == null)
|
||||
setClip(new Rectangle(x, y, width, height));
|
||||
else if (clip instanceof Rectangle)
|
||||
{
|
||||
computeIntersection(x, y, width, height, (Rectangle) clip);
|
||||
setClip(clip);
|
||||
}
|
||||
else
|
||||
clip(new Rectangle(x, y, width, height));
|
||||
}
|
||||
|
||||
public Shape getClip()
|
||||
{
|
||||
if (clip == null)
|
||||
return null;
|
||||
else
|
||||
else if (clip instanceof Rectangle2D)
|
||||
return clip.getBounds2D(); //getClipInDevSpace();
|
||||
else
|
||||
{
|
||||
GeneralPath p = new GeneralPath();
|
||||
PathIterator pi = clip.getPathIterator(new AffineTransform());
|
||||
p.append(pi, false);
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
||||
public Rectangle getClipBounds()
|
||||
@ -734,7 +780,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
}
|
||||
|
||||
public void setClip(Shape s)
|
||||
{
|
||||
{
|
||||
// The first time the clip is set, save it as the original clip
|
||||
// to reset to on s == null. We can rely on this being non-null
|
||||
// because the constructor in subclasses is expected to set the
|
||||
@ -745,23 +791,23 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
firstClip = false;
|
||||
}
|
||||
|
||||
if (s == null)
|
||||
clip = originalClip;
|
||||
else
|
||||
clip = s;
|
||||
clip = s;
|
||||
cairoResetClip(nativePointer);
|
||||
|
||||
cairoResetClip();
|
||||
|
||||
cairoNewPath();
|
||||
if (clip instanceof Rectangle2D)
|
||||
if (clip != null)
|
||||
{
|
||||
Rectangle2D r = (Rectangle2D) clip;
|
||||
cairoRectangle(r.getX(), r.getY(), r.getWidth(), r.getHeight());
|
||||
cairoNewPath(nativePointer);
|
||||
if (clip instanceof Rectangle2D)
|
||||
{
|
||||
Rectangle2D r = (Rectangle2D) clip;
|
||||
cairoRectangle(nativePointer, r.getX(), r.getY(), r.getWidth(),
|
||||
r.getHeight());
|
||||
}
|
||||
else
|
||||
walkPath(clip.getPathIterator(null), false);
|
||||
|
||||
cairoClip(nativePointer);
|
||||
}
|
||||
else
|
||||
walkPath(clip.getPathIterator(null), false);
|
||||
|
||||
cairoClip();
|
||||
}
|
||||
|
||||
public void setBackground(Color c)
|
||||
@ -797,10 +843,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
if (comp instanceof AlphaComposite)
|
||||
{
|
||||
AlphaComposite a = (AlphaComposite) comp;
|
||||
cairoSetOperator(a.getRule());
|
||||
Color c = getColor();
|
||||
setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(),
|
||||
(int) (a.getAlpha() * ((float) c.getAlpha()))));
|
||||
cairoSetOperator(nativePointer, a.getRule());
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -813,38 +856,55 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
cairoNewPath();
|
||||
cairoNewPath(nativePointer);
|
||||
|
||||
if (s instanceof Rectangle2D)
|
||||
{
|
||||
Rectangle2D r = (Rectangle2D) s;
|
||||
cairoRectangle(shifted(r.getX(), shiftDrawCalls),
|
||||
cairoRectangle(nativePointer, shifted(r.getX(), shiftDrawCalls),
|
||||
shifted(r.getY(), shiftDrawCalls), r.getWidth(),
|
||||
r.getHeight());
|
||||
}
|
||||
else
|
||||
walkPath(s.getPathIterator(null), shiftDrawCalls);
|
||||
cairoStroke();
|
||||
cairoStroke(nativePointer);
|
||||
}
|
||||
|
||||
public void fill(Shape s)
|
||||
{
|
||||
cairoNewPath();
|
||||
cairoNewPath(nativePointer);
|
||||
if (s instanceof Rectangle2D)
|
||||
{
|
||||
Rectangle2D r = (Rectangle2D) s;
|
||||
cairoRectangle(r.getX(), r.getY(), r.getWidth(), r.getHeight());
|
||||
cairoRectangle(nativePointer, r.getX(), r.getY(), r.getWidth(),
|
||||
r.getHeight());
|
||||
}
|
||||
else
|
||||
walkPath(s.getPathIterator(null), false);
|
||||
|
||||
cairoFill();
|
||||
double alpha = 1.0;
|
||||
if (comp instanceof AlphaComposite)
|
||||
alpha = ((AlphaComposite) comp).getAlpha();
|
||||
cairoFill(nativePointer, alpha);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -856,8 +916,8 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
public void clearRect(int x, int y, int width, int height)
|
||||
{
|
||||
if (bg != null)
|
||||
cairoSetRGBAColor(bg.getRed() / 255.0, bg.getGreen() / 255.0,
|
||||
bg.getBlue() / 255.0, 1.0);
|
||||
cairoSetRGBAColor(nativePointer, bg.getRed() / 255.0,
|
||||
bg.getGreen() / 255.0, bg.getBlue() / 255.0, 1.0);
|
||||
fillRect(x, y, width, height);
|
||||
updateColor();
|
||||
}
|
||||
@ -1005,19 +1065,19 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|| hintKey.equals(RenderingHints.KEY_ALPHA_INTERPOLATION))
|
||||
{
|
||||
if (hintValue.equals(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR))
|
||||
cairoSurfaceSetFilter(0);
|
||||
cairoSurfaceSetFilter(nativePointer, 0);
|
||||
|
||||
else if (hintValue.equals(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
|
||||
cairoSurfaceSetFilter(1);
|
||||
cairoSurfaceSetFilter(nativePointer, 1);
|
||||
|
||||
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED))
|
||||
cairoSurfaceSetFilter(2);
|
||||
cairoSurfaceSetFilter(nativePointer, 2);
|
||||
|
||||
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY))
|
||||
cairoSurfaceSetFilter(3);
|
||||
cairoSurfaceSetFilter(nativePointer, 3);
|
||||
|
||||
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT))
|
||||
cairoSurfaceSetFilter(4);
|
||||
cairoSurfaceSetFilter(nativePointer, 4);
|
||||
}
|
||||
|
||||
shiftDrawCalls = hints.containsValue(RenderingHints.VALUE_STROKE_NORMALIZE)
|
||||
@ -1037,22 +1097,22 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
if (hints.containsKey(RenderingHints.KEY_INTERPOLATION))
|
||||
{
|
||||
if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR))
|
||||
cairoSurfaceSetFilter(0);
|
||||
cairoSurfaceSetFilter(nativePointer, 0);
|
||||
|
||||
else if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
|
||||
cairoSurfaceSetFilter(1);
|
||||
cairoSurfaceSetFilter(nativePointer, 1);
|
||||
}
|
||||
|
||||
if (hints.containsKey(RenderingHints.KEY_ALPHA_INTERPOLATION))
|
||||
{
|
||||
if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED))
|
||||
cairoSurfaceSetFilter(2);
|
||||
cairoSurfaceSetFilter(nativePointer, 2);
|
||||
|
||||
else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY))
|
||||
cairoSurfaceSetFilter(3);
|
||||
cairoSurfaceSetFilter(nativePointer, 3);
|
||||
|
||||
else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT))
|
||||
cairoSurfaceSetFilter(4);
|
||||
cairoSurfaceSetFilter(nativePointer, 4);
|
||||
}
|
||||
|
||||
shiftDrawCalls = hints.containsValue(RenderingHints.VALUE_STROKE_NORMALIZE)
|
||||
@ -1084,7 +1144,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
// other way around. Therefore to get the "user -> pixel" transform
|
||||
// that cairo wants from "image -> user" transform that we currently
|
||||
// have, we will need to invert the transformation matrix.
|
||||
AffineTransform invertedXform = new AffineTransform();
|
||||
AffineTransform invertedXform;
|
||||
|
||||
try
|
||||
{
|
||||
@ -1096,11 +1156,17 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
+ xform.toString());
|
||||
}
|
||||
|
||||
// Unrecognized image - convert to a BufferedImage and come back.
|
||||
// Unrecognized image - convert to a BufferedImage
|
||||
// Note - this can get us in trouble when the gdk lock is re-acquired.
|
||||
// for example by VolatileImage. See ComponentGraphics for how we work
|
||||
// around this.
|
||||
if( !(img instanceof BufferedImage) )
|
||||
return this.drawImage(Toolkit.getDefaultToolkit().
|
||||
createImage(img.getSource()),
|
||||
xform, bgcolor, obs);
|
||||
{
|
||||
ImageProducer source = img.getSource();
|
||||
if (source == null)
|
||||
return false;
|
||||
img = Toolkit.getDefaultToolkit().createImage(source);
|
||||
}
|
||||
|
||||
BufferedImage b = (BufferedImage) img;
|
||||
DataBuffer db;
|
||||
@ -1117,9 +1183,13 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|
||||
invertedXform.getMatrix(i2u);
|
||||
|
||||
double alpha = 1.0;
|
||||
if (comp instanceof AlphaComposite)
|
||||
alpha = ((AlphaComposite) comp).getAlpha();
|
||||
|
||||
if(db instanceof CairoSurface)
|
||||
{
|
||||
((CairoSurface)db).drawSurface(this, i2u);
|
||||
((CairoSurface)db).drawSurface(nativePointer, i2u, alpha);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1155,7 +1225,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
null, 0, width);
|
||||
}
|
||||
|
||||
drawPixels(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();
|
||||
@ -1271,8 +1341,8 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
{
|
||||
if (str == null || str.length() == 0)
|
||||
return;
|
||||
|
||||
drawGlyphVector(getFont().createGlyphVector(null, str), x, y);
|
||||
(new TextLayout( str, getFont(), getFontRenderContext() )).
|
||||
draw(this, x, y);
|
||||
}
|
||||
|
||||
public void drawString(String str, int x, int y)
|
||||
@ -1287,12 +1357,25 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|
||||
public void drawGlyphVector(GlyphVector gv, float x, float y)
|
||||
{
|
||||
int n = gv.getNumGlyphs ();
|
||||
int[] codes = gv.getGlyphCodes (0, n, null);
|
||||
float[] positions = gv.getGlyphPositions (0, n, null);
|
||||
|
||||
setFont (gv.getFont ());
|
||||
cairoDrawGlyphVector( (GdkFontPeer)getFont().getPeer(), x, y, n, codes, positions);
|
||||
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);
|
||||
float[] positions = gv.getGlyphPositions (0, n, null);
|
||||
|
||||
setFont (gv.getFont ());
|
||||
cairoDrawGlyphVector(nativePointer, (GdkFontPeer)getFont().getPeer(),
|
||||
x, y, n, codes, positions);
|
||||
}
|
||||
else
|
||||
{
|
||||
translate(x, y);
|
||||
fill(gv.getOutline());
|
||||
translate(-x, -y);
|
||||
}
|
||||
}
|
||||
|
||||
public void drawString(AttributedCharacterIterator ci, float x, float y)
|
||||
@ -1445,7 +1528,11 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
for (int i = 0; i < pixels.length; i++)
|
||||
pixels[i] |= 0xFF000000;
|
||||
|
||||
drawPixels(pixels, r.getWidth(), r.getHeight(), r.getWidth(), i2u);
|
||||
double alpha = 1.0;
|
||||
if (comp instanceof AlphaComposite)
|
||||
alpha = ((AlphaComposite) comp).getAlpha();
|
||||
drawPixels(nativePointer, pixels, r.getWidth(), r.getHeight(),
|
||||
r.getWidth(), i2u, alpha);
|
||||
|
||||
// Cairo seems to lose the current color which must be restored.
|
||||
updateColor();
|
||||
@ -1473,7 +1560,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
double y = 0;
|
||||
double[] coords = new double[6];
|
||||
|
||||
cairoSetFillRule(p.getWindingRule());
|
||||
cairoSetFillRule(nativePointer, p.getWindingRule());
|
||||
for (; ! p.isDone(); p.next())
|
||||
{
|
||||
int seg = p.currentSegment(coords);
|
||||
@ -1482,12 +1569,12 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
case PathIterator.SEG_MOVETO:
|
||||
x = shifted(coords[0], doShift);
|
||||
y = shifted(coords[1], doShift);
|
||||
cairoMoveTo(x, y);
|
||||
cairoMoveTo(nativePointer, x, y);
|
||||
break;
|
||||
case PathIterator.SEG_LINETO:
|
||||
x = shifted(coords[0], doShift);
|
||||
y = shifted(coords[1], doShift);
|
||||
cairoLineTo(x, y);
|
||||
cairoLineTo(nativePointer, x, y);
|
||||
break;
|
||||
case PathIterator.SEG_QUADTO:
|
||||
// splitting a quadratic bezier into a cubic:
|
||||
@ -1500,18 +1587,18 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|
||||
x = shifted(coords[2], doShift);
|
||||
y = shifted(coords[3], doShift);
|
||||
cairoCurveTo(x1, y1, x2, y2, x, y);
|
||||
cairoCurveTo(nativePointer, x1, y1, x2, y2, x, y);
|
||||
break;
|
||||
case PathIterator.SEG_CUBICTO:
|
||||
x = shifted(coords[4], doShift);
|
||||
y = shifted(coords[5], doShift);
|
||||
cairoCurveTo(shifted(coords[0], doShift),
|
||||
cairoCurveTo(nativePointer, shifted(coords[0], doShift),
|
||||
shifted(coords[1], doShift),
|
||||
shifted(coords[2], doShift),
|
||||
shifted(coords[3], doShift), x, y);
|
||||
break;
|
||||
case PathIterator.SEG_CLOSE:
|
||||
cairoClosePath();
|
||||
cairoClosePath(nativePointer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1583,4 +1670,47 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||
|
||||
return db.getData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to transform the clip. This is called by the various
|
||||
* transformation-manipulation methods to update the clip (which is in
|
||||
* userspace) accordingly.
|
||||
*
|
||||
* The transform usually is the inverse transform that was applied to the
|
||||
* graphics object.
|
||||
*
|
||||
* @param t the transform to apply to the clip
|
||||
*/
|
||||
private void updateClip(AffineTransform t)
|
||||
{
|
||||
if (clip == null)
|
||||
return;
|
||||
|
||||
if (! (clip instanceof GeneralPath))
|
||||
clip = new GeneralPath(clip);
|
||||
|
||||
GeneralPath p = (GeneralPath) clip;
|
||||
p.transform(t);
|
||||
}
|
||||
|
||||
private static Rectangle computeIntersection(int x, int y, int w, int h,
|
||||
Rectangle rect)
|
||||
{
|
||||
int x2 = (int) rect.x;
|
||||
int y2 = (int) rect.y;
|
||||
int w2 = (int) rect.width;
|
||||
int h2 = (int) rect.height;
|
||||
|
||||
int dx = (x > x2) ? x : x2;
|
||||
int dy = (y > y2) ? y : y2;
|
||||
int dw = (x + w < x2 + w2) ? (x + w - dx) : (x2 + w2 - dx);
|
||||
int dh = (y + h < y2 + h2) ? (y + h - dy) : (y2 + h2 - dy);
|
||||
|
||||
if (dw >= 0 && dh >= 0)
|
||||
rect.setBounds(dx, dy, dw, dh);
|
||||
else
|
||||
rect.setBounds(0, 0, 0, 0);
|
||||
|
||||
return rect;
|
||||
}
|
||||
}
|
||||
|
@ -88,49 +88,65 @@ public class CairoSurface extends DataBuffer
|
||||
/**
|
||||
* Allocates and clears the buffer and creates the cairo surface.
|
||||
* @param width, height - the image size
|
||||
* @param stride - the buffer row stride.
|
||||
* @param stride - the buffer row stride. (in ints)
|
||||
*/
|
||||
private native void create(int width, int height, int stride);
|
||||
|
||||
/**
|
||||
* Destroys the cairo surface and frees the buffer.
|
||||
*/
|
||||
private native void destroy();
|
||||
private native void destroy(long surfacePointer, long bufferPointer);
|
||||
|
||||
/**
|
||||
* Gets buffer elements
|
||||
*/
|
||||
private native int nativeGetElem(int i);
|
||||
private native int nativeGetElem(long bufferPointer, int i);
|
||||
|
||||
/**
|
||||
* Sets buffer elements.
|
||||
*/
|
||||
private native void nativeSetElem(int i, int val);
|
||||
private native void nativeSetElem(long bufferPointer, int i, int val);
|
||||
|
||||
/**
|
||||
* Draws this image to a given CairoGraphics context,
|
||||
* with an affine transform given by i2u.
|
||||
*/
|
||||
public native void drawSurface(CairoGraphics2D context, double[] i2u);
|
||||
public native void nativeDrawSurface(long surfacePointer, long contextPointer,
|
||||
double[] i2u, double alpha);
|
||||
|
||||
public void drawSurface(long contextPointer, double[] i2u, double alpha)
|
||||
{
|
||||
nativeDrawSurface(surfacePointer, contextPointer, i2u, alpha);
|
||||
}
|
||||
|
||||
/**
|
||||
* getPixels -return the pixels as a java array.
|
||||
*/
|
||||
native int[] getPixels(int size);
|
||||
native int[] nativeGetPixels(long bufferPointer, int size);
|
||||
|
||||
public int[] getPixels(int size)
|
||||
{
|
||||
return nativeGetPixels(bufferPointer, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* getPixels -return the pixels as a java array.
|
||||
*/
|
||||
native void setPixels(int[] pixels);
|
||||
native void nativeSetPixels(long bufferPointer, int[] pixels);
|
||||
|
||||
native long getFlippedBuffer(int size);
|
||||
public void setPixels(int[] pixels)
|
||||
{
|
||||
nativeSetPixels(bufferPointer, pixels);
|
||||
}
|
||||
|
||||
native long getFlippedBuffer(long bufferPointer, int size);
|
||||
|
||||
/**
|
||||
* Create a cairo_surface_t with specified width and height.
|
||||
* The format will be ARGB32 with premultiplied alpha and native bit
|
||||
* and word ordering.
|
||||
*/
|
||||
CairoSurface(int width, int height)
|
||||
public CairoSurface(int width, int height)
|
||||
{
|
||||
super(DataBuffer.TYPE_INT, width * height);
|
||||
|
||||
@ -140,7 +156,7 @@ public class CairoSurface extends DataBuffer
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
|
||||
create(width, height, width * 4);
|
||||
create(width, height, width);
|
||||
|
||||
if(surfacePointer == 0 || bufferPointer == 0)
|
||||
throw new Error("Could not allocate bitmap.");
|
||||
@ -160,7 +176,7 @@ public class CairoSurface extends DataBuffer
|
||||
width = image.width;
|
||||
height = image.height;
|
||||
|
||||
create(width, height, width * 4);
|
||||
create(width, height, width);
|
||||
|
||||
if(surfacePointer == 0 || bufferPointer == 0)
|
||||
throw new Error("Could not allocate bitmap.");
|
||||
@ -195,7 +211,7 @@ public class CairoSurface extends DataBuffer
|
||||
public void dispose()
|
||||
{
|
||||
if(surfacePointer != 0)
|
||||
destroy();
|
||||
destroy(surfacePointer, bufferPointer);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -211,7 +227,8 @@ public class CairoSurface extends DataBuffer
|
||||
*/
|
||||
public GtkImage getGtkImage()
|
||||
{
|
||||
return new GtkImage( width, height, getFlippedBuffer( width * height ));
|
||||
return new GtkImage( width, height,
|
||||
getFlippedBuffer(bufferPointer, width * height ));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -251,7 +268,7 @@ public class CairoSurface extends DataBuffer
|
||||
{
|
||||
if(bank != 0 || i < 0 || i >= width*height)
|
||||
throw new IndexOutOfBoundsException(i+" size: "+width*height);
|
||||
return nativeGetElem(i);
|
||||
return nativeGetElem(bufferPointer, i);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -261,7 +278,7 @@ public class CairoSurface extends DataBuffer
|
||||
{
|
||||
if(bank != 0 || i < 0 || i >= width*height)
|
||||
throw new IndexOutOfBoundsException(i+" size: "+width*height);
|
||||
nativeSetElem(i, val);
|
||||
nativeSetElem(bufferPointer, i, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -277,12 +294,22 @@ public class CairoSurface extends DataBuffer
|
||||
* Creates a cairo_t drawing context, returns the pointer as a long.
|
||||
* Used by CairoSurfaceGraphics.
|
||||
*/
|
||||
native long newCairoContext();
|
||||
native long nativeNewCairoContext(long surfacePointer);
|
||||
|
||||
public long newCairoContext()
|
||||
{
|
||||
return nativeNewCairoContext(surfacePointer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy an area of the surface. Expects parameters must be within bounds.
|
||||
* Count on a segfault otherwise.
|
||||
*/
|
||||
native void copyAreaNative(int x, int y, int width, int height,
|
||||
int dx, int dy, int stride);
|
||||
native void copyAreaNative2(long bufferPointer, int x, int y, int width,
|
||||
int height, int dx, int dy, int stride);
|
||||
public void copyAreaNative(int x, int y, int width,
|
||||
int height, int dx, int dy, int stride)
|
||||
{
|
||||
copyAreaNative2(bufferPointer, x, y, width, height, dx, dy, stride);
|
||||
}
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ package gnu.java.awt.peer.gtk;
|
||||
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Color;
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.awt.Image;
|
||||
import java.awt.Point;
|
||||
import java.awt.Graphics2D;
|
||||
@ -63,7 +64,6 @@ public class CairoSurfaceGraphics extends CairoGraphics2D
|
||||
this.surface = surface;
|
||||
cairo_t = surface.newCairoContext();
|
||||
setup( cairo_t );
|
||||
setClip(0, 0, surface.width, surface.height);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -75,7 +75,6 @@ public class CairoSurfaceGraphics extends CairoGraphics2D
|
||||
surface = copyFrom.surface;
|
||||
cairo_t = surface.newCairoContext();
|
||||
copy( copyFrom, cairo_t );
|
||||
setClip(0, 0, surface.width, surface.height);
|
||||
}
|
||||
|
||||
public Graphics create()
|
||||
@ -85,7 +84,7 @@ public class CairoSurfaceGraphics extends CairoGraphics2D
|
||||
|
||||
public GraphicsConfiguration getDeviceConfiguration()
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
|
||||
}
|
||||
|
||||
protected Rectangle2D getRealBounds()
|
||||
|
@ -46,6 +46,7 @@ import java.awt.GraphicsConfiguration;
|
||||
import java.awt.Image;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Shape;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.Point;
|
||||
import java.awt.font.FontRenderContext;
|
||||
import java.awt.font.GlyphVector;
|
||||
@ -53,6 +54,7 @@ import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.image.ImageObserver;
|
||||
import java.awt.image.ImageProducer;
|
||||
import java.awt.image.ImagingOpException;
|
||||
import java.awt.image.RenderedImage;
|
||||
|
||||
@ -67,6 +69,35 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||
private GtkComponentPeer component;
|
||||
protected long cairo_t;
|
||||
|
||||
private static ThreadLocal hasLock = new ThreadLocal();
|
||||
private static Integer ONE = Integer.valueOf(1);
|
||||
|
||||
private void lock()
|
||||
{
|
||||
Integer i = (Integer) hasLock.get();
|
||||
if (i == null)
|
||||
{
|
||||
start_gdk_drawing();
|
||||
hasLock.set(ONE);
|
||||
}
|
||||
else
|
||||
hasLock.set(Integer.valueOf(i.intValue() + 1));
|
||||
}
|
||||
|
||||
private void unlock()
|
||||
{
|
||||
Integer i = (Integer) hasLock.get();
|
||||
if (i == null)
|
||||
throw new IllegalStateException();
|
||||
if (i == ONE)
|
||||
{
|
||||
hasLock.set(null);
|
||||
end_gdk_drawing();
|
||||
}
|
||||
else
|
||||
hasLock.set(Integer.valueOf(i.intValue() - 1));
|
||||
}
|
||||
|
||||
ComponentGraphics()
|
||||
{
|
||||
}
|
||||
@ -104,8 +135,8 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||
*/
|
||||
public void dispose()
|
||||
{
|
||||
disposeSurface(nativePointer);
|
||||
super.dispose();
|
||||
disposeSurface(nativePointer);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -138,7 +169,7 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||
int width, int height, int dx, int dy);
|
||||
|
||||
private native void drawVolatile(GtkComponentPeer component,
|
||||
Image vimg, int x, int y,
|
||||
long vimg, int x, int y,
|
||||
int width, int height);
|
||||
|
||||
/**
|
||||
@ -180,63 +211,152 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||
*/
|
||||
public void draw(Shape s)
|
||||
{
|
||||
start_gdk_drawing();
|
||||
super.draw(s);
|
||||
end_gdk_drawing();
|
||||
lock();
|
||||
try
|
||||
{
|
||||
super.draw(s);
|
||||
}
|
||||
finally
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public void fill(Shape s)
|
||||
{
|
||||
start_gdk_drawing();
|
||||
super.fill(s);
|
||||
end_gdk_drawing();
|
||||
lock();
|
||||
try
|
||||
{
|
||||
super.fill(s);
|
||||
}
|
||||
finally
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public void drawRenderedImage(RenderedImage image, AffineTransform xform)
|
||||
{
|
||||
start_gdk_drawing();
|
||||
super.drawRenderedImage(image, xform);
|
||||
end_gdk_drawing();
|
||||
lock();
|
||||
try
|
||||
{
|
||||
super.drawRenderedImage(image, xform);
|
||||
}
|
||||
finally
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean drawImage(Image img, AffineTransform xform,
|
||||
Color bgcolor, ImageObserver obs)
|
||||
{
|
||||
start_gdk_drawing();
|
||||
boolean rv = super.drawImage(img, xform, bgcolor, obs);
|
||||
end_gdk_drawing();
|
||||
boolean rv;
|
||||
lock();
|
||||
try
|
||||
{
|
||||
rv = super.drawImage(img, xform, bgcolor, obs);
|
||||
}
|
||||
finally
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
public void drawGlyphVector(GlyphVector gv, float x, float y)
|
||||
{
|
||||
start_gdk_drawing();
|
||||
super.drawGlyphVector(gv, x, y);
|
||||
end_gdk_drawing();
|
||||
lock();
|
||||
try
|
||||
{
|
||||
super.drawGlyphVector(gv, x, y);
|
||||
}
|
||||
finally
|
||||
{
|
||||
unlock();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean drawImage(Image img, int x, int y, ImageObserver observer)
|
||||
{
|
||||
if( img instanceof GtkVolatileImage )
|
||||
// If it is a GtkVolatileImage with an "easy" transform then
|
||||
// draw directly. Always pass a BufferedImage to super to avoid
|
||||
// deadlock (see Note in CairoGraphics.drawImage()).
|
||||
if (img instanceof GtkVolatileImage)
|
||||
{
|
||||
drawVolatile( component, img, x, y - 20,
|
||||
((GtkVolatileImage)img).width,
|
||||
((GtkVolatileImage)img).height );
|
||||
return true;
|
||||
}
|
||||
return super.drawImage( img, x, y, observer );
|
||||
GtkVolatileImage vimg = (GtkVolatileImage) img;
|
||||
int type = transform.getType();
|
||||
if (type == AffineTransform.TYPE_IDENTITY)
|
||||
{
|
||||
drawVolatile(component, vimg.nativePointer,
|
||||
x, y, vimg.width, vimg.height);
|
||||
return true;
|
||||
}
|
||||
else if (type == AffineTransform.TYPE_TRANSLATION)
|
||||
{
|
||||
x += transform.getTranslateX();
|
||||
y += transform.getTranslateY();
|
||||
drawVolatile(component, vimg.nativePointer,
|
||||
x, y, vimg.width, vimg.height);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return super.drawImage(vimg.getSnapshot(), x, y, observer);
|
||||
}
|
||||
|
||||
BufferedImage bimg;
|
||||
if (img instanceof BufferedImage)
|
||||
bimg = (BufferedImage) img;
|
||||
else
|
||||
{
|
||||
ImageProducer source = img.getSource();
|
||||
if (source == null)
|
||||
return false;
|
||||
bimg = (BufferedImage) Toolkit.getDefaultToolkit().createImage(source);
|
||||
}
|
||||
return super.drawImage(bimg, x, y, observer);
|
||||
}
|
||||
|
||||
public boolean drawImage(Image img, int x, int y, int width, int height,
|
||||
ImageObserver observer)
|
||||
{
|
||||
if( img instanceof GtkVolatileImage )
|
||||
// If it is a GtkVolatileImage with an "easy" transform then
|
||||
// draw directly. Always pass a BufferedImage to super to avoid
|
||||
// deadlock (see Note in CairoGraphics.drawImage()).
|
||||
if (img instanceof GtkVolatileImage)
|
||||
{
|
||||
drawVolatile( component, img, x, y - 20,
|
||||
width, height );
|
||||
return true;
|
||||
}
|
||||
return super.drawImage( img, x, y, width, height, observer );
|
||||
GtkVolatileImage vimg = (GtkVolatileImage) img;
|
||||
int type = transform.getType();
|
||||
if (type == AffineTransform.TYPE_IDENTITY)
|
||||
{
|
||||
drawVolatile(component, vimg.nativePointer,
|
||||
x, y, width, height);
|
||||
return true;
|
||||
}
|
||||
else if (type == AffineTransform.TYPE_TRANSLATION)
|
||||
{
|
||||
x += transform.getTranslateX();
|
||||
y += transform.getTranslateY();
|
||||
drawVolatile(component, vimg.nativePointer,
|
||||
x, y, width, height);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return super.drawImage(vimg.getSnapshot(), x, y,
|
||||
width, height, observer);
|
||||
}
|
||||
|
||||
BufferedImage bimg;
|
||||
if (img instanceof BufferedImage)
|
||||
bimg = (BufferedImage) img;
|
||||
else
|
||||
{
|
||||
ImageProducer source = img.getSource();
|
||||
if (source == null)
|
||||
return false;
|
||||
bimg = (BufferedImage) Toolkit.getDefaultToolkit().createImage(source);
|
||||
}
|
||||
return super.drawImage(bimg, x, y, width, height, observer);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -56,6 +56,9 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
private Font font;
|
||||
private GdkFontPeer peer; // ATTN: Accessed from native code.
|
||||
|
||||
private Rectangle2D logicalBounds;
|
||||
|
||||
private float[] glyphPositions;
|
||||
/**
|
||||
* The string represented by this GlyphVector.
|
||||
*/
|
||||
@ -81,10 +84,21 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
*/
|
||||
private AffineTransform[] glyphTransforms;
|
||||
|
||||
private GlyphMetrics[] metricsCache;
|
||||
|
||||
/**
|
||||
* Create a glyphvector from a given (Freetype) font and a String.
|
||||
*/
|
||||
public FreetypeGlyphVector(Font f, String s, FontRenderContext frc)
|
||||
{
|
||||
this(f, s, frc, Font.LAYOUT_LEFT_TO_RIGHT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a glyphvector from a given (Freetype) font and a String.
|
||||
*/
|
||||
public FreetypeGlyphVector(Font f, String s, FontRenderContext frc,
|
||||
int flags)
|
||||
{
|
||||
this.s = s;
|
||||
this.font = f;
|
||||
@ -94,6 +108,14 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
peer = (GdkFontPeer)font.getPeer();
|
||||
|
||||
getGlyphs();
|
||||
if( flags == Font.LAYOUT_RIGHT_TO_LEFT )
|
||||
{
|
||||
// reverse the glyph ordering.
|
||||
int[] temp = new int[ nGlyphs ];
|
||||
for(int i = 0; i < nGlyphs; i++)
|
||||
temp[ i ] = glyphCodes[ nGlyphs - i - 1];
|
||||
glyphCodes = temp;
|
||||
}
|
||||
performDefaultLayout();
|
||||
}
|
||||
|
||||
@ -121,21 +143,25 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
{
|
||||
nGlyphs = s.codePointCount( 0, s.length() );
|
||||
glyphCodes = new int[ nGlyphs ];
|
||||
int[] codePoints = new int[ nGlyphs ];
|
||||
int stringIndex = 0;
|
||||
|
||||
for(int i = 0; i < nGlyphs; i++)
|
||||
{
|
||||
glyphCodes[i] = getGlyph( s.codePointAt(stringIndex) );
|
||||
codePoints[i] = s.codePointAt( stringIndex );
|
||||
// UTF32 surrogate handling
|
||||
if( s.codePointAt( stringIndex ) != (int)s.charAt( stringIndex ) )
|
||||
if( codePoints[i] != (int)s.charAt( stringIndex ) )
|
||||
stringIndex ++;
|
||||
stringIndex ++;
|
||||
}
|
||||
|
||||
glyphCodes = getGlyphs( codePoints );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the glyph code within the font for a given character
|
||||
*/
|
||||
public native int getGlyph(int codepoint);
|
||||
public native int[] getGlyphs(int[] codepoints);
|
||||
|
||||
/**
|
||||
* Returns the kerning of a glyph pair
|
||||
@ -180,12 +206,15 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
*/
|
||||
public void performDefaultLayout()
|
||||
{
|
||||
logicalBounds = null; // invalidate caches.
|
||||
glyphPositions = null;
|
||||
|
||||
glyphTransforms = new AffineTransform[ nGlyphs ];
|
||||
double x = 0;
|
||||
|
||||
for(int i = 0; i < nGlyphs; i++)
|
||||
{
|
||||
GlyphMetrics gm = getGlyphMetrics( i );
|
||||
Rectangle2D r = gm.getBounds2D();
|
||||
glyphTransforms[ i ] = AffineTransform.getTranslateInstance(x, 0);
|
||||
x += gm.getAdvanceX();
|
||||
if( i > 0 )
|
||||
@ -235,19 +264,48 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
gm.getAdvanceX(), r.getHeight() );
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: Not all glyph types are supported.
|
||||
* (The JDK doesn't really seem to do so either)
|
||||
*/
|
||||
public void setupGlyphMetrics()
|
||||
{
|
||||
metricsCache = new GlyphMetrics[ nGlyphs ];
|
||||
|
||||
for(int i = 0; i < nGlyphs; i++)
|
||||
{
|
||||
GlyphMetrics gm = (GlyphMetrics)
|
||||
peer.getGlyphMetrics( glyphCodes[ i ] );
|
||||
if( gm == null )
|
||||
{
|
||||
double[] val = getMetricsNative( glyphCodes[ i ] );
|
||||
if( val == null )
|
||||
gm = null;
|
||||
else
|
||||
{
|
||||
gm = new GlyphMetrics( true,
|
||||
(float)val[1],
|
||||
(float)val[2],
|
||||
new Rectangle2D.Double
|
||||
( val[3], val[4],
|
||||
val[5], val[6] ),
|
||||
GlyphMetrics.STANDARD );
|
||||
peer.putGlyphMetrics( glyphCodes[ i ], gm );
|
||||
}
|
||||
}
|
||||
metricsCache[ i ] = gm;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the metrics of a single glyph.
|
||||
*/
|
||||
public GlyphMetrics getGlyphMetrics(int glyphIndex)
|
||||
{
|
||||
double[] val = getMetricsNative( glyphCodes[ glyphIndex ] );
|
||||
if( val == null )
|
||||
return null;
|
||||
|
||||
return new GlyphMetrics( true, (float)val[1], (float)val[2],
|
||||
new Rectangle2D.Double( val[3], val[4],
|
||||
val[5], val[6] ),
|
||||
GlyphMetrics.STANDARD );
|
||||
if( metricsCache == null )
|
||||
setupGlyphMetrics();
|
||||
|
||||
return metricsCache[ glyphIndex ];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -275,6 +333,9 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
public float[] getGlyphPositions(int beginGlyphIndex, int numEntries,
|
||||
float[] positionReturn)
|
||||
{
|
||||
if( glyphPositions != null )
|
||||
return glyphPositions;
|
||||
|
||||
float[] rval;
|
||||
|
||||
if( positionReturn == null )
|
||||
@ -289,6 +350,7 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
rval[i * 2 + 1] = (float)p.getY();
|
||||
}
|
||||
|
||||
glyphPositions = rval;
|
||||
return rval;
|
||||
}
|
||||
|
||||
@ -316,11 +378,19 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
{
|
||||
if( nGlyphs == 0 )
|
||||
return new Rectangle2D.Double(0, 0, 0, 0);
|
||||
if( logicalBounds != null )
|
||||
return logicalBounds;
|
||||
|
||||
Rectangle2D rect = (Rectangle2D)getGlyphLogicalBounds( 0 );
|
||||
for( int i = 1; i < nGlyphs; i++ )
|
||||
rect = rect.createUnion( (Rectangle2D)getGlyphLogicalBounds( i ) );
|
||||
{
|
||||
Rectangle2D r2 = (Rectangle2D)getGlyphLogicalBounds( i );
|
||||
Point2D p = getGlyphPosition( i );
|
||||
r2.setRect( p.getX(), p.getY(), r2.getWidth(), r2.getHeight() );
|
||||
rect = rect.createUnion( r2 );
|
||||
}
|
||||
|
||||
logicalBounds = rect;
|
||||
return rect;
|
||||
}
|
||||
|
||||
@ -360,7 +430,9 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
public Shape getOutline(float x, float y)
|
||||
{
|
||||
AffineTransform tx = AffineTransform.getTranslateInstance( x, y );
|
||||
return tx.createTransformedShape( getOutline() );
|
||||
GeneralPath gp = (GeneralPath)getOutline();
|
||||
gp.transform( tx );
|
||||
return gp;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -380,6 +452,8 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
// FIXME: Scaling, etc.?
|
||||
glyphTransforms[ glyphIndex ].setToTranslation( newPos.getX(),
|
||||
newPos.getY() );
|
||||
logicalBounds = null;
|
||||
glyphPositions = null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -388,5 +462,7 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||
public void setGlyphTransform(int glyphIndex, AffineTransform newTX)
|
||||
{
|
||||
glyphTransforms[ glyphIndex ].setTransform( newTX );
|
||||
logicalBounds = null;
|
||||
glyphPositions = null;
|
||||
}
|
||||
}
|
||||
|
@ -57,12 +57,18 @@ import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.ResourceBundle;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class GdkFontPeer extends ClasspathFontPeer
|
||||
{
|
||||
static native void initStaticState();
|
||||
private final int native_state = GtkGenericPeer.getUniqueInteger ();
|
||||
private static ResourceBundle bundle;
|
||||
|
||||
/**
|
||||
* Cache GlyphMetrics objects.
|
||||
*/
|
||||
private HashMap metricsCache;
|
||||
|
||||
static
|
||||
{
|
||||
@ -145,6 +151,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
super(name, style, size);
|
||||
initState ();
|
||||
setFont (this.familyName, this.style, (int)this.size);
|
||||
metricsCache = new HashMap();
|
||||
}
|
||||
|
||||
public GdkFontPeer (String name, Map attributes)
|
||||
@ -152,6 +159,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
super(name, attributes);
|
||||
initState ();
|
||||
setFont (this.familyName, this.style, (int)this.size);
|
||||
metricsCache = new HashMap();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -252,18 +260,25 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
|
||||
public byte getBaselineFor (Font font, char c)
|
||||
{
|
||||
throw new UnsupportedOperationException ();
|
||||
// FIXME: Actually check.
|
||||
return Font.ROMAN_BASELINE;
|
||||
}
|
||||
|
||||
protected class GdkFontLineMetrics extends LineMetrics
|
||||
private static class GdkFontLineMetrics extends LineMetrics
|
||||
{
|
||||
FontMetrics fm;
|
||||
int nchars;
|
||||
private FontMetrics fm;
|
||||
private int nchars;
|
||||
private float strikethroughOffset, strikethroughThickness,
|
||||
underlineOffset, underlineThickness;
|
||||
|
||||
public GdkFontLineMetrics (FontMetrics m, int n)
|
||||
public GdkFontLineMetrics (GdkFontPeer fp, FontMetrics m, int n)
|
||||
{
|
||||
fm = m;
|
||||
nchars = n;
|
||||
strikethroughOffset = 0f;
|
||||
underlineOffset = 0f;
|
||||
strikethroughThickness = ((float)fp.getSize(null)) / 12f;
|
||||
underlineThickness = strikethroughThickness;
|
||||
}
|
||||
|
||||
public float getAscent()
|
||||
@ -272,7 +287,8 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
}
|
||||
|
||||
public int getBaselineIndex()
|
||||
{
|
||||
{
|
||||
// FIXME
|
||||
return Font.ROMAN_BASELINE;
|
||||
}
|
||||
|
||||
@ -303,7 +319,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
public LineMetrics getLineMetrics (Font font, CharacterIterator ci,
|
||||
int begin, int limit, FontRenderContext rc)
|
||||
{
|
||||
return new GdkFontLineMetrics (getFontMetrics (font), limit - begin);
|
||||
return new GdkFontLineMetrics (this, getFontMetrics (font), limit - begin);
|
||||
}
|
||||
|
||||
public Rectangle2D getMaxCharBounds (Font font, FontRenderContext rc)
|
||||
@ -350,20 +366,15 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
char[] chars, int start, int limit,
|
||||
int flags)
|
||||
{
|
||||
int nchars = (limit - start) + 1;
|
||||
char[] nc = new char[nchars];
|
||||
|
||||
for (int i = 0; i < nchars; ++i)
|
||||
nc[i] = chars[start + i];
|
||||
|
||||
return createGlyphVector (font, frc,
|
||||
new StringCharacterIterator (new String (nc)));
|
||||
return new FreetypeGlyphVector( font, new String( chars, start,
|
||||
limit - start),
|
||||
frc, flags);
|
||||
}
|
||||
|
||||
public LineMetrics getLineMetrics (Font font, String str,
|
||||
FontRenderContext frc)
|
||||
{
|
||||
return new GdkFontLineMetrics (getFontMetrics (font), str.length ());
|
||||
return new GdkFontLineMetrics (this, getFontMetrics (font), str.length ());
|
||||
}
|
||||
|
||||
public FontMetrics getFontMetrics (Font font)
|
||||
@ -372,4 +383,21 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||
// the metrics cache.
|
||||
return Toolkit.getDefaultToolkit().getFontMetrics (font);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a cached GlyphMetrics object for a given glyphcode,
|
||||
* or null if it doesn't exist in the cache.
|
||||
*/
|
||||
GlyphMetrics getGlyphMetrics( int glyphCode )
|
||||
{
|
||||
return (GlyphMetrics)metricsCache.get( new Integer( glyphCode ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Put a GlyphMetrics object in the cache.
|
||||
*/
|
||||
void putGlyphMetrics( int glyphCode, Object metrics )
|
||||
{
|
||||
metricsCache.put( new Integer( glyphCode ), metrics );
|
||||
}
|
||||
}
|
||||
|
@ -103,8 +103,15 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||
native void pumpBytes (byte[] bytes, int len) throws IOException;
|
||||
native void pumpDone () throws IOException;
|
||||
native void finish (boolean needsClose);
|
||||
static native void streamImage(int[] bytes, String format, int width, int height, boolean hasAlpha, DataOutput sink);
|
||||
|
||||
|
||||
/**
|
||||
* Converts given image to bytes.
|
||||
* Will call the GdkPixbufWriter for each chunk.
|
||||
*/
|
||||
static native void streamImage(int[] bytes, String format,
|
||||
int width, int height,
|
||||
boolean hasAlpha, GdkPixbufWriter writer);
|
||||
|
||||
// gdk-pixbuf provids data in RGBA format
|
||||
static final ColorModel cm = new DirectColorModel (32, 0xff000000,
|
||||
0x00ff0000,
|
||||
@ -461,7 +468,7 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||
}
|
||||
|
||||
private static class GdkPixbufWriter
|
||||
extends ImageWriter
|
||||
extends ImageWriter implements Runnable
|
||||
{
|
||||
String ext;
|
||||
public GdkPixbufWriter(GdkPixbufWriterSpi ownerSpi, Object ext)
|
||||
@ -519,14 +526,106 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||
model = img.getColorModel();
|
||||
}
|
||||
|
||||
Thread workerThread = new Thread(this, "GdkPixbufWriter");
|
||||
workerThread.start();
|
||||
processImageStarted(1);
|
||||
synchronized(pixbufLock)
|
||||
{
|
||||
streamImage(pixels, this.ext, width, height, model.hasAlpha(),
|
||||
(DataOutput) this.getOutput());
|
||||
this);
|
||||
}
|
||||
synchronized(data)
|
||||
{
|
||||
data.add(DATADONE);
|
||||
data.notifyAll();
|
||||
}
|
||||
|
||||
while (workerThread.isAlive())
|
||||
{
|
||||
try
|
||||
{
|
||||
workerThread.join();
|
||||
}
|
||||
catch (InterruptedException ioe)
|
||||
{
|
||||
// Ignored.
|
||||
}
|
||||
}
|
||||
|
||||
if (exception != null)
|
||||
throw exception;
|
||||
|
||||
processImageComplete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Object marking end of data from native streamImage code.
|
||||
*/
|
||||
private static final Object DATADONE = new Object();
|
||||
|
||||
/**
|
||||
* Holds the data gotten from the native streamImage code.
|
||||
* A worker thread will pull data out.
|
||||
* Needs to be synchronized for access.
|
||||
* The special object DATADONE is added when all data has been delivered.
|
||||
*/
|
||||
private ArrayList data = new ArrayList();
|
||||
|
||||
/**
|
||||
* Holds any IOException thrown by the run method that needs
|
||||
* to be rethrown by the write method.
|
||||
*/
|
||||
private IOException exception;
|
||||
|
||||
/** Callback for streamImage native code. **/
|
||||
private void write(byte[] bs)
|
||||
{
|
||||
synchronized(data)
|
||||
{
|
||||
data.add(bs);
|
||||
data.notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
public void run()
|
||||
{
|
||||
boolean done = false;
|
||||
while (!done)
|
||||
{
|
||||
synchronized(data)
|
||||
{
|
||||
while (data.isEmpty())
|
||||
{
|
||||
try
|
||||
{
|
||||
data.wait();
|
||||
}
|
||||
catch (InterruptedException ie)
|
||||
{
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
|
||||
Object o = data.remove(0);
|
||||
if (o == DATADONE)
|
||||
done = true;
|
||||
else
|
||||
{
|
||||
DataOutput out = (DataOutput) getOutput();
|
||||
try
|
||||
{
|
||||
out.write((byte[]) o);
|
||||
}
|
||||
catch (IOException ioe)
|
||||
{
|
||||
// We are only interested in the first exception.
|
||||
if (exception == null)
|
||||
exception = ioe;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class GdkPixbufReader
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* GdkTextLayout.java
|
||||
Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -84,7 +84,7 @@ public class GdkTextLayout
|
||||
|
||||
private native void dispose ();
|
||||
|
||||
private native void cairoDrawGdkTextLayout(CairoGraphics2D g, float x, float y);
|
||||
private native void cairoDrawGdkTextLayout(long cg2d, float x, float y);
|
||||
|
||||
static native void initStaticState();
|
||||
|
||||
@ -216,7 +216,7 @@ public class GdkTextLayout
|
||||
|
||||
public void draw (Graphics2D g2, float x, float y)
|
||||
{
|
||||
cairoDrawGdkTextLayout((CairoGraphics2D)g2, x, y);
|
||||
cairoDrawGdkTextLayout(((CairoGraphics2D) g2).nativePointer, x, y);
|
||||
}
|
||||
|
||||
public TextHitInfo getStrongCaret (TextHitInfo hit1,
|
||||
|
@ -57,14 +57,28 @@ public class GtkVolatileImage extends VolatileImage
|
||||
|
||||
native long init(GtkComponentPeer component, int width, int height);
|
||||
|
||||
native void destroy();
|
||||
native void destroy(long pointer);
|
||||
|
||||
native int[] getPixels();
|
||||
native int[] nativeGetPixels(long pointer);
|
||||
public int[] getPixels()
|
||||
{
|
||||
return nativeGetPixels(nativePointer);
|
||||
}
|
||||
|
||||
native void copyArea( int x, int y, int w, int h, int dx, int dy );
|
||||
native void nativeCopyArea(long pointer, int x, int y, int w, int h, int dx,
|
||||
int dy );
|
||||
public void copyArea(int x, int y, int w, int h, int dx, int dy)
|
||||
{
|
||||
nativeCopyArea(nativePointer, x, y, w, h, dx, dy);
|
||||
}
|
||||
|
||||
native void nativeDrawVolatile(long pointer, long srcPtr, int x, int y,
|
||||
int w, int h );
|
||||
public void drawVolatile(long srcPtr, int x, int y, int w, int h )
|
||||
{
|
||||
nativeDrawVolatile(nativePointer, srcPtr, x, y, w, h);
|
||||
}
|
||||
|
||||
native void drawVolatile( long ptr, int x, int y, int w, int h );
|
||||
|
||||
public GtkVolatileImage(GtkComponentPeer component,
|
||||
int width, int height, ImageCapabilities caps)
|
||||
{
|
||||
@ -91,7 +105,7 @@ public class GtkVolatileImage extends VolatileImage
|
||||
|
||||
public void dispose()
|
||||
{
|
||||
destroy();
|
||||
destroy(nativePointer);
|
||||
}
|
||||
|
||||
public BufferedImage getSnapshot()
|
||||
|
@ -67,14 +67,12 @@ public class VolatileImageGraphics extends ComponentGraphics
|
||||
this.owner = img;
|
||||
cairo_t = initFromVolatile( owner.nativePointer, img.width, img.height );
|
||||
setup( cairo_t );
|
||||
setClip( new Rectangle( 0, 0, img.width, img.height) );
|
||||
}
|
||||
|
||||
private VolatileImageGraphics(VolatileImageGraphics copy)
|
||||
{
|
||||
this.owner = copy.owner;
|
||||
initFromVolatile( owner.nativePointer, owner.width, owner.height );
|
||||
setClip( new Rectangle( 0, 0, owner.width, owner.height) );
|
||||
cairo_t = initFromVolatile(owner.nativePointer, owner.width, owner.height);
|
||||
copy( copy, cairo_t );
|
||||
}
|
||||
|
||||
@ -118,5 +116,10 @@ public class VolatileImageGraphics extends ComponentGraphics
|
||||
}
|
||||
return super.drawImage( img, x, y, width, height, observer );
|
||||
}
|
||||
|
||||
protected Rectangle2D getRealBounds()
|
||||
{
|
||||
return new Rectangle2D.Double(0, 0, owner.width, owner.height);
|
||||
}
|
||||
}
|
||||
|
||||
|
177
libjava/classpath/gnu/java/net/IndexListParser.java
Normal file
177
libjava/classpath/gnu/java/net/IndexListParser.java
Normal file
@ -0,0 +1,177 @@
|
||||
/* IndexListParser.java --
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package gnu.java.net;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
/**
|
||||
* The INDEX.LIST file contains sections each separated by a blank line.
|
||||
* Each section defines the content of a jar, with a
|
||||
* header defining the jar file path name, followed by a list of paths.
|
||||
* The jar file paths are relative to the codebase of the root jar.
|
||||
*
|
||||
Specification
|
||||
index file : version-info blankline section*
|
||||
version-info : JarIndex-Version: version-number
|
||||
version-number : digit+{.digit+}*
|
||||
section : body blankline
|
||||
body : header name*
|
||||
header : char+.jar newline
|
||||
name : char+ newline
|
||||
|
||||
* @author langel at redhat dot com
|
||||
*/
|
||||
public class IndexListParser
|
||||
{
|
||||
public static final String JAR_INDEX_FILE = "META-INF/INDEX.LIST";
|
||||
public static final String JAR_INDEX_VERSION_KEY = "JarIndex-Version: ";
|
||||
|
||||
double versionNumber;
|
||||
// Map each jar to the prefixes defined for the jar.
|
||||
// This is intentionally kept in insertion order.
|
||||
LinkedHashMap prefixes = new LinkedHashMap();
|
||||
|
||||
/**
|
||||
* Parses the given jarfile's INDEX.LIST file if it exists.
|
||||
*
|
||||
* @param jarfile - the given jar file
|
||||
* @param baseJarURL - the codebase of the jar file
|
||||
* @param baseURL - the base url for the headers
|
||||
*/
|
||||
public IndexListParser(JarFile jarfile, URL baseJarURL, URL baseURL)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Parse INDEX.LIST if it exists
|
||||
if (jarfile.getEntry(JAR_INDEX_FILE) != null)
|
||||
{
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(new URL(baseJarURL,
|
||||
JAR_INDEX_FILE).openStream()));
|
||||
|
||||
// Must start with version info
|
||||
String line = br.readLine();
|
||||
if (!line.startsWith(JAR_INDEX_VERSION_KEY))
|
||||
return;
|
||||
versionNumber = Double.parseDouble(line.substring(JAR_INDEX_VERSION_KEY.length()).trim());
|
||||
|
||||
// Blank line must be next
|
||||
line = br.readLine();
|
||||
if (! "".equals(line))
|
||||
{
|
||||
clearAll();
|
||||
return;
|
||||
}
|
||||
|
||||
// May contain sections.
|
||||
while ((line = br.readLine()) != null)
|
||||
{
|
||||
URL jarURL = new URL(baseURL, line);
|
||||
HashSet values = new HashSet();
|
||||
|
||||
// Read the names in the section.
|
||||
while ((line = br.readLine()) != null)
|
||||
{
|
||||
// Stop at section boundary.
|
||||
if ("".equals(line))
|
||||
break;
|
||||
values.add(line.trim());
|
||||
}
|
||||
prefixes.put(jarURL, values);
|
||||
// Might have seen an early EOF.
|
||||
if (line == null)
|
||||
break;
|
||||
}
|
||||
|
||||
br.close();
|
||||
}
|
||||
// else INDEX.LIST does not exist
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
clearAll();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all the variables. This is called when parsing fails.
|
||||
*/
|
||||
void clearAll()
|
||||
{
|
||||
versionNumber = 0;
|
||||
prefixes = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the version info for the file.
|
||||
*
|
||||
* @return the version info.
|
||||
*/
|
||||
public String getVersionInfo()
|
||||
{
|
||||
return JAR_INDEX_VERSION_KEY + getVersionNumber();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the version number of the file.
|
||||
*
|
||||
* @return the version number.
|
||||
*/
|
||||
public double getVersionNumber()
|
||||
{
|
||||
return versionNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the map of all the headers found in the file.
|
||||
* The keys in the map are URLs of jars. The values in the map
|
||||
* are Sets of package prefixes (and top-level file names), as
|
||||
* specifed in INDEX.LIST.
|
||||
*
|
||||
* @return an map of all the headers, or null if no INDEX.LIST was found
|
||||
*/
|
||||
public LinkedHashMap getHeaders()
|
||||
{
|
||||
return prefixes;
|
||||
}
|
||||
}
|
@ -11,32 +11,32 @@ extern "C"
|
||||
#endif
|
||||
|
||||
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);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels (JNIEnv *env, jobject, jintArray, jint, jint, jint, jdoubleArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient (JNIEnv *env, jobject, 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, jintArray, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix (JNIEnv *env, jobject, jdoubleArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine (JNIEnv *env, jobject, jdouble, jint, jint, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash (JNIEnv *env, jobject, jdoubleArray, jint, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector (JNIEnv *env, jobject, jobject, jfloat, jfloat, jint, jintArray, jfloatArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, jobject, jint);
|
||||
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, 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);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator (JNIEnv *env, jobject, jlong, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor (JNIEnv *env, jobject, jlong, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule (JNIEnv *env, jobject, jlong, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine (JNIEnv *env, jobject, jlong, jdouble, jint, jint, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash (JNIEnv *env, jobject, jlong, jdoubleArray, jint, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector (JNIEnv *env, jobject, jlong, jobject, jfloat, jfloat, jint, jintArray, jfloatArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo (JNIEnv *env, jobject, jlong, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle (JNIEnv *env, jobject, jlong, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath (JNIEnv *env, jobject, jlong);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath (JNIEnv *env, jobject, jlong);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo (JNIEnv *env, jobject, jlong, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo (JNIEnv *env, jobject, jlong, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo (JNIEnv *env, jobject, jlong, jdouble, jdouble);
|
||||
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, 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);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, jobject, jlong, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -11,15 +11,15 @@ extern "C"
|
||||
#endif
|
||||
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_create (JNIEnv *env, jobject, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_destroy (JNIEnv *env, jobject);
|
||||
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetElem (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetElem (JNIEnv *env, jobject, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface (JNIEnv *env, jobject, jobject, jdoubleArray);
|
||||
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels (JNIEnv *env, jobject, jintArray);
|
||||
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint, jint);
|
||||
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, 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);
|
||||
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeNewCairoContext (JNIEnv *env, jobject, jlong);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative2 (JNIEnv *env, jobject, jlong, jint, jint, jint, jint, jint, jint, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_start_1gdk_1
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_end_1gdk_1drawing (JNIEnv *env, jobject);
|
||||
JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_hasXRender (JNIEnv *env, jclass);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_copyAreaNative (JNIEnv *env, jobject, jobject, jint, jint, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile (JNIEnv *env, jobject, jobject, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile (JNIEnv *env, jobject, jobject, jlong, jint, jint, jint, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyph (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs (JNIEnv *env, jobject, jintArray);
|
||||
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getKerning (JNIEnv *env, jobject, jint, jint);
|
||||
JNIEXPORT jdoubleArray JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphOutlineNative (JNIEnv *env, jobject, jint);
|
||||
|
@ -1,47 +0,0 @@
|
||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
|
||||
#ifndef __gnu_java_awt_peer_gtk_GdkGraphics__
|
||||
#define __gnu_java_awt_peer_gtk_GdkGraphics__
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initStaticState (JNIEnv *env, jclass);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2 (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initStateUnlocked (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__II (JNIEnv *env, jobject, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initFromImage (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_nativeCopyState (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_connectSignals (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyArea (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_nativeDispose (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawLine (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawArc (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillArc (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawOval (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillOval (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolygon (JNIEnv *env, jobject, jintArray, jintArray, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillPolygon (JNIEnv *env, jobject, jintArray, jintArray, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolyline (JNIEnv *env, jobject, jintArray, jintArray, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawRect (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillRect (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawString (JNIEnv *env, jobject, jobject, jstring, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setClipRectangle (JNIEnv *env, jobject, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setFGColor (JNIEnv *env, jobject, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setFunction (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_translateNative (JNIEnv *env, jobject, jint, jint);
|
||||
#undef gnu_java_awt_peer_gtk_GdkGraphics_GDK_COPY
|
||||
#define gnu_java_awt_peer_gtk_GdkGraphics_GDK_COPY 0L
|
||||
#undef gnu_java_awt_peer_gtk_GdkGraphics_GDK_XOR
|
||||
#define gnu_java_awt_peer_gtk_GdkGraphics_GDK_XOR 2L
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __gnu_java_awt_peer_gtk_GdkGraphics__ */
|
@ -1,67 +0,0 @@
|
||||
/* DO NOT EDIT THIS FILE - it is machine generated */
|
||||
|
||||
#ifndef __gnu_java_awt_peer_gtk_GdkGraphics2D__
|
||||
#define __gnu_java_awt_peer_gtk_GdkGraphics2D__
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initStaticState (JNIEnv *env, jclass);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initStateUnlocked (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2 (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState__II (JNIEnv *env, jobject, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_initState___3III (JNIEnv *env, jobject, jintArray, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_copyState (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_dispose (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSurfaceSetFilterUnlocked (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_connectSignals (JNIEnv *env, jobject, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_gdkDrawDrawable (JNIEnv *env, jobject, jobject, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_drawPixels (JNIEnv *env, jobject, jintArray, jint, jint, jint, jdoubleArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setTexturePixelsUnlocked (JNIEnv *env, jobject, jintArray, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setTexturePixels (JNIEnv *env, jobject, jintArray, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setGradient (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jint, jint, jint, jint, jint, jint, jint, jint, jboolean);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_setGradientUnlocked (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jint, jint, jint, jint, jint, jint, jint, jint, jboolean);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSave (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRestore (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMatrix (JNIEnv *env, jobject, jdoubleArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMatrixUnlocked (JNIEnv *env, jobject, jdoubleArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetOperator (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetRGBAColor (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetRGBAColorUnlocked (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetFillRule (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineWidth (JNIEnv *env, jobject, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineWidthUnlocked (JNIEnv *env, jobject, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineCap (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineCapUnlocked (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineJoin (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetLineJoinUnlocked (JNIEnv *env, jobject, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetDash (JNIEnv *env, jobject, jdoubleArray, jint, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetDashUnlocked (JNIEnv *env, jobject, jdoubleArray, jint, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMiterLimit (JNIEnv *env, jobject, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoSetMiterLimitUnlocked (JNIEnv *env, jobject, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoNewPath (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoMoveTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoLineTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoCurveTo (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelMoveTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelLineTo (JNIEnv *env, jobject, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRelCurveTo (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoRectangle (JNIEnv *env, jobject, jdouble, jdouble, jdouble, jdouble);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoClosePath (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoStroke (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoFill (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoClip (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoDrawGlyphVector (JNIEnv *env, jobject, jobject, jfloat, jfloat, jint, jintArray, jfloatArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_cairoDrawGdkTextLayout (JNIEnv *env, jobject, jobject, jfloat, jfloat);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics2D_releasePeerGraphicsResource (JNIEnv *env, jclass, jobject);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __gnu_java_awt_peer_gtk_GdkGraphics2D__ */
|
@ -16,7 +16,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_getExtents (JNIE
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_indexToPos (JNIEnv *env, jobject, jint, jdoubleArray);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_initState (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_dispose (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_cairoDrawGdkTextLayout (JNIEnv *env, jobject, jobject, jfloat, jfloat);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_cairoDrawGdkTextLayout (JNIEnv *env, jobject, jlong, jfloat, jfloat);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_initStaticState (JNIEnv *env, jclass);
|
||||
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_getOutline (JNIEnv *env, jobject, jobject);
|
||||
|
||||
|
@ -11,10 +11,10 @@ extern "C"
|
||||
#endif
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_init (JNIEnv *env, jobject, jobject, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy (JNIEnv *env, jobject);
|
||||
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels (JNIEnv *env, jobject);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile (JNIEnv *env, jobject, jlong, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy (JNIEnv *env, jobject, jlong);
|
||||
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels (JNIEnv *env, jobject, jlong);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeCopyArea (JNIEnv *env, jobject, jlong, jint, jint, jint, jint, jint, jint);
|
||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeDrawVolatile (JNIEnv *env, jobject, jlong, jlong, jint, jint, jint, jint);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -1739,9 +1739,8 @@ public abstract class Component
|
||||
if (gfx == null && parent != null)
|
||||
{
|
||||
gfx = parent.getGraphics();
|
||||
Rectangle bounds = getBounds();
|
||||
gfx.setClip(bounds);
|
||||
gfx.translate(bounds.x, bounds.y);
|
||||
gfx.clipRect(getX(), getY(), getWidth(), getHeight());
|
||||
gfx.translate(getX(), getY());
|
||||
return gfx;
|
||||
}
|
||||
gfx.setFont(font);
|
||||
|
@ -38,6 +38,8 @@ exception statement from your version. */
|
||||
|
||||
package java.awt.datatransfer;
|
||||
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@ -785,7 +787,8 @@ public class DataFlavor implements java.io.Externalizable, Cloneable
|
||||
*
|
||||
* @exception IOException If an error occurs.
|
||||
*/
|
||||
public void writeExternal(ObjectOutput stream) throws IOException
|
||||
public void writeExternal(ObjectOutput stream)
|
||||
throws IOException, NotImplementedException
|
||||
{
|
||||
// FIXME: Implement me
|
||||
}
|
||||
@ -801,7 +804,7 @@ public class DataFlavor implements java.io.Externalizable, Cloneable
|
||||
* cannot be found.
|
||||
*/
|
||||
public void readExternal(ObjectInput stream)
|
||||
throws IOException, ClassNotFoundException
|
||||
throws IOException, ClassNotFoundException, NotImplementedException
|
||||
{
|
||||
// FIXME: Implement me
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* DropTargetContext.java --
|
||||
Copyright (C) 2002, 2003, 2004 Free Software Foundation
|
||||
Copyright (C) 2002, 2003, 2004, 2006, Free Software Foundation
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -37,6 +37,8 @@ exception statement from your version. */
|
||||
|
||||
package java.awt.dnd;
|
||||
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.Transferable;
|
||||
@ -59,23 +61,23 @@ public class DropTargetContext implements Serializable
|
||||
protected boolean isLocal;
|
||||
protected Transferable transferable;
|
||||
|
||||
TransferableProxy (Transferable t, boolean local)
|
||||
TransferableProxy(Transferable t, boolean local)
|
||||
{
|
||||
this.transferable = t;
|
||||
this.isLocal = local;
|
||||
}
|
||||
|
||||
public DataFlavor[] getTransferDataFlavors ()
|
||||
public DataFlavor[] getTransferDataFlavors()
|
||||
{
|
||||
return transferable.getTransferDataFlavors ();
|
||||
return transferable.getTransferDataFlavors();
|
||||
}
|
||||
|
||||
public boolean isDataFlavorSupported (DataFlavor flavor)
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor)
|
||||
{
|
||||
return transferable.isDataFlavorSupported (flavor);
|
||||
return transferable.isDataFlavorSupported(flavor);
|
||||
}
|
||||
|
||||
public Object getTransferData (DataFlavor flavor)
|
||||
public Object getTransferData(DataFlavor flavor)
|
||||
throws UnsupportedFlavorException, IOException
|
||||
{
|
||||
return transferable.getTransferData (flavor);
|
||||
@ -87,32 +89,32 @@ public class DropTargetContext implements Serializable
|
||||
private java.awt.dnd.peer.DropTargetContextPeer dtcp;
|
||||
|
||||
// package private
|
||||
DropTargetContext (DropTarget dropTarget)
|
||||
DropTargetContext(DropTarget dropTarget)
|
||||
{
|
||||
this.dropTarget = dropTarget;
|
||||
}
|
||||
|
||||
public DropTarget getDropTarget ()
|
||||
public DropTarget getDropTarget()
|
||||
{
|
||||
return dropTarget;
|
||||
}
|
||||
|
||||
public Component getComponent ()
|
||||
public Component getComponent()
|
||||
{
|
||||
return dropTarget.getComponent ();
|
||||
return dropTarget.getComponent();
|
||||
}
|
||||
|
||||
public void addNotify (java.awt.dnd.peer.DropTargetContextPeer dtcp)
|
||||
public void addNotify(java.awt.dnd.peer.DropTargetContextPeer dtcp)
|
||||
{
|
||||
this.dtcp = dtcp;
|
||||
}
|
||||
|
||||
public void removeNotify ()
|
||||
public void removeNotify()
|
||||
{
|
||||
this.dtcp = null;
|
||||
}
|
||||
|
||||
protected void setTargetActions (int actions)
|
||||
protected void setTargetActions(int actions)
|
||||
{
|
||||
targetActions = actions;
|
||||
}
|
||||
@ -127,45 +129,51 @@ public class DropTargetContext implements Serializable
|
||||
*
|
||||
* @exception InvalidDnDOperationException If a drop is not outstanding.
|
||||
*/
|
||||
public void dropComplete (boolean success)
|
||||
public void dropComplete(boolean success)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
}
|
||||
|
||||
protected void acceptDrag (int dragOperation)
|
||||
protected void acceptDrag(int dragOperation)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
}
|
||||
|
||||
protected void rejectDrag ()
|
||||
protected void rejectDrag()
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
}
|
||||
|
||||
protected void acceptDrop (int dropOperation)
|
||||
protected void acceptDrop(int dropOperation)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
}
|
||||
|
||||
protected void rejectDrop ()
|
||||
protected void rejectDrop()
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
}
|
||||
|
||||
protected DataFlavor[] getCurrentDataFlavors ()
|
||||
protected DataFlavor[] getCurrentDataFlavors()
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
return null;
|
||||
}
|
||||
|
||||
protected List getCurrentDataFlavorsAsList ()
|
||||
protected List getCurrentDataFlavorsAsList()
|
||||
{
|
||||
return Arrays.asList (getCurrentDataFlavors ());
|
||||
return Arrays.asList(getCurrentDataFlavors());
|
||||
}
|
||||
|
||||
protected boolean isDataFlavorSupported (DataFlavor flavor)
|
||||
protected boolean isDataFlavorSupported(DataFlavor flavor)
|
||||
{
|
||||
return getCurrentDataFlavorsAsList ().contains (flavor);
|
||||
return getCurrentDataFlavorsAsList().contains(flavor);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -173,7 +181,8 @@ public class DropTargetContext implements Serializable
|
||||
*
|
||||
* @exception InvalidDnDOperationException If a drag is not outstanding.
|
||||
*/
|
||||
protected Transferable getTransferable() throws InvalidDnDOperationException
|
||||
protected Transferable getTransferable()
|
||||
throws InvalidDnDOperationException, NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
return null;
|
||||
@ -181,6 +190,6 @@ public class DropTargetContext implements Serializable
|
||||
|
||||
protected Transferable createTransferableProxy(Transferable t, boolean local)
|
||||
{
|
||||
return new TransferableProxy (t, local);
|
||||
return new TransferableProxy(t, local);
|
||||
}
|
||||
} // class DropTargetContext
|
||||
|
@ -37,6 +37,8 @@ exception statement from your version. */
|
||||
|
||||
package java.awt.dnd;
|
||||
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import java.awt.Point;
|
||||
import java.awt.datatransfer.DataFlavor;
|
||||
import java.awt.datatransfer.Transferable;
|
||||
@ -65,10 +67,10 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||
* actions is not a bitwise mask of DnDConstants, or dtc is null.
|
||||
* @exception NullPointerException If location is null.
|
||||
*/
|
||||
public DropTargetDropEvent (DropTargetContext dtc, Point location,
|
||||
int dropAction, int actions)
|
||||
public DropTargetDropEvent(DropTargetContext dtc, Point location,
|
||||
int dropAction, int actions)
|
||||
{
|
||||
this (dtc, location, dropAction, actions, false);
|
||||
this(dtc, location, dropAction, actions, false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -78,16 +80,16 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||
* actions is not a bitwise mask of DnDConstants, or dtc is null.
|
||||
* @exception NullPointerException If location is null.
|
||||
*/
|
||||
public DropTargetDropEvent (DropTargetContext dtc, Point location,
|
||||
int dropAction, int actions, boolean isLocalTx)
|
||||
public DropTargetDropEvent(DropTargetContext dtc, Point location,
|
||||
int dropAction, int actions, boolean isLocalTx)
|
||||
{
|
||||
super (dtc);
|
||||
super(dtc);
|
||||
|
||||
if (location == null)
|
||||
throw new NullPointerException ();
|
||||
throw new NullPointerException();
|
||||
|
||||
if (dtc == null)
|
||||
throw new IllegalArgumentException ();
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
if (dropAction != DnDConstants.ACTION_NONE
|
||||
&& dropAction != DnDConstants.ACTION_COPY
|
||||
@ -95,7 +97,7 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||
&& dropAction != DnDConstants.ACTION_COPY_OR_MOVE
|
||||
&& dropAction != DnDConstants.ACTION_LINK
|
||||
&& dropAction != DnDConstants.ACTION_REFERENCE)
|
||||
throw new IllegalArgumentException ();
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
int actionsMask = DnDConstants.ACTION_NONE
|
||||
| DnDConstants.ACTION_COPY
|
||||
@ -105,7 +107,7 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||
| DnDConstants.ACTION_REFERENCE;
|
||||
|
||||
if (~(actions ^ actionsMask) != 0)
|
||||
throw new IllegalArgumentException ();
|
||||
throw new IllegalArgumentException();
|
||||
|
||||
this.dropAction = dropAction;
|
||||
this.actions = actions;
|
||||
@ -113,52 +115,53 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||
this.isLocalTx = isLocalTx;
|
||||
}
|
||||
|
||||
public Point getLocation ()
|
||||
public Point getLocation()
|
||||
{
|
||||
return location;
|
||||
}
|
||||
|
||||
public DataFlavor[] getCurrentDataFlavors ()
|
||||
public DataFlavor[] getCurrentDataFlavors()
|
||||
{
|
||||
return context.getCurrentDataFlavors ();
|
||||
return context.getCurrentDataFlavors();
|
||||
}
|
||||
|
||||
public List getCurrentDataFlavorsAsList ()
|
||||
public List getCurrentDataFlavorsAsList()
|
||||
{
|
||||
return context.getCurrentDataFlavorsAsList ();
|
||||
return context.getCurrentDataFlavorsAsList();
|
||||
}
|
||||
|
||||
public boolean isDataFlavorSupported (DataFlavor flavor)
|
||||
public boolean isDataFlavorSupported(DataFlavor flavor)
|
||||
{
|
||||
return context.isDataFlavorSupported (flavor);
|
||||
return context.isDataFlavorSupported(flavor);
|
||||
}
|
||||
|
||||
public int getSourceActions ()
|
||||
public int getSourceActions()
|
||||
{
|
||||
return actions;
|
||||
}
|
||||
|
||||
public int getDropAction ()
|
||||
public int getDropAction()
|
||||
{
|
||||
return dropAction;
|
||||
}
|
||||
|
||||
public Transferable getTransferable ()
|
||||
public Transferable getTransferable()
|
||||
{
|
||||
return context.getTransferable ();
|
||||
}
|
||||
|
||||
public void acceptDrop (int dropAction)
|
||||
public void acceptDrop(int dropAction)
|
||||
{
|
||||
context.acceptDrop (dropAction);
|
||||
context.acceptDrop(dropAction);
|
||||
}
|
||||
|
||||
public void rejectDrop ()
|
||||
public void rejectDrop()
|
||||
{
|
||||
context.rejectDrop ();
|
||||
context.rejectDrop();
|
||||
}
|
||||
|
||||
public void dropComplete (boolean success)
|
||||
public void dropComplete(boolean success)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement this
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* LineBreakMeasurer.java
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -38,84 +38,161 @@ exception statement from your version. */
|
||||
|
||||
package java.awt.font;
|
||||
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import java.text.AttributedCharacterIterator;
|
||||
import java.text.AttributedString;
|
||||
import java.text.BreakIterator;
|
||||
import java.awt.font.TextLayout;
|
||||
import java.awt.font.FontRenderContext;
|
||||
import java.awt.Shape;
|
||||
|
||||
public final class LineBreakMeasurer
|
||||
{
|
||||
private AttributedCharacterIterator ci;
|
||||
private AttributedCharacterIterator text;
|
||||
private int position;
|
||||
private FontRenderContext frc;
|
||||
private BreakIterator bi;
|
||||
private TextLayout totalLayout;
|
||||
private int numChars;
|
||||
|
||||
/**
|
||||
* Constructs a <code>LineBreakMeasurer</code> object.
|
||||
*/
|
||||
public LineBreakMeasurer (AttributedCharacterIterator text,
|
||||
FontRenderContext frc)
|
||||
public LineBreakMeasurer(AttributedCharacterIterator text,
|
||||
BreakIterator breakIter, FontRenderContext frc)
|
||||
{
|
||||
this (text, null, frc);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a <code>LineBreakMeasurer</code> object.
|
||||
*/
|
||||
public LineBreakMeasurer (AttributedCharacterIterator text,
|
||||
BreakIterator breakIter, FontRenderContext frc)
|
||||
{
|
||||
this.ci = text;
|
||||
this.bi = breakIter;
|
||||
this.text = text;
|
||||
this.frc = frc;
|
||||
position = 0;
|
||||
totalLayout = new TextLayout(text, frc);
|
||||
numChars = totalLayout.getCharacterCount();
|
||||
}
|
||||
|
||||
public void deleteChar (AttributedCharacterIterator newParagraph,
|
||||
int deletePos)
|
||||
throws NotImplementedException
|
||||
public LineBreakMeasurer(AttributedCharacterIterator text,
|
||||
FontRenderContext frc)
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
this.text = text;
|
||||
this.frc = frc;
|
||||
position = 0;
|
||||
totalLayout = new TextLayout(text, frc);
|
||||
numChars = totalLayout.getCharacterCount();
|
||||
}
|
||||
|
||||
public int getPosition ()
|
||||
public void deleteChar(AttributedCharacterIterator newParagraph,
|
||||
int deletePos)
|
||||
{
|
||||
return ci.getIndex ();
|
||||
totalLayout = new TextLayout(newParagraph, frc);
|
||||
if( deletePos < 0 || deletePos > totalLayout.getCharacterCount() )
|
||||
throw new NullPointerException("Invalid deletePos:"+deletePos);
|
||||
numChars = totalLayout.getCharacterCount();
|
||||
text = newParagraph;
|
||||
position = 0;
|
||||
}
|
||||
|
||||
public void insertChar (AttributedCharacterIterator newParagraph,
|
||||
int insertPos)
|
||||
throws NotImplementedException
|
||||
public void insertChar(AttributedCharacterIterator newParagraph,
|
||||
int insertPos)
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
totalLayout = new TextLayout(newParagraph, frc);
|
||||
if( insertPos < 0 || insertPos > totalLayout.getCharacterCount() )
|
||||
throw new NullPointerException("Invalid insertPos:"+insertPos);
|
||||
numChars = totalLayout.getCharacterCount();
|
||||
text = newParagraph;
|
||||
position = 0;
|
||||
}
|
||||
|
||||
public TextLayout nextLayout (float wrappingWidth)
|
||||
throws NotImplementedException
|
||||
public TextLayout nextLayout(float wrappingWidth)
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
return nextLayout( wrappingWidth, numChars, false );
|
||||
}
|
||||
|
||||
public TextLayout nextLayout (float wrappingWidth, int offsetLimit,
|
||||
boolean requireNextWord)
|
||||
throws NotImplementedException
|
||||
public TextLayout nextLayout(float wrappingWidth, int offsetLimit,
|
||||
boolean requireNextWord)
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
int next = nextOffset( wrappingWidth, offsetLimit, requireNextWord );
|
||||
AttributedCharacterIterator aci = (new AttributedString( text,
|
||||
position, next )
|
||||
).getIterator();
|
||||
position = next;
|
||||
return new TextLayout( aci, frc );
|
||||
}
|
||||
|
||||
public int nextOffset (float wrappingWidth)
|
||||
throws NotImplementedException
|
||||
public int nextOffset(float wrappingWidth)
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
return nextOffset( wrappingWidth, numChars, false );
|
||||
}
|
||||
|
||||
public int nextOffset (float wrappingWidth, int offsetLimit,
|
||||
boolean requireNextWord)
|
||||
throws NotImplementedException
|
||||
public int nextOffset(float wrappingWidth, int offsetLimit,
|
||||
boolean requireNextWord)
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
Shape s = totalLayout.getBlackBoxBounds( position, offsetLimit );
|
||||
double remainingLength = s.getBounds2D().getWidth();
|
||||
|
||||
int guessOffset = (int)( ( (double)wrappingWidth / (double)remainingLength)
|
||||
* ( (double)numChars - (double)position ) );
|
||||
guessOffset += position;
|
||||
if( guessOffset > offsetLimit )
|
||||
guessOffset = offsetLimit;
|
||||
|
||||
s = totalLayout.getBlackBoxBounds( position, guessOffset );
|
||||
double guessLength = s.getBounds2D().getWidth();
|
||||
|
||||
boolean makeSmaller = ( guessLength > wrappingWidth );
|
||||
int inc = makeSmaller ? -1 : 1;
|
||||
boolean keepGoing = true;
|
||||
|
||||
do
|
||||
{
|
||||
guessOffset = guessOffset + inc;
|
||||
if( guessOffset <= position || guessOffset > offsetLimit )
|
||||
{
|
||||
keepGoing = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
s = totalLayout.getBlackBoxBounds( position, guessOffset );
|
||||
guessLength = s.getBounds2D().getWidth();
|
||||
if( makeSmaller && ( guessLength <= wrappingWidth) )
|
||||
keepGoing = false;
|
||||
if( !makeSmaller && ( guessLength >= wrappingWidth) )
|
||||
keepGoing = false;
|
||||
}
|
||||
}
|
||||
while( keepGoing );
|
||||
|
||||
if( !makeSmaller )
|
||||
guessOffset--;
|
||||
|
||||
if( guessOffset >= offsetLimit )
|
||||
return offsetLimit;
|
||||
|
||||
text.setIndex( guessOffset );
|
||||
if( !requireNextWord )
|
||||
{
|
||||
char c = text.previous();
|
||||
while( !Character.isWhitespace( c ) && c != '-' &&
|
||||
guessOffset > position )
|
||||
{
|
||||
guessOffset--;
|
||||
c = text.previous();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
char c = text.next();
|
||||
while( !Character.isWhitespace( c ) && c != '-' &&
|
||||
guessOffset < offsetLimit )
|
||||
{
|
||||
guessOffset++;
|
||||
c = text.next();
|
||||
}
|
||||
}
|
||||
|
||||
return guessOffset;
|
||||
}
|
||||
|
||||
public void setPosition (int newPosition)
|
||||
public void setPosition(int newPosition)
|
||||
{
|
||||
ci.setIndex (newPosition);
|
||||
position = newPosition;
|
||||
}
|
||||
|
||||
public int getPosition()
|
||||
{
|
||||
return position;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* TextLayout.java --
|
||||
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -38,8 +38,7 @@ exception statement from your version. */
|
||||
|
||||
package java.awt.font;
|
||||
|
||||
import gnu.java.awt.ClasspathToolkit;
|
||||
import gnu.java.awt.peer.ClasspathTextLayoutPeer;
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import java.awt.Font;
|
||||
import java.awt.Graphics2D;
|
||||
@ -47,116 +46,269 @@ import java.awt.Shape;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.awt.geom.GeneralPath;
|
||||
import java.awt.geom.Point2D;
|
||||
import java.text.AttributedCharacterIterator;
|
||||
import java.text.AttributedString;
|
||||
import java.text.Bidi;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Michael Koch
|
||||
* @author Sven de Marothy
|
||||
*/
|
||||
public final class TextLayout implements Cloneable
|
||||
{
|
||||
public static final CaretPolicy DEFAULT_CARET_POLICY = new CaretPolicy ();
|
||||
ClasspathTextLayoutPeer peer;
|
||||
private GlyphVector[] runs;
|
||||
private Font font;
|
||||
private FontRenderContext frc;
|
||||
private String string;
|
||||
private Rectangle2D boundsCache;
|
||||
private LineMetrics lm;
|
||||
|
||||
public static class CaretPolicy
|
||||
{
|
||||
public CaretPolicy ()
|
||||
{
|
||||
// Do nothing here.
|
||||
}
|
||||
/**
|
||||
* Start and end character indices of the runs.
|
||||
* First index is the run number, second is 0 or 1 for the starting
|
||||
* and ending character index of the run, respectively.
|
||||
*/
|
||||
private int[][] runIndices;
|
||||
|
||||
public TextHitInfo getStrongCaret (TextHitInfo hit1, TextHitInfo hit2,
|
||||
TextLayout layout)
|
||||
{
|
||||
return layout.peer.getStrongCaret(hit1, hit2);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Base directionality, determined from the first char.
|
||||
*/
|
||||
private boolean leftToRight;
|
||||
|
||||
public TextLayout (AttributedCharacterIterator text, FontRenderContext frc)
|
||||
{
|
||||
AttributedString as = new AttributedString (text);
|
||||
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
|
||||
peer = tk.getClasspathTextLayoutPeer(as, frc);
|
||||
}
|
||||
/**
|
||||
* Whether this layout contains whitespace or not.
|
||||
*/
|
||||
private boolean hasWhitespace = false;
|
||||
|
||||
/**
|
||||
* The default caret policy.
|
||||
*/
|
||||
static TextLayout.CaretPolicy DEFAULT_CARET_POLICY = new CaretPolicy();
|
||||
|
||||
/**
|
||||
* Constructs a TextLayout.
|
||||
*/
|
||||
public TextLayout (String string, Font font, FontRenderContext frc)
|
||||
{
|
||||
AttributedString as = new AttributedString (string);
|
||||
as.addAttribute (TextAttribute.FONT, font);
|
||||
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
|
||||
peer = tk.getClasspathTextLayoutPeer(as, frc);
|
||||
this.font = font;
|
||||
this.frc = frc;
|
||||
this.string = string;
|
||||
lm = font.getLineMetrics(string, frc);
|
||||
|
||||
// Get base direction and whitespace info
|
||||
getStringProperties();
|
||||
|
||||
if( Bidi.requiresBidi( string.toCharArray(), 0, string.length() ) )
|
||||
{
|
||||
Bidi bidi = new Bidi( string, leftToRight ?
|
||||
Bidi.DIRECTION_LEFT_TO_RIGHT :
|
||||
Bidi.DIRECTION_RIGHT_TO_LEFT );
|
||||
int rc = bidi.getRunCount();
|
||||
byte[] table = new byte[ rc ];
|
||||
for(int i = 0; i < table.length; i++)
|
||||
table[i] = (byte)bidi.getRunLevel(i);
|
||||
|
||||
runs = new GlyphVector[ rc ];
|
||||
runIndices = new int[rc][2];
|
||||
for(int i = 0; i < runs.length; i++)
|
||||
{
|
||||
runIndices[i][0] = bidi.getRunStart( i );
|
||||
runIndices[i][1] = bidi.getRunLimit( i );
|
||||
if( runIndices[i][0] != runIndices[i][1] ) // no empty runs.
|
||||
{
|
||||
runs[i] = font.layoutGlyphVector
|
||||
( frc, string.toCharArray(),
|
||||
runIndices[i][0], runIndices[i][1],
|
||||
((table[i] & 1) == 0) ? Font.LAYOUT_LEFT_TO_RIGHT :
|
||||
Font.LAYOUT_RIGHT_TO_LEFT );
|
||||
}
|
||||
}
|
||||
Bidi.reorderVisually( table, 0, runs, 0, runs.length );
|
||||
}
|
||||
else
|
||||
{
|
||||
runs = new GlyphVector[ 1 ];
|
||||
runIndices = new int[1][2];
|
||||
runIndices[0][0] = 0;
|
||||
runIndices[0][1] = string.length();
|
||||
runs[ 0 ] = font.layoutGlyphVector( frc, string.toCharArray(),
|
||||
0, string.length(),
|
||||
leftToRight ?
|
||||
Font.LAYOUT_LEFT_TO_RIGHT :
|
||||
Font.LAYOUT_RIGHT_TO_LEFT );
|
||||
}
|
||||
}
|
||||
|
||||
public TextLayout (String string, Map attributes, FontRenderContext frc)
|
||||
{
|
||||
AttributedString as = new AttributedString (string, attributes);
|
||||
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
|
||||
peer = tk.getClasspathTextLayoutPeer(as, frc);
|
||||
this( string, new Font( attributes ), frc );
|
||||
}
|
||||
|
||||
public TextLayout (AttributedCharacterIterator text, FontRenderContext frc)
|
||||
throws NotImplementedException
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
/**
|
||||
* Scan the character run for the first strongly directional character,
|
||||
* which in turn defines the base directionality of the whole layout.
|
||||
*/
|
||||
private void getStringProperties()
|
||||
{
|
||||
boolean gotDirection = false;
|
||||
int i = 0;
|
||||
|
||||
leftToRight = true;
|
||||
while( i < string.length() && !gotDirection )
|
||||
switch( Character.getDirectionality( string.charAt( i++ ) ) )
|
||||
{
|
||||
case Character.DIRECTIONALITY_LEFT_TO_RIGHT:
|
||||
case Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING:
|
||||
case Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE:
|
||||
gotDirection = true;
|
||||
break;
|
||||
|
||||
case Character.DIRECTIONALITY_RIGHT_TO_LEFT:
|
||||
case Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC:
|
||||
case Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING:
|
||||
case Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE:
|
||||
leftToRight = false;
|
||||
gotDirection = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// Determine if there's whitespace in the thing.
|
||||
// Ignore trailing chars.
|
||||
i = string.length() - 1;
|
||||
hasWhitespace = false;
|
||||
while( i >= 0 && Character.isWhitespace( string.charAt(i) ) )
|
||||
i--;
|
||||
// Check the remaining chars
|
||||
while( i >= 0 )
|
||||
if( Character.isWhitespace( string.charAt(i--) ) )
|
||||
hasWhitespace = true;
|
||||
}
|
||||
|
||||
protected Object clone ()
|
||||
{
|
||||
try
|
||||
{
|
||||
TextLayout tl = (TextLayout) super.clone ();
|
||||
tl.peer = (ClasspathTextLayoutPeer) this.peer.clone();
|
||||
return tl;
|
||||
}
|
||||
catch (CloneNotSupportedException e)
|
||||
{
|
||||
// This should never occur
|
||||
throw new InternalError ();
|
||||
}
|
||||
return new TextLayout( string, font, frc );
|
||||
}
|
||||
|
||||
|
||||
public void draw (Graphics2D g2, float x, float y)
|
||||
{
|
||||
peer.draw(g2, x, y);
|
||||
{
|
||||
for(int i = 0; i < runs.length; i++)
|
||||
{
|
||||
g2.drawGlyphVector(runs[i], x, y);
|
||||
Rectangle2D r = runs[i].getLogicalBounds();
|
||||
x += r.getWidth();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean equals (Object obj)
|
||||
{
|
||||
if (! (obj instanceof TextLayout))
|
||||
if( !( obj instanceof TextLayout) )
|
||||
return false;
|
||||
|
||||
return equals ((TextLayout) obj);
|
||||
return equals( (TextLayout) obj );
|
||||
}
|
||||
|
||||
public boolean equals (TextLayout tl)
|
||||
{
|
||||
return this.peer.equals(tl.peer);
|
||||
if( runs.length != tl.runs.length )
|
||||
return false;
|
||||
// Compare all glyph vectors.
|
||||
for( int i = 0; i < runs.length; i++ )
|
||||
if( !runs[i].equals( tl.runs[i] ) )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public float getAdvance ()
|
||||
{
|
||||
return peer.getAdvance();
|
||||
float totalAdvance = 0f;
|
||||
for(int i = 0; i < runs.length; i++)
|
||||
totalAdvance += runs[i].getLogicalBounds().getWidth();
|
||||
return totalAdvance;
|
||||
}
|
||||
|
||||
public float getAscent ()
|
||||
{
|
||||
return peer.getAscent();
|
||||
return lm.getAscent();
|
||||
}
|
||||
|
||||
public byte getBaseline ()
|
||||
{
|
||||
return peer.getBaseline();
|
||||
return (byte)lm.getBaselineIndex();
|
||||
}
|
||||
|
||||
public float[] getBaselineOffsets ()
|
||||
{
|
||||
return peer.getBaselineOffsets();
|
||||
return lm.getBaselineOffsets();
|
||||
}
|
||||
|
||||
public Shape getBlackBoxBounds (int firstEndpoint, int secondEndpoint)
|
||||
{
|
||||
return peer.getBlackBoxBounds(firstEndpoint, secondEndpoint);
|
||||
if( firstEndpoint < 0 || secondEndpoint > getCharacterCount() )
|
||||
return new Rectangle2D.Float();
|
||||
|
||||
GeneralPath gp = new GeneralPath();
|
||||
int i = 0; // run index
|
||||
double advance = 0;
|
||||
|
||||
// go to first run
|
||||
while( runIndices[i + 1][1] < firstEndpoint )
|
||||
{
|
||||
advance += runs[i].getLogicalBounds().getWidth();
|
||||
i++;
|
||||
}
|
||||
|
||||
int j = 0; // index into the run.
|
||||
if( runIndices[i][1] - runIndices[i][0] > 1 )
|
||||
{
|
||||
while( runs[i].getGlyphCharIndex( j + 1 ) <
|
||||
(firstEndpoint - runIndices[i][0] ) )j++;
|
||||
}
|
||||
|
||||
gp.append(runs[i].getGlyphVisualBounds( j ), false);
|
||||
boolean keepGoing = true;;
|
||||
|
||||
do
|
||||
{
|
||||
while( j < runs[i].getNumGlyphs() &&
|
||||
runs[i].getGlyphCharIndex( j ) + runIndices[i][0] <
|
||||
secondEndpoint )
|
||||
{
|
||||
Rectangle2D r2 = (runs[i].getGlyphVisualBounds( j )).
|
||||
getBounds2D();
|
||||
Point2D p = runs[i].getGlyphPosition( j );
|
||||
r2.setRect( advance + p.getX(), r2.getY(),
|
||||
r2.getWidth(), r2.getHeight() );
|
||||
gp.append(r2, false);
|
||||
j++;
|
||||
}
|
||||
|
||||
if( j >= runs[i].getNumGlyphs() )
|
||||
{
|
||||
advance += runs[i].getLogicalBounds().getWidth();
|
||||
i++;
|
||||
j = 0;
|
||||
}
|
||||
else
|
||||
keepGoing = false;
|
||||
}
|
||||
while( keepGoing );
|
||||
|
||||
return gp;
|
||||
}
|
||||
|
||||
public Rectangle2D getBounds()
|
||||
{
|
||||
return peer.getBounds();
|
||||
if( boundsCache == null )
|
||||
boundsCache = getOutline(new AffineTransform()).getBounds();
|
||||
return boundsCache;
|
||||
}
|
||||
|
||||
public float[] getCaretInfo (TextHitInfo hit)
|
||||
@ -165,144 +317,274 @@ public final class TextLayout implements Cloneable
|
||||
}
|
||||
|
||||
public float[] getCaretInfo (TextHitInfo hit, Rectangle2D bounds)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return peer.getCaretInfo(hit, bounds);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public Shape getCaretShape (TextHitInfo hit)
|
||||
{
|
||||
return getCaretShape(hit, getBounds());
|
||||
return getCaretShape( hit, getBounds() );
|
||||
}
|
||||
|
||||
public Shape getCaretShape (TextHitInfo hit, Rectangle2D bounds)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return peer.getCaretShape(hit, bounds);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public Shape[] getCaretShapes (int offset)
|
||||
{
|
||||
return getCaretShapes(offset, getBounds());
|
||||
return getCaretShapes( offset, getBounds() );
|
||||
}
|
||||
|
||||
public Shape[] getCaretShapes (int offset, Rectangle2D bounds)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return getCaretShapes(offset, getBounds(), DEFAULT_CARET_POLICY);
|
||||
}
|
||||
|
||||
public Shape[] getCaretShapes (int offset, Rectangle2D bounds,
|
||||
TextLayout.CaretPolicy policy)
|
||||
{
|
||||
return peer.getCaretShapes(offset, bounds, policy);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public int getCharacterCount ()
|
||||
{
|
||||
return peer.getCharacterCount();
|
||||
return string.length();
|
||||
}
|
||||
|
||||
public byte getCharacterLevel (int index)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return peer.getCharacterLevel(index);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public float getDescent ()
|
||||
{
|
||||
return peer.getDescent();
|
||||
return lm.getDescent();
|
||||
}
|
||||
|
||||
public TextLayout getJustifiedLayout (float justificationWidth)
|
||||
{
|
||||
return peer.getJustifiedLayout(justificationWidth);
|
||||
TextLayout newLayout = (TextLayout)clone();
|
||||
|
||||
if( hasWhitespace )
|
||||
newLayout.handleJustify( justificationWidth );
|
||||
|
||||
return newLayout;
|
||||
}
|
||||
|
||||
public float getLeading ()
|
||||
{
|
||||
return peer.getLeading();
|
||||
return lm.getLeading();
|
||||
}
|
||||
|
||||
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint)
|
||||
{
|
||||
return getLogicalHighlightShape (firstEndpoint, secondEndpoint, getBounds());
|
||||
return getLogicalHighlightShape( firstEndpoint, secondEndpoint,
|
||||
getBounds() );
|
||||
}
|
||||
|
||||
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint,
|
||||
Rectangle2D bounds)
|
||||
{
|
||||
return peer.getLogicalHighlightShape(firstEndpoint, secondEndpoint, bounds);
|
||||
if( firstEndpoint < 0 || secondEndpoint > getCharacterCount() )
|
||||
return new Rectangle2D.Float();
|
||||
|
||||
int i = 0; // run index
|
||||
double advance = 0;
|
||||
|
||||
// go to first run
|
||||
if( i > 0 )
|
||||
while( runIndices[i + 1][1] < firstEndpoint )
|
||||
{
|
||||
advance += runs[i].getLogicalBounds().getWidth();
|
||||
i++;
|
||||
}
|
||||
|
||||
int j = 0; // index into the run.
|
||||
if( runIndices[i][1] - runIndices[i][0] > 1 )
|
||||
{
|
||||
while( runs[i].getGlyphCharIndex( j + 1 ) <
|
||||
(firstEndpoint - runIndices[i][0] ) )j++;
|
||||
}
|
||||
|
||||
Rectangle2D r = (runs[i].getGlyphLogicalBounds( j )).getBounds2D();
|
||||
boolean keepGoing = true;;
|
||||
|
||||
do
|
||||
{
|
||||
while( j < runs[i].getNumGlyphs() &&
|
||||
runs[i].getGlyphCharIndex( j ) + runIndices[i][0] <
|
||||
secondEndpoint )
|
||||
{
|
||||
Rectangle2D r2 = (runs[i].getGlyphLogicalBounds( j )).
|
||||
getBounds2D();
|
||||
Point2D p = runs[i].getGlyphPosition( j );
|
||||
r2.setRect( advance + p.getX(), r2.getY(),
|
||||
r2.getWidth(), r2.getHeight() );
|
||||
r = r.createUnion( r2 );
|
||||
j++;
|
||||
}
|
||||
|
||||
if( j >= runs[i].getNumGlyphs() )
|
||||
{
|
||||
advance += runs[i].getLogicalBounds().getWidth();
|
||||
i++;
|
||||
j = 0;
|
||||
}
|
||||
else
|
||||
keepGoing = false;
|
||||
}
|
||||
while( keepGoing );
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
public int[] getLogicalRangesForVisualSelection (TextHitInfo firstEndpoint,
|
||||
TextHitInfo secondEndpoint)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return peer.getLogicalRangesForVisualSelection(firstEndpoint, secondEndpoint);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public TextHitInfo getNextLeftHit (int offset)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return getNextLeftHit(offset, DEFAULT_CARET_POLICY);
|
||||
}
|
||||
|
||||
public TextHitInfo getNextLeftHit (int offset, TextLayout.CaretPolicy policy)
|
||||
{
|
||||
return peer.getNextLeftHit(offset, policy);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public TextHitInfo getNextLeftHit (TextHitInfo hit)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return getNextLeftHit(hit.getCharIndex());
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public TextHitInfo getNextRightHit (int offset)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return getNextRightHit(offset, DEFAULT_CARET_POLICY);
|
||||
}
|
||||
|
||||
public TextHitInfo getNextRightHit (int offset, TextLayout.CaretPolicy policy)
|
||||
{
|
||||
return peer.getNextRightHit(offset, policy);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public TextHitInfo getNextRightHit (TextHitInfo hit)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return getNextRightHit(hit.getCharIndex());
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public Shape getOutline (AffineTransform tx)
|
||||
{
|
||||
return peer.getOutline(tx);
|
||||
float x = 0f;
|
||||
GeneralPath gp = new GeneralPath();
|
||||
for(int i = 0; i < runs.length; i++)
|
||||
{
|
||||
gp.append( runs[i].getOutline( x, 0f ), false );
|
||||
Rectangle2D r = runs[i].getLogicalBounds();
|
||||
x += r.getWidth();
|
||||
}
|
||||
if( tx != null )
|
||||
gp.transform( tx );
|
||||
return gp;
|
||||
}
|
||||
|
||||
public float getVisibleAdvance ()
|
||||
{
|
||||
return peer.getVisibleAdvance();
|
||||
float totalAdvance = 0f;
|
||||
|
||||
if( runs.length <= 0 )
|
||||
return 0f;
|
||||
|
||||
// No trailing whitespace
|
||||
if( !Character.isWhitespace( string.charAt( string.length() -1 ) ) )
|
||||
return getAdvance();
|
||||
|
||||
// Get length of all runs up to the last
|
||||
for(int i = 0; i < runs.length - 1; i++)
|
||||
totalAdvance += runs[i].getLogicalBounds().getWidth();
|
||||
|
||||
int lastRun = runIndices[ runs.length - 1 ][0];
|
||||
int j = string.length() - 1;
|
||||
while( j >= lastRun && Character.isWhitespace( string.charAt( j ) ) ) j--;
|
||||
|
||||
if( j < lastRun )
|
||||
return totalAdvance; // entire last run is whitespace
|
||||
|
||||
int lastNonWSChar = j - lastRun;
|
||||
j = 0;
|
||||
while( runs[ runs.length - 1 ].getGlyphCharIndex( j )
|
||||
<= lastNonWSChar )
|
||||
{
|
||||
totalAdvance += runs[ runs.length - 1 ].getGlyphLogicalBounds( j ).
|
||||
getBounds2D().getWidth();
|
||||
j ++;
|
||||
}
|
||||
|
||||
return totalAdvance;
|
||||
}
|
||||
|
||||
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
|
||||
TextHitInfo secondEndpoint)
|
||||
{
|
||||
return getVisualHighlightShape(firstEndpoint, secondEndpoint, getBounds());
|
||||
return getVisualHighlightShape( firstEndpoint, secondEndpoint,
|
||||
getBounds() );
|
||||
}
|
||||
|
||||
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
|
||||
TextHitInfo secondEndpoint,
|
||||
Rectangle2D bounds)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return peer.getVisualHighlightShape(firstEndpoint, secondEndpoint, bounds);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public TextHitInfo getVisualOtherHit (TextHitInfo hit)
|
||||
throws NotImplementedException
|
||||
{
|
||||
return peer.getVisualOtherHit(hit);
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a protected method of a <code>final</code> class, meaning
|
||||
* it exists only to taunt you.
|
||||
*/
|
||||
protected void handleJustify (float justificationWidth)
|
||||
{
|
||||
peer.handleJustify(justificationWidth);
|
||||
}
|
||||
// We assume that the text has non-trailing whitespace.
|
||||
// First get the change in width to insert into the whitespaces.
|
||||
double deltaW = justificationWidth - getVisibleAdvance();
|
||||
int nglyphs = 0; // # of whitespace chars
|
||||
|
||||
public int hashCode ()
|
||||
{
|
||||
return peer.hashCode();
|
||||
// determine last non-whitespace char.
|
||||
int lastNWS = string.length() - 1;
|
||||
while( Character.isWhitespace( string.charAt( lastNWS ) ) ) lastNWS--;
|
||||
|
||||
// locations of the glyphs.
|
||||
int[] wsglyphs = new int[string.length() * 10];
|
||||
for(int run = 0; run < runs.length; run++ )
|
||||
for(int i = 0; i < runs[run].getNumGlyphs(); i++ )
|
||||
{
|
||||
int cindex = runIndices[run][0] + runs[run].getGlyphCharIndex( i );
|
||||
if( Character.isWhitespace( string.charAt( cindex ) ) )
|
||||
// && cindex < lastNWS )
|
||||
{
|
||||
wsglyphs[ nglyphs * 2 ] = run;
|
||||
wsglyphs[ nglyphs * 2 + 1] = i;
|
||||
nglyphs++;
|
||||
}
|
||||
}
|
||||
|
||||
deltaW = deltaW / nglyphs; // Change in width per whitespace glyph
|
||||
double w = 0;
|
||||
int cws = 0;
|
||||
// Shift all characters
|
||||
for(int run = 0; run < runs.length; run++ )
|
||||
for(int i = 0; i < runs[ run ].getNumGlyphs(); i++ )
|
||||
{
|
||||
if( wsglyphs[ cws * 2 ] == run && wsglyphs[ cws * 2 + 1 ] == i )
|
||||
{
|
||||
cws++; // update 'current whitespace'
|
||||
w += deltaW; // increment the shift
|
||||
}
|
||||
Point2D p = runs[ run ].getGlyphPosition( i );
|
||||
p.setLocation( p.getX() + w, p.getY() );
|
||||
runs[ run ].setGlyphPosition( i, p );
|
||||
}
|
||||
}
|
||||
|
||||
public TextHitInfo hitTestChar (float x, float y)
|
||||
@ -312,21 +594,48 @@ public final class TextLayout implements Cloneable
|
||||
|
||||
public TextHitInfo hitTestChar (float x, float y, Rectangle2D bounds)
|
||||
{
|
||||
return peer.hitTestChar(x, y, bounds);
|
||||
return hitTestChar( x, y, getBounds() );
|
||||
}
|
||||
|
||||
public boolean isLeftToRight ()
|
||||
{
|
||||
return peer.isLeftToRight();
|
||||
return leftToRight;
|
||||
}
|
||||
|
||||
public boolean isVertical ()
|
||||
{
|
||||
return peer.isVertical();
|
||||
return false; // FIXME: How do you create a vertical layout?
|
||||
}
|
||||
|
||||
public int hashCode ()
|
||||
throws NotImplementedException
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
|
||||
public String toString ()
|
||||
{
|
||||
return peer.toString();
|
||||
return "TextLayout [string:"+string+", Font:"+font+" Rendercontext:"+
|
||||
frc+"]";
|
||||
}
|
||||
|
||||
/**
|
||||
* Inner class describing a caret policy
|
||||
*/
|
||||
public static class CaretPolicy
|
||||
{
|
||||
public CaretPolicy()
|
||||
{
|
||||
}
|
||||
|
||||
public TextHitInfo getStrongCaret(TextHitInfo hit1,
|
||||
TextHitInfo hit2,
|
||||
TextLayout layout)
|
||||
throws NotImplementedException
|
||||
{
|
||||
throw new Error ("not implemented");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -414,7 +414,9 @@ public class AffineTransform implements Cloneable, Serializable
|
||||
public static AffineTransform getTranslateInstance(double tx, double ty)
|
||||
{
|
||||
AffineTransform t = new AffineTransform();
|
||||
t.setToTranslation(tx, ty);
|
||||
t.m02 = tx;
|
||||
t.m12 = ty;
|
||||
t.type = (tx == 0 && ty == 0) ? TYPE_UNIFORM_SCALE : TYPE_TRANSLATION;
|
||||
return t;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* BufferedImage.java --
|
||||
Copyright (C) 2000, 2002, 2003, 2004, 2005 Free Software Foundation
|
||||
Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006, Free Software Foundation
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -99,6 +99,13 @@ public class BufferedImage extends Image
|
||||
|
||||
Vector observers;
|
||||
|
||||
/**
|
||||
* Creates a new buffered image.
|
||||
*
|
||||
* @param w the width.
|
||||
* @param h the height.
|
||||
* @param type the image type (see the constants defined by this class).
|
||||
*/
|
||||
public BufferedImage(int w, int h, int type)
|
||||
{
|
||||
ColorModel cm = null;
|
||||
@ -363,11 +370,28 @@ public class BufferedImage extends Image
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the specified property, or
|
||||
* {@link Image#UndefinedProperty} if the property is not defined.
|
||||
*
|
||||
* @param string the property key (<code>null</code> not permitted).
|
||||
*
|
||||
* @return The property value.
|
||||
*
|
||||
* @throws NullPointerException if <code>string</code> is <code>null</code>.
|
||||
*/
|
||||
public Object getProperty(String string)
|
||||
{
|
||||
if (properties == null)
|
||||
return null;
|
||||
return properties.get(string);
|
||||
if (string == null)
|
||||
throw new NullPointerException("The property name cannot be null.");
|
||||
Object result = Image.UndefinedProperty;
|
||||
if (properties != null)
|
||||
{
|
||||
Object v = properties.get(string);
|
||||
if (v != null)
|
||||
result = v;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public Object getProperty(String string, ImageObserver imageobserver)
|
||||
@ -375,10 +399,15 @@ public class BufferedImage extends Image
|
||||
return getProperty(string);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns <code>null</code> always.
|
||||
*
|
||||
* @return <code>null</code> always.
|
||||
*/
|
||||
public String[] getPropertyNames()
|
||||
{
|
||||
// FIXME: implement
|
||||
// This method should always return null, see:
|
||||
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4640609
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,8 @@ public class PixelGrabber implements ImageConsumer
|
||||
* in the grab rectangle will be stored at
|
||||
* <code>pix[(n - y) * scansize + (m - x) + off]</code>.
|
||||
*
|
||||
* @param ip the ImageProducer from which to grab pixels
|
||||
* @param ip the ImageProducer from which to grab pixels. This can
|
||||
* be null.
|
||||
* @param x the x coordinate of the grab rectangle's top-left pixel,
|
||||
* specified relative to the top-left corner of the image produced
|
||||
* by <code>ip</code>
|
||||
@ -131,9 +132,6 @@ public class PixelGrabber implements ImageConsumer
|
||||
public PixelGrabber(ImageProducer ip, int x, int y, int w, int h,
|
||||
int pix[], int off, int scansize)
|
||||
{
|
||||
if (ip == null)
|
||||
throw new NullPointerException("The ImageProducer must not be null.");
|
||||
|
||||
this.ip = ip;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
@ -222,7 +220,6 @@ public class PixelGrabber implements ImageConsumer
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ex.printStackTrace();
|
||||
imageComplete(ImageConsumer.IMAGEABORTED);
|
||||
}
|
||||
}
|
||||
|
@ -644,6 +644,7 @@ public final class Bidi
|
||||
case Character.DIRECTIONALITY_OTHER_NEUTRALS:
|
||||
case Character.DIRECTIONALITY_SEGMENT_SEPARATOR:
|
||||
case Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR:
|
||||
case Character.DIRECTIONALITY_WHITESPACE:
|
||||
if (neutralStart == -1)
|
||||
neutralStart = i;
|
||||
break;
|
||||
@ -657,7 +658,7 @@ public final class Bidi
|
||||
? prevStrong
|
||||
: embeddingDirection);
|
||||
for (int j = neutralStart; j < i; ++j)
|
||||
types[i] = override;
|
||||
types[j] = override;
|
||||
}
|
||||
prevStrong = newStrong;
|
||||
neutralStart = -1;
|
||||
|
@ -2039,19 +2039,10 @@ public abstract class JComponent extends Container implements Serializable
|
||||
continue;
|
||||
|
||||
boolean translated = false;
|
||||
try
|
||||
{
|
||||
g.clipRect(bounds.x, bounds.y, bounds.width, bounds.height);
|
||||
g.translate(bounds.x, bounds.y);
|
||||
translated = true;
|
||||
children[i].paint(g);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (translated)
|
||||
g.translate(-bounds.x, -bounds.y);
|
||||
g.setClip(oldClip);
|
||||
}
|
||||
Graphics g2 = g.create(bounds.x, bounds.y, bounds.width,
|
||||
bounds.height);
|
||||
children[i].paint(g2);
|
||||
g2.dispose();
|
||||
}
|
||||
g.setClip(originalClip);
|
||||
}
|
||||
@ -2183,13 +2174,19 @@ public abstract class JComponent extends Container implements Serializable
|
||||
|
||||
// Paint on the offscreen buffer.
|
||||
Component root = getRoot(this);
|
||||
Image buffer = rm.getOffscreenBuffer(this, root.getWidth(),
|
||||
root.getHeight());
|
||||
Image buffer = rm.getVolatileOffscreenBuffer(this, root.getWidth(),
|
||||
root.getHeight());
|
||||
|
||||
// The volatile offscreen buffer may be null when that's not supported
|
||||
// by the AWT backend. Fall back to normal backbuffer in this case.
|
||||
if (buffer == null)
|
||||
buffer = rm.getOffscreenBuffer(this, root.getWidth(), root.getHeight());
|
||||
|
||||
//Rectangle targetClip = SwingUtilities.convertRectangle(this, r, root);
|
||||
Point translation = SwingUtilities.convertPoint(this, 0, 0, root);
|
||||
Graphics g2 = buffer.getGraphics();
|
||||
g2.translate(translation.x, translation.y);
|
||||
g2.setClip(r.x, r.y, r.width, r.height);
|
||||
clipAndTranslateGraphics(root, this, g2);
|
||||
g2.clipRect(r.x, r.y, r.width, r.height);
|
||||
g2 = getComponentGraphics(g2);
|
||||
isPaintingDoubleBuffered = true;
|
||||
try
|
||||
@ -2208,6 +2205,26 @@ public abstract class JComponent extends Container implements Serializable
|
||||
r.height));
|
||||
}
|
||||
|
||||
/**
|
||||
* Clips and translates the Graphics instance for painting on the double
|
||||
* buffer. This has to be done, so that it reflects the component clip of the
|
||||
* target component.
|
||||
*
|
||||
* @param root the root component (top-level container usually)
|
||||
* @param target the component to be painted
|
||||
* @param g the Graphics instance
|
||||
*/
|
||||
private void clipAndTranslateGraphics(Component root, Component target,
|
||||
Graphics g)
|
||||
{
|
||||
Component parent = target.getParent();
|
||||
if (parent != root)
|
||||
clipAndTranslateGraphics(root, parent, g);
|
||||
|
||||
g.translate(target.getX(), target.getY());
|
||||
g.clipRect(0, 0, target.getWidth(), target.getHeight());
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs normal painting without double buffering.
|
||||
*
|
||||
|
@ -990,10 +990,6 @@ public class JTabbedPane extends JComponent implements Serializable,
|
||||
checkIndex(index, -1, tabs.size());
|
||||
if (index != getSelectedIndex())
|
||||
{
|
||||
if (getSelectedIndex() != -1 && getSelectedComponent() != null)
|
||||
getSelectedComponent().hide();
|
||||
if (index != -1 && getComponentAt(index) != null)
|
||||
getComponentAt(index).show();
|
||||
model.setSelectedIndex(index);
|
||||
}
|
||||
}
|
||||
|
@ -767,10 +767,22 @@ public class RepaintManager
|
||||
public Image getVolatileOffscreenBuffer(Component comp, int proposedWidth,
|
||||
int proposedHeight)
|
||||
{
|
||||
int maxWidth = doubleBufferMaximumSize.width;
|
||||
int maxHeight = doubleBufferMaximumSize.height;
|
||||
return comp.createVolatileImage(Math.min(maxWidth, proposedWidth),
|
||||
Math.min(maxHeight, proposedHeight));
|
||||
Component root = getRoot(comp);
|
||||
Image buffer = (Image) offscreenBuffers.get(root);
|
||||
if (buffer == null
|
||||
|| buffer.getWidth(null) < proposedWidth
|
||||
|| buffer.getHeight(null) < proposedHeight
|
||||
|| !(buffer instanceof VolatileImage))
|
||||
{
|
||||
int width = Math.max(proposedWidth, root.getWidth());
|
||||
width = Math.min(doubleBufferMaximumSize.width, width);
|
||||
int height = Math.max(proposedHeight, root.getHeight());
|
||||
height = Math.min(doubleBufferMaximumSize.height, height);
|
||||
buffer = root.createVolatileImage(width, height);
|
||||
if (buffer != null)
|
||||
offscreenBuffers.put(root, buffer);
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
|
@ -116,6 +116,8 @@ public class BasicArrowButton extends JButton implements SwingConstants
|
||||
this.shadow = shadow;
|
||||
this.darkShadow = darkShadow;
|
||||
this.highlight = highlight;
|
||||
// Mark the button as not closing the popup, we handle this ourselves.
|
||||
putClientProperty(BasicLookAndFeel.DONT_CANCEL_POPUP, Boolean.TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -57,7 +57,8 @@ public class BasicCheckBoxUI extends BasicRadioButtonUI
|
||||
*
|
||||
* @return A new instance of <code>BasicCheckBoxUI</code>.
|
||||
*/
|
||||
public static ComponentUI createUI(JComponent c) {
|
||||
public static ComponentUI createUI(JComponent c)
|
||||
{
|
||||
return new BasicCheckBoxUI();
|
||||
}
|
||||
|
||||
|
@ -75,12 +75,24 @@ public class BasicComboBoxRenderer
|
||||
|
||||
/**
|
||||
* Returns preferredSize of the renderer
|
||||
*
|
||||
*
|
||||
* @return preferredSize of the renderer
|
||||
*/
|
||||
public Dimension getPreferredSize()
|
||||
{
|
||||
return super.getPreferredSize();
|
||||
if (this.getText() != null && ! this.getText().equals(""))
|
||||
return super.getPreferredSize();
|
||||
else
|
||||
{
|
||||
// If the combo box option's text is empty or null, it won't size
|
||||
// properly (ie, it'll be way too short)... so we throw in a dummy
|
||||
// space to trick the superclass's sizing methods.
|
||||
String oldText = this.getText();
|
||||
this.setText(" ");
|
||||
Dimension d = super.getPreferredSize();
|
||||
this.setText(oldText);
|
||||
return d;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -921,8 +921,8 @@ public class BasicComboBoxUI extends ComboBoxUI
|
||||
Object prototype = comboBox.getPrototypeDisplayValue();
|
||||
if (prototype != null)
|
||||
{
|
||||
Component comp = renderer.getListCellRendererComponent
|
||||
(listBox, prototype, -1, false, false);
|
||||
Component comp = renderer.getListCellRendererComponent(listBox,
|
||||
prototype, -1, false, false);
|
||||
currentValuePane.add(comp);
|
||||
comp.setFont(comboBox.getFont());
|
||||
Dimension renderSize = comp.getPreferredSize();
|
||||
@ -938,8 +938,8 @@ public class BasicComboBoxUI extends ComboBoxUI
|
||||
{
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
Component comp = renderer.getListCellRendererComponent
|
||||
(listBox, model.getElementAt(i), -1, false, false);
|
||||
Component comp = renderer.getListCellRendererComponent(listBox,
|
||||
model.getElementAt(i), -1, false, false);
|
||||
currentValuePane.add(comp);
|
||||
comp.setFont(comboBox.getFont());
|
||||
Dimension renderSize = comp.getPreferredSize();
|
||||
|
@ -677,7 +677,7 @@ public class BasicComboPopup extends JPopupMenu implements ComboPopup
|
||||
{
|
||||
Point point = SwingUtilities.convertPoint((Component) e.getSource(),
|
||||
e.getPoint(), list);
|
||||
MouseEvent newEvent= new MouseEvent((Component) e.getSource(),
|
||||
MouseEvent newEvent = new MouseEvent((Component) e.getSource(),
|
||||
e.getID(), e.getWhen(),
|
||||
e.getModifiers(), point.x, point.y,
|
||||
e.getModifiers(),
|
||||
|
@ -699,10 +699,10 @@ public class BasicFileChooserUI extends FileChooserUI
|
||||
String fileDescText;
|
||||
|
||||
/** Is a directory selected? */
|
||||
boolean dirSelected = false;
|
||||
boolean dirSelected;
|
||||
|
||||
/** The current directory. */
|
||||
File currDir = null;
|
||||
File currDir;
|
||||
|
||||
// FIXME: describe what is contained in the bottom panel
|
||||
/** The bottom panel. */
|
||||
|
@ -179,10 +179,10 @@ public class BasicInternalFrameUI extends InternalFrameUI
|
||||
protected final int RESIZE_NONE = 0;
|
||||
|
||||
/** The x offset from the top left corner of the JInternalFrame. */
|
||||
private transient int xOffset = 0;
|
||||
private transient int xOffset;
|
||||
|
||||
/** The y offset from the top left corner of the JInternalFrame. */
|
||||
private transient int yOffset = 0;
|
||||
private transient int yOffset;
|
||||
|
||||
/** The direction that the resize is occuring in. */
|
||||
private transient int direction = -1;
|
||||
@ -314,7 +314,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
|
||||
frame.setCursor(Cursor.getDefaultCursor());
|
||||
showingCursor = Cursor.DEFAULT_CURSOR;
|
||||
}
|
||||
else if (e.getSource()==frame && frame.isResizable())
|
||||
else if (e.getSource() == frame && frame.isResizable())
|
||||
{
|
||||
setCursor(e);
|
||||
}
|
||||
|
@ -79,7 +79,9 @@ import javax.swing.plaf.IconUIResource;
|
||||
import javax.swing.plaf.InsetsUIResource;
|
||||
|
||||
/**
|
||||
* BasicLookAndFeel
|
||||
* A basic implementation of Swing's Look and Feel framework. This can serve
|
||||
* as a base for custom look and feel implementations.
|
||||
*
|
||||
* @author Andrew Selkirk
|
||||
*/
|
||||
public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
@ -126,8 +128,11 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
Component target = ev.getComponent();
|
||||
if (target instanceof Container)
|
||||
target = ((Container) target).findComponentAt(ev.getPoint());
|
||||
if (! m.isComponentPartOfCurrentMenu(target))
|
||||
m.clearSelectedPath();
|
||||
if (m.getSelectedPath().length > 0
|
||||
&& ! m.isComponentPartOfCurrentMenu(target))
|
||||
{
|
||||
m.clearSelectedPath();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -192,11 +197,22 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
|
||||
static final long serialVersionUID = -6096995660290287879L;
|
||||
|
||||
/**
|
||||
* This is a key for a client property that tells the PopupHelper that
|
||||
* it shouldn't close popups when the mouse event target has this
|
||||
* property set. This is used when the component handles popup closing
|
||||
* itself.
|
||||
*/
|
||||
static final String DONT_CANCEL_POPUP = "noCancelPopup";
|
||||
|
||||
/**
|
||||
* Helps closing menu popups when user clicks outside of the menu area.
|
||||
*/
|
||||
private transient PopupHelper popupHelper;
|
||||
|
||||
/**
|
||||
* Maps the audio actions for this l&f.
|
||||
*/
|
||||
private ActionMap audioActionMap;
|
||||
|
||||
/**
|
||||
@ -425,9 +441,15 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
}
|
||||
|
||||
/**
|
||||
* loadResourceBundle
|
||||
* @param defaults TODO
|
||||
* Loads the resource bundle in 'resources/basic' and adds the contained
|
||||
* key/value pairs to the <code>defaults</code> table.
|
||||
*
|
||||
* @param defaults the UI defaults to load the resources into
|
||||
*/
|
||||
// FIXME: This method is not used atm and private and thus could be removed.
|
||||
// However, I consider this method useful for providing localized
|
||||
// descriptions and similar stuff and therefore think that we should use it
|
||||
// instead and provide the resource bundles.
|
||||
private void loadResourceBundle(UIDefaults defaults)
|
||||
{
|
||||
ResourceBundle bundle;
|
||||
@ -446,7 +468,9 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
}
|
||||
|
||||
/**
|
||||
* initComponentDefaults
|
||||
* Populates the <code>defaults</code> table with UI default values for
|
||||
* colors, fonts, keybindings and much more.
|
||||
*
|
||||
* @param defaults the defaults table (<code>null</code> not permitted).
|
||||
*/
|
||||
protected void initComponentDefaults(UIDefaults defaults)
|
||||
@ -509,7 +533,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
return BasicIconFactory.getMenuItemCheckIcon();
|
||||
}
|
||||
},
|
||||
"CheckBox.margin",new InsetsUIResource(2, 2, 2, 2),
|
||||
"CheckBox.margin", new InsetsUIResource(2, 2, 2, 2),
|
||||
"CheckBox.textIconGap", new Integer(4),
|
||||
"CheckBox.textShiftOffset", new Integer(0),
|
||||
"CheckBoxMenuItem.acceleratorFont", new FontUIResource("Dialog",
|
||||
@ -599,7 +623,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
"ctrl F4", "close",
|
||||
"KP_DOWN", "down",
|
||||
"ctrl F10", "maximize",
|
||||
"ctrl alt shift F6","selectPreviousFrame"
|
||||
"ctrl alt shift F6", "selectPreviousFrame"
|
||||
}),
|
||||
"DesktopIcon.border", new BorderUIResource.CompoundBorderUIResource(null,
|
||||
null),
|
||||
@ -1069,14 +1093,14 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
"PAGE_DOWN", "positiveBlockIncrement",
|
||||
"END", "maxScroll",
|
||||
"HOME", "minScroll",
|
||||
"LEFT", "positiveUnitIncrement",
|
||||
"LEFT", "negativeUnitIncrement",
|
||||
"KP_UP", "negativeUnitIncrement",
|
||||
"KP_DOWN", "positiveUnitIncrement",
|
||||
"UP", "negativeUnitIncrement",
|
||||
"RIGHT", "negativeUnitIncrement",
|
||||
"KP_LEFT", "positiveUnitIncrement",
|
||||
"RIGHT", "positiveUnitIncrement",
|
||||
"KP_LEFT", "negativeUnitIncrement",
|
||||
"DOWN", "positiveUnitIncrement",
|
||||
"KP_RIGHT", "negativeUnitIncrement"
|
||||
"KP_RIGHT", "positiveUnitIncrement"
|
||||
}),
|
||||
"ScrollBar.foreground", new ColorUIResource(light),
|
||||
"ScrollBar.maximumThumbSize", new DimensionUIResource(4096, 4096),
|
||||
@ -1091,7 +1115,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
"ScrollPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
|
||||
"PAGE_UP", "scrollUp",
|
||||
"KP_LEFT", "unitScrollLeft",
|
||||
"ctrl PAGE_DOWN","scrollRight",
|
||||
"ctrl PAGE_DOWN", "scrollRight",
|
||||
"PAGE_DOWN", "scrollDown",
|
||||
"KP_RIGHT", "unitScrollRight",
|
||||
"LEFT", "unitScrollLeft",
|
||||
@ -1167,7 +1191,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
"SplitPaneDivider.border", BasicBorders.getSplitPaneDividerBorder(),
|
||||
"SplitPaneDivider.draggingColor", new ColorUIResource(Color.DARK_GRAY),
|
||||
"TabbedPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
|
||||
"ctrl PAGE_DOWN","navigatePageDown",
|
||||
"ctrl PAGE_DOWN", "navigatePageDown",
|
||||
"ctrl PAGE_UP", "navigatePageUp",
|
||||
"ctrl UP", "requestFocus",
|
||||
"ctrl KP_UP", "requestFocus"
|
||||
@ -1220,13 +1244,13 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
"COPY", "copy",
|
||||
"ctrl KP_UP", "selectPreviousRowChangeLead",
|
||||
"PASTE", "paste",
|
||||
"shift PAGE_DOWN","scrollDownExtendSelection",
|
||||
"shift PAGE_DOWN", "scrollDownExtendSelection",
|
||||
"PAGE_DOWN", "scrollDownChangeSelection",
|
||||
"END", "selectLastColumn",
|
||||
"shift END", "selectLastColumnExtendSelection",
|
||||
"HOME", "selectFirstColumn",
|
||||
"ctrl END", "selectLastRow",
|
||||
"ctrl shift END","selectLastRowExtendSelection",
|
||||
"ctrl shift END", "selectLastRowExtendSelection",
|
||||
"LEFT", "selectPreviousColumn",
|
||||
"shift HOME", "selectFirstColumnExtendSelection",
|
||||
"UP", "selectPreviousRow",
|
||||
@ -1234,7 +1258,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||
"ctrl HOME", "selectFirstRow",
|
||||
"shift LEFT", "selectPreviousColumnExtendSelection",
|
||||
"DOWN", "selectNextRow",
|
||||
"ctrl shift HOME","selectFirstRowExtendSelection",
|
||||
"ctrl shift HOME", "selectFirstRowExtendSelection",
|
||||
"shift UP", "selectPreviousRowExtendSelection",
|
||||
"F2", "startEditing",
|
||||
"shift RIGHT", "selectNextColumnExtendSelection",
|
||||
|
@ -239,9 +239,10 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||
{
|
||||
if (e.getPropertyName() == "accelerator")
|
||||
{
|
||||
InputMap map = SwingUtilities.getUIInputMap(menuItem, JComponent.WHEN_IN_FOCUSED_WINDOW);
|
||||
InputMap map = SwingUtilities.getUIInputMap(menuItem,
|
||||
JComponent.WHEN_IN_FOCUSED_WINDOW);
|
||||
if (map != null)
|
||||
map.remove((KeyStroke)e.getOldValue());
|
||||
map.remove((KeyStroke) e.getOldValue());
|
||||
else
|
||||
map = new ComponentInputMapUIResource(menuItem);
|
||||
|
||||
@ -499,7 +500,8 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||
*/
|
||||
public Dimension getPreferredSize(JComponent c)
|
||||
{
|
||||
return getPreferredMenuItemSize(c, checkIcon, arrowIcon, defaultTextIconGap);
|
||||
return getPreferredMenuItemSize(c, checkIcon, arrowIcon,
|
||||
defaultTextIconGap);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -535,8 +537,10 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||
prefix + ".foreground", prefix + ".font");
|
||||
menuItem.setMargin(UIManager.getInsets(prefix + ".margin"));
|
||||
acceleratorFont = UIManager.getFont(prefix + ".acceleratorFont");
|
||||
acceleratorForeground = UIManager.getColor(prefix + ".acceleratorForeground");
|
||||
acceleratorSelectionForeground = UIManager.getColor(prefix + ".acceleratorSelectionForeground");
|
||||
acceleratorForeground = UIManager.getColor(prefix
|
||||
+ ".acceleratorForeground");
|
||||
acceleratorSelectionForeground = UIManager.getColor(prefix
|
||||
+ ".acceleratorSelectionForeground");
|
||||
selectionBackground = UIManager.getColor(prefix + ".selectionBackground");
|
||||
selectionForeground = UIManager.getColor(prefix + ".selectionForeground");
|
||||
acceleratorDelimiter = UIManager.getString(prefix + ".acceleratorDelimiter");
|
||||
@ -551,13 +555,15 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||
*/
|
||||
protected void installKeyboardActions()
|
||||
{
|
||||
InputMap focusedWindowMap = SwingUtilities.getUIInputMap(menuItem, JComponent.WHEN_IN_FOCUSED_WINDOW);
|
||||
InputMap focusedWindowMap = SwingUtilities.getUIInputMap(menuItem,
|
||||
JComponent.WHEN_IN_FOCUSED_WINDOW);
|
||||
if (focusedWindowMap == null)
|
||||
focusedWindowMap = new ComponentInputMapUIResource(menuItem);
|
||||
KeyStroke accelerator = menuItem.getAccelerator();
|
||||
if (accelerator != null)
|
||||
focusedWindowMap.put(accelerator, "doClick");
|
||||
SwingUtilities.replaceUIInputMap(menuItem, JComponent.WHEN_IN_FOCUSED_WINDOW, focusedWindowMap);
|
||||
SwingUtilities.replaceUIInputMap(menuItem,
|
||||
JComponent.WHEN_IN_FOCUSED_WINDOW, focusedWindowMap);
|
||||
|
||||
ActionMap UIActionMap = SwingUtilities.getUIActionMap(menuItem);
|
||||
if (UIActionMap == null)
|
||||
@ -1268,8 +1274,8 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||
Insets insets = m.getInsets();
|
||||
viewRect.x += insets.left;
|
||||
viewRect.y += insets.top;
|
||||
viewRect.width -= (insets.left + insets.right);
|
||||
viewRect.height -= (insets.top + insets.bottom);
|
||||
viewRect.width -= insets.left + insets.right;
|
||||
viewRect.height -= insets.top + insets.bottom;
|
||||
|
||||
// Fetch the fonts.
|
||||
Font font = m.getFont();
|
||||
|
@ -139,8 +139,8 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||
((JDialog) owner).dispose();
|
||||
|
||||
//else we probably have some kind of internal frame.
|
||||
JInternalFrame inf = (JInternalFrame) SwingUtilities.getAncestorOfClass(JInternalFrame.class,
|
||||
optionPane);
|
||||
JInternalFrame inf = (JInternalFrame) SwingUtilities.getAncestorOfClass(
|
||||
JInternalFrame.class, optionPane);
|
||||
if (inf != null)
|
||||
{
|
||||
try
|
||||
@ -433,7 +433,7 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||
public static final int MinimumHeight = 90;
|
||||
|
||||
/** Whether the JOptionPane contains custom components. */
|
||||
protected boolean hasCustomComponents = false;
|
||||
protected boolean hasCustomComponents;
|
||||
|
||||
// The initialFocusComponent seems to always be set to a button (even if
|
||||
// I try to set initialSelectionValue). This is different from what the
|
||||
@ -821,8 +821,8 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||
if (remainder.length() == 0)
|
||||
return;
|
||||
|
||||
// Recursivly call ourselves to burst the remainder of the string,
|
||||
if ((remainder.length() > maxll || remainder.contains("\n")))
|
||||
// Recursively call ourselves to burst the remainder of the string,
|
||||
if (remainder.length() > maxll || remainder.contains("\n"))
|
||||
burstStringInto(c, remainder, maxll);
|
||||
else
|
||||
// Add the remainder to the container and be done.
|
||||
@ -979,7 +979,7 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||
case JOptionPane.DEFAULT_OPTION:
|
||||
return (optionPane.getWantsInput()) ?
|
||||
new Object[] { OK_STRING, CANCEL_STRING } :
|
||||
( optionPane.getMessageType() == JOptionPane.QUESTION_MESSAGE ) ?
|
||||
(optionPane.getMessageType() == JOptionPane.QUESTION_MESSAGE) ?
|
||||
new Object[] { YES_STRING, NO_STRING, CANCEL_STRING } :
|
||||
// ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, PLAIN_MESSAGE
|
||||
new Object[] { OK_STRING };
|
||||
|
@ -384,7 +384,7 @@ public class BasicProgressBarUI extends ProgressBarUI
|
||||
}
|
||||
|
||||
int index = getAnimationIndex();
|
||||
if (animationIndex > (numFrames) / 2)
|
||||
if (animationIndex > numFrames / 2)
|
||||
index = numFrames - getAnimationIndex();
|
||||
|
||||
if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
|
||||
@ -671,7 +671,8 @@ public class BasicProgressBarUI extends ProgressBarUI
|
||||
else
|
||||
{
|
||||
g.setColor(c.getForeground());
|
||||
g.fillRect(vr.x, vr.y + vr.height - amountFull, vr.width, amountFull);
|
||||
g.fillRect(vr.x, vr.y + vr.height - amountFull, vr.width,
|
||||
amountFull);
|
||||
}
|
||||
|
||||
if (progressBar.isStringPainted() && !progressBar.getString().equals(""))
|
||||
|
@ -70,7 +70,8 @@ public class BasicRadioButtonUI extends BasicToggleButtonUI
|
||||
*
|
||||
* @return a new instance of <code>BasicRadioButtonUI</code>
|
||||
*/
|
||||
public static ComponentUI createUI(final JComponent c) {
|
||||
public static ComponentUI createUI(final JComponent c)
|
||||
{
|
||||
return new BasicRadioButtonUI();
|
||||
}
|
||||
|
||||
@ -155,8 +156,8 @@ public class BasicRadioButtonUI extends BasicToggleButtonUI
|
||||
currentIcon = b.getDisabledIcon();
|
||||
|
||||
SwingUtilities.calculateInnerArea(b, vr);
|
||||
String text = SwingUtilities.layoutCompoundLabel
|
||||
(c, g.getFontMetrics(f), b.getText(), currentIcon,
|
||||
String text = SwingUtilities.layoutCompoundLabel(c, g.getFontMetrics(f),
|
||||
b.getText(), currentIcon,
|
||||
b.getVerticalAlignment(), b.getHorizontalAlignment(),
|
||||
b.getVerticalTextPosition(), b.getHorizontalTextPosition(),
|
||||
vr, ir, tr, b.getIconTextGap() + defaultTextShiftOffset);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* BasicScrollBarUI.java --
|
||||
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
Copyright (C) 2004, 2005, 2006, Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@ -38,8 +38,6 @@ exception statement from your version. */
|
||||
|
||||
package javax.swing.plaf.basic;
|
||||
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Container;
|
||||
@ -56,10 +54,14 @@ import java.awt.event.MouseMotionListener;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.ActionMap;
|
||||
import javax.swing.BoundedRangeModel;
|
||||
import javax.swing.InputMap;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JScrollBar;
|
||||
import javax.swing.JSlider;
|
||||
import javax.swing.LookAndFeel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
@ -67,6 +69,7 @@ import javax.swing.Timer;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.plaf.ActionMapUIResource;
|
||||
import javax.swing.plaf.ComponentUI;
|
||||
import javax.swing.plaf.ScrollBarUI;
|
||||
|
||||
@ -397,9 +400,9 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
return false;
|
||||
|
||||
if (direction == POSITIVE_SCROLL)
|
||||
return (value > scrollbar.getValue());
|
||||
return value > scrollbar.getValue();
|
||||
else
|
||||
return (value < scrollbar.getValue());
|
||||
return value < scrollbar.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@ -724,7 +727,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
int orientation = scrollbar.getOrientation();
|
||||
switch (orientation)
|
||||
{
|
||||
case (JScrollBar.HORIZONTAL):
|
||||
case JScrollBar.HORIZONTAL:
|
||||
incrButton = createIncreaseButton(EAST);
|
||||
decrButton = createDecreaseButton(WEST);
|
||||
break;
|
||||
@ -762,14 +765,150 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
}
|
||||
|
||||
/**
|
||||
* This method installs the keyboard actions for the scrollbar.
|
||||
* Installs the input map from the look and feel defaults, and a
|
||||
* corresponding action map. Note the the keyboard bindings will only
|
||||
* work when the {@link JScrollBar} component has the focus, which is rare.
|
||||
*/
|
||||
protected void installKeyboardActions()
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement.
|
||||
InputMap keyMap = getInputMap(
|
||||
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||
SwingUtilities.replaceUIInputMap(scrollbar,
|
||||
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, keyMap);
|
||||
ActionMap map = getActionMap();
|
||||
SwingUtilities.replaceUIActionMap(scrollbar, map);
|
||||
}
|
||||
|
||||
/**
|
||||
* Uninstalls the input map and action map installed by
|
||||
* {@link #installKeyboardActions()}.
|
||||
*/
|
||||
protected void uninstallKeyboardActions()
|
||||
{
|
||||
SwingUtilities.replaceUIActionMap(scrollbar, null);
|
||||
SwingUtilities.replaceUIInputMap(scrollbar,
|
||||
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null);
|
||||
}
|
||||
|
||||
InputMap getInputMap(int condition)
|
||||
{
|
||||
if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
|
||||
return (InputMap) UIManager.get("ScrollBar.focusInputMap");
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the action map for the {@link JScrollBar}. All scroll bars
|
||||
* share a single action map which is created the first time this method is
|
||||
* called, then stored in the UIDefaults table for subsequent access.
|
||||
*
|
||||
* @return The shared action map.
|
||||
*/
|
||||
ActionMap getActionMap()
|
||||
{
|
||||
ActionMap map = (ActionMap) UIManager.get("ScrollBar.actionMap");
|
||||
|
||||
if (map == null) // first time here
|
||||
{
|
||||
map = createActionMap();
|
||||
if (map != null)
|
||||
UIManager.put("ScrollBar.actionMap", map);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the action map shared by all {@link JSlider} instances.
|
||||
* This method is called once by {@link #getActionMap()} when it
|
||||
* finds no action map in the UIDefaults table...after the map is
|
||||
* created, it gets added to the defaults table so that subsequent
|
||||
* calls to {@link #getActionMap()} will return the same shared
|
||||
* instance.
|
||||
*
|
||||
* @return The action map.
|
||||
*/
|
||||
ActionMap createActionMap()
|
||||
{
|
||||
ActionMap map = new ActionMapUIResource();
|
||||
map.put("positiveUnitIncrement",
|
||||
new AbstractAction("positiveUnitIncrement") {
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
JScrollBar sb = (JScrollBar) event.getSource();
|
||||
if (sb.isVisible())
|
||||
{
|
||||
int delta = sb.getUnitIncrement(1);
|
||||
sb.setValue(sb.getValue() + delta);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
map.put("positiveBlockIncrement",
|
||||
new AbstractAction("positiveBlockIncrement") {
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
JScrollBar sb = (JScrollBar) event.getSource();
|
||||
if (sb.isVisible())
|
||||
{
|
||||
int delta = sb.getBlockIncrement(1);
|
||||
sb.setValue(sb.getValue() + delta);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
map.put("negativeUnitIncrement",
|
||||
new AbstractAction("negativeUnitIncrement") {
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
JScrollBar sb = (JScrollBar) event.getSource();
|
||||
if (sb.isVisible())
|
||||
{
|
||||
int delta = sb.getUnitIncrement(-1);
|
||||
sb.setValue(sb.getValue() + delta);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
map.put("negativeBlockIncrement",
|
||||
new AbstractAction("negativeBlockIncrement") {
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
JScrollBar sb = (JScrollBar) event.getSource();
|
||||
if (sb.isVisible())
|
||||
{
|
||||
int delta = sb.getBlockIncrement(-1);
|
||||
sb.setValue(sb.getValue() + delta);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
map.put("minScroll",
|
||||
new AbstractAction("minScroll") {
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
JScrollBar sb = (JScrollBar) event.getSource();
|
||||
if (sb.isVisible())
|
||||
{
|
||||
sb.setValue(sb.getMinimum());
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
map.put("maxScroll",
|
||||
new AbstractAction("maxScroll") {
|
||||
public void actionPerformed(ActionEvent event)
|
||||
{
|
||||
JScrollBar sb = (JScrollBar) event.getSource();
|
||||
if (sb.isVisible())
|
||||
{
|
||||
sb.setValue(sb.getMaximum());
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
return map;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method installs any listeners for the scrollbar. This method also
|
||||
* installs listeners for things such as the JButtons and the timer.
|
||||
@ -806,19 +945,20 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
super.installUI(c);
|
||||
if (c instanceof JScrollBar)
|
||||
{
|
||||
scrollbar = (JScrollBar) c;
|
||||
scrollbar = (JScrollBar) c;
|
||||
|
||||
trackRect = new Rectangle();
|
||||
thumbRect = new Rectangle();
|
||||
trackRect = new Rectangle();
|
||||
thumbRect = new Rectangle();
|
||||
|
||||
scrollTimer = new Timer(300, null);
|
||||
scrollTimer = new Timer(300, null);
|
||||
|
||||
installDefaults();
|
||||
installComponents();
|
||||
configureScrollBarColors();
|
||||
installListeners();
|
||||
installComponents();
|
||||
configureScrollBarColors();
|
||||
installListeners();
|
||||
installKeyboardActions();
|
||||
|
||||
calculatePreferredSize();
|
||||
calculatePreferredSize();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1139,16 +1279,6 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
decrButton = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method uninstalls any keyboard actions this scrollbar acquired
|
||||
* during install.
|
||||
*/
|
||||
protected void uninstallKeyboardActions()
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: implement.
|
||||
}
|
||||
|
||||
/**
|
||||
* This method uninstalls any listeners that were registered during install.
|
||||
*/
|
||||
@ -1186,6 +1316,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
*/
|
||||
public void uninstallUI(JComponent c)
|
||||
{
|
||||
uninstallKeyboardActions();
|
||||
uninstallListeners();
|
||||
uninstallDefaults();
|
||||
uninstallComponents();
|
||||
@ -1226,9 +1357,9 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
// If the length is 0, you shouldn't be able to even see where the thumb is.
|
||||
// This really shouldn't ever happen, but just in case, we'll return the middle.
|
||||
if (len == 0)
|
||||
return ((max - min) / 2);
|
||||
return (max - min) / 2;
|
||||
|
||||
value = ((yPos - trackRect.y) * (max - min) / len + min);
|
||||
value = (yPos - trackRect.y) * (max - min) / len + min;
|
||||
|
||||
// If this isn't a legal value, then we'll have to move to one now.
|
||||
if (value > max)
|
||||
@ -1259,9 +1390,9 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||
// If the length is 0, you shouldn't be able to even see where the slider is.
|
||||
// This really shouldn't ever happen, but just in case, we'll return the middle.
|
||||
if (len == 0)
|
||||
return ((max - min) / 2);
|
||||
return (max - min) / 2;
|
||||
|
||||
value = ((xPos - trackRect.x) * (max - min) / len + min);
|
||||
value = (xPos - trackRect.x) * (max - min) / len + min;
|
||||
|
||||
// If this isn't a legal value, then we'll have to move to one now.
|
||||
if (value > max)
|
||||
|
@ -516,7 +516,7 @@ public class BasicScrollPaneUI extends ScrollPaneUI
|
||||
{
|
||||
map = createActionMap();
|
||||
if (map != null)
|
||||
UIManager.put("Slider.actionMap", map);
|
||||
UIManager.put("ScrollPane.actionMap", map);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -68,7 +68,6 @@ import javax.swing.JComponent;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JSlider;
|
||||
import javax.swing.LookAndFeel;
|
||||
import javax.swing.RepaintManager;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.Timer;
|
||||
import javax.swing.UIManager;
|
||||
@ -483,9 +482,9 @@ public class BasicSliderUI extends SliderUI
|
||||
value = valueForYPosition(currentMouseY);
|
||||
|
||||
if (direction == POSITIVE_SCROLL)
|
||||
return (value > slider.getValue());
|
||||
return value > slider.getValue();
|
||||
else
|
||||
return (value < slider.getValue());
|
||||
return value < slider.getValue();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1152,10 +1151,6 @@ public class BasicSliderUI extends SliderUI
|
||||
Dimension d = getThumbSize();
|
||||
thumbRect.width = d.width;
|
||||
thumbRect.height = d.height;
|
||||
if (slider.getOrientation() == JSlider.HORIZONTAL)
|
||||
thumbRect.y = trackRect.y;
|
||||
else
|
||||
thumbRect.x = trackRect.x;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1189,11 +1184,11 @@ public class BasicSliderUI extends SliderUI
|
||||
if (slider.getOrientation() == JSlider.HORIZONTAL)
|
||||
{
|
||||
thumbRect.x = xPositionForValue(value) - thumbRect.width / 2;
|
||||
thumbRect.y = trackRect.y;
|
||||
thumbRect.y = trackRect.y + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
thumbRect.x = trackRect.x;
|
||||
thumbRect.x = trackRect.x + 1;
|
||||
thumbRect.y = yPositionForValue(value) - thumbRect.height / 2;
|
||||
}
|
||||
}
|
||||
@ -1298,7 +1293,11 @@ public class BasicSliderUI extends SliderUI
|
||||
tickRect.x = trackRect.x;
|
||||
tickRect.y = trackRect.y + trackRect.height;
|
||||
tickRect.width = trackRect.width;
|
||||
tickRect.height = (slider.getPaintTicks() ? getTickLength() : 0);
|
||||
tickRect.height = slider.getPaintTicks() ? getTickLength() : 0;
|
||||
|
||||
// this makes our Mauve tests pass...can't explain it!
|
||||
if (!slider.getPaintTicks())
|
||||
tickRect.y--;
|
||||
|
||||
if (tickRect.y + tickRect.height > contentRect.y + contentRect.height)
|
||||
tickRect.height = contentRect.y + contentRect.height - tickRect.y;
|
||||
@ -1307,33 +1306,55 @@ public class BasicSliderUI extends SliderUI
|
||||
{
|
||||
tickRect.x = trackRect.x + trackRect.width;
|
||||
tickRect.y = trackRect.y;
|
||||
tickRect.width = (slider.getPaintTicks() ? getTickLength() : 0);
|
||||
tickRect.width = slider.getPaintTicks() ? getTickLength() : 0;
|
||||
tickRect.height = trackRect.height;
|
||||
|
||||
// this makes our Mauve tests pass...can't explain it!
|
||||
if (!slider.getPaintTicks())
|
||||
tickRect.x--;
|
||||
|
||||
if (tickRect.x + tickRect.width > contentRect.x + contentRect.width)
|
||||
tickRect.width = contentRect.x + contentRect.width - tickRect.x;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method calculates the size and position of the labelRect. It must
|
||||
* take into account the orientation of the slider.
|
||||
* Calculates the <code>labelRect</code> field, taking into account the
|
||||
* orientation of the slider.
|
||||
*/
|
||||
protected void calculateLabelRect()
|
||||
{
|
||||
if (slider.getOrientation() == JSlider.HORIZONTAL)
|
||||
{
|
||||
labelRect.x = contentRect.x;
|
||||
labelRect.y = tickRect.y + tickRect.height;
|
||||
labelRect.width = contentRect.width;
|
||||
if (slider.getPaintLabels())
|
||||
{
|
||||
labelRect.x = contentRect.x;
|
||||
labelRect.y = tickRect.y + tickRect.height - 1;
|
||||
labelRect.width = contentRect.width;
|
||||
}
|
||||
else
|
||||
{
|
||||
labelRect.x = trackRect.x;
|
||||
labelRect.y = tickRect.y + tickRect.height;
|
||||
labelRect.width = trackRect.width;
|
||||
}
|
||||
labelRect.height = getHeightOfTallestLabel();
|
||||
}
|
||||
else
|
||||
{
|
||||
labelRect.x = tickRect.x + tickRect.width;
|
||||
labelRect.y = contentRect.y;
|
||||
if (slider.getPaintLabels())
|
||||
{
|
||||
labelRect.x = tickRect.x + tickRect.width - 1;
|
||||
labelRect.y = contentRect.y;
|
||||
labelRect.height = contentRect.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
labelRect.x = tickRect.x + tickRect.width;
|
||||
labelRect.y = trackRect.y;
|
||||
labelRect.height = trackRect.height;
|
||||
}
|
||||
labelRect.width = getWidthOfWidestLabel();
|
||||
labelRect.height = contentRect.height;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1644,7 +1665,7 @@ public class BasicSliderUI extends SliderUI
|
||||
int width;
|
||||
int height;
|
||||
|
||||
Point a = new Point(trackRect.x, trackRect.y);
|
||||
Point a = new Point(trackRect.x, trackRect.y + 1);
|
||||
Point b = new Point(a);
|
||||
Point c = new Point(a);
|
||||
Point d = new Point(a);
|
||||
@ -2226,12 +2247,12 @@ public class BasicSliderUI extends SliderUI
|
||||
// is. This really shouldn't ever happen, but just in case, we'll return
|
||||
// the middle.
|
||||
if (len == 0)
|
||||
return ((max - min) / 2);
|
||||
return (max - min) / 2;
|
||||
|
||||
if (! drawInverted())
|
||||
value = ((len - (yPos - trackRect.y)) * (max - min) / len + min);
|
||||
value = (len - (yPos - trackRect.y)) * (max - min) / len + min;
|
||||
else
|
||||
value = ((yPos - trackRect.y) * (max - min) / len + min);
|
||||
value = (yPos - trackRect.y) * (max - min) / len + min;
|
||||
|
||||
// If this isn't a legal value, then we'll have to move to one now.
|
||||
if (value > max)
|
||||
@ -2262,12 +2283,12 @@ public class BasicSliderUI extends SliderUI
|
||||
// is. This really shouldn't ever happen, but just in case, we'll return
|
||||
// the middle.
|
||||
if (len == 0)
|
||||
return ((max - min) / 2);
|
||||
return (max - min) / 2;
|
||||
|
||||
if (! drawInverted())
|
||||
value = ((xPos - trackRect.x) * (max - min) / len + min);
|
||||
value = (xPos - trackRect.x) * (max - min) / len + min;
|
||||
else
|
||||
value = ((len - (xPos - trackRect.x)) * (max - min) / len + min);
|
||||
value = (len - (xPos - trackRect.x)) * (max - min) / len + min;
|
||||
|
||||
// If this isn't a legal value, then we'll have to move to one now.
|
||||
if (value > max)
|
||||
|
@ -530,6 +530,20 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||
|
||||
int tabPlacement = tabPane.getTabPlacement();
|
||||
Insets insets = tabPane.getInsets();
|
||||
|
||||
int selectedIndex = tabPane.getSelectedIndex();
|
||||
|
||||
Component selectedComponent = null;
|
||||
if (selectedIndex >= 0)
|
||||
selectedComponent = tabPane.getComponentAt(selectedIndex);
|
||||
// The RI doesn't seem to change the component if the new selected
|
||||
// component == null. This is probably so that applications can add
|
||||
// one single component for every tab.
|
||||
if (selectedComponent != null)
|
||||
{
|
||||
setVisibleComponent(selectedComponent);
|
||||
}
|
||||
|
||||
int childCount = tabPane.getComponentCount();
|
||||
if (childCount > 0)
|
||||
{
|
||||
@ -1410,6 +1424,11 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||
*/
|
||||
private boolean tabsOpaque;
|
||||
|
||||
/**
|
||||
* The currently visible component.
|
||||
*/
|
||||
private Component visibleComponent;
|
||||
|
||||
/**
|
||||
* Creates a new BasicTabbedPaneUI object.
|
||||
*/
|
||||
@ -2479,7 +2498,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||
*/
|
||||
protected Component getVisibleComponent()
|
||||
{
|
||||
return tabPane.getComponentAt(tabPane.getSelectedIndex());
|
||||
return visibleComponent;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2489,8 +2508,19 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||
*/
|
||||
protected void setVisibleComponent(Component component)
|
||||
{
|
||||
component.setVisible(true);
|
||||
tabPane.setSelectedComponent(component);
|
||||
// Make old component invisible.
|
||||
if (visibleComponent != null && visibleComponent != component
|
||||
&& visibleComponent.getParent() == tabPane)
|
||||
{
|
||||
visibleComponent.setVisible(false);
|
||||
}
|
||||
|
||||
// Make new component visible.
|
||||
if (component != null && ! component.isVisible())
|
||||
{
|
||||
component.setVisible(true);
|
||||
}
|
||||
visibleComponent = component;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -249,11 +249,11 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||
|
||||
originalCursor = header.getCursor();
|
||||
if (p < x)
|
||||
header.setCursor(Cursor.getPredefinedCursor
|
||||
(Cursor.W_RESIZE_CURSOR));
|
||||
header.setCursor(Cursor.getPredefinedCursor(
|
||||
Cursor.W_RESIZE_CURSOR));
|
||||
else
|
||||
header.setCursor(Cursor.getPredefinedCursor
|
||||
(Cursor.E_RESIZE_CURSOR));
|
||||
header.setCursor(Cursor.getPredefinedCursor(
|
||||
Cursor.E_RESIZE_CURSOR));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -368,7 +368,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||
int x = e.getX();
|
||||
int p = 0;
|
||||
|
||||
int col = model.getColumnCount()-1;
|
||||
int col = model.getColumnCount() - 1;
|
||||
int n = model.getColumnCount();
|
||||
|
||||
// This loop does not find the column if the mouse if out of the
|
||||
@ -504,7 +504,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||
comp.setBackground(header.getBackground());
|
||||
comp.setForeground(header.getForeground());
|
||||
if (comp instanceof JComponent)
|
||||
((JComponent)comp).setBorder(cellBorder);
|
||||
((JComponent) comp).setBorder(cellBorder);
|
||||
rendererPane.paintComponent(gfx, comp, header, bounds.x, bounds.y,
|
||||
bounds.width, bounds.height);
|
||||
}
|
||||
@ -513,11 +513,11 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||
// This displays a running rectangle that is much simplier than the total
|
||||
// animation, as it is seen in Sun's application.
|
||||
// TODO animate the collumn dragging like in Sun's jre.
|
||||
if (draggingHeaderRect!=null)
|
||||
if (draggingHeaderRect != null)
|
||||
{
|
||||
gfx.setColor(header.getForeground());
|
||||
gfx.drawRect(draggingHeaderRect.x, draggingHeaderRect.y+2,
|
||||
draggingHeaderRect.width-1, draggingHeaderRect.height-6);
|
||||
gfx.drawRect(draggingHeaderRect.x, draggingHeaderRect.y + 2,
|
||||
draggingHeaderRect.width - 1, draggingHeaderRect.height - 6);
|
||||
}
|
||||
}
|
||||
|
||||
@ -533,7 +533,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||
TableColumnModel cmod = header.getColumnModel();
|
||||
TableCellRenderer defaultRend = header.getDefaultRenderer();
|
||||
int ncols = cmod.getColumnCount();
|
||||
Dimension ret = new Dimension(0,0);
|
||||
Dimension ret = new Dimension(0, 0);
|
||||
int spacing = 0;
|
||||
|
||||
if (header.getTable() != null
|
||||
@ -556,7 +556,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||
comp.setBackground(header.getBackground());
|
||||
comp.setForeground(header.getForeground());
|
||||
if (comp instanceof JComponent)
|
||||
((JComponent)comp).setBorder(cellBorder);
|
||||
((JComponent) comp).setBorder(cellBorder);
|
||||
|
||||
Dimension d = comp.getPreferredSize();
|
||||
ret.width += spacing;
|
||||
|
@ -269,8 +269,8 @@ public class BasicTableUI extends TableUI
|
||||
begin = new Point(e.getX(), e.getY());
|
||||
curr = new Point(e.getX(), e.getY());
|
||||
//if control is pressed and the cell is already selected, deselect it
|
||||
if (e.isControlDown() && table.
|
||||
isCellSelected(table.rowAtPoint(begin),table.columnAtPoint(begin)))
|
||||
if (e.isControlDown() && table.isCellSelected(
|
||||
table.rowAtPoint(begin), table.columnAtPoint(begin)))
|
||||
{
|
||||
table.getSelectionModel().
|
||||
removeSelectionInterval(table.rowAtPoint(begin),
|
||||
@ -467,22 +467,21 @@ public class BasicTableUI extends TableUI
|
||||
// Register key bindings in the UI InputMap-ActionMap pair
|
||||
for (int i = 0; i < keys.length; i++)
|
||||
{
|
||||
KeyStroke stroke = (KeyStroke)keys[i];
|
||||
KeyStroke stroke = (KeyStroke) keys[i];
|
||||
String actionString = (String) ancestorMap.get(stroke);
|
||||
|
||||
parentInputMap.put(KeyStroke.getKeyStroke(stroke.getKeyCode(),
|
||||
stroke.getModifiers()),
|
||||
actionString);
|
||||
|
||||
parentActionMap.put (actionString,
|
||||
new ActionListenerProxy (action, actionString));
|
||||
parentActionMap.put(actionString,
|
||||
new ActionListenerProxy(action, actionString));
|
||||
|
||||
}
|
||||
// Set the UI InputMap-ActionMap pair to be the parents of the
|
||||
// JTable's InputMap-ActionMap pair
|
||||
parentInputMap.setParent
|
||||
(table.getInputMap
|
||||
(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).getParent());
|
||||
parentInputMap.setParent(table.getInputMap(
|
||||
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).getParent());
|
||||
parentActionMap.setParent(table.getActionMap().getParent());
|
||||
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
|
||||
setParent(parentInputMap);
|
||||
@ -532,10 +531,12 @@ public class BasicTableUI extends TableUI
|
||||
*
|
||||
* @param e the ActionEvent that caused this action.
|
||||
*/
|
||||
public void actionPerformed (ActionEvent e)
|
||||
public void actionPerformed(ActionEvent e)
|
||||
{
|
||||
DefaultListSelectionModel rowModel = (DefaultListSelectionModel) table.getSelectionModel();
|
||||
DefaultListSelectionModel colModel = (DefaultListSelectionModel) table.getColumnModel().getSelectionModel();
|
||||
DefaultListSelectionModel rowModel
|
||||
= (DefaultListSelectionModel) table.getSelectionModel();
|
||||
DefaultListSelectionModel colModel
|
||||
= (DefaultListSelectionModel) table.getColumnModel().getSelectionModel();
|
||||
|
||||
int rowLead = rowModel.getLeadSelectionIndex();
|
||||
int rowMax = table.getModel().getRowCount() - 1;
|
||||
@ -556,7 +557,7 @@ public class BasicTableUI extends TableUI
|
||||
else if (command.equals("startEditing"))
|
||||
{
|
||||
if (table.isCellEditable(rowLead, colLead))
|
||||
table.editCellAt(rowLead,colLead);
|
||||
table.editCellAt(rowLead, colLead);
|
||||
}
|
||||
else if (command.equals("selectFirstRowExtendSelection"))
|
||||
{
|
||||
@ -572,7 +573,7 @@ public class BasicTableUI extends TableUI
|
||||
}
|
||||
else if (command.equals("selectLastRow"))
|
||||
{
|
||||
rowModel.setSelectionInterval(rowMax,rowMax);
|
||||
rowModel.setSelectionInterval(rowMax, rowMax);
|
||||
}
|
||||
else if (command.equals("selectNextRowExtendSelection"))
|
||||
{
|
||||
@ -580,7 +581,7 @@ public class BasicTableUI extends TableUI
|
||||
}
|
||||
else if (command.equals("selectFirstRow"))
|
||||
{
|
||||
rowModel.setSelectionInterval(0,0);
|
||||
rowModel.setSelectionInterval(0, 0);
|
||||
}
|
||||
else if (command.equals("selectNextColumnExtendSelection"))
|
||||
{
|
||||
@ -603,9 +604,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (rowLead == getFirstVisibleRowIndex())
|
||||
target = Math.max
|
||||
(0, rowLead - (getLastVisibleRowIndex() -
|
||||
getFirstVisibleRowIndex() + 1));
|
||||
target = Math.max(0, rowLead - (getLastVisibleRowIndex()
|
||||
- getFirstVisibleRowIndex() + 1));
|
||||
else
|
||||
target = getFirstVisibleRowIndex();
|
||||
|
||||
@ -621,9 +621,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (colLead == getLastVisibleColumnIndex())
|
||||
target = Math.min
|
||||
(colMax, colLead + (getLastVisibleColumnIndex() -
|
||||
getFirstVisibleColumnIndex() + 1));
|
||||
target = Math.min(colMax, colLead + (getLastVisibleColumnIndex()
|
||||
- getFirstVisibleColumnIndex() + 1));
|
||||
else
|
||||
target = getLastVisibleColumnIndex();
|
||||
|
||||
@ -639,9 +638,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (colLead == getFirstVisibleColumnIndex())
|
||||
target = Math.max
|
||||
(0, colLead - (getLastVisibleColumnIndex() -
|
||||
getFirstVisibleColumnIndex() + 1));
|
||||
target = Math.max(0, colLead - (getLastVisibleColumnIndex()
|
||||
- getFirstVisibleColumnIndex() + 1));
|
||||
else
|
||||
target = getFirstVisibleColumnIndex();
|
||||
|
||||
@ -701,12 +699,10 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
if (command.indexOf("Column") != -1)
|
||||
advanceSingleSelection(colModel, colMax, rowModel, rowMax,
|
||||
(command.equals
|
||||
("selectPreviousColumnCell")));
|
||||
command.equals("selectPreviousColumnCell"));
|
||||
else
|
||||
advanceSingleSelection(rowModel, rowMax, colModel, colMax,
|
||||
(command.equals
|
||||
("selectPreviousRowCell")));
|
||||
command.equals("selectPreviousRowCell"));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -728,15 +724,13 @@ public class BasicTableUI extends TableUI
|
||||
// cell and wrap at the edges of the selection.
|
||||
if (command.indexOf("Column") != -1)
|
||||
advanceMultipleSelection(colModel, colMinSelected, colMaxSelected,
|
||||
rowModel, rowMinSelected, rowMaxSelected,
|
||||
(command.equals
|
||||
("selectPreviousColumnCell")), true);
|
||||
rowModel, rowMinSelected, rowMaxSelected,
|
||||
command.equals("selectPreviousColumnCell"), true);
|
||||
|
||||
else
|
||||
advanceMultipleSelection(rowModel, rowMinSelected, rowMaxSelected,
|
||||
colModel, colMinSelected, colMaxSelected,
|
||||
(command.equals
|
||||
("selectPreviousRowCell")), false);
|
||||
colModel, colMinSelected, colMaxSelected,
|
||||
command.equals("selectPreviousRowCell"), false);
|
||||
}
|
||||
else if (command.equals("selectNextColumn"))
|
||||
{
|
||||
@ -747,9 +741,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (colLead == getFirstVisibleColumnIndex())
|
||||
target = Math.max
|
||||
(0, colLead - (getLastVisibleColumnIndex() -
|
||||
getFirstVisibleColumnIndex() + 1));
|
||||
target = Math.max(0, colLead - (getLastVisibleColumnIndex()
|
||||
- getFirstVisibleColumnIndex() + 1));
|
||||
else
|
||||
target = getFirstVisibleColumnIndex();
|
||||
|
||||
@ -760,9 +753,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (rowLead == getLastVisibleRowIndex())
|
||||
target = Math.min
|
||||
(rowMax, rowLead + (getLastVisibleRowIndex() -
|
||||
getFirstVisibleRowIndex() + 1));
|
||||
target = Math.min(rowMax, rowLead + (getLastVisibleRowIndex()
|
||||
- getFirstVisibleRowIndex() + 1));
|
||||
else
|
||||
target = getLastVisibleRowIndex();
|
||||
|
||||
@ -773,9 +765,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (colLead == getLastVisibleColumnIndex())
|
||||
target = Math.min
|
||||
(colMax, colLead + (getLastVisibleColumnIndex() -
|
||||
getFirstVisibleColumnIndex() + 1));
|
||||
target = Math.min(colMax, colLead + (getLastVisibleColumnIndex()
|
||||
- getFirstVisibleColumnIndex() + 1));
|
||||
else
|
||||
target = getLastVisibleColumnIndex();
|
||||
|
||||
@ -795,9 +786,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (rowLead == getLastVisibleRowIndex())
|
||||
target = Math.min
|
||||
(rowMax, rowLead + (getLastVisibleRowIndex() -
|
||||
getFirstVisibleRowIndex() + 1));
|
||||
target = Math.min(rowMax, rowLead + (getLastVisibleRowIndex()
|
||||
- getFirstVisibleRowIndex() + 1));
|
||||
else
|
||||
target = getLastVisibleRowIndex();
|
||||
|
||||
@ -808,9 +798,8 @@ public class BasicTableUI extends TableUI
|
||||
{
|
||||
int target;
|
||||
if (rowLead == getFirstVisibleRowIndex())
|
||||
target = Math.max
|
||||
(0, rowLead - (getLastVisibleRowIndex() -
|
||||
getFirstVisibleRowIndex() + 1));
|
||||
target = Math.max(0, rowLead - (getLastVisibleRowIndex()
|
||||
- getFirstVisibleRowIndex() + 1));
|
||||
else
|
||||
target = getFirstVisibleRowIndex();
|
||||
|
||||
@ -819,34 +808,37 @@ public class BasicTableUI extends TableUI
|
||||
}
|
||||
else if (command.equals("selectNextRowChangeLead"))
|
||||
{
|
||||
if (rowModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
if (rowModel.getSelectionMode()
|
||||
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
{
|
||||
// just "selectNextRow"
|
||||
rowModel.setSelectionInterval(Math.min(rowLead + 1, rowMax),
|
||||
Math.min(rowLead + 1, rowMax));
|
||||
colModel.setSelectionInterval(colLead,colLead);
|
||||
colModel.setSelectionInterval(colLead, colLead);
|
||||
}
|
||||
else
|
||||
rowModel.moveLeadSelectionIndex(Math.min(rowLead + 1, rowMax));
|
||||
}
|
||||
else if (command.equals("selectPreviousRowChangeLead"))
|
||||
{
|
||||
if (rowModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
if (rowModel.getSelectionMode()
|
||||
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
{
|
||||
// just selectPreviousRow
|
||||
rowModel.setSelectionInterval(Math.max(rowLead - 1, 0),
|
||||
Math.min(rowLead -1, 0));
|
||||
colModel.setSelectionInterval(colLead,colLead);
|
||||
Math.min(rowLead - 1, 0));
|
||||
colModel.setSelectionInterval(colLead, colLead);
|
||||
}
|
||||
else
|
||||
rowModel.moveLeadSelectionIndex(Math.max(rowLead - 1, 0));
|
||||
}
|
||||
else if (command.equals("selectNextColumnChangeLead"))
|
||||
{
|
||||
if (colModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
if (colModel.getSelectionMode()
|
||||
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
{
|
||||
// just selectNextColumn
|
||||
rowModel.setSelectionInterval(rowLead,rowLead);
|
||||
rowModel.setSelectionInterval(rowLead, rowLead);
|
||||
colModel.setSelectionInterval(Math.min(colLead + 1, colMax),
|
||||
Math.min(colLead + 1, colMax));
|
||||
}
|
||||
@ -855,10 +847,11 @@ public class BasicTableUI extends TableUI
|
||||
}
|
||||
else if (command.equals("selectPreviousColumnChangeLead"))
|
||||
{
|
||||
if (colModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
if (colModel.getSelectionMode()
|
||||
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||
{
|
||||
// just selectPreviousColumn
|
||||
rowModel.setSelectionInterval(rowLead,rowLead);
|
||||
rowModel.setSelectionInterval(rowLead, rowLead);
|
||||
colModel.setSelectionInterval(Math.max(colLead - 1, 0),
|
||||
Math.max(colLead - 1, 0));
|
||||
|
||||
@ -924,9 +917,9 @@ public class BasicTableUI extends TableUI
|
||||
&& command != "addToSelection")
|
||||
table.editingStopped(new ChangeEvent("update"));
|
||||
|
||||
table.scrollRectToVisible
|
||||
(table.getCellRect(rowModel.getLeadSelectionIndex(),
|
||||
colModel.getLeadSelectionIndex(), false));
|
||||
table.scrollRectToVisible(table.getCellRect(
|
||||
rowModel.getLeadSelectionIndex(), colModel.getLeadSelectionIndex(),
|
||||
false));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1010,13 +1003,13 @@ public class BasicTableUI extends TableUI
|
||||
* @param reverse true if shift was held for the event
|
||||
* @param eventIsTab true if TAB was pressed, false if ENTER pressed
|
||||
*/
|
||||
void advanceMultipleSelection (ListSelectionModel firstModel, int firstMin,
|
||||
int firstMax, ListSelectionModel secondModel,
|
||||
int secondMin, int secondMax, boolean reverse,
|
||||
boolean eventIsTab)
|
||||
void advanceMultipleSelection(ListSelectionModel firstModel, int firstMin,
|
||||
int firstMax, ListSelectionModel secondModel,
|
||||
int secondMin, int secondMax, boolean reverse,
|
||||
boolean eventIsTab)
|
||||
{
|
||||
// If eventIsTab, all the "firsts" correspond to columns, otherwise, to rows
|
||||
// "seconds" correspond to the opposite
|
||||
// If eventIsTab, all the "firsts" correspond to columns, otherwise, to
|
||||
// rows "seconds" correspond to the opposite
|
||||
int firstLead = firstModel.getLeadSelectionIndex();
|
||||
int secondLead = secondModel.getLeadSelectionIndex();
|
||||
int numFirsts = eventIsTab ?
|
||||
@ -1115,9 +1108,9 @@ public class BasicTableUI extends TableUI
|
||||
* @param reverse true if SHIFT was pressed for the event
|
||||
*/
|
||||
|
||||
void advanceSingleSelection (ListSelectionModel firstModel, int firstMax,
|
||||
ListSelectionModel secondModel, int secondMax,
|
||||
boolean reverse)
|
||||
void advanceSingleSelection(ListSelectionModel firstModel, int firstMax,
|
||||
ListSelectionModel secondModel, int secondMax,
|
||||
boolean reverse)
|
||||
{
|
||||
// for TABs, "first" corresponds to columns and "seconds" to rows.
|
||||
// the opposite is true for ENTERs
|
||||
@ -1136,8 +1129,8 @@ public class BasicTableUI extends TableUI
|
||||
|
||||
// do we have to wrap the "seconds"?
|
||||
if (reverse && (firstLead == 0) || !reverse && (firstLead == firstMax))
|
||||
secondModel.setSelectionInterval((secondLead + 1)%(secondMax + 1),
|
||||
(secondLead + 1)%(secondMax + 1));
|
||||
secondModel.setSelectionInterval((secondLead + 1) % (secondMax + 1),
|
||||
(secondLead + 1) % (secondMax + 1));
|
||||
// if not, just reselect the current lead
|
||||
else
|
||||
secondModel.setSelectionInterval(secondLead, secondLead);
|
||||
@ -1152,8 +1145,8 @@ public class BasicTableUI extends TableUI
|
||||
firstLead -= 2;
|
||||
}
|
||||
// select the next "first"
|
||||
firstModel.setSelectionInterval ((firstLead + 1)%(firstMax + 1),
|
||||
(firstLead + 1)%(firstMax + 1));
|
||||
firstModel.setSelectionInterval((firstLead + 1) % (firstMax + 1),
|
||||
(firstLead + 1) % (firstMax + 1));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1212,7 +1205,7 @@ public class BasicTableUI extends TableUI
|
||||
|
||||
public void installUI(JComponent comp)
|
||||
{
|
||||
table = (JTable)comp;
|
||||
table = (JTable) comp;
|
||||
rendererPane = new CellRendererPane();
|
||||
table.add(rendererPane);
|
||||
|
||||
@ -1282,8 +1275,8 @@ public class BasicTableUI extends TableUI
|
||||
int rowMargin = table.getRowMargin();
|
||||
|
||||
TableColumnModel cmodel = table.getColumnModel();
|
||||
int [] widths = new int[cn+1];
|
||||
for (int i = c0; i <=cn ; i++)
|
||||
int[] widths = new int[cn + 1];
|
||||
for (int i = c0; i <= cn; i++)
|
||||
{
|
||||
widths[i] = cmodel.getColumn(i).getWidth() - columnMargin;
|
||||
}
|
||||
|
@ -603,10 +603,12 @@ public abstract class BasicTextUI extends TextUI
|
||||
// Fetch the colors for enabled/disabled text components.
|
||||
background = UIManager.getColor(prefix + ".background");
|
||||
inactiveBackground = UIManager.getColor(prefix + ".inactiveBackground");
|
||||
textComponent.setDisabledTextColor
|
||||
(UIManager.getColor(prefix + ".inactiveForeground"));
|
||||
textComponent.setSelectedTextColor(UIManager.getColor(prefix + ".selectionForeground"));
|
||||
textComponent.setSelectionColor(UIManager.getColor(prefix + ".selectionBackground"));
|
||||
textComponent.setDisabledTextColor(UIManager.getColor(prefix
|
||||
+ ".inactiveForeground"));
|
||||
textComponent.setSelectedTextColor(UIManager.getColor(prefix
|
||||
+ ".selectionForeground"));
|
||||
textComponent.setSelectionColor(UIManager.getColor(prefix
|
||||
+ ".selectionBackground"));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -639,7 +641,8 @@ public abstract class BasicTextUI extends TextUI
|
||||
Clipboard cb = Toolkit.getDefaultToolkit().getSystemSelection();
|
||||
if (cb != null)
|
||||
{
|
||||
StringSelection selection = new StringSelection(textComponent.getSelectedText());
|
||||
StringSelection selection = new StringSelection(
|
||||
textComponent.getSelectedText());
|
||||
cb.setContents(selection, selection);
|
||||
}
|
||||
}
|
||||
@ -853,7 +856,8 @@ public abstract class BasicTextUI extends TextUI
|
||||
*/
|
||||
protected void uninstallKeyboardActions()
|
||||
{
|
||||
SwingUtilities.replaceUIInputMap(textComponent, JComponent.WHEN_FOCUSED, null);
|
||||
SwingUtilities.replaceUIInputMap(textComponent, JComponent.WHEN_FOCUSED,
|
||||
null);
|
||||
SwingUtilities.replaceUIActionMap(textComponent, null);
|
||||
}
|
||||
|
||||
@ -1114,13 +1118,14 @@ public abstract class BasicTextUI extends TextUI
|
||||
&& Utilities.getRowStart(t, nextPosBelow) != p1RowStart)
|
||||
{
|
||||
posBelow = nextPosBelow;
|
||||
nextPosBelow = Utilities.getPositionBelow(t, posBelow, l1.x);
|
||||
nextPosBelow = Utilities.getPositionBelow(t, posBelow,
|
||||
l1.x);
|
||||
|
||||
if (posBelow == nextPosBelow)
|
||||
break;
|
||||
}
|
||||
// Now posBelow is an offset on the last line which has to be damaged
|
||||
// completely. (newPosBelow is on the same line as p1)
|
||||
// Now posBelow is an offset on the last line which has to be
|
||||
// damaged completely. (newPosBelow is on the same line as p1)
|
||||
|
||||
// Retrieve the rectangle of posBelow and use its y and height
|
||||
// value to calculate the final height of the multiple line
|
||||
|
@ -417,8 +417,8 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants
|
||||
int w = 0;
|
||||
int h = 0;
|
||||
|
||||
boolean tmp = ((loc == SwingConstants.NORTH)
|
||||
|| (loc == SwingConstants.SOUTH) || (loc == -1));
|
||||
boolean tmp = (loc == SwingConstants.NORTH)
|
||||
|| (loc == SwingConstants.SOUTH) || (loc == -1);
|
||||
|
||||
cachedOrientation = toolBar.getOrientation();
|
||||
cachedBounds = toolBar.getSize();
|
||||
@ -1084,7 +1084,8 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants
|
||||
isDragging = true;
|
||||
|
||||
if (dragWindow != null)
|
||||
dragWindow.setOffset(new Point(cachedBounds.width/2, cachedBounds.height/2));
|
||||
dragWindow.setOffset(new Point(cachedBounds.width / 2,
|
||||
cachedBounds.height / 2));
|
||||
|
||||
dragTo(e.getPoint(), origin);
|
||||
}
|
||||
|
@ -248,7 +248,7 @@ public class BasicTreeUI
|
||||
int gap = 4;
|
||||
|
||||
/** The max height of the nodes in the tree. */
|
||||
int maxHeight = 0;
|
||||
int maxHeight;
|
||||
|
||||
/** The hash color. */
|
||||
Color hashColor;
|
||||
@ -1129,7 +1129,7 @@ public class BasicTreeUI
|
||||
{
|
||||
Enumeration expanded = tree.getExpandedDescendants(path);
|
||||
while (expanded.hasMoreElements())
|
||||
treeState.setExpandedState(((TreePath) expanded.nextElement()), true);
|
||||
treeState.setExpandedState((TreePath) expanded.nextElement(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1140,7 +1140,7 @@ public class BasicTreeUI
|
||||
*/
|
||||
protected TreePath getLastChildPath(TreePath parent)
|
||||
{
|
||||
return ((TreePath) parent.getLastPathComponent());
|
||||
return (TreePath) parent.getLastPathComponent();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1295,21 +1295,21 @@ public class BasicTreeUI
|
||||
ActionMapUIResource am = new ActionMapUIResource();
|
||||
Action action;
|
||||
|
||||
action= new TreeAction();
|
||||
action = new TreeAction();
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
|
||||
// TreeHomeAction.
|
||||
action= new TreeHomeAction(-1, "selectFirst");
|
||||
action = new TreeHomeAction(-1, "selectFirst");
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
action= new TreeHomeAction(-1, "selectFirstChangeLead");
|
||||
action = new TreeHomeAction(-1, "selectFirstChangeLead");
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
action= new TreeHomeAction(-1, "selectFirstExtendSelection");
|
||||
action = new TreeHomeAction(-1, "selectFirstExtendSelection");
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
action= new TreeHomeAction(1, "selectLast");
|
||||
action = new TreeHomeAction(1, "selectLast");
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
action= new TreeHomeAction(1, "selectLastChangeLead");
|
||||
action = new TreeHomeAction(1, "selectLastChangeLead");
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
action= new TreeHomeAction(1, "selectLastExtendSelection");
|
||||
action = new TreeHomeAction(1, "selectLastExtendSelection");
|
||||
am.put(action.getValue(Action.NAME), action);
|
||||
|
||||
// TreeIncrementAction.
|
||||
@ -1414,8 +1414,8 @@ public class BasicTreeUI
|
||||
if (treeSelectionModel != null
|
||||
&& selectionModelPropertyChangeListener != null)
|
||||
{
|
||||
treeSelectionModel.addPropertyChangeListener
|
||||
(selectionModelPropertyChangeListener);
|
||||
treeSelectionModel.addPropertyChangeListener(
|
||||
selectionModelPropertyChangeListener);
|
||||
}
|
||||
|
||||
componentListener = createComponentListener();
|
||||
@ -1819,7 +1819,7 @@ public class BasicTreeUI
|
||||
|
||||
Insets i = tree.getInsets();
|
||||
int left = getRowX(tree.getRowForPath(path), path.getPathCount() - 1)
|
||||
-getRightChildIndent() - width / 2 + i.left;
|
||||
- getRightChildIndent() - width / 2 + i.left;
|
||||
cntlClick = mouseX >= left && mouseX <= left + width;
|
||||
}
|
||||
return cntlClick;
|
||||
@ -2207,7 +2207,7 @@ public class BasicTreeUI
|
||||
{
|
||||
cancelEditing(tree);
|
||||
}
|
||||
}// CellEditorHandler
|
||||
} // CellEditorHandler
|
||||
|
||||
/**
|
||||
* Repaints the lead selection row when focus is lost/grained.
|
||||
@ -2255,7 +2255,7 @@ public class BasicTreeUI
|
||||
void repaintLeadRow()
|
||||
{
|
||||
TreePath lead = tree.getLeadSelectionPath();
|
||||
if (lead!=null)
|
||||
if (lead != null)
|
||||
tree.repaint(tree.getPathBounds(lead));
|
||||
}
|
||||
}
|
||||
@ -2588,7 +2588,7 @@ public class BasicTreeUI
|
||||
{
|
||||
return BasicTreeUI.this.getRowX(row, depth);
|
||||
}
|
||||
}// NodeDimensionsHandler
|
||||
} // NodeDimensionsHandler
|
||||
|
||||
/**
|
||||
* PropertyChangeListener for the tree. Updates the appropriate variable, or
|
||||
@ -2742,7 +2742,7 @@ public class BasicTreeUI
|
||||
tree.revalidate();
|
||||
tree.repaint();
|
||||
}
|
||||
}// TreeExpansionHandler
|
||||
} // TreeExpansionHandler
|
||||
|
||||
/**
|
||||
* TreeHomeAction is used to handle end/home actions. Scrolls either the first
|
||||
@ -3040,7 +3040,7 @@ public class BasicTreeUI
|
||||
treeState.treeStructureChanged(e);
|
||||
tree.repaint();
|
||||
}
|
||||
}// TreeModelHandler
|
||||
} // TreeModelHandler
|
||||
|
||||
/**
|
||||
* TreePageAction handles page up and page down events.
|
||||
@ -3125,7 +3125,7 @@ public class BasicTreeUI
|
||||
}
|
||||
else
|
||||
{
|
||||
newVisible.y -= (visible.height - newVisible.height);
|
||||
newVisible.y -= visible.height - newVisible.height;
|
||||
newVisible.height = visible.height;
|
||||
}
|
||||
|
||||
@ -3169,7 +3169,7 @@ public class BasicTreeUI
|
||||
{
|
||||
return (tree != null) && tree.isEnabled();
|
||||
}
|
||||
}// TreePageAction
|
||||
} // TreePageAction
|
||||
|
||||
/**
|
||||
* Listens for changes in the selection model and updates the display
|
||||
@ -3208,13 +3208,13 @@ public class BasicTreeUI
|
||||
Rectangle n = treeState.getBounds(event.getNewLeadSelectionPath(),
|
||||
new Rectangle());
|
||||
|
||||
if (o!=null)
|
||||
if (o != null)
|
||||
tree.repaint(o);
|
||||
if (n!=null)
|
||||
if (n != null)
|
||||
tree.repaint(n);
|
||||
}
|
||||
}
|
||||
}// TreeSelectionHandler
|
||||
} // TreeSelectionHandler
|
||||
|
||||
/**
|
||||
* For the first selected row expandedness will be toggled.
|
||||
@ -3315,7 +3315,7 @@ public class BasicTreeUI
|
||||
// is not visible.
|
||||
TreePath parent = current.getParentPath();
|
||||
if (parent != null &&
|
||||
!(parent.getPathCount()==1 && !tree.isRootVisible()) )
|
||||
! (parent.getPathCount() == 1 && ! tree.isRootVisible()))
|
||||
tree.setSelectionPath(parent);
|
||||
}
|
||||
}
|
||||
@ -3647,7 +3647,7 @@ public class BasicTreeUI
|
||||
if (parent != null)
|
||||
{
|
||||
Rectangle parentBounds = getPathBounds(tree, parent);
|
||||
paintVerticalLine(g, tree, parentBounds.x + 2* gap,
|
||||
paintVerticalLine(g, tree, parentBounds.x + 2 * gap,
|
||||
parentBounds.y + parentBounds.height / 2,
|
||||
bounds.y + bounds.height / 2);
|
||||
}
|
||||
@ -3717,7 +3717,7 @@ public class BasicTreeUI
|
||||
boolean isLeaf)
|
||||
{
|
||||
Object node = path.getLastPathComponent();
|
||||
return (! isLeaf && hasControlIcons());
|
||||
return ! isLeaf && hasControlIcons();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -39,7 +39,7 @@ exception statement from your version. */
|
||||
package javax.swing.plaf.metal;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Container;
|
||||
import java.awt.Component;
|
||||
import java.awt.Font;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics;
|
||||
@ -51,7 +51,6 @@ import javax.swing.JButton;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JToolBar;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.plaf.ComponentUI;
|
||||
import javax.swing.plaf.UIResource;
|
||||
@ -240,63 +239,61 @@ public class MetalButtonUI
|
||||
public void update(Graphics g, JComponent c)
|
||||
{
|
||||
AbstractButton b = (AbstractButton) c;
|
||||
if (b.isContentAreaFilled()
|
||||
&& (UIManager.get(getPropertyPrefix() + "gradient") != null)
|
||||
&& b.isEnabled()
|
||||
&& (b.getBackground() instanceof UIResource))
|
||||
updateWidthGradient(g, b, b.getParent());
|
||||
else
|
||||
super.update(g, c);
|
||||
}
|
||||
|
||||
private void updateWidthGradient(Graphics g, AbstractButton b, Container parent)
|
||||
{
|
||||
ButtonModel m = b.getModel();
|
||||
String gradientPropertyName = getPropertyPrefix() + "gradient";
|
||||
|
||||
// Gradient painting behavior depends on whether the button is part of a
|
||||
// JToolBar.
|
||||
if (parent instanceof JToolBar)
|
||||
if ((b.getBackground() instanceof UIResource)
|
||||
&& b.isContentAreaFilled() && b.isEnabled())
|
||||
{
|
||||
if (! m.isPressed() && ! m.isArmed())
|
||||
ButtonModel m = b.getModel();
|
||||
String uiKey = "Button.gradient";
|
||||
if (! isToolbarButton(b))
|
||||
{
|
||||
if (m.isRollover())
|
||||
if (! m.isArmed() && ! m.isPressed() && isDrawingGradient(uiKey))
|
||||
{
|
||||
// Paint the gradient when the mouse cursor hovers over the
|
||||
// button but is not pressed down.
|
||||
MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
|
||||
SwingConstants.VERTICAL,
|
||||
gradientPropertyName);
|
||||
}
|
||||
else
|
||||
{
|
||||
// If mouse does not hover over the button let the JToolBar
|
||||
// paint itself at the location where the button is (the button
|
||||
// is transparent).
|
||||
|
||||
// There where cases where the button was not repainted and
|
||||
// therefore showed its old state. With this statement it does
|
||||
// not happen.
|
||||
b.repaint();
|
||||
|
||||
Rectangle area = new Rectangle();
|
||||
SwingUtilities.calculateInnerArea(b, area);
|
||||
SwingUtilities.convertRectangle(b, area, b.getParent());
|
||||
b.getParent().repaint(area.x, area.y, area.width, area.height);
|
||||
uiKey);
|
||||
paint(g, c);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
else if (m.isRollover() && isDrawingGradient(uiKey))
|
||||
{
|
||||
MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
|
||||
SwingConstants.VERTICAL,
|
||||
uiKey);
|
||||
paint(g, c);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (! m.isPressed() && ! m.isArmed())
|
||||
{
|
||||
// When the button is not part of a JToolBar just paint itself with a
|
||||
// gradient and everything is fine.
|
||||
MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
|
||||
SwingConstants.VERTICAL,
|
||||
gradientPropertyName);
|
||||
}
|
||||
|
||||
paint(g, b);
|
||||
// Fallback if we didn't have any of the two above cases.
|
||||
super.update(g, c);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> when the button is a toolbar button,
|
||||
* <code>false</code> otherwise.
|
||||
*
|
||||
* @param b the button component to test
|
||||
*
|
||||
* @return <code>true</code> when the button is a toolbar button,
|
||||
* <code>false</code> otherwise
|
||||
*/
|
||||
private boolean isToolbarButton(Component b)
|
||||
{
|
||||
Component parent = b.getParent();
|
||||
return parent instanceof JToolBar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns <code>true</code> if we should draw the button gradient,
|
||||
* <code>false</code> otherwise.
|
||||
*
|
||||
* @param uiKey the UIManager key for the gradient
|
||||
*
|
||||
* @return <code>true</code> if we should draw the button gradient,
|
||||
* <code>false</code> otherwise
|
||||
*/
|
||||
private boolean isDrawingGradient(String uiKey)
|
||||
{
|
||||
return (UIManager.get(uiKey) != null);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -967,7 +967,7 @@ public class MetalIconFactory implements Serializable
|
||||
* This mask is used to paint the gradient in the shape of the thumb.
|
||||
*/
|
||||
int[][] gradientMask = new int[][] { {0, 12}, {0, 12}, {0, 12}, {0, 12},
|
||||
{0, 12}, {0, 12}, {0, 12}, {1, 12},
|
||||
{0, 12}, {0, 12}, {0, 12}, {1, 11},
|
||||
{2, 10}, {3, 9}, {4, 8}, {5, 7},
|
||||
{6, 6}};
|
||||
|
||||
@ -1623,7 +1623,7 @@ public class MetalIconFactory implements Serializable
|
||||
* This mask is used to paint the gradient in the shape of the thumb.
|
||||
*/
|
||||
int[][] gradientMask = new int[][] { {0, 12}, {0, 12}, {0, 12}, {0, 12},
|
||||
{0, 12}, {0, 12}, {0, 12}, {1, 12},
|
||||
{0, 12}, {0, 12}, {0, 12}, {1, 11},
|
||||
{2, 10}, {3, 9}, {4, 8}, {5, 7},
|
||||
{6, 6}};
|
||||
|
||||
|
@ -1053,14 +1053,6 @@ public class DefaultStyledDocument extends AbstractDocument implements
|
||||
|
||||
Edit edit = getEditForParagraphAndIndex(paragraph, index);
|
||||
edit.addAddedElement(leaf);
|
||||
|
||||
if (end != toRec.getEndOffset())
|
||||
{
|
||||
recreateLeaves(end, toRec, onlyContent);
|
||||
|
||||
if (onlyContent)
|
||||
edit.addRemovedElement(target);
|
||||
}
|
||||
}
|
||||
else
|
||||
paragraph.replace(0, 0, new Element[] { leaf });
|
||||
|
@ -918,7 +918,7 @@ public class GapContent
|
||||
int mid = 0;
|
||||
while (low <= hi)
|
||||
{
|
||||
mid = (low + hi) >> 1;
|
||||
mid = (low + hi) >>> 1;
|
||||
final int d = a[mid];
|
||||
if (d == key)
|
||||
return mid;
|
||||
|
@ -39,13 +39,15 @@ exception statement from your version. */
|
||||
package javax.swing.text.html;
|
||||
|
||||
import gnu.classpath.NotImplementedException;
|
||||
|
||||
import gnu.javax.swing.text.html.CharacterAttributeTranslator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.HashMap;
|
||||
import java.util.Stack;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.swing.text.AbstractDocument;
|
||||
import javax.swing.text.AttributeSet;
|
||||
import javax.swing.text.BadLocationException;
|
||||
@ -59,9 +61,15 @@ import javax.swing.text.StyleConstants;
|
||||
import javax.swing.text.html.HTML.Tag;
|
||||
|
||||
/**
|
||||
* TODO: Add more comments here
|
||||
* Represents the HTML document that is constructed by defining the text and
|
||||
* other components (images, buttons, etc) in HTML language. This class can
|
||||
* becomes the default document for {@link JEditorPane} after setting its
|
||||
* content type to "text/html". HTML document also serves as an intermediate
|
||||
* data structure when it is needed to parse HTML and then obtain the content of
|
||||
* the certain types of tags. This class also has methods for modifying the HTML
|
||||
* content.
|
||||
*
|
||||
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
|
||||
* @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
|
||||
* @author Anthony Balkissoon (abalkiss@redhat.com)
|
||||
* @author Lillian Angel (langel@redhat.com)
|
||||
*/
|
||||
@ -640,17 +648,25 @@ public class HTMLDocument extends DefaultStyledDocument
|
||||
}
|
||||
}
|
||||
|
||||
public class HiddenAction extends TagAction
|
||||
/**
|
||||
* This action indicates that the content between starting and closing HTML
|
||||
* elements (like script - /script) should not be visible. The content is
|
||||
* still inserted and can be accessed when iterating the HTML document. The
|
||||
* parser will only fire
|
||||
* {@link javax.swing.text.html.HTMLEditorKit.ParserCallback#handleText} for
|
||||
* the hidden tags, regardless from that html tags the hidden section may
|
||||
* contain.
|
||||
*/
|
||||
public class HiddenAction
|
||||
extends TagAction
|
||||
{
|
||||
/**
|
||||
* This method is called when a start tag is seen for one of the types
|
||||
* of tags associated with this Action.
|
||||
*/
|
||||
public void start(HTML.Tag t, MutableAttributeSet a)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: Implement.
|
||||
print ("HiddenAction.start not implemented");
|
||||
blockOpen(t, a);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -658,10 +674,8 @@ public class HTMLDocument extends DefaultStyledDocument
|
||||
* with this Action.
|
||||
*/
|
||||
public void end(HTML.Tag t)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: Implement.
|
||||
print ("HiddenAction.end not implemented");
|
||||
blockClose(t);
|
||||
}
|
||||
}
|
||||
|
||||
@ -727,11 +741,17 @@ public class HTMLDocument extends DefaultStyledDocument
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts the elements that are represented by ths single tag with
|
||||
* attributes (only). The closing tag, even if present, mut follow
|
||||
* immediately after the starting tag without providing any additional
|
||||
* information. Hence the {@link TagAction#end} method need not be
|
||||
* overridden and still does nothing.
|
||||
*/
|
||||
public class SpecialAction extends TagAction
|
||||
{
|
||||
/**
|
||||
* This method is called when a start tag is seen for one of the types
|
||||
* of tags associated with this Action.
|
||||
* The functionality is delegated to {@link HTMLReader#addSpecialElement}
|
||||
*/
|
||||
public void start(HTML.Tag t, MutableAttributeSet a)
|
||||
{
|
||||
@ -1407,10 +1427,21 @@ public class HTMLDocument extends DefaultStyledDocument
|
||||
* @param a the attribute set specifying the special content
|
||||
*/
|
||||
protected void addSpecialElement(HTML.Tag t, MutableAttributeSet a)
|
||||
throws NotImplementedException
|
||||
{
|
||||
// FIXME: Implement
|
||||
print ("HTMLReader.addSpecialElement not implemented yet");
|
||||
a.addAttribute(StyleConstants.NameAttribute, t);
|
||||
|
||||
// Migrate from the rather htmlAttributeSet to the faster, lighter and
|
||||
// unchangeable alternative implementation.
|
||||
AttributeSet copy = a.copyAttributes();
|
||||
|
||||
// TODO: Figure out why we must always insert this single character
|
||||
// (otherwise the element does not appear). Either fix or add explaining
|
||||
// comment or at least report a normal bug.
|
||||
DefaultStyledDocument.ElementSpec spec;
|
||||
spec = new DefaultStyledDocument.ElementSpec(copy,
|
||||
DefaultStyledDocument.ElementSpec.ContentType,
|
||||
new char[] {' '}, 0, 1 );
|
||||
parseBuffer.add(spec);
|
||||
}
|
||||
|
||||
void printBuffer()
|
||||
|
@ -8,6 +8,10 @@ if CREATE_GTK_PEER_LIBRARIES
|
||||
JAWTDIR = jawt
|
||||
endif
|
||||
|
||||
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) target
|
||||
DIST_SUBDIRS = fdlibm jni jawt target
|
||||
if CREATE_PLUGIN
|
||||
PLUGINDIR = plugin
|
||||
endif
|
||||
|
||||
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) $(PLUGINDIR) target
|
||||
DIST_SUBDIRS = fdlibm jni jawt plugin target
|
||||
|
||||
|
@ -278,8 +278,9 @@ target_vendor = @target_vendor@
|
||||
vm_classes = @vm_classes@
|
||||
@CREATE_JNI_LIBRARIES_TRUE@JNIDIR = jni
|
||||
@CREATE_GTK_PEER_LIBRARIES_TRUE@JAWTDIR = jawt
|
||||
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) target
|
||||
DIST_SUBDIRS = fdlibm jni jawt target
|
||||
@CREATE_PLUGIN_TRUE@PLUGINDIR = plugin
|
||||
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) $(PLUGINDIR) target
|
||||
DIST_SUBDIRS = fdlibm jni jawt plugin target
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
|
@ -1,8 +1,16 @@
|
||||
nativeexeclib_LTLIBRARIES = libjawt.la
|
||||
## GCJ LOCAL: install this library in GCJ's versioned library
|
||||
## directory
|
||||
gcc_version := $(shell cat $(top_srcdir)/../../gcc/BASE-VER)
|
||||
gcjversionedlibdir = $(libdir)/gcj-$(gcc_version)
|
||||
gcjversionedlib_LTLIBRARIES = libjawt.la
|
||||
|
||||
libjawt_la_SOURCES = jawt.c
|
||||
libjawt_la_LIBADD = $(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
||||
|
||||
## GCJ LOCAL: encode the library path and use GCJ's library version
|
||||
libjawt_la_LDFLAGS = -rpath $(gcjversionedlibdir) \
|
||||
-version-info `grep -v '^\#' $(top_srcdir)/../libtool-version`
|
||||
|
||||
AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @PANGOFT2_LIBS@ @X_LIBS@ @XTEST_LIBS@
|
||||
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
|
||||
|
||||
|
@ -58,9 +58,9 @@ am__vpath_adj = case $$p in \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(nativeexeclibdir)"
|
||||
nativeexeclibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(nativeexeclib_LTLIBRARIES)
|
||||
am__installdirs = "$(DESTDIR)$(gcjversionedlibdir)"
|
||||
gcjversionedlibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(gcjversionedlib_LTLIBRARIES)
|
||||
libjawt_la_DEPENDENCIES = \
|
||||
$(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
||||
am_libjawt_la_OBJECTS = jawt.lo
|
||||
@ -295,9 +295,14 @@ target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
vm_classes = @vm_classes@
|
||||
nativeexeclib_LTLIBRARIES = libjawt.la
|
||||
gcc_version := $(shell cat $(top_srcdir)/../../gcc/BASE-VER)
|
||||
gcjversionedlibdir = $(libdir)/gcj-$(gcc_version)
|
||||
gcjversionedlib_LTLIBRARIES = libjawt.la
|
||||
libjawt_la_SOURCES = jawt.c
|
||||
libjawt_la_LIBADD = $(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
||||
libjawt_la_LDFLAGS = -rpath $(gcjversionedlibdir) \
|
||||
-version-info `grep -v '^\#' $(top_srcdir)/../libtool-version`
|
||||
|
||||
AM_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @PANGOFT2_LIBS@ @X_LIBS@ @XTEST_LIBS@
|
||||
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
|
||||
|
||||
@ -339,35 +344,35 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-nativeexeclibLTLIBRARIES: $(nativeexeclib_LTLIBRARIES)
|
||||
install-gcjversionedlibLTLIBRARIES: $(gcjversionedlib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(nativeexeclibdir)" || $(mkdir_p) "$(DESTDIR)$(nativeexeclibdir)"
|
||||
@list='$(nativeexeclib_LTLIBRARIES)'; for p in $$list; do \
|
||||
test -z "$(gcjversionedlibdir)" || $(mkdir_p) "$(DESTDIR)$(gcjversionedlibdir)"
|
||||
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=install $(nativeexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(nativeexeclibdir)/$$f'"; \
|
||||
$(LIBTOOL) --mode=install $(nativeexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(nativeexeclibdir)/$$f"; \
|
||||
echo " $(LIBTOOL) --mode=install $(gcjversionedlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(gcjversionedlibdir)/$$f'"; \
|
||||
$(LIBTOOL) --mode=install $(gcjversionedlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(gcjversionedlibdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-nativeexeclibLTLIBRARIES:
|
||||
uninstall-gcjversionedlibLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@set -x; list='$(nativeexeclib_LTLIBRARIES)'; for p in $$list; do \
|
||||
@set -x; list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(nativeexeclibdir)/$$p'"; \
|
||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(nativeexeclibdir)/$$p"; \
|
||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(gcjversionedlibdir)/$$p'"; \
|
||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(gcjversionedlibdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-nativeexeclibLTLIBRARIES:
|
||||
-test -z "$(nativeexeclib_LTLIBRARIES)" || rm -f $(nativeexeclib_LTLIBRARIES)
|
||||
@list='$(nativeexeclib_LTLIBRARIES)'; for p in $$list; do \
|
||||
clean-gcjversionedlibLTLIBRARIES:
|
||||
-test -z "$(gcjversionedlib_LTLIBRARIES)" || rm -f $(gcjversionedlib_LTLIBRARIES)
|
||||
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libjawt.la: $(libjawt_la_OBJECTS) $(libjawt_la_DEPENDENCIES)
|
||||
$(LINK) -rpath $(nativeexeclibdir) $(libjawt_la_LDFLAGS) $(libjawt_la_OBJECTS) $(libjawt_la_LIBADD) $(LIBS)
|
||||
$(LINK) -rpath $(gcjversionedlibdir) $(libjawt_la_LDFLAGS) $(libjawt_la_OBJECTS) $(libjawt_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
@ -487,7 +492,7 @@ check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(nativeexeclibdir)"; do \
|
||||
for dir in "$(DESTDIR)$(gcjversionedlibdir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
@ -516,7 +521,7 @@ maintainer-clean-generic:
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-nativeexeclibLTLIBRARIES \
|
||||
clean-am: clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
@ -535,9 +540,9 @@ info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
install-data-am: install-gcjversionedlibLTLIBRARIES
|
||||
|
||||
install-exec-am: install-nativeexeclibLTLIBRARIES
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
@ -563,20 +568,21 @@ ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-nativeexeclibLTLIBRARIES
|
||||
uninstall-am: uninstall-gcjversionedlibLTLIBRARIES uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-nativeexeclibLTLIBRARIES install-strip installcheck \
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean \
|
||||
clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||
ctags distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am \
|
||||
install-gcjversionedlibLTLIBRARIES install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-nativeexeclibLTLIBRARIES
|
||||
tags uninstall uninstall-am \
|
||||
uninstall-gcjversionedlibLTLIBRARIES uninstall-info-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
@ -113,7 +113,4 @@ struct cairographics2d
|
||||
char *pattern_pixels;
|
||||
};
|
||||
|
||||
cairo_t *cp_gtk_get_cairo_t(JNIEnv *env,
|
||||
jobject cairographics2dobj);
|
||||
|
||||
#endif
|
||||
|
@ -51,33 +51,6 @@ exception statement from your version. */
|
||||
|
||||
static void install_font_peer(cairo_t *cr, struct peerfont *pfont);
|
||||
static void update_pattern_transform (struct cairographics2d *gr);
|
||||
static struct cairographics2d *getPointer(JNIEnv *env, jobject obj);
|
||||
|
||||
static struct cairographics2d *
|
||||
getPointer(JNIEnv *env, jobject obj)
|
||||
{
|
||||
jclass cls;
|
||||
jlong value;
|
||||
jfieldID nofid;
|
||||
cls = (*env)->GetObjectClass( env, obj );
|
||||
nofid = (*env)->GetFieldID( env, cls, "nativePointer", "J" );
|
||||
value = (*env)->GetLongField( env, obj, nofid );
|
||||
(*env)->DeleteLocalRef( env, cls );
|
||||
|
||||
return JLONG_TO_PTR(struct cairographics2d, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the cairo_t * associated with a CairoGraphics2D object,
|
||||
* This is used by GdkTextLayout.
|
||||
*/
|
||||
cairo_t *cp_gtk_get_cairo_t(JNIEnv *env,
|
||||
jobject cairographics2dobj)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer(env, cairographics2dobj);
|
||||
g_assert(gr != NULL);
|
||||
return gr->cr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allocates the cairographics2d structure.
|
||||
@ -106,9 +79,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer(env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
|
||||
if (gr == NULL)
|
||||
return;
|
||||
@ -136,7 +110,8 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
|
||||
(JNIEnv *env, jobject obj,
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer,
|
||||
jdouble x1, jdouble y1,
|
||||
jdouble x2, jdouble y2,
|
||||
jint r1, jint g1, jint b1, jint a1,
|
||||
@ -147,7 +122,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
|
||||
cairo_pattern_t* pattern;
|
||||
cairo_extend_t extend;
|
||||
|
||||
gr = getPointer (env, obj);
|
||||
gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert( gr != NULL );
|
||||
|
||||
pattern = cairo_pattern_create_linear(x1, y1, x2, y2);
|
||||
@ -169,12 +144,13 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setTexturePixels
|
||||
(JNIEnv *env, jobject obj, jintArray jarr, jint w, jint h, jint stride)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jintArray jarr, jint w, jint h, jint stride)
|
||||
{
|
||||
struct cairographics2d *gr = NULL;
|
||||
jint *jpixels = NULL;
|
||||
|
||||
gr = getPointer (env, obj);
|
||||
gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
if (gr->pattern)
|
||||
@ -210,12 +186,13 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setTexturePixels
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
||||
(JNIEnv *env, jobject obj, jintArray java_pixels,
|
||||
jint w, jint h, jint stride, jdoubleArray java_matrix)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jintArray java_pixels,
|
||||
jint w, jint h, jint stride, jdoubleArray java_matrix, jdouble alpha)
|
||||
{
|
||||
jint *native_pixels = NULL;
|
||||
jdouble *native_matrix = NULL;
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL);
|
||||
@ -241,7 +218,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
||||
if (gr->pattern)
|
||||
cairo_pattern_set_filter (p, cairo_pattern_get_filter (gr->pattern));
|
||||
cairo_set_source (gr->cr, p);
|
||||
cairo_paint (gr->cr);
|
||||
if (alpha == 1.)
|
||||
cairo_paint (gr->cr);
|
||||
else
|
||||
cairo_paint_with_alpha(gr->cr, alpha);
|
||||
|
||||
cairo_pattern_destroy (p);
|
||||
cairo_surface_destroy (surf);
|
||||
}
|
||||
@ -253,10 +234,13 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
|
||||
(JNIEnv *env, jobject obj, jdoubleArray java_matrix)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdoubleArray java_matrix)
|
||||
{
|
||||
jdouble *native_matrix = NULL;
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (obj != NULL);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
|
||||
g_assert (native_matrix != NULL);
|
||||
@ -270,6 +254,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
|
||||
native_matrix[0], native_matrix[1],
|
||||
native_matrix[2], native_matrix[3],
|
||||
native_matrix[4], native_matrix[5]);
|
||||
g_assert (gr != NULL);
|
||||
cairo_set_matrix (gr->cr, &mat);
|
||||
}
|
||||
|
||||
@ -279,11 +264,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
||||
(JNIEnv *env, jobject obj,
|
||||
jobject font,
|
||||
jfloat x, jfloat y, jint n,
|
||||
jintArray java_codes,
|
||||
jfloatArray java_positions)
|
||||
(JNIEnv *env, jobject obj, jlong pointer,
|
||||
jobject font,
|
||||
jfloat x, jfloat y, jint n,
|
||||
jintArray java_codes,
|
||||
jfloatArray java_positions)
|
||||
{
|
||||
|
||||
struct cairographics2d *gr = NULL;
|
||||
@ -297,7 +282,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
||||
g_assert (java_codes != NULL);
|
||||
g_assert (java_positions != NULL);
|
||||
|
||||
gr = getPointer (env, obj);
|
||||
gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font);
|
||||
@ -329,9 +314,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
|
||||
(JNIEnv *env, jobject obj, jint op)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jint op)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
switch ((enum java_awt_alpha_composite_rule) op)
|
||||
@ -388,9 +374,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor
|
||||
(JNIEnv *env, jobject obj, jdouble r, jdouble g, jdouble b, jdouble a)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble r, jdouble g, jdouble b, jdouble a)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_set_source_rgba (gr->cr, r, g, b, a);
|
||||
@ -398,9 +385,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule
|
||||
(JNIEnv *env, jobject obj, jint rule)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jint rule)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
switch ((enum java_awt_geom_path_iterator_winding_rule) rule)
|
||||
@ -419,9 +407,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
|
||||
(JNIEnv *env, jobject obj, jdouble width, int cap, int join, double miterLimit)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble width, int cap, int join, double miterLimit)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
/* set width */
|
||||
@ -468,10 +457,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
|
||||
(JNIEnv *env, jobject obj, jdoubleArray dashes, jint ndash, jdouble offset)
|
||||
(JNIEnv *env, jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdoubleArray dashes, jint ndash, jdouble offset)
|
||||
{
|
||||
jdouble *dasharr = NULL;
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
dasharr = (*env)->GetDoubleArrayElements (env, dashes, NULL);
|
||||
@ -484,9 +474,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_new_path (gr->cr);
|
||||
@ -494,9 +485,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
|
||||
(JNIEnv *env, jobject obj, jdouble x, jdouble y)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble x, jdouble y)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_move_to (gr->cr, x, y);
|
||||
@ -504,9 +496,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
|
||||
(JNIEnv *env, jobject obj, jdouble x, jdouble y)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble x, jdouble y)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_line_to (gr->cr, x, y);
|
||||
@ -514,18 +507,21 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo
|
||||
(JNIEnv *env, jobject obj, jdouble x1, jdouble y1, jdouble x2, jdouble y2, jdouble x3, jdouble y3)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble x1, jdouble y1,
|
||||
jdouble x2, jdouble y2, jdouble x3, jdouble y3)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo
|
||||
(JNIEnv *env, jobject obj, jdouble dx, jdouble dy)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble dx, jdouble dy)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_rel_move_to (gr->cr, dx, dy);
|
||||
@ -533,9 +529,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo
|
||||
(JNIEnv *env, jobject obj, jdouble dx, jdouble dy)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble dx, jdouble dy)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_rel_line_to (gr->cr, dx, dy);
|
||||
@ -543,9 +540,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo
|
||||
(JNIEnv *env, jobject obj, jdouble dx1, jdouble dy1, jdouble dx2, jdouble dy2, jdouble dx3, jdouble dy3)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble dx1, jdouble dy1,
|
||||
jdouble dx2, jdouble dy2, jdouble dx3, jdouble dy3)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_rel_curve_to (gr->cr, dx1, dy1, dx2, dy2, dx3, dy3);
|
||||
@ -553,18 +552,20 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle
|
||||
(JNIEnv *env, jobject obj, jdouble x, jdouble y, jdouble width, jdouble height)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble x, jdouble y, jdouble width, jdouble height)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
|
||||
cairo_rectangle (gr->cr, x, y, width, height);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_close_path (gr->cr);
|
||||
@ -572,9 +573,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_stroke (gr->cr);
|
||||
@ -582,19 +584,29 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jdouble alpha)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_fill (gr->cr);
|
||||
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
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer( env, obj );
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert( gr != NULL );
|
||||
|
||||
cairo_clip( gr->cr );
|
||||
@ -602,9 +614,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer( env, obj );
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_reset_clip( gr->cr );
|
||||
@ -612,9 +625,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip
|
||||
(JNIEnv *env, jobject obj)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer( env, obj );
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
cairo_clip_preserve( gr->cr );
|
||||
@ -622,9 +636,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter
|
||||
(JNIEnv *env, jobject obj, jint filter)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong pointer, jint filter)
|
||||
{
|
||||
struct cairographics2d *gr = getPointer (env, obj);
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||
g_assert (gr != NULL);
|
||||
|
||||
if (gr->pattern == NULL)
|
||||
@ -650,6 +665,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/************************** FONT STUFF ****************************/
|
||||
static void
|
||||
install_font_peer(cairo_t *cr,
|
||||
@ -700,4 +716,3 @@ update_pattern_transform (struct cairographics2d *gr)
|
||||
cairo_pattern_set_matrix (gr->pattern, &mat);
|
||||
}
|
||||
|
||||
|
||||
|
@ -50,7 +50,6 @@ exception statement from your version. */
|
||||
#define BUFFER "bufferPointer"
|
||||
|
||||
/* prototypes */
|
||||
static void *getNativeObject( JNIEnv *env, jobject obj, const char *pointer );
|
||||
static void setNativeObject( JNIEnv *env, jobject obj, void *ptr, const char *pointer );
|
||||
|
||||
/**
|
||||
@ -65,7 +64,7 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_create (JNIEnv *env, jobject obj, jint w
|
||||
setNativeObject(env, obj, data, BUFFER);
|
||||
|
||||
surface = cairo_image_surface_create_for_data
|
||||
(data, CAIRO_FORMAT_ARGB32, width, height, stride);
|
||||
(data, CAIRO_FORMAT_ARGB32, width, height, stride * 4);
|
||||
|
||||
setNativeObject(env, obj, surface, SURFACE);
|
||||
}
|
||||
@ -74,14 +73,16 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_create (JNIEnv *env, jobject obj, jint w
|
||||
* Destroy the surface
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_destroy (JNIEnv *env, jobject obj)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_destroy
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong surfacePointer, jlong bufferPointer)
|
||||
{
|
||||
void *buffer;
|
||||
cairo_surface_t* surface = (cairo_surface_t *)getNativeObject(env, obj, SURFACE);
|
||||
cairo_surface_t* surface = JLONG_TO_PTR(void, surfacePointer);
|
||||
if( surface != NULL )
|
||||
cairo_surface_destroy(surface);
|
||||
|
||||
buffer = getNativeObject(env, obj, BUFFER);
|
||||
buffer = JLONG_TO_PTR(void, bufferPointer);
|
||||
if( buffer != NULL )
|
||||
g_free(buffer);
|
||||
}
|
||||
@ -90,9 +91,11 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_destroy (JNIEnv *env, jobject obj)
|
||||
* Gets a pixel
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetElem (JNIEnv *env, jobject obj, jint i)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetElem
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong bufferPointer, jint i)
|
||||
{
|
||||
jint *pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
||||
jint *pixeldata = JLONG_TO_PTR(void, bufferPointer);
|
||||
|
||||
if( pixeldata == NULL )
|
||||
return 0;
|
||||
@ -105,9 +108,10 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetElem (JNIEnv *env, jobject obj,
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetElem
|
||||
(JNIEnv *env, jobject obj, jint i, jint val)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong bufferPointer, jint i, jint val)
|
||||
{
|
||||
jint *pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
||||
jint *pixeldata = JLONG_TO_PTR(void, bufferPointer);
|
||||
|
||||
if( pixeldata == NULL )
|
||||
return;
|
||||
@ -119,13 +123,14 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetElem
|
||||
* Gets all pixels in an array
|
||||
*/
|
||||
JNIEXPORT jintArray JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels
|
||||
(JNIEnv *env, jobject obj, int size)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetPixels
|
||||
(JNIEnv *env __attribute((unused)), jobject obj __attribute((unused)),
|
||||
jlong bufferPointer, int size)
|
||||
{
|
||||
jint *pixeldata, *jpixdata;
|
||||
jintArray jpixels;
|
||||
|
||||
pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
||||
pixeldata = JLONG_TO_PTR(void, bufferPointer);
|
||||
g_assert(pixeldata != NULL);
|
||||
|
||||
jpixels = (*env)->NewIntArray (env, size);
|
||||
@ -140,8 +145,8 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels
|
||||
* Sets all pixels by an array.
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels
|
||||
(JNIEnv *env, jobject obj, jintArray jpixels)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetPixels
|
||||
(JNIEnv *env, jobject obj, jlong bufferPointer, jintArray jpixels)
|
||||
{
|
||||
jint *pixeldata, *jpixdata;
|
||||
int size;
|
||||
@ -161,7 +166,7 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels
|
||||
g_assert (field != 0);
|
||||
height = (*env)->GetIntField (env, obj, field);
|
||||
|
||||
pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
||||
pixeldata = JLONG_TO_PTR(void, bufferPointer);
|
||||
g_assert(pixeldata != NULL);
|
||||
|
||||
jpixdata = (*env)->GetIntArrayElements (env, jpixels, NULL);
|
||||
@ -174,15 +179,15 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface
|
||||
(JNIEnv *env, jobject obj, jobject context, jdoubleArray java_matrix)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeDrawSurface
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong surfacePointer, jlong context, jdoubleArray java_matrix, double alpha)
|
||||
{
|
||||
cairo_t *cr;
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, context);
|
||||
cairo_t *cr = gr->cr;
|
||||
jdouble *native_matrix = NULL;
|
||||
cairo_surface_t* surface = (cairo_surface_t *)getNativeObject(env, obj, SURFACE);
|
||||
cairo_surface_t* surface = JLONG_TO_PTR(void, surfacePointer);
|
||||
g_assert(surface != NULL);
|
||||
|
||||
cr = cp_gtk_get_cairo_t(env, context);
|
||||
g_assert(cr != NULL);
|
||||
|
||||
native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
|
||||
@ -202,7 +207,11 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface
|
||||
cairo_pattern_set_matrix (p, &mat);
|
||||
|
||||
cairo_set_source(cr, p);
|
||||
cairo_paint(cr);
|
||||
if (alpha == 1.0)
|
||||
cairo_paint(cr);
|
||||
else
|
||||
cairo_paint_with_alpha(cr, alpha);
|
||||
|
||||
cairo_pattern_destroy(p);
|
||||
}
|
||||
|
||||
@ -211,10 +220,11 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface
|
||||
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer
|
||||
(JNIEnv *env, jobject obj, jint size)
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong bufferPointer, jint size)
|
||||
{
|
||||
jint *dst;
|
||||
jint *src = (jint *)getNativeObject(env, obj, BUFFER);
|
||||
jint *src = JLONG_TO_PTR(void, bufferPointer);
|
||||
int i;
|
||||
int t;
|
||||
|
||||
@ -236,9 +246,11 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer
|
||||
* Create and return a cairo context for drawing to the surface.
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject obj)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeNewCairoContext
|
||||
(JNIEnv *env __attribute((unused)), jobject obj __attribute((unused)),
|
||||
jlong surfacePointer)
|
||||
{
|
||||
cairo_surface_t* surface = (cairo_surface_t *)getNativeObject(env, obj, SURFACE);
|
||||
cairo_surface_t* surface = JLONG_TO_PTR(cairo_surface_t, surfacePointer);
|
||||
cairo_t *ptr;
|
||||
g_assert(surface != NULL);
|
||||
ptr = cairo_create(surface);
|
||||
@ -251,17 +263,15 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject ob
|
||||
* copyArea.
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative (JNIEnv *env,
|
||||
jobject obj,
|
||||
jint x, jint y,
|
||||
jint w, jint h,
|
||||
jint dx, jint dy,
|
||||
jint stride)
|
||||
Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative2
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||
jlong bufferPointer,
|
||||
jint x, jint y, jint w, jint h, jint dx, jint dy, jint stride)
|
||||
{
|
||||
int row;
|
||||
int srcOffset, dstOffset;
|
||||
jint *temp;
|
||||
jint *pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
||||
jint *pixeldata = JLONG_TO_PTR(jint, bufferPointer);
|
||||
g_assert( pixeldata != NULL );
|
||||
|
||||
temp = g_malloc( h * w * 4 );
|
||||
@ -294,19 +304,3 @@ setNativeObject( JNIEnv *env, jobject obj, void *ptr, const char *pointer )
|
||||
(*env)->SetLongField( env, obj, nofid, value );
|
||||
(*env)->DeleteLocalRef( env, cls );
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the native object field.
|
||||
*/
|
||||
static void *
|
||||
getNativeObject( JNIEnv *env, jobject obj, const char *pointer )
|
||||
{
|
||||
jclass cls;
|
||||
jlong value;
|
||||
jfieldID nofid;
|
||||
cls = (*env)->GetObjectClass( env, obj );
|
||||
nofid = (*env)->GetFieldID( env, cls, pointer, "J" );
|
||||
value = (*env)->GetLongField( env, obj, nofid );
|
||||
(*env)->DeleteLocalRef( env, cls );
|
||||
return JLONG_TO_PTR(void, value);
|
||||
}
|
||||
|
@ -186,7 +186,11 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface
|
||||
|
||||
surface = cairo_get_target (gr->cr);
|
||||
if (surface != NULL)
|
||||
cairo_surface_destroy (surface);
|
||||
{
|
||||
gdk_threads_enter();
|
||||
cairo_surface_destroy (surface);
|
||||
gdk_threads_leave();
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT jlong JNICALL
|
||||
@ -275,7 +279,7 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_copyAreaNative
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile
|
||||
(JNIEnv *env, jobject obj __attribute__ ((unused)), jobject peer,
|
||||
jobject img, jint x, jint y, jint w, jint h)
|
||||
jlong img, jint x, jint y, jint w, jint h)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GtkWidget *widget = NULL;
|
||||
@ -289,7 +293,7 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile
|
||||
widget = GTK_WIDGET (ptr);
|
||||
g_assert (widget != NULL);
|
||||
|
||||
pixmap = cp_gtk_get_pixmap( env, img );
|
||||
pixmap = JLONG_TO_PTR(GdkPixmap, img);
|
||||
|
||||
gc = gdk_gc_new(widget->window);
|
||||
gdk_draw_drawable(widget->window,
|
||||
|
@ -81,24 +81,37 @@ getFont(JNIEnv *env, jobject obj)
|
||||
return (PangoFcFont *)pfont->font;
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyph
|
||||
(JNIEnv *env, jobject obj, jint codepoint)
|
||||
JNIEXPORT jintArray JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs
|
||||
(JNIEnv *env, jobject obj, jintArray codepoints)
|
||||
{
|
||||
FT_Face ft_face;
|
||||
jint glyph_index;
|
||||
jintArray retArray;
|
||||
PangoFcFont *font;
|
||||
jint *values, *cpvals;
|
||||
jint length;
|
||||
int i;
|
||||
|
||||
font = getFont(env, obj);
|
||||
|
||||
ft_face = pango_fc_font_lock_face( font );
|
||||
g_assert (ft_face != NULL);
|
||||
|
||||
glyph_index = FT_Get_Char_Index( ft_face, codepoint );
|
||||
length = (*env)->GetArrayLength (env, codepoints);
|
||||
cpvals = (*env)->GetIntArrayElements (env, codepoints, NULL);
|
||||
|
||||
retArray = (*env)->NewIntArray (env, length);
|
||||
values = (*env)->GetIntArrayElements (env, retArray, NULL);
|
||||
|
||||
for( i = 0; i < length; i++ )
|
||||
values[i] = FT_Get_Char_Index( ft_face, cpvals[i] );
|
||||
|
||||
(*env)->ReleaseIntArrayElements (env, retArray, values, 0);
|
||||
(*env)->ReleaseIntArrayElements (env, codepoints, cpvals, 0);
|
||||
|
||||
pango_fc_font_unlock_face (font);
|
||||
|
||||
return glyph_index;
|
||||
return retArray;
|
||||
}
|
||||
|
||||
JNIEXPORT jobject JNICALL
|
||||
@ -143,7 +156,7 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative
|
||||
|
||||
FT_Set_Transform( ft_face, NULL, NULL );
|
||||
|
||||
if( FT_Load_Glyph( ft_face, glyphIndex, FT_LOAD_DEFAULT ) != 0 )
|
||||
if( FT_Load_Glyph( ft_face, glyphIndex, FT_LOAD_NO_BITMAP ) != 0 )
|
||||
{
|
||||
pango_fc_font_unlock_face( font );
|
||||
printf("Couldn't load glyph %i\n", glyphIndex);
|
||||
|
@ -1,758 +0,0 @@
|
||||
/* gdkgraphics.c
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
#include "gtkpeer.h"
|
||||
#include "gdkfont.h"
|
||||
#include "gnu_java_awt_peer_gtk_GdkGraphics.h"
|
||||
#include <gdk/gdkprivate.h>
|
||||
#include <gdk/gdkx.h>
|
||||
|
||||
static jmethodID initComponentGraphicsUnlockedID;
|
||||
|
||||
/*
|
||||
* AWT applications may call Graphics methods from threads other than
|
||||
* the GDK main thread, so we must call XFlush after each batch of
|
||||
* drawing operations, otherwise animations flicker. Flushing after
|
||||
* every graphics operation is excessive and negatively affects
|
||||
* performance (PR 26486). We set the maximum frequency to 50 times
|
||||
* per second, or a minimum period of 20 milliseconds between calls to
|
||||
* XFlush. See gnu.classpath.examples.awt.AnimationApplet for an
|
||||
* example applet that requires these XFlush calls.
|
||||
*/
|
||||
|
||||
static short flush_scheduled = 0;
|
||||
|
||||
static gboolean flush (gpointer data __attribute__((unused)))
|
||||
{
|
||||
gdk_threads_enter ();
|
||||
|
||||
XFlush (GDK_DISPLAY ());
|
||||
flush_scheduled = 0;
|
||||
|
||||
gdk_threads_leave ();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* The minimum time period between calls to XFlush, in
|
||||
milliseconds. */
|
||||
#define MINIMUM_FLUSH_PERIOD 20
|
||||
|
||||
/* schedule_flush must be called with the GDK lock held. */
|
||||
static void
|
||||
schedule_flush ()
|
||||
{
|
||||
if (!flush_scheduled)
|
||||
{
|
||||
g_timeout_add (MINIMUM_FLUSH_PERIOD, flush, NULL);
|
||||
flush_scheduled = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
cp_gtk_graphics_init_jni (void)
|
||||
{
|
||||
jclass gdkgraphics;
|
||||
|
||||
gdkgraphics = (*cp_gtk_gdk_env())->FindClass (cp_gtk_gdk_env(),
|
||||
"gnu/java/awt/peer/gtk/GdkGraphics");
|
||||
|
||||
initComponentGraphicsUnlockedID =
|
||||
(*cp_gtk_gdk_env())->GetMethodID (cp_gtk_gdk_env(), gdkgraphics,
|
||||
"initComponentGraphicsUnlocked",
|
||||
"()V");
|
||||
}
|
||||
|
||||
struct state_table *cp_gtk_native_graphics_state_table;
|
||||
|
||||
static struct state_table *native_graphics_global_ref_table;
|
||||
|
||||
#define NSA_GLOBAL_G_INIT(env, clazz) \
|
||||
native_graphics_global_ref_table = cp_gtk_init_state_table (env, clazz)
|
||||
|
||||
#define NSA_GET_GLOBAL_G_REF(env, obj) \
|
||||
cp_gtk_get_state (env, obj, native_graphics_global_ref_table)
|
||||
|
||||
#define NSA_SET_GLOBAL_G_REF(env, obj) \
|
||||
do {jobject *globRefPtr; \
|
||||
globRefPtr = (jobject *) malloc (sizeof (jobject)); \
|
||||
*globRefPtr = (*env)->NewGlobalRef (env, obj); \
|
||||
cp_gtk_set_state (env, obj, native_graphics_global_ref_table, (void *)globRefPtr);} while (0)
|
||||
|
||||
#define NSA_DEL_GLOBAL_G_REF(env, obj) \
|
||||
do {jobject *globRefPtr = cp_gtk_get_state (env, obj, native_graphics_global_ref_table); \
|
||||
cp_gtk_remove_state_slot (env, obj, native_graphics_global_ref_table); \
|
||||
(*env)->DeleteGlobalRef (env, *globRefPtr); \
|
||||
free (globRefPtr);} while (0)
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_initStaticState
|
||||
(JNIEnv *env, jclass clazz)
|
||||
{
|
||||
gdk_threads_enter();
|
||||
|
||||
NSA_G_INIT (env, clazz);
|
||||
NSA_GLOBAL_G_INIT (env, clazz);
|
||||
|
||||
gdk_threads_leave();
|
||||
}
|
||||
|
||||
#define GDK_STABLE_IS_PIXMAP(d) (GDK_IS_PIXMAP(d))
|
||||
|
||||
static GdkPoint *translate_points (JNIEnv *env, jintArray xpoints,
|
||||
jintArray ypoints, jint npoints,
|
||||
jint x_offset, jint y_offset);
|
||||
static void realize_cb (GtkWidget *widget, jobject jgraphics);
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_nativeCopyState
|
||||
(JNIEnv *env, jobject obj, jobject old)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
struct graphics *g_old = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) g_malloc (sizeof (struct graphics));
|
||||
g_old = (struct graphics *) NSA_GET_G_PTR (env, old);
|
||||
|
||||
*g = *g_old;
|
||||
|
||||
g->gc = gdk_gc_new (g->drawable);
|
||||
gdk_gc_copy (g->gc, g_old->gc);
|
||||
|
||||
if (GDK_STABLE_IS_PIXMAP (g->drawable))
|
||||
g_object_ref (g->drawable);
|
||||
else /* GDK_IS_WINDOW (g->drawable) */
|
||||
g_object_ref (g->drawable);
|
||||
|
||||
if (g->cm != NULL)
|
||||
g_object_ref (g->cm);
|
||||
|
||||
NSA_SET_G_PTR (env, obj, g);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__II
|
||||
(JNIEnv *env, jobject obj, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) g_malloc (sizeof (struct graphics));
|
||||
g->x_offset = g->y_offset = 0;
|
||||
|
||||
g->drawable = (GdkDrawable *) gdk_pixmap_new (NULL, width, height,
|
||||
gdk_rgb_get_visual ()->depth);
|
||||
g->cm = gdk_rgb_get_colormap ();
|
||||
|
||||
if (g->cm != NULL)
|
||||
g_object_ref (g->cm);
|
||||
g->gc = gdk_gc_new (g->drawable);
|
||||
|
||||
NSA_SET_G_PTR (env, obj, g);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_initFromImage
|
||||
(JNIEnv *env, jobject obj, jobject source)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
GdkPixmap *pixmap = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
pixmap = cp_gtk_image_get_pixmap (env, source);
|
||||
g_assert(pixmap != NULL);
|
||||
g_object_ref (pixmap);
|
||||
|
||||
g = (struct graphics *) g_malloc (sizeof (struct graphics));
|
||||
g->x_offset = g->y_offset = 0;
|
||||
|
||||
g->drawable = (GdkDrawable *)pixmap;
|
||||
|
||||
g->cm = gdk_drawable_get_colormap (g->drawable);
|
||||
|
||||
if (g->cm != NULL)
|
||||
g_object_ref (g->cm);
|
||||
g->gc = gdk_gc_new (g->drawable);
|
||||
|
||||
NSA_SET_G_PTR (env, obj, g);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_initStateUnlocked
|
||||
(JNIEnv *env, jobject obj, jobject peer)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
void *ptr = NULL;
|
||||
GtkWidget *widget = NULL;
|
||||
GdkColor color;
|
||||
|
||||
g = (struct graphics *) g_malloc (sizeof (struct graphics));
|
||||
ptr = NSA_GET_PTR (env, peer);
|
||||
g->x_offset = 0;
|
||||
g->y_offset = 0;
|
||||
|
||||
widget = GTK_WIDGET (ptr);
|
||||
g->drawable = (GdkDrawable *) widget->window;
|
||||
|
||||
g_object_ref (g->drawable);
|
||||
g->cm = gtk_widget_get_colormap (widget);
|
||||
|
||||
if (g->cm != NULL)
|
||||
g_object_ref (g->cm);
|
||||
|
||||
g->gc = gdk_gc_new (g->drawable);
|
||||
gdk_gc_copy (g->gc, widget->style->fg_gc[GTK_STATE_NORMAL]);
|
||||
color = widget->style->fg[GTK_STATE_NORMAL];
|
||||
|
||||
NSA_SET_G_PTR (env, obj, g);
|
||||
}
|
||||
|
||||
/* copy the native state of the peer (GtkWidget *) to the native state
|
||||
of the graphics object */
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_initState__Lgnu_java_awt_peer_gtk_GtkComponentPeer_2
|
||||
(JNIEnv *env, jobject obj, jobject peer)
|
||||
{
|
||||
gdk_threads_enter ();
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_initStateUnlocked
|
||||
(env, obj, peer);
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_connectSignals
|
||||
(JNIEnv *env, jobject obj, jobject peer)
|
||||
{
|
||||
void *ptr = NULL;
|
||||
jobject *gref = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
NSA_SET_GLOBAL_G_REF (env, obj);
|
||||
gref = NSA_GET_GLOBAL_G_REF (env, obj);
|
||||
|
||||
ptr = NSA_GET_PTR (env, peer);
|
||||
|
||||
g_signal_connect_after (G_OBJECT (ptr), "realize",
|
||||
G_CALLBACK (realize_cb), *gref);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_nativeDispose
|
||||
(JNIEnv *env, jobject obj)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_DEL_G_PTR (env, obj);
|
||||
|
||||
/* check if dispose has been called already */
|
||||
if (!g)
|
||||
{
|
||||
gdk_threads_leave ();
|
||||
return;
|
||||
}
|
||||
|
||||
XFlush (GDK_DISPLAY ());
|
||||
|
||||
if (g->gc != NULL)
|
||||
g_object_unref (g->gc);
|
||||
|
||||
if (GDK_STABLE_IS_PIXMAP (g->drawable))
|
||||
g_object_unref (g->drawable);
|
||||
else if (g->drawable != NULL)
|
||||
g_object_unref (g->drawable);
|
||||
|
||||
if (g->cm != NULL)
|
||||
g_object_unref (g->cm);
|
||||
|
||||
g_free (g);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_translateNative
|
||||
(JNIEnv *env, jobject obj, jint x, jint y)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
g->x_offset += x;
|
||||
g->y_offset += y;
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawString
|
||||
(JNIEnv *env, jobject obj, jobject font, jstring str, jint x, jint y)
|
||||
{
|
||||
struct peerfont *pfont = NULL;
|
||||
struct graphics *g = NULL;
|
||||
const char *cstr = NULL;
|
||||
const char *sTmp = NULL;
|
||||
char *tmp = NULL;
|
||||
char *p = NULL;
|
||||
int count = 0;
|
||||
int charSize = 0;
|
||||
int baseline_y = 0;
|
||||
PangoLayoutIter *iter = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
g_assert (g != NULL);
|
||||
|
||||
pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font);
|
||||
g_assert (pfont != NULL);
|
||||
|
||||
cstr = (*env)->GetStringUTFChars (env, str, NULL);
|
||||
g_assert (cstr != NULL);
|
||||
|
||||
charSize = sizeof(char);
|
||||
p = malloc((strlen(cstr) + 1) * charSize);
|
||||
g_assert (p != NULL);
|
||||
|
||||
tmp = p;
|
||||
sTmp = cstr;
|
||||
for (; *sTmp != '\0'; sTmp++)
|
||||
if (((unsigned char) *sTmp) >= ' ')
|
||||
{
|
||||
*p = *sTmp;
|
||||
count++;
|
||||
p++;
|
||||
}
|
||||
*p = '\0';
|
||||
|
||||
p = realloc(tmp, (count + 1) * charSize);
|
||||
g_assert (p != NULL);
|
||||
pango_layout_set_text (pfont->layout, p, -1);
|
||||
free(p);
|
||||
|
||||
pango_layout_set_font_description (pfont->layout, pfont->desc);
|
||||
iter = pango_layout_get_iter (pfont->layout);
|
||||
|
||||
baseline_y = pango_layout_iter_get_baseline (iter);
|
||||
|
||||
gdk_draw_layout (g->drawable, g->gc,
|
||||
x + g->x_offset,
|
||||
y + g->y_offset - PANGO_PIXELS (baseline_y),
|
||||
pfont->layout);
|
||||
|
||||
pango_layout_iter_free (iter);
|
||||
pango_layout_set_text (pfont->layout, "", -1);
|
||||
|
||||
schedule_flush ();
|
||||
|
||||
(*env)->ReleaseStringUTFChars (env, str, cstr);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawLine
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint x2, jint y2)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_line (g->drawable, g->gc,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
x2 + g->x_offset, y2 + g->y_offset);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_fillRect
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_rectangle (g->drawable, g->gc, TRUE,
|
||||
x + g->x_offset, y + g->y_offset, width, height);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawRect
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_rectangle (g->drawable, g->gc, FALSE,
|
||||
x + g->x_offset, y + g->y_offset, width, height);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_copyArea
|
||||
(JNIEnv *env, jobject obj, jint x, jint y,
|
||||
jint width, jint height, jint dx, jint dy)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_drawable ((GdkWindow *)g->drawable,
|
||||
g->gc,
|
||||
(GdkWindow *)g->drawable,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
x + g->x_offset + dx, y + g->y_offset + dy,
|
||||
width, height);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
GdkGCValues saved;
|
||||
GtkWidget *widget = NULL;
|
||||
union widget_union w;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
if (!g)
|
||||
{
|
||||
gdk_threads_leave ();
|
||||
return;
|
||||
}
|
||||
|
||||
if (GDK_IS_WINDOW (g->drawable))
|
||||
{
|
||||
w.widget = &widget;
|
||||
gdk_window_get_user_data (GDK_WINDOW (g->drawable), w.void_widget);
|
||||
if (widget == NULL || !GTK_IS_EVENT_BOX (widget))
|
||||
gdk_window_clear_area ((GdkWindow *) g->drawable,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
width, height);
|
||||
}
|
||||
else
|
||||
{
|
||||
gdk_gc_get_values (g->gc, &saved);
|
||||
gdk_gc_set_background (g->gc, &(saved.background));
|
||||
gdk_draw_rectangle (g->drawable, g->gc, TRUE,
|
||||
x + g->x_offset, y + g->y_offset, width, height);
|
||||
gdk_gc_set_foreground (g->gc, &(saved.foreground));
|
||||
}
|
||||
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_setFunction
|
||||
(JNIEnv *env, jobject obj, jint func)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_gc_set_function (g->gc, func);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_setFGColor
|
||||
(JNIEnv *env, jobject obj, jint red, jint green, jint blue)
|
||||
{
|
||||
GdkColor color;
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
color.red = red << 8;
|
||||
color.green = green << 8;
|
||||
color.blue = blue << 8;
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
if (g->cm != NULL)
|
||||
gdk_colormap_alloc_color (g->cm, &color, TRUE, TRUE);
|
||||
|
||||
gdk_gc_set_foreground (g->gc, &color);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawArc
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height,
|
||||
jint angle1, jint angle2)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_arc (g->drawable, g->gc, FALSE,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
width, height, angle1 << 6, angle2 << 6);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
static GdkPoint *
|
||||
translate_points (JNIEnv *env, jintArray xpoints, jintArray ypoints,
|
||||
jint npoints, jint x_offset, jint y_offset)
|
||||
{
|
||||
GdkPoint *points;
|
||||
jint *x, *y;
|
||||
int i;
|
||||
|
||||
/* allocate one more point than necessary, in case we need to tack
|
||||
on an extra due to the semantics of Java polygons. */
|
||||
points = g_malloc (sizeof (GdkPoint) * (npoints + 1));
|
||||
|
||||
x = (*env)->GetIntArrayElements (env, xpoints, NULL);
|
||||
y = (*env)->GetIntArrayElements (env, ypoints, NULL);
|
||||
|
||||
for (i = 0; i < npoints; i++)
|
||||
{
|
||||
points[i].x = x[i] + x_offset;
|
||||
points[i].y = y[i] + y_offset;
|
||||
}
|
||||
|
||||
(*env)->ReleaseIntArrayElements (env, xpoints, x, JNI_ABORT);
|
||||
(*env)->ReleaseIntArrayElements (env, ypoints, y, JNI_ABORT);
|
||||
|
||||
return points;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolyline
|
||||
(JNIEnv *env, jobject obj, jintArray xpoints, jintArray ypoints,
|
||||
jint npoints)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
GdkPoint *points = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
points = translate_points (env, xpoints, ypoints, npoints,
|
||||
g->x_offset, g->y_offset);
|
||||
|
||||
gdk_draw_lines (g->drawable, g->gc, points, npoints);
|
||||
schedule_flush ();
|
||||
|
||||
g_free (points);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolygon
|
||||
(JNIEnv *env, jobject obj, jintArray xpoints, jintArray ypoints,
|
||||
jint npoints)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
GdkPoint *points = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
points = translate_points (env, xpoints, ypoints, npoints,
|
||||
g->x_offset, g->y_offset);
|
||||
|
||||
/* make sure the polygon is closed, per Java semantics.
|
||||
if it's not, we close it. */
|
||||
if (points[0].x != points[npoints-1].x || points[0].y != points[npoints-1].y)
|
||||
points[npoints++] = points[0];
|
||||
|
||||
gdk_draw_lines (g->drawable, g->gc, points, npoints);
|
||||
schedule_flush ();
|
||||
|
||||
g_free (points);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_fillPolygon
|
||||
(JNIEnv *env, jobject obj, jintArray xpoints, jintArray ypoints,
|
||||
jint npoints)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
GdkPoint *points = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
points = translate_points (env, xpoints, ypoints, npoints,
|
||||
g->x_offset, g->y_offset);
|
||||
gdk_draw_polygon (g->drawable, g->gc, TRUE, points, npoints);
|
||||
schedule_flush ();
|
||||
|
||||
g_free (points);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_fillArc
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height,
|
||||
jint angle1, jint angle2)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_arc (g->drawable, g->gc, TRUE,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
width, height, angle1 << 6, angle2 << 6);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_drawOval
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_arc (g->drawable, g->gc, FALSE,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
width, height, 0, 23040);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_fillOval
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
gdk_draw_arc (g->drawable, g->gc, TRUE,
|
||||
x + g->x_offset, y + g->y_offset,
|
||||
width, height, 0, 23040);
|
||||
schedule_flush ();
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkGraphics_setClipRectangle
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height)
|
||||
{
|
||||
struct graphics *g = NULL;
|
||||
GdkRectangle rectangle;
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
g = (struct graphics *) NSA_GET_G_PTR (env, obj);
|
||||
|
||||
rectangle.x = x + g->x_offset;
|
||||
rectangle.y = y + g->y_offset;
|
||||
rectangle.width = width;
|
||||
rectangle.height = height;
|
||||
|
||||
gdk_gc_set_clip_rectangle (g->gc, &rectangle);
|
||||
|
||||
gdk_threads_leave ();
|
||||
}
|
||||
|
||||
static void
|
||||
realize_cb (GtkWidget *widget __attribute__ ((unused)), jobject jgraphics)
|
||||
{
|
||||
(*cp_gtk_gdk_env())->CallVoidMethod (cp_gtk_gdk_env(),
|
||||
jgraphics,
|
||||
initComponentGraphicsUnlockedID);
|
||||
|
||||
NSA_DEL_GLOBAL_G_REF (cp_gtk_gdk_env(), jgraphics);
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -278,7 +278,7 @@ JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState
|
||||
(JNIEnv *env, jclass clazz)
|
||||
{
|
||||
jclass dataOutputClass;
|
||||
jclass writerClass;
|
||||
|
||||
(*env)->GetJavaVM(env, &vm);
|
||||
|
||||
@ -296,9 +296,9 @@ Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState
|
||||
"(Ljava/lang/String;Z)"
|
||||
"Lgnu/java/awt/peer/gtk/GdkPixbufDecoder$ImageFormatSpec;");
|
||||
|
||||
|
||||
dataOutputClass = (*env)->FindClass(env, "java/io/DataOutput");
|
||||
dataOutputWriteID = (*env)->GetMethodID (env, dataOutputClass,
|
||||
writerClass = (*env)->FindClass
|
||||
(env, "gnu/java/awt/peer/gtk/GdkPixbufDecoder$GdkPixbufWriter");
|
||||
dataOutputWriteID = (*env)->GetMethodID (env, writerClass,
|
||||
"write", "([B)V");
|
||||
|
||||
query_formats (env, clazz);
|
||||
@ -344,7 +344,7 @@ Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpDone
|
||||
struct stream_save_request
|
||||
{
|
||||
JNIEnv *env;
|
||||
jobject *stream;
|
||||
jobject *writer;
|
||||
};
|
||||
|
||||
static gboolean
|
||||
@ -358,30 +358,23 @@ save_to_stream(const gchar *buf,
|
||||
jbyteArray jbuf;
|
||||
jbyte *cbuf;
|
||||
|
||||
/* FIXME. Don't call user code directly on this thread.
|
||||
Store bytes and signal a "pump" thread to deliver to user code.
|
||||
Then we don't have to drop/acquire any locks. */
|
||||
gdk_threads_leave ();
|
||||
|
||||
jbuf = (*(ssr->env))->NewByteArray ((ssr->env), count);
|
||||
cbuf = (*(ssr->env))->GetByteArrayElements ((ssr->env), jbuf, NULL);
|
||||
memcpy (cbuf, buf, count);
|
||||
(*(ssr->env))->ReleaseByteArrayElements ((ssr->env), jbuf, cbuf, 0);
|
||||
(*(ssr->env))->CallVoidMethod ((ssr->env), *(ssr->stream),
|
||||
(*(ssr->env))->CallVoidMethod ((ssr->env), *(ssr->writer),
|
||||
dataOutputWriteID, jbuf);
|
||||
(*(ssr->env))->DeleteLocalRef((ssr->env), jbuf);
|
||||
|
||||
gdk_threads_enter ();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_streamImage
|
||||
(JNIEnv *env, jclass clazz __attribute__((unused)),
|
||||
(JNIEnv *env, jclass clazz __attribute__((unused)),
|
||||
jintArray jarr, jstring jenctype, jint width, jint height,
|
||||
jboolean hasAlpha, jobject stream)
|
||||
jboolean hasAlpha, jobject writer)
|
||||
{
|
||||
GdkPixbuf* pixbuf;
|
||||
jint *ints;
|
||||
@ -391,7 +384,7 @@ Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_streamImage
|
||||
int i;
|
||||
struct stream_save_request ssr;
|
||||
|
||||
ssr.stream = &stream;
|
||||
ssr.writer = &writer;
|
||||
ssr.env = env;
|
||||
|
||||
ints = (*env)->GetIntArrayElements (env, jarr, NULL);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <pango/pangofc-font.h>
|
||||
#include <freetype/ftglyph.h>
|
||||
#include <freetype/ftoutln.h>
|
||||
#include "jcl.h"
|
||||
#include "native_state.h"
|
||||
#include "gdkfont.h"
|
||||
#include "gnu_java_awt_peer_gtk_GdkTextLayout.h"
|
||||
@ -239,23 +240,21 @@ Java_gnu_java_awt_peer_gtk_GdkTextLayout_dispose
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GdkTextLayout_cairoDrawGdkTextLayout
|
||||
(JNIEnv *env, jobject obj, jobject cairographics, jfloat x, jfloat y)
|
||||
(JNIEnv *env, jobject obj, jlong cg2d, jfloat x, jfloat y)
|
||||
{
|
||||
/*
|
||||
* FIXME: Some day we expect either cairo or pango will know how to make
|
||||
* a pango layout paint to a cairo surface. that day is not yet here.
|
||||
*/
|
||||
|
||||
cairo_t *cr;
|
||||
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, cg2d);
|
||||
cairo_t *cr = gr->cr;
|
||||
struct textlayout *tl = NULL;
|
||||
PangoLayoutIter *i = NULL;
|
||||
PangoLayoutRun *run = NULL;
|
||||
cairo_glyph_t *glyphs = NULL;
|
||||
gint n_glyphs = 0;
|
||||
|
||||
g_assert (cairographics != NULL);
|
||||
|
||||
cr = cp_gtk_get_cairo_t(env, cairographics);
|
||||
tl = (struct textlayout *)NSA_GET_TEXT_LAYOUT_PTR (env, obj);
|
||||
|
||||
g_assert (cr != NULL);
|
||||
|
@ -47,11 +47,6 @@ exception statement from your version. */
|
||||
#include "gnu_java_awt_peer_gtk_GtkVolatileImage.h"
|
||||
#include "cairographics2d.h"
|
||||
|
||||
/* prototypes */
|
||||
static void *getNativeObject( JNIEnv *env, jobject obj );
|
||||
/* static void setNativeObject( JNIEnv *env, jobject obj, void *ptr ); */
|
||||
|
||||
GdkPixmap *cp_gtk_get_pixmap( JNIEnv *env, jobject obj);
|
||||
|
||||
/**
|
||||
* Creates a cairo surface, ARGB32, native ordering, premultiplied alpha.
|
||||
@ -91,9 +86,11 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_init (JNIEnv *env,
|
||||
* Destroy the surface
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy (JNIEnv *env, jobject obj)
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute((unused)),
|
||||
jlong pointer)
|
||||
{
|
||||
GdkPixmap* pixmap = getNativeObject(env, obj);
|
||||
GdkPixmap* pixmap = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||
if( pixmap != NULL )
|
||||
{
|
||||
gdk_threads_enter();
|
||||
@ -106,8 +103,8 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy (JNIEnv *env, jobject obj)
|
||||
* Gets all pixels in an array
|
||||
*/
|
||||
JNIEXPORT jintArray JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels
|
||||
(JNIEnv *env, jobject obj)
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels
|
||||
(JNIEnv *env, jobject obj, jlong pointer)
|
||||
{
|
||||
/* jint *pixeldata, *jpixdata; */
|
||||
jint *jpixdata;
|
||||
@ -126,7 +123,7 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels
|
||||
g_assert (field != 0);
|
||||
height = (*env)->GetIntField (env, obj, field);
|
||||
|
||||
pixmap = GDK_PIXMAP(getNativeObject(env, obj));
|
||||
pixmap = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||
g_assert(pixmap != NULL);
|
||||
|
||||
gdk_threads_enter();
|
||||
@ -149,11 +146,12 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels
|
||||
* Copy area
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea
|
||||
(JNIEnv *env, jobject obj, jint x, jint y, jint w, jint h, jint dx, jint dy)
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeCopyArea
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute((unused)),
|
||||
jlong pointer, jint x, jint y, jint w, jint h, jint dx, jint dy)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
GdkPixmap* pixmap = getNativeObject(env, obj);
|
||||
GdkPixmap* pixmap = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||
|
||||
g_assert (pixmap != NULL);
|
||||
|
||||
@ -169,14 +167,15 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile
|
||||
(JNIEnv *env, jobject obj, jlong ptr, jint x, jint y, jint w, jint h)
|
||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeDrawVolatile
|
||||
(JNIEnv *env __attribute__((unused)), jobject obj __attribute((unused)),
|
||||
jlong pointer, jlong srcptr, jint x, jint y, jint w, jint h)
|
||||
{
|
||||
GdkPixmap *dst, *src;
|
||||
GdkGC *gc;
|
||||
|
||||
src = JLONG_TO_PTR(GdkPixmap, ptr);
|
||||
dst = getNativeObject(env, obj);
|
||||
src = JLONG_TO_PTR(GdkPixmap, srcptr);
|
||||
dst = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||
g_assert (src != NULL);
|
||||
g_assert (dst != NULL);
|
||||
|
||||
@ -194,23 +193,3 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile
|
||||
gdk_threads_leave();
|
||||
}
|
||||
|
||||
GdkPixmap *cp_gtk_get_pixmap( JNIEnv *env, jobject obj)
|
||||
{
|
||||
return (GdkPixmap *)getNativeObject(env, obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the native object field.
|
||||
*/
|
||||
static void *
|
||||
getNativeObject( JNIEnv *env, jobject obj )
|
||||
{
|
||||
jclass cls;
|
||||
jlong value;
|
||||
jfieldID nofid;
|
||||
cls = (*env)->GetObjectClass( env, obj );
|
||||
nofid = (*env)->GetFieldID( env, cls, "nativePointer", "J" );
|
||||
value = (*env)->GetLongField( env, obj, nofid );
|
||||
(*env)->DeleteLocalRef( env, cls );
|
||||
return JLONG_TO_PTR(void, value);
|
||||
}
|
||||
|
@ -1,93 +0,0 @@
|
||||
#ifndef __GTKCAIROPEER_H__
|
||||
#define __GTKCAIROPEER_H__
|
||||
|
||||
/* gtkcairopeer.h -- Some global variables and #defines
|
||||
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
#include "gtkpeer.h"
|
||||
#include <cairo.h>
|
||||
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||
|
||||
/*
|
||||
A graphics2d struct is both simpler and uglier than a graphics
|
||||
struct.
|
||||
|
||||
Most of the graphics2d drawing state is held in the referenced cairo_t
|
||||
and corresponding cairo_surface_t, so we can ignore it.
|
||||
|
||||
In addition to the cairo_t, we need to hold an extra reference to the
|
||||
underlying GdkDrawable so its refcount matches the lifecycle of the java
|
||||
Graphics object which is peering with us; also a reference to a byte
|
||||
buffer and cairo_surface_t which contain the pattern you're drawing from
|
||||
(if it exists).
|
||||
|
||||
Finally, it is possible that we are using a non-RENDER capable X server,
|
||||
therefore we will be drawing to an cairo_surface_t which is actually a
|
||||
pixbuf. When this is the case, the pointer to a GdkPixbuf will be
|
||||
non-NULL and any drawing operation needs to be bracketed by pixbuf
|
||||
load/save operations. If the GdkPixbuf pointer is NULL, we will treat
|
||||
the cairo_surface_t as RENDER-capable.
|
||||
*/
|
||||
|
||||
struct graphics2d
|
||||
{
|
||||
cairo_t *cr;
|
||||
cairo_surface_t *surface;
|
||||
GdkDrawable *drawable;
|
||||
GdkWindow *win;
|
||||
GdkPixbuf *drawbuf;
|
||||
char *pattern_pixels;
|
||||
cairo_surface_t *pattern_surface;
|
||||
cairo_pattern_t *pattern;
|
||||
gboolean debug;
|
||||
enum
|
||||
{
|
||||
MODE_DRAWABLE_WITH_RENDER,
|
||||
MODE_DRAWABLE_NO_RENDER,
|
||||
MODE_JAVA_ARRAY
|
||||
}
|
||||
mode;
|
||||
|
||||
/* Support for MODE_JAVA_ARRAY */
|
||||
jintArray jarray;
|
||||
jint width, height;
|
||||
jint *javabuf;
|
||||
jint *javabuf_copy;
|
||||
jboolean isCopy;
|
||||
};
|
||||
|
||||
#endif /* __GTKCAIROPEER_H */
|
@ -1,17 +1,24 @@
|
||||
lib_LTLIBRARIES = libgcjwebplugin.la
|
||||
## GCJ LOCAL: install this library in GCJ's versioned library
|
||||
## directory
|
||||
gcc_version := $(shell cat $(top_srcdir)/../../gcc/BASE-VER)
|
||||
gcjversionedlibdir = $(libdir)/gcj-$(gcc_version)
|
||||
gcjversionedlib_LTLIBRARIES = libgcjwebplugin.la
|
||||
|
||||
libgcjwebplugin_la_SOURCES = gcjwebplugin.cc
|
||||
|
||||
libgcjwebplugin_la_CXXFLAGS = \
|
||||
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/appletviewer\"" \
|
||||
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/gappletviewer\"" \
|
||||
-DPLUGIN_DATA_DIRECTORY="\"$(PLUGIN_DIR)/gcjwebplugin-data\"" \
|
||||
$(MOZILLA_CFLAGS) $(GLIB_CFLAGS) $(GTK_CFLAGS)
|
||||
|
||||
libgcjwebplugin_la_LDFLAGS = -avoid-version \
|
||||
## GCJ LOCAL: encode the library path and use GCJ's library version
|
||||
libgcjwebplugin_la_LDFLAGS = -rpath $(gcjversionedlibdir) \
|
||||
-version-info `grep -v '^\#' $(top_srcdir)/../libtool-version` \
|
||||
$(GLIB_LIBS) $(GTK_LIBS) \
|
||||
-lstdc++
|
||||
|
||||
install-plugin: $(lib_LTLIBRARIES)
|
||||
## GCJ LOCAL: depend on gcjversionedlib_LTLIBRARIES
|
||||
install-plugin: $(gcjversionedlib_LTLIBRARIES)
|
||||
$(INSTALL) -d -m0755 $(DESTDIR)$(PLUGIN_DIR)
|
||||
$(INSTALL) .libs/libgcjwebplugin.so $(DESTDIR)$(PLUGIN_DIR)
|
||||
|
||||
|
@ -58,9 +58,9 @@ am__vpath_adj = case $$p in \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||
am__installdirs = "$(DESTDIR)$(gcjversionedlibdir)"
|
||||
gcjversionedlibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(gcjversionedlib_LTLIBRARIES)
|
||||
libgcjwebplugin_la_LIBADD =
|
||||
am_libgcjwebplugin_la_OBJECTS = libgcjwebplugin_la-gcjwebplugin.lo
|
||||
libgcjwebplugin_la_OBJECTS = $(am_libgcjwebplugin_la_OBJECTS)
|
||||
@ -294,14 +294,17 @@ target_cpu = @target_cpu@
|
||||
target_os = @target_os@
|
||||
target_vendor = @target_vendor@
|
||||
vm_classes = @vm_classes@
|
||||
lib_LTLIBRARIES = libgcjwebplugin.la
|
||||
gcc_version := $(shell cat $(top_srcdir)/../../gcc/BASE-VER)
|
||||
gcjversionedlibdir = $(libdir)/gcj-$(gcc_version)
|
||||
gcjversionedlib_LTLIBRARIES = libgcjwebplugin.la
|
||||
libgcjwebplugin_la_SOURCES = gcjwebplugin.cc
|
||||
libgcjwebplugin_la_CXXFLAGS = \
|
||||
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/appletviewer\"" \
|
||||
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/gappletviewer\"" \
|
||||
-DPLUGIN_DATA_DIRECTORY="\"$(PLUGIN_DIR)/gcjwebplugin-data\"" \
|
||||
$(MOZILLA_CFLAGS) $(GLIB_CFLAGS) $(GTK_CFLAGS)
|
||||
|
||||
libgcjwebplugin_la_LDFLAGS = -avoid-version \
|
||||
libgcjwebplugin_la_LDFLAGS = -rpath $(gcjversionedlibdir) \
|
||||
-version-info `grep -v '^\#' $(top_srcdir)/../libtool-version` \
|
||||
$(GLIB_LIBS) $(GTK_LIBS) \
|
||||
-lstdc++
|
||||
|
||||
@ -338,35 +341,35 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||
install-gcjversionedlibLTLIBRARIES: $(gcjversionedlib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
test -z "$(gcjversionedlibdir)" || $(mkdir_p) "$(DESTDIR)$(gcjversionedlibdir)"
|
||||
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||
echo " $(LIBTOOL) --mode=install $(gcjversionedlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(gcjversionedlibdir)/$$f'"; \
|
||||
$(LIBTOOL) --mode=install $(gcjversionedlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(gcjversionedlibdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLTLIBRARIES:
|
||||
uninstall-gcjversionedlibLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
@set -x; list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(gcjversionedlibdir)/$$p'"; \
|
||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(gcjversionedlibdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-libLTLIBRARIES:
|
||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
clean-gcjversionedlibLTLIBRARIES:
|
||||
-test -z "$(gcjversionedlib_LTLIBRARIES)" || rm -f $(gcjversionedlib_LTLIBRARIES)
|
||||
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libgcjwebplugin.la: $(libgcjwebplugin_la_OBJECTS) $(libgcjwebplugin_la_DEPENDENCIES)
|
||||
$(CXXLINK) -rpath $(libdir) $(libgcjwebplugin_la_LDFLAGS) $(libgcjwebplugin_la_OBJECTS) $(libgcjwebplugin_la_LIBADD) $(LIBS)
|
||||
$(CXXLINK) -rpath $(gcjversionedlibdir) $(libgcjwebplugin_la_LDFLAGS) $(libgcjwebplugin_la_OBJECTS) $(libgcjwebplugin_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
@ -493,7 +496,7 @@ check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||
for dir in "$(DESTDIR)$(gcjversionedlibdir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
@ -522,7 +525,7 @@ maintainer-clean-generic:
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||
clean-am: clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
@ -541,9 +544,9 @@ info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
install-data-am: install-gcjversionedlibLTLIBRARIES
|
||||
|
||||
install-exec-am: install-libLTLIBRARIES
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
@ -569,23 +572,24 @@ ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES
|
||||
uninstall-am: uninstall-gcjversionedlibLTLIBRARIES uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am \
|
||||
install-libLTLIBRARIES install-man install-strip installcheck \
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean \
|
||||
clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||
ctags distclean distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-exec install-exec-am \
|
||||
install-gcjversionedlibLTLIBRARIES install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-libLTLIBRARIES
|
||||
tags uninstall uninstall-am \
|
||||
uninstall-gcjversionedlibLTLIBRARIES uninstall-info-am
|
||||
|
||||
|
||||
install-plugin: $(lib_LTLIBRARIES)
|
||||
install-plugin: $(gcjversionedlib_LTLIBRARIES)
|
||||
$(INSTALL) -d -m0755 $(DESTDIR)$(PLUGIN_DIR)
|
||||
$(INSTALL) .libs/libgcjwebplugin.so $(DESTDIR)$(PLUGIN_DIR)
|
||||
|
||||
|
@ -79,6 +79,10 @@ exception statement from your version. */
|
||||
g_printerr ("%s:%d: thread %p: Error: %s: %s\n", __FILE__, __LINE__, \
|
||||
g_thread_self (), first, second)
|
||||
|
||||
#define PLUGIN_ERROR_THREE(first, second, third) \
|
||||
g_printerr ("%s:%d: thread %p: Error: %s: %s: %s\n", __FILE__, \
|
||||
__LINE__, g_thread_self (), first, second, third)
|
||||
|
||||
// Plugin information passed to about:plugins.
|
||||
#define PLUGIN_NAME "GCJ Web Browser Plugin"
|
||||
#define PLUGIN_DESC "The " PLUGIN_NAME " executes Java applets."
|
||||
@ -120,7 +124,6 @@ exception statement from your version. */
|
||||
// Security dialog messages.
|
||||
#define RESPONSE_TRUST_APPLET "Trust Applet"
|
||||
#define RESPONSE_TRUST_APPLET_ADD_TO_LIST "Trust Applet and Add to Whitelist"
|
||||
#define WHITELIST_FILENAME PLUGIN_DATA_DIRECTORY "/whitelist.txt"
|
||||
#define SECURITY_WARNING \
|
||||
"%s wants to load an applet.\n" \
|
||||
"GNU Classpath's security implementation is not complete.\n" \
|
||||
@ -132,7 +135,7 @@ exception statement from your version. */
|
||||
" and run this applet from now on, without asking.\n" \
|
||||
"The whitelist is a list of the URLs from which you trust" \
|
||||
" applets.\n" \
|
||||
"Your whitelist file is \"" WHITELIST_FILENAME "\"."
|
||||
"Your whitelist file is \" %s \"."
|
||||
#define FAILURE_MESSAGE \
|
||||
"This page wants to load an applet.\n" \
|
||||
"The appletviewer is missing or not installed properly in \"" \
|
||||
@ -144,9 +147,15 @@ static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID);
|
||||
// Browser function table.
|
||||
static NPNetscapeFuncs browserFunctions;
|
||||
|
||||
// Data directory for plugin.
|
||||
static gchar* data_directory;
|
||||
|
||||
// Whitelist filename
|
||||
static gchar* whitelist_filename;
|
||||
|
||||
// Keeps track of initialization. NP_Initialize should only be
|
||||
// called once.
|
||||
bool initialized = false;
|
||||
gboolean initialized = false;
|
||||
|
||||
// GCJPluginData stores all the data associated with a single plugin
|
||||
// instance. A separate plugin instance is created for each <APPLET>
|
||||
@ -314,21 +323,40 @@ GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode,
|
||||
" Browser not Mozilla-based?");
|
||||
goto cleanup_appletviewer_mutex;
|
||||
}
|
||||
|
||||
// Open the user's documentbase whitelist.
|
||||
whitelist_file = g_io_channel_new_file (whitelist_filename,
|
||||
"a+", &channel_error);
|
||||
if (!whitelist_file)
|
||||
{
|
||||
if (channel_error)
|
||||
{
|
||||
PLUGIN_ERROR_THREE ("Failed to open whitelist file",
|
||||
whitelist_filename,
|
||||
channel_error->message);
|
||||
g_error_free (channel_error);
|
||||
channel_error = NULL;
|
||||
}
|
||||
else
|
||||
PLUGIN_ERROR_TWO ("Failed to open whitelist file",
|
||||
whitelist_filename);
|
||||
|
||||
return NPERR_GENERIC_ERROR;
|
||||
}
|
||||
|
||||
if (!plugin_user_trusts_documentbase (documentbase))
|
||||
{
|
||||
PLUGIN_ERROR ("User does not trust applet.");
|
||||
np_error = NPERR_GENERIC_ERROR;
|
||||
goto cleanup_appletviewer_mutex;
|
||||
}
|
||||
|
||||
|
||||
// Create appletviewer-to-plugin pipe which we refer to as the input
|
||||
// pipe.
|
||||
|
||||
// data->in_pipe_name
|
||||
data->in_pipe_name = g_strdup_printf (PLUGIN_DATA_DIRECTORY
|
||||
"/gcj-%s-appletviewer-to-plugin",
|
||||
data->instance_string);
|
||||
data->in_pipe_name = g_strdup_printf ("%s/gcj-%s-appletviewer-to-plugin",
|
||||
data_directory, data->instance_string);
|
||||
if (!data->in_pipe_name)
|
||||
{
|
||||
PLUGIN_ERROR ("Failed to create input pipe name.");
|
||||
@ -349,9 +377,8 @@ GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode,
|
||||
// output pipe.
|
||||
|
||||
// data->out_pipe_name
|
||||
data->out_pipe_name = g_strdup_printf (PLUGIN_DATA_DIRECTORY
|
||||
"/gcj-%s-plugin-to-appletviewer",
|
||||
data->instance_string);
|
||||
data->out_pipe_name = g_strdup_printf ("%s/gcj-%s-plugin-to-appletviewer",
|
||||
data_directory, data->instance_string);
|
||||
|
||||
if (!data->out_pipe_name)
|
||||
{
|
||||
@ -952,7 +979,7 @@ plugin_user_trusts_documentbase (char* documentbase)
|
||||
channel_error = NULL;
|
||||
}
|
||||
else
|
||||
PLUGIN_ERROR ("Failed to open whitelist file.");
|
||||
PLUGIN_ERROR ("Failed to read line from whitelist file.");
|
||||
g_free (whitelist_entry);
|
||||
whitelist_entry = NULL;
|
||||
break;
|
||||
@ -1061,7 +1088,7 @@ plugin_ask_user_about_documentbase (char* documentbase)
|
||||
SECURITY_WARNING,
|
||||
documentbase);
|
||||
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
|
||||
SECURITY_DESCRIPTION);
|
||||
SECURITY_DESCRIPTION, whitelist_filename);
|
||||
|
||||
cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
|
||||
GTK_STOCK_CANCEL,
|
||||
@ -1577,7 +1604,7 @@ NP_Initialize (NPNetscapeFuncs* browserTable, NPPluginFuncs* pluginTable)
|
||||
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
}
|
||||
|
||||
|
||||
// Ensure that the major version of the plugin API that the browser
|
||||
// expects is not more recent than the major version of the API that
|
||||
// we've implemented.
|
||||
@ -1606,43 +1633,25 @@ NP_Initialize (NPNetscapeFuncs* browserTable, NPPluginFuncs* pluginTable)
|
||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
||||
}
|
||||
|
||||
data_directory = g_strconcat(getenv("HOME"), "/.gcjwebplugin", NULL);
|
||||
whitelist_filename = g_strconcat (data_directory, "/whitelist.txt", NULL);
|
||||
// Make sure the plugin data directory exists, creating it if
|
||||
// necessary.
|
||||
if (!g_file_test (PLUGIN_DATA_DIRECTORY,
|
||||
if (!g_file_test (data_directory,
|
||||
(GFileTest) (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
|
||||
{
|
||||
int file_error = 0;
|
||||
|
||||
file_error = g_mkdir (PLUGIN_DATA_DIRECTORY, 0700);
|
||||
file_error = g_mkdir (data_directory, 0700);
|
||||
if (file_error != 0)
|
||||
{
|
||||
PLUGIN_ERROR_TWO ("Failed to create data directory "
|
||||
PLUGIN_DATA_DIRECTORY " ",
|
||||
strerror (errno));
|
||||
PLUGIN_ERROR_THREE ("Failed to create data directory",
|
||||
data_directory,
|
||||
strerror (errno));
|
||||
return NPERR_GENERIC_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
// Open the user's documentbase whitelist.
|
||||
whitelist_file = g_io_channel_new_file (WHITELIST_FILENAME,
|
||||
"a+", &channel_error);
|
||||
if (!whitelist_file)
|
||||
{
|
||||
if (channel_error)
|
||||
{
|
||||
PLUGIN_ERROR_TWO ("Failed to open whitelist file "
|
||||
WHITELIST_FILENAME " ",
|
||||
channel_error->message);
|
||||
g_error_free (channel_error);
|
||||
channel_error = NULL;
|
||||
}
|
||||
else
|
||||
PLUGIN_ERROR ("Failed to open whitelist file "
|
||||
WHITELIST_FILENAME);
|
||||
|
||||
return NPERR_GENERIC_ERROR;
|
||||
}
|
||||
|
||||
// Store in a local table the browser functions that we may use.
|
||||
browserFunctions.version = browserTable->version;
|
||||
browserFunctions.size = browserTable->size;
|
||||
@ -1750,6 +1759,18 @@ NP_Shutdown (void)
|
||||
g_io_channel_close (whitelist_file);
|
||||
whitelist_file = NULL;
|
||||
}
|
||||
|
||||
if (data_directory)
|
||||
{
|
||||
g_free (data_directory);
|
||||
data_directory = NULL;
|
||||
}
|
||||
|
||||
if (whitelist_filename)
|
||||
{
|
||||
g_free (whitelist_filename);
|
||||
whitelist_filename = NULL;
|
||||
}
|
||||
|
||||
initialized = false;
|
||||
|
||||
|
@ -0,0 +1,70 @@
|
||||
# MessagesBundle.properties -- English language messages
|
||||
# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
gcjwebplugin.code_description=specify the code attribute
|
||||
gcjwebplugin.codebase_description=specify the codebase attribute
|
||||
gcjwebplugin.archive_description=specify the archive attribute
|
||||
gcjwebplugin.width_description=specify the width attribute
|
||||
gcjwebplugin.height_description=specify the height attribute
|
||||
gcjwebplugin.param_description=specify the parameter arguments
|
||||
gcjwebplugin.plugin_description=enable plugin mode
|
||||
gcjwebplugin.verbose_description=enable verbose mode
|
||||
gcjwebplugin.debug_description=enable debugging mode (not implemented)
|
||||
gcjwebplugin.encoding_description=specify the HTML character encoding
|
||||
|
||||
gcjwebplugin.no_input_files=appletviewer: no input files
|
||||
|
||||
gcjwebplugin.menu_title=Applet
|
||||
gcjwebplugin.menu_reload=Reload
|
||||
gcjwebplugin.menu_restart=Restart
|
||||
gcjwebplugin.menu_start=Start
|
||||
gcjwebplugin.menu_stop=Stop
|
||||
gcjwebplugin.menu_clone=Clone ...
|
||||
gcjwebplugin.menu_quit=Quit
|
||||
gcjwebplugin.menu_close=Close
|
||||
gcjwebplugin.menu_tag=Tag ...
|
||||
gcjwebplugin.menu_info=Info ...
|
||||
gcjwebplugin.menu_edit=Edit
|
||||
gcjwebplugin.menu_encoding=Character Encoding
|
||||
gcjwebplugin.menu_print=Print ...
|
||||
gcjwebplugin.menu_properties=Properties ...
|
||||
gcjwebplugin.menu_cancel=Cancel
|
||||
gcjwebplugin.menu_save=Save ...
|
||||
|
||||
gcjwebplugin.console_title=GCJ web plugin console
|
||||
gcjwebplugin.console_clear=Clear
|
||||
gcjwebplugin.console_hide=Hide
|
@ -0,0 +1,75 @@
|
||||
# MessagesBundle_de.properties -- German language messages
|
||||
# Copyright (C) 2004, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
# FIXME: rewrite this:
|
||||
gcjwebplugin.help.0=Syntax: appletviewer [Optionen] <Dateiname>.class | <Dateiname>.html... | URL...
|
||||
gcjwebplugin.help.1=Optionen:
|
||||
gcjwebplugin.help.2= --help Diese Hilfe anzeigen and beenden
|
||||
gcjwebplugin.help.3= --version Version anzeigen und beenden
|
||||
gcjwebplugin.help.4= --code=<Klassenname>[.class] Applet mit Klassen- oder Dateiname ausführen
|
||||
gcjwebplugin.help.5= --codebase=<Verzeichnis> Applet-Codebasis setzen
|
||||
gcjwebplugin.help.6= --archive=<Dateiname>.jar[,...] Archive zum Klassenlader hinzufügen
|
||||
gcjwebplugin.help.7= --param=<Name>,<Wert> Parameter an Applet übergeben
|
||||
gcjwebplugin.help.8= --width=<Breite> Setze Breite des Appletfensters
|
||||
gcjwebplugin.help.9= --height=<Höhe> Setze Höhe des Appletfensters
|
||||
gcjwebplugin.help.10= --plugin=<Eingabepipe>,<Ausgabepipe> Pluginmodus einschalten
|
||||
gcjwebplugin.help.11= -debug Starten des Applet-Viewers im Java-Debugger (nicht implementiert)
|
||||
gcjwebplugin.help.12= -encoding <Codierung> Angabe der von HTML-Dateien verwendeten Zeichencodierung
|
||||
gcjwebplugin.help.13= -J<Laufzeit-Flag> Übergeben des Arguments an den Java-Interpreter
|
||||
|
||||
gcjwebplugin.no_input_files=appletviewer: keine Dateien angegeben
|
||||
|
||||
gcjwebplugin.menu_title=Applet
|
||||
gcjwebplugin.menu_reload=Neu laden
|
||||
gcjwebplugin.menu_restart=Neu starten
|
||||
gcjwebplugin.menu_start=Start
|
||||
gcjwebplugin.menu_stop=Stop
|
||||
gcjwebplugin.menu_clone=Klonen ...
|
||||
gcjwebplugin.menu_quit=Beenden
|
||||
gcjwebplugin.menu_tag=Tag ...
|
||||
gcjwebplugin.menu_info=Informationen ...
|
||||
gcjwebplugin.menu_edit=Bearbeiten
|
||||
gcjwebplugin.menu_encoding=Zeichenkodierung
|
||||
gcjwebplugin.menu_print=Drucken ...
|
||||
gcjwebplugin.menu_properties=Eigenschaften ...
|
||||
gcjwebplugin.menu_close=Schließen
|
||||
gcjwebplugin.menu_cancel=Abbrechen
|
||||
gcjwebplugin.menu_save=Speichern unter ...
|
||||
|
||||
gcjwebplugin.console_title=GCJ web plugin Konsole
|
||||
gcjwebplugin.console_clear=Löschen
|
||||
gcjwebplugin.console_hide=Schließen
|
@ -0,0 +1,49 @@
|
||||
# MessagesBundle.properties -- English language messages
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
Parser.StdOptions=Standard options
|
||||
Parser.PrintHelp=print this help, then exit
|
||||
Parser.PrintVersion=print version number, then exit
|
||||
Parser.JArgument=pass argument to the Java runtime
|
||||
Parser.JName=OPTION
|
||||
Parser.ArgReqd=option ''{0}'' requires an argument
|
||||
Parser.Unrecognized=unrecognized option ''{0}''
|
||||
Parser.NoArg=option ''{0}'' doesn''t allow an argument
|
||||
Parser.UnrecDash=unrecognized option ''-{0}''
|
||||
Parser.TryHelpShort=Try ''{0} -help'' for more information
|
||||
Parser.TryHelpLong=Try ''{0} --help'' for more information
|
||||
ClasspathToolParser.VersionFormat={0} (GNU Classpath) {1}\n\nCopyright 2006 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
@ -0,0 +1,71 @@
|
||||
# messages.properties -- English language messages
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
Creator.Ignoring=ignoring entry {0}
|
||||
Creator.Adding=adding: {0} (in={1,number,integer}) (out={2,number,integer}) (stored {3,number,integer}%)
|
||||
Extractor.Created=\ \ created: {0}
|
||||
Extractor.Extracted=\ extracted: {0}
|
||||
Extractor.Inflated=\ \ inflated: {0}
|
||||
Indexer.Indexing=indexing: {0}
|
||||
Main.ArchiveAlreadySet=archive file name already set to {0}
|
||||
Main.ModeAlreaySet=operation mode already specified
|
||||
Main.MustSpecify=must specify one of -t, -c, -u, -x, or -i
|
||||
Main.TwoArgsReqd=-C argument requires both directory and filename
|
||||
Main.CantHaveBoth=can't specify both -m and -M
|
||||
Main.NoFilesWithi=can't specify file arguments when using -i
|
||||
Main.NoMAndi=can't specify -M with -i
|
||||
Main.AnotherNomAndi=can't specify -m with -i
|
||||
Main.Usage=Usage: jar -ctxui [OPTIONS] jar-file [-C DIR FILE] FILE...
|
||||
Main.OpMode=Operation mode
|
||||
Main.Create=create a new archive
|
||||
Main.Extract=extract from archive
|
||||
Main.List=list archive contents
|
||||
Main.Update=update archive
|
||||
Main.Index=compute archive index
|
||||
Main.FileArg=FILE
|
||||
Main.OpMods=Operation modifiers
|
||||
Main.ArchiveName=specify archive file name
|
||||
Main.FileArg2=FILE
|
||||
Main.NoZip=store only; no ZIP compression
|
||||
Main.Verbose=verbose operation
|
||||
Main.NoManifest=do not create a manifest file
|
||||
Main.ManifestName=specify manifest file
|
||||
Main.ManifestArgName=FILE
|
||||
Main.FileNameGroup=File name selection
|
||||
Main.ChangeDir=change to directory before the next file
|
||||
Main.ChangeDirArg=DIR FILE
|
||||
Main.InternalError=jar: internal error:
|
@ -1,33 +0,0 @@
|
||||
# default locale messages for gnu.classpath.tools.jarsigner package
|
||||
|
||||
Main.7=jarsigner:
|
||||
Main.9=jarsigner error:
|
||||
Main.70=JAR file [{0}] is NOT a file object
|
||||
Main.72=JAR file [{0}] is NOT readable
|
||||
#Main.85=Option '-keystore' is not defined or is an empty string, and 'user.home' is unknown
|
||||
Main.85=Unable to locate a valid key store
|
||||
Main.92=Enter key store password:
|
||||
Main.6=Designated alias [{0}] MUST be known to the key store in use
|
||||
Main.95=Designated alias [{0}] MUST be an Alias of a Key Entry
|
||||
Main.97=Enter key password for <{0}>:
|
||||
Main.99=Key associated with [{0}] MUST be a private key
|
||||
|
||||
JarSigner.1=\ \ signing:
|
||||
JarSigner.2=\ updating:
|
||||
JarSigner.8=\ \ \ adding:
|
||||
JarSigner.11=\ \ \ adding:
|
||||
JarSigner.14=jar signed.
|
||||
|
||||
JarVerifier.2=jar is not signed.--no signature files found.
|
||||
JarVerifier.3=jar verification failed.
|
||||
JarVerifier.4=jar partially verified --{0,numer} of {1,number} signers.
|
||||
JarVerifier.7=jar verified --{0,number} signer(s).
|
||||
JarVerifier.13=Signature Block missing for {0}
|
||||
JarVerifier.14=At least one SignerInfo element MUST be present in a Signature Block (.DSA file)
|
||||
JarVerifier.16=Missing EncryptedDigest in Signature Block (.DSA file) first SignerInfo element
|
||||
|
||||
SFHelper.1=Helper is NOT finished
|
||||
SFHelper.4=.SF file has NOT been generated
|
||||
SFHelper.6=Unknown or unsupported private key algorithm
|
||||
SFHelper.9=Helper is NOT ready
|
||||
SFHelper.10=Helper is NOT started
|
@ -0,0 +1,122 @@
|
||||
# messages.properties -- English language messages and message formats
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
#
|
||||
# for gnu.classpath.tools.jarsigner package
|
||||
#
|
||||
|
||||
Main.7=jarsigner:
|
||||
Main.9=jarsigner error:
|
||||
Main.70=JAR file [{0}] is NOT a file object
|
||||
Main.72=JAR file [{0}] is NOT readable
|
||||
#Main.85=Option '-keystore' is not defined or is an empty string, and 'user.home' is unknown
|
||||
Main.85=Unable to locate a valid key store
|
||||
Main.92=Enter key store password:
|
||||
Main.6=Designated alias [{0}] MUST be known to the key store in use
|
||||
Main.2=\
|
||||
Usage: jarsigner [OPTION]... FILE ALIAS\n\
|
||||
\ \ \ \ \ \ \ \ jarsigner -verify [OPTION]... FILE\n\
|
||||
Java ARchive (JAR) file signing and verification tool.\n\
|
||||
\n\
|
||||
FILE is the .JAR file to sign or to verify.\n\
|
||||
\n\
|
||||
ALIAS must be a known Alias of a Key Entry in the designated key store. The \
|
||||
private key material associated with this Alias is used for signing FILE. if \
|
||||
ALIAS is required, but was omitted, "mykey" will be used instead.
|
||||
Main.1=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
Main.0=Signing options
|
||||
Main.95=Designated alias [{0}] MUST be an Alias of a Key Entry
|
||||
Main.97=Enter key password for <{0}>:
|
||||
Main.99=Key associated with [{0}] MUST be a private key
|
||||
Main.101=Location of the key store to use. The default value is a file-based \
|
||||
scheme whose path is the file named ".keystore" in your home directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
Main.102=URL
|
||||
Main.104=Type of the key store to use. If omitted, the default value is that \
|
||||
of the property "keystore.type" in the security properties file.
|
||||
Main.105=STORE_TYPE
|
||||
Main.107=Password to unlock the key store. If omitted, you will be prompted \
|
||||
to provide a password.
|
||||
Main.108=PASSWORD
|
||||
Main.110=Password to unlock the Key Entry associated with ALIAS. If omitted, \
|
||||
the tool will use the same password protecting the key store. If this fails, \
|
||||
you will be prompted to provide a password.
|
||||
Main.111=PASSWORD
|
||||
Main.113=A literal to construct file names for both the .SF and .DSA signature \
|
||||
files --which will be placed in the META-INF directory of the signed JAR. \
|
||||
Permissible characters are in the range [a-zA-Z0-9_-].\n\
|
||||
If omitted, the first 8 characters of ALIAS will be used. Characters outside \
|
||||
that range will be replaced by underscores.
|
||||
Main.114=NAME
|
||||
Main.116=Name of the signed JAR file. If omitted, the signed JAR will be \
|
||||
named the same as FILE; i.e. the input file will be replaced with its signed \
|
||||
copy.
|
||||
Main.117=FILE
|
||||
Main.118=Verification options
|
||||
Main.120=Verify an already signed FILE.
|
||||
Main.122=Use with -verbose to see more detailed information about the \
|
||||
certificates of ALIAS.
|
||||
Main.123=Common options
|
||||
Main.125=Output more verbose messages during processing.
|
||||
Main.127=Include --otherwise do not-- the .SF file in the .DSA generated file.
|
||||
Main.129=Include in the .SF generated file --otherwise do not-- a header \
|
||||
containing a hash of the whole manifest file.
|
||||
Main.131=Fully qualified class name of a Security Provider to add to the JVM \
|
||||
in-use.
|
||||
Main.132=PROVIDER_CLASS_NAME
|
||||
Main.133=Missing FILE argument.
|
||||
|
||||
JarSigner.1=\ \ signing:
|
||||
JarSigner.2=\ updating:
|
||||
JarSigner.8=\ \ \ adding:
|
||||
JarSigner.14=Jar signed.
|
||||
|
||||
JarVerifier.2=Jar is not signed --no signature files found.
|
||||
JarVerifier.3=Jar verification failed.
|
||||
JarVerifier.4=Jar partially verified --{0,numer} of {1,number} signers.
|
||||
JarVerifier.7=Jar verified --{0,number} signer(s).
|
||||
JarVerifier.13=Signature Block missing for {0}
|
||||
JarVerifier.14=At least one SignerInfo element MUST be present in a Signature \
|
||||
Block (.DSA file)
|
||||
JarVerifier.16=Missing EncryptedDigest in Signature Block (.DSA file) first \
|
||||
SignerInfo element
|
||||
|
||||
SFHelper.1=Helper is NOT finished
|
||||
SFHelper.4=.SF file has NOT been generated
|
||||
SFHelper.6=Unknown or unsupported private key algorithm
|
||||
SFHelper.9=Helper is NOT ready
|
||||
SFHelper.10=Helper is NOT started
|
@ -1,95 +0,0 @@
|
||||
# default locale messages for gnu.classpath.tools.keytool package
|
||||
|
||||
Main.6=keytool:
|
||||
Main.8=keytool error:
|
||||
|
||||
Command.19=Failed creating new file at {0}
|
||||
Command.20=Unable to find a suitable signature algorithm named {0}, although we found a key-pair generation algorithm named {1}
|
||||
Command.21=Enter key password for <{0}>:
|
||||
Command.23=A correct key password MUST be provided
|
||||
Command.24=Enter key store password:
|
||||
#Command.36=Option '-keystore' is undefined, or is an empty string, and 'user.home' is unknown
|
||||
Command.36=Unable to locate a valid key store
|
||||
Command.40=Provider fully qualified class name:
|
||||
Command.42=File object [{0}] exists but is NOT a file
|
||||
Command.44=File [{0}] exists but is NOT writable
|
||||
Command.46=File object [{0}] MUST be an existing readable file
|
||||
Command.48=Signature algorithm is missing and private key is of unknown or unsupported type
|
||||
Command.51=Validity period MUST be greater than zero
|
||||
Command.52=Unable to get signature algorithm name
|
||||
Command.60=Unknown or unsupported signature algorithm: {0}
|
||||
Command.63=Saving key store at {0}
|
||||
Command.66=Owner: {0}
|
||||
Command.67=Issuer: {0}
|
||||
Command.68=Serial number: {0,number}
|
||||
Command.69=Valid from: {0,date,full} - {0,time,full}
|
||||
Command.70=\ \ \ \ \ until: {0,date,full} - {0,time,full}
|
||||
Command.71=Certificate fingerprints
|
||||
Command.72=\ \ \ \ \ \ MD5: {0}
|
||||
Command.73=\ \ SHA-160: {0}
|
||||
Command.75=Alias [{0}] MUST be knwon to the key store
|
||||
Command.77=Alias [{0}] MUST be associated with a Key Entry
|
||||
|
||||
CertReqCmd.27=Certification request stored in {0}
|
||||
CertReqCmd.28=Submit this to your CA
|
||||
|
||||
DeleteCmd.19=Enter the Alias to delete:
|
||||
DeleteCmd.20=Alias MUST NOT be null or an empty string
|
||||
|
||||
GenKeyCmd.0=\nYou are about to enter information that will be incorporated into\n\
|
||||
your certificate request. This information is what is called a\n\
|
||||
Distinguished Name or DN. There are quite a few fields but you\n\
|
||||
can use supplied default values, displayed between brackets, by just\n\
|
||||
hitting <Enter>, or blank the field by entering the <.> character\n\
|
||||
before hitting <Enter>.\n\n
|
||||
GenKeyCmd.6=The Sample Company
|
||||
GenKeyCmd.7=Sydney
|
||||
GenKeyCmd.8=NSW
|
||||
GenKeyCmd.9=AU
|
||||
GenKeyCmd.10=Common Name (hostname, IP, or your name):
|
||||
GenKeyCmd.11=Organization Name (company) [{0}]:
|
||||
GenKeyCmd.13=Organizational Unit Name (department, division):
|
||||
GenKeyCmd.14=Locality Name (city, district) [{0}]:
|
||||
GenKeyCmd.16=State or Province Name (full name) [{0}]:
|
||||
GenKeyCmd.18=Country Name (2 letter code) [{0}]:
|
||||
GenKeyCmd.54=Key size MUST be greater than zero
|
||||
|
||||
StorePasswdCmd.19=Too many failed attempts
|
||||
StorePasswdCmd.20=Enter new key store password:
|
||||
StorePasswdCmd.21=Password MUST be at least 6 characters.
|
||||
StorePasswdCmd.22=New password MUST be different than the old one.
|
||||
StorePasswdCmd.23=Re-enter new key store password:
|
||||
StorePasswdCmd.24=Passwords MUST be the same in both attempts.
|
||||
|
||||
KeyPasswdCmd.24=Enter new key password for <{0}>:
|
||||
KeyPasswdCmd.28=Re-enter new key password for <{0}>:
|
||||
|
||||
KeyCloneCmd.23=Destination Alias MUST NOT exist in key store
|
||||
KeyCloneCmd.26=Enter destination alias:
|
||||
KeyCloneCmd.27=Destination alias MUST NOT be null nor empty
|
||||
KeyCloneCmd.28=Enter new key password for <{0}> [{1}]:
|
||||
|
||||
ListCmd.21=Key store type: {0}
|
||||
ListCmd.22=Key store provider: {0}
|
||||
ListCmd.24=Key store contains {0,number} entry(ies)
|
||||
ListCmd.30=Alias name: {0}
|
||||
ListCmd.31=Creation timestamp: {0,date,full} - {0,time,full}
|
||||
ListCmd.32=Entry type: trusted-certificate
|
||||
ListCmd.33=Entry type: key-entry
|
||||
ListCmd.34=Alias [{0}] is unknown to the key store
|
||||
ListCmd.38=Certificate chain length: {0,number}
|
||||
ListCmd.39=Certificate[1]:
|
||||
ListCmd.40=Certificate[{0,number}]:
|
||||
ListCmd.42=*******************************************
|
||||
ListCmd.43=-----BEGIN CERTIFICATE-----
|
||||
ListCmd.44=-----END CERTIFICATE-----
|
||||
ListCmd.45=Certificate fingerprint (MD5): {0}
|
||||
|
||||
ImportCmd.34=Failed to establish chain-of-trust from reply
|
||||
ImportCmd.37=Unable to find anchor certificate for {0}
|
||||
ImportCmd.38=Public keys, in key store and certificate, MUST be of the same type
|
||||
ImportCmd.32=Can this certificate be trusted?
|
||||
ImportCmd.40=Key entry associated with {0} has an unknown or unsupported public key type {1}
|
||||
ImportCmd.41=Public keys, in key store and certificate, MUST be the same
|
||||
ImportCmd.29=Certificate was added to the key store
|
||||
ImportCmd.28=Certificate was not added to the key store
|
@ -0,0 +1,542 @@
|
||||
# messages.properties -- English language messages and message formats
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
#
|
||||
# for gnu.classpath.tools.keytool package
|
||||
#
|
||||
|
||||
Main.6=keytool: {0}
|
||||
Main.8=keytool error: {0}
|
||||
Main.18=Unrecognized command: {0}
|
||||
Main.19=Usage: keytool [COMMAND] [-- COMMAND]...\n\
|
||||
Manage private keys and public certificates.
|
||||
Main.20=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
Main.21=Available commands
|
||||
Main.22=Generate a Key Entry, eventually creating a key store.\n\
|
||||
[-alias ALIAS] [-keyalg ALGORITHM] [-keysize KEY_SIZE]\n\
|
||||
[-sigalg ALGORITHM] [-dname NAME] [-keypass PASSWORD]\n\
|
||||
[-validity DAY_COUNT] [-storetype STORE_TYPE]\n\
|
||||
[-keystore URL] [-storepass PASSWORD]\n\
|
||||
[-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.23=Add Key Entries and Trusted Certificates.\n\
|
||||
[-alias ALIAS] [-file FILE] [-keypass PASSWORD]\n\
|
||||
[-noprompt] [-trustcacerts] [-storetype STORE_TYPE]\n\
|
||||
[-keystore URL] [-storepass PASSWORD]\n\
|
||||
[-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.24=Generate a self-signed Trusted Certificate.\n\
|
||||
[-alias ALIAS] [-sigalg ALGORITHM] [-dname NAME]\n\
|
||||
[-validity DAY_COUNT] [-keypass PASSWORD]\n\
|
||||
[-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.25=NOT IMPLEMENTED YET. Import JDK1.1 Identity Database.\n\
|
||||
[-file FILE] [-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.26=Issue a Certificate Signing Request (CSR).\n\
|
||||
[-alias ALIAS] [-sigalg ALGORITHM] [-file FILE]\n\
|
||||
[-keypass PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v]\n\
|
||||
[-attributes].
|
||||
Main.27=Export a Certificate from a key store.\n\
|
||||
[-alias ALIAS] [-file FILE] [-storetype STORE_TYPE]\n\
|
||||
[-keystore URL] [-storepass PASSWORD]\n\
|
||||
[-provider PROVIDER_CLASS_NAME] [-rfc] [-v].
|
||||
Main.28=Print one or all Certificates in a key store to STDOUT.\n\
|
||||
[-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-rfc] [-v].
|
||||
Main.29=Print a human-readable form of a Certificate in a FILE.\n\
|
||||
[-file FILE] [-v].
|
||||
Main.30=Clone a Key Entry in a key store.\n\
|
||||
[-alias ALIAS] [-dest ALIAS] [-keypass PASSWORD]\n\
|
||||
[-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.31=Change the password protecting a key store.\n\
|
||||
[-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.32=Change the password protecting a Key Entry in a key store.\n\
|
||||
[-alias ALIAS] [-keypass PASSWORD] [-new PASSWORD]\n\
|
||||
[-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
|
||||
Main.33=Delete a Key Entry or a Trusted Certificate from a key store.\n\
|
||||
[-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]\n\
|
||||
[-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].
|
||||
|
||||
Command.19=Failed creating new file at {0}
|
||||
Command.20=Unable to find a suitable signature algorithm named {0}, although we found a key-pair generation algorithm named {1}
|
||||
Command.21=Enter key password for <{0}>:
|
||||
Command.23=A correct key password MUST be provided
|
||||
Command.24=Enter key store password:
|
||||
#Command.36=Option '-keystore' is undefined, or is an empty string, and 'user.home' is unknown
|
||||
Command.36=Unable to locate a valid key store
|
||||
Command.40=Provider fully qualified class name:
|
||||
Command.42=File object [{0}] exists but is NOT a file
|
||||
Command.44=File [{0}] exists but is NOT writable
|
||||
Command.46=File object [{0}] MUST be an existing readable file
|
||||
Command.48=Signature algorithm is missing and private key is of unknown or unsupported type
|
||||
Command.51=Validity period MUST be greater than zero
|
||||
Command.52=Unable to get signature algorithm name
|
||||
Command.60=Unknown or unsupported signature algorithm: {0}
|
||||
Command.63=Saving key store at {0}
|
||||
Command.66=Owner: {0}
|
||||
Command.67=Issuer: {0}
|
||||
Command.68=Serial number: {0,number}
|
||||
Command.69=Valid from: {0,date,full} - {0,time,full}
|
||||
Command.70=\ \ \ \ \ until: {0,date,full} - {0,time,full}
|
||||
Command.71=Certificate fingerprints
|
||||
Command.72=\ \ \ \ \ \ MD5: {0}
|
||||
Command.73=\ \ SHA-160: {0}
|
||||
Command.75=Alias [{0}] MUST be knwon to the key store
|
||||
Command.77=Alias [{0}] MUST be associated with a Key Entry
|
||||
|
||||
CertReqCmd.27=Certification request stored in {0}
|
||||
CertReqCmd.28=Submit this to your CA
|
||||
CertReqCmd.25=Usage: keytool -certreq [OPTION]...\n\
|
||||
Generate a PKCS#10 Certificate Signing Request (CSR) and write it to a \
|
||||
designated output destination.\n\n\
|
||||
IMPORTANT: Some documentation claims that the Attributes field, in the CSR is \
|
||||
OPTIONAL while RFC-2986 implies the opposite. This implementation considers \
|
||||
this field, by default, as OPTIONAL, unless option -attributes is specified.
|
||||
CertReqCmd.24=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
CertReqCmd.23=Command options
|
||||
CertReqCmd.22=Alias of an entry in the key store on whose behalf the CSR is \
|
||||
generated. The value "mykey" (all lower case, without the enclosing quotes) \
|
||||
is used when this option is omitted.
|
||||
CertReqCmd.21=ALIAS
|
||||
CertReqCmd.20=Name of the digital signature algorithm to use for signing the \
|
||||
certificate. If omitted, a default value is chosen based on the type of the \
|
||||
private key associated with ALIAS. If the key is a "DSA" one, the value for \
|
||||
signature algorithm will be "SHA1withDSA". If on the other hand the key is \
|
||||
an "RSA" one, then "MD5withRSA" will be the signature algorithm.
|
||||
CertReqCmd.19=ALGORITHM
|
||||
CertReqCmd.18=Destination of the generated CSR. STDOUT is used if this \
|
||||
option is omitted.
|
||||
CertReqCmd.17=FILE
|
||||
CertReqCmd.16=Password to unlock the Key Entry associated with ALIAS. If \
|
||||
omitted, the tool will attempt to unlock the Key Entry using the same password \
|
||||
protecting the key store. If this fails, you will be prompted for a password.
|
||||
CertReqCmd.14=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
CertReqCmd.13=STORE_TYPE
|
||||
CertReqCmd.12=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
CertReqCmd.11=URL
|
||||
CertReqCmd.10=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
CertReqCmd.9=PASSWORD
|
||||
CertReqCmd.8=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
CertReqCmd.7=PROVIDER_CLASS_NAME
|
||||
CertReqCmd.6=Emit more verbose messages.
|
||||
CertReqCmd.5=Force the tool to encode a NULL DER value in the CSR as the value \
|
||||
of the Attributes field.
|
||||
|
||||
DeleteCmd.19=Enter the Alias to delete:
|
||||
DeleteCmd.18=Usage: keytool -delete [OPTION]...\n\
|
||||
Delete a designated key store entry.
|
||||
DeleteCmd.17=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
DeleteCmd.16=Command options
|
||||
DeleteCmd.15=Alias of an entry to delete. The value "mykey" (all lower case, \
|
||||
without the enclosing quotes) is used when this option is omitted.
|
||||
DeleteCmd.14=ALIAS
|
||||
DeleteCmd.13=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
DeleteCmd.12=STORE_TYPE
|
||||
DeleteCmd.11=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
DeleteCmd.10=URL
|
||||
DeleteCmd.20=Alias MUST NOT be null or an empty string
|
||||
DeleteCmd.9=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
DeleteCmd.8=PASSWORD
|
||||
DeleteCmd.7=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
DeleteCmd.6=PROVIDER_CLASS_NAME
|
||||
DeleteCmd.5=Emit more verbose messages.
|
||||
|
||||
GenKeyCmd.0=\nYou are about to enter information that will be incorporated into\n\
|
||||
your certificate request. This information is what is called a\n\
|
||||
Distinguished Name or DN. There are quite a few fields but you\n\
|
||||
can use supplied default values, displayed between brackets, by just\n\
|
||||
hitting <Enter>, or blank the field by entering the <.> character\n\
|
||||
before hitting <Enter>.\n\n
|
||||
GenKeyCmd.6=The Sample Company
|
||||
GenKeyCmd.7=Sydney
|
||||
GenKeyCmd.8=NSW
|
||||
GenKeyCmd.9=AU
|
||||
GenKeyCmd.10=Common Name (hostname, IP, or your name):
|
||||
GenKeyCmd.11=Organization Name (company) [{0}]:
|
||||
GenKeyCmd.13=Organizational Unit Name (department, division):
|
||||
GenKeyCmd.14=Locality Name (city, district) [{0}]:
|
||||
GenKeyCmd.16=State or Province Name (full name) [{0}]:
|
||||
GenKeyCmd.18=Country Name (2 letter code) [{0}]:
|
||||
GenKeyCmd.54=Key size MUST be greater than zero
|
||||
GenKeyCmd.57=Usage: keytool -genkey [OPTION]...\n\
|
||||
Generate a new key-pair and save these credentials in the key store as a Key \
|
||||
Entry, associated with a designated Alias.
|
||||
GenKeyCmd.58=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
GenKeyCmd.59=Command options
|
||||
GenKeyCmd.60=Alias of the Key Entry to generate. The value "mykey" (all lower \
|
||||
case, without the enclosing quotes) is used when this option is omitted.
|
||||
GenKeyCmd.61=ALIAS
|
||||
GenKeyCmd.62=Name of the key-pair generation algorithm. The default value is \
|
||||
"DSS" (a synonym for the Digital Signature Algorithm also known as DSA).
|
||||
GenKeyCmd.63=ALGORITHM
|
||||
GenKeyCmd.64=Number of bits of the shared modulus, for both the public and \
|
||||
private keys, to use for the new keys. If omitted, 1024 is used.
|
||||
GenKeyCmd.65=SIZE
|
||||
GenKeyCmd.66=Name of the digital signature algorithm to use for signing the \
|
||||
certificate. If omitted, a default value is chosen based on the type of the \
|
||||
private key associated with ALIAS. If the key is a "DSA" one, the value for \
|
||||
signature algorithm will be "SHA1withDSA". If on the other hand the key is \
|
||||
an "RSA" one, then "MD5withRSA" will be the signature algorithm.
|
||||
GenKeyCmd.68=The X.500 Distinguished Name of the Subject of the generated \
|
||||
certificate. If omitted you will be prompted for one.
|
||||
GenKeyCmd.69=NAME
|
||||
GenKeyCmd.70=Password to protect the newly created Key Entry. If omitted, \
|
||||
you will be prompted to provide a password.
|
||||
GenKeyCmd.71=PASSWORD
|
||||
GenKeyCmd.72=Number of days the generated certificate is valid for. If \
|
||||
omitted, 90 is used.
|
||||
GenKeyCmd.73=DAY_COUNT
|
||||
GenKeyCmd.74=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
GenKeyCmd.75=STORE_TYPE
|
||||
GenKeyCmd.76=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
GenKeyCmd.77=URL
|
||||
GenKeyCmd.78=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
GenKeyCmd.80=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
GenKeyCmd.81=PROVIDER_CLASS_NAME
|
||||
GenKeyCmd.82=Emit more verbose messages.
|
||||
|
||||
StorePasswdCmd.19=Too many failed attempts
|
||||
StorePasswdCmd.18=Usage: keytool -storepasswd [OPTION]...\n\
|
||||
Change the password protecting a key store.
|
||||
StorePasswdCmd.17=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
StorePasswdCmd.16=Command options
|
||||
StorePasswdCmd.15=The new, and different, password to protect the key store. \
|
||||
If omitted, you will be prompted for one.
|
||||
StorePasswdCmd.13=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
StorePasswdCmd.12=STORE_TYPE
|
||||
StorePasswdCmd.11=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
StorePasswdCmd.10=URL
|
||||
StorePasswdCmd.20=Enter new key store password:
|
||||
StorePasswdCmd.21=Password MUST be at least 6 characters.
|
||||
StorePasswdCmd.22=New password MUST be different than the old one.
|
||||
StorePasswdCmd.23=Re-enter new key store password:
|
||||
StorePasswdCmd.24=Passwords MUST be the same in both attempts.
|
||||
StorePasswdCmd.9=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
StorePasswdCmd.8=PASSWORD
|
||||
StorePasswdCmd.7=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
StorePasswdCmd.6=PROVIDER_CLASS_NAME
|
||||
StorePasswdCmd.5=Emit more verbose messages.
|
||||
|
||||
KeyPasswdCmd.24=Enter new key password for <{0}>:
|
||||
KeyPasswdCmd.28=Re-enter new key password for <{0}>:
|
||||
KeyPasswdCmd.23=Usage: keytool -keypasswd [OPTION]...\n\
|
||||
Change the password protecting a Key Entry.
|
||||
KeyPasswdCmd.22=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
KeyPasswdCmd.21=Command options
|
||||
KeyPasswdCmd.20=The Alias which password is to be changed.
|
||||
KeyPasswdCmd.19=ALIAS
|
||||
KeyPasswdCmd.18=Password to unlock ALIAS. If omitted, the tool will attempt \
|
||||
to unlock the Key Entry using the same password protecting the key store. If \
|
||||
this fails, you will be prompted for a password.
|
||||
KeyPasswdCmd.16=The new, and different, password to protect ALIAS.
|
||||
KeyPasswdCmd.14=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
KeyPasswdCmd.13=STORE_TYPE
|
||||
KeyPasswdCmd.12=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
KeyPasswdCmd.11=URL
|
||||
KeyPasswdCmd.10=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
KeyPasswdCmd.9=PASSWORD
|
||||
KeyPasswdCmd.8=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
KeyPasswdCmd.7=PROVIDER_CLASS_NAME
|
||||
KeyPasswdCmd.6=Emit more verbose messages.
|
||||
|
||||
KeyCloneCmd.23=Destination Alias MUST NOT exist in key store
|
||||
KeyCloneCmd.26=Enter destination alias:
|
||||
KeyCloneCmd.27=Destination alias MUST NOT be null nor empty
|
||||
KeyCloneCmd.28=Enter new key password for <{0}> [{1}]:
|
||||
KeyCloneCmd.22=Usage: keytool -keyclone [OPTION]...\n\
|
||||
Clone an existing Key Entry and store it under a new (different) Alias \
|
||||
protecting its private key material with possibly a new password.
|
||||
KeyCloneCmd.21=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
KeyCloneCmd.20=Command options
|
||||
KeyCloneCmd.19=Alias of an entry to clone. The value "mykey" (all lower case, \
|
||||
without the enclosing quotes) is used when this option is omitted.
|
||||
KeyCloneCmd.17=Alias to identify the cloned copy of the Key Entry.
|
||||
KeyCloneCmd.16=ALIAS
|
||||
KeyCloneCmd.15=Password to unlock the Key Entry associated with the Alias to \
|
||||
clone. If omitted, the tool will attempt to unlock the Key Entry using the \
|
||||
same password protecting the key store. If this fails, you will be prompted \
|
||||
for a password.
|
||||
KeyCloneCmd.13=Password to protect the cloned copy of the Key Entry. If \
|
||||
omitted, you will be prompted to provide one.
|
||||
KeyCloneCmd.11=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
KeyCloneCmd.10=STORE_TYPE
|
||||
KeyCloneCmd.9=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
KeyCloneCmd.8=URL
|
||||
KeyCloneCmd.7=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
KeyCloneCmd.6=PASSWORD
|
||||
KeyCloneCmd.5=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
KeyCloneCmd.4=PROVIDER_CLASS_NAME
|
||||
KeyCloneCmd.3=Emit more verbose messages.
|
||||
|
||||
ListCmd.21=Key store type: {0}
|
||||
ListCmd.22=Key store provider: {0}
|
||||
ListCmd.24=Key store contains {0,number} entry(ies)
|
||||
ListCmd.20=Usage: keytool -list [OPTION]...\n\
|
||||
Print one or all of the key store entries to STDOUT. Usually this command \
|
||||
will only print a fingerprint of the certificate, unless either -rfc or -v \
|
||||
is specified.
|
||||
ListCmd.30=Alias name: {0}
|
||||
ListCmd.31=Creation timestamp: {0,date,full} - {0,time,full}
|
||||
ListCmd.32=Entry type: trusted-certificate
|
||||
ListCmd.33=Entry type: key-entry
|
||||
ListCmd.34=Alias [{0}] is unknown to the key store
|
||||
ListCmd.38=Certificate chain length: {0,number}
|
||||
ListCmd.39=Certificate[1]:
|
||||
ListCmd.40=Certificate[{0,number}]:
|
||||
ListCmd.42=*******************************************
|
||||
ListCmd.43=-----BEGIN CERTIFICATE-----
|
||||
ListCmd.44=-----END CERTIFICATE-----
|
||||
ListCmd.45=Certificate fingerprint (MD5): {0}
|
||||
ListCmd.19=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
ListCmd.18=Command options
|
||||
ListCmd.17=Alias of an entry to list. If omitted, all entries are listed.
|
||||
ListCmd.16=ALIAS
|
||||
ListCmd.15=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
ListCmd.14=STORE_TYPE
|
||||
ListCmd.13=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
ListCmd.12=URL
|
||||
ListCmd.11=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
ListCmd.10=PASSWORD
|
||||
ListCmd.9=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
ListCmd.8=PROVIDER_CLASS_NAME
|
||||
ListCmd.7=Output the certificate in human-readable format, even if -rfc is \
|
||||
also specified.
|
||||
ListCmd.6=Use RFC-1421 specifications when encoding the output.
|
||||
|
||||
ImportCmd.34=Failed to establish chain-of-trust from reply
|
||||
ImportCmd.37=Unable to find anchor certificate for {0}
|
||||
ImportCmd.38=Public keys, in key store and certificate, MUST be of the same type
|
||||
ImportCmd.32=Can this certificate be trusted?
|
||||
ImportCmd.40=Key entry associated with {0} has an unknown or unsupported public key type {1}
|
||||
ImportCmd.41=Public keys, in key store and certificate, MUST be the same
|
||||
ImportCmd.29=Certificate was added to the key store
|
||||
ImportCmd.28=Certificate was not added to the key store
|
||||
ImportCmd.27=Usage: keytool -import [OPTION]...\n\
|
||||
Read an X.509 certificate, or a PKCS#7 Certificate Reply from a designated \
|
||||
input source and incorporate the certificates into the key store.
|
||||
ImportCmd.26=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
ImportCmd.25=Command options
|
||||
ImportCmd.24=If ALIAS does not already exist in the key store, the tool treats \
|
||||
the certificate in FILE as a new Trusted Certificate.\n\
|
||||
If ALIAS exists in the key store, the tool will treat the certificate(s) in \
|
||||
FILE as a Certificate Reply (which can be a chain of certificates).
|
||||
ImportCmd.23=ALIAS
|
||||
ImportCmd.22=Location of the Certificate or Certificate Reply to import.
|
||||
ImportCmd.21=FILE
|
||||
ImportCmd.20=Password to protect the Key Entry associated with ALIAS. If \
|
||||
this option is omitted, and the chain-of-trust for the Certificate Reply has \
|
||||
been established, the tool will first attempt to unlock the Key Entry using \
|
||||
the same password protecting the key store. If this fails, you will be \
|
||||
prompted to provide a password.
|
||||
ImportCmd.19=PASSWORD
|
||||
ImportCmd.18=Prevent the tool from prompting the user.
|
||||
ImportCmd.17=Additionally use a key store, of type "JKS", named "cacerts", \
|
||||
and located in lib/security in an installed Java Runtime Environment, when \
|
||||
trying to establish chains-of-trust.
|
||||
ImportCmd.16=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
ImportCmd.15=STORE_TYPE
|
||||
ImportCmd.14=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
ImportCmd.13=URL
|
||||
ImportCmd.12=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
ImportCmd.11=PASSWORD
|
||||
ImportCmd.10=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
ImportCmd.9=PROVIDER_CLASS_NAME
|
||||
ImportCmd.8=Emit more verbose messages.
|
||||
ImportCmd.7=Was unable to build a certificate-chain. Only {0,number} out of {1,number} certificates were processed
|
||||
|
||||
ExportCmd.17=Usage: keytool -export [OPTION]...\n\
|
||||
Export a certificate stored in the key store to a designated output \
|
||||
destination, either in binary format or in RFC-1421 compliant encoding.
|
||||
ExportCmd.18=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
ExportCmd.19=Command options
|
||||
ExportCmd.20=Alias of an entry to export. The value "mykey" (all lower case, \
|
||||
without the enclosing quotes) is used when this option is omitted.
|
||||
ExportCmd.21=ALIAS
|
||||
ExportCmd.22=Destination of the exported certificate. STDOUT is used if this \
|
||||
option is omitted.
|
||||
ExportCmd.23=FILE
|
||||
ExportCmd.24=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
ExportCmd.25=STORE_TYPE
|
||||
ExportCmd.26=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
ExportCmd.27=URL
|
||||
ExportCmd.28=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
ExportCmd.29=PASSWORD
|
||||
ExportCmd.30=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
ExportCmd.31=PROVIDER_CLASS_NAME
|
||||
ExportCmd.32=Use RFC-1421 specifications when encoding the output.
|
||||
ExportCmd.33=Output the certificate in binary DER encoding, which is the \
|
||||
default format. If -rfc is also present, this option is ignored.
|
||||
|
||||
IdentityDBCmd.7=Usage: keytool -identitydb [OPTION]...\n\
|
||||
NOT IMPLEMENTED YET. Import a JDK 1.1 style Identity Database.
|
||||
IdentityDBCmd.8=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
IdentityDBCmd.9=Command options
|
||||
IdentityDBCmd.10=Location of the Identity Database to import. If omitted, \
|
||||
STDIN is used.
|
||||
IdentityDBCmd.11=FILE
|
||||
IdentityDBCmd.12=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
IdentityDBCmd.13=STORE_TYPE
|
||||
IdentityDBCmd.14=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
IdentityDBCmd.15=URL
|
||||
IdentityDBCmd.16=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
IdentityDBCmd.17=PASSWORD
|
||||
IdentityDBCmd.18=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
IdentityDBCmd.19=PROVIDER_CLASS_NAME
|
||||
IdentityDBCmd.20=Emit more verbose messages.
|
||||
|
||||
PrintCertCmd.5=Usage: keytool -printcert [OPTION]...\n\
|
||||
Read a certificate from FILE and print it to STDOUT in a human-readable form.
|
||||
PrintCertCmd.6=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
PrintCertCmd.7=Command options
|
||||
PrintCertCmd.8=Location of the certificate to print. If omitted, STDIN is used.
|
||||
PrintCertCmd.9=FILE
|
||||
PrintCertCmd.10=Emit more verbose messages.
|
||||
|
||||
SelfCertCmd.14=Usage: keytool -selfcert [OPTION]...\n\
|
||||
Generate a self-signed X.509 version 1 certificate.\n\n\
|
||||
The newly generated certificate will form a chain of one element which will \
|
||||
replace the previous chain associated with ALIAS.
|
||||
SelfCertCmd.15=Please report bugs at http://www.gnu.org/software/classpath/bugs.html
|
||||
SelfCertCmd.16=Command options
|
||||
SelfCertCmd.17=Alias of the Key Entry to select. The value "mykey" (all lower \
|
||||
case, without the enclosing quotes) is used when this option is omitted.
|
||||
SelfCertCmd.18=ALIAS
|
||||
SelfCertCmd.19=Name of the digital signature algorithm to use for signing the \
|
||||
certificate. If omitted, a default value is chosen based on the type of the \
|
||||
private key associated with ALIAS. If the key is a "DSA" one, the value for \
|
||||
signature algorithm will be "SHA1withDSA". If on the other hand the key is \
|
||||
an "RSA" one, then "MD5withRSA" will be the signature algorithm.
|
||||
SelfCertCmd.20=ALGORITHM
|
||||
SelfCertCmd.21=The X.500 Distinguished Name of the Subject of the generated \
|
||||
certificate. If omitted the Distinguished Name of the base certificate in \
|
||||
the chain associated with ALIAS is used instead.
|
||||
SelfCertCmd.22=NAME
|
||||
SelfCertCmd.23=Password to unlock the Key Entry associated with ALIAS. If \
|
||||
omitted, the tool will attempt to unlock the Key Entry using the same password \
|
||||
protecting the key store. If this fails, you will be prompted for a password.
|
||||
SelfCertCmd.24=PASSWORD
|
||||
SelfCertCmd.25=Number of days the generated certificate is valid for. If \
|
||||
omitted, 90 is used.
|
||||
SelfCertCmd.26=DAY_COUNT
|
||||
SelfCertCmd.27=Type of the key store to use. If omitted, the default value is \
|
||||
that of the property "keystore.type" in the security properties file.
|
||||
SelfCertCmd.28=STORE_TYPE
|
||||
SelfCertCmd.29=Location of the key store to use. The default value is a \
|
||||
file-based scheme whose path is the file named ".keystore" in your home \
|
||||
directory.\n\
|
||||
If URL is malformed, the tool will use URL as a file-name of a key store; \
|
||||
i.e. as if the protocol was "file:".
|
||||
SelfCertCmd.30=URL
|
||||
SelfCertCmd.31=Password to unlock the key store. If omitted, you will be \
|
||||
prompted for one.
|
||||
SelfCertCmd.32=PASSWORD
|
||||
SelfCertCmd.33=Fully qualified class name of a Security Provider to add to the \
|
||||
JVM in-use.
|
||||
SelfCertCmd.34=PROVIDER_CLASS_NAME
|
||||
SelfCertCmd.35=Emit more verbose messages.
|
@ -0,0 +1,43 @@
|
||||
# messages.properties -- English language messages
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
Native2ASCII.TooManyFiles=too many files specified
|
||||
Native2ASCII.Usage=Usage: native2ascii [OPTIONS]... [INPUTFILE [OUTPUTFILE]]
|
||||
Native2ASCII.EncodingHelp=encoding to use
|
||||
Native2ASCII.EncodingArgName=NAME
|
||||
Native2ASCII.EncodingSpecified=encoding already specified
|
||||
Native2ASCII.ReversedHelp=convert from encoding to native
|
@ -0,0 +1,44 @@
|
||||
# messages.properties -- English language messages
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is part of GNU Classpath.
|
||||
#
|
||||
# GNU Classpath is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# GNU Classpath is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301 USA.
|
||||
#
|
||||
# Linking this library statically or dynamically with other modules is
|
||||
# making a combined work based on this library. Thus, the terms and
|
||||
# conditions of the GNU General Public License cover the whole
|
||||
# combination.
|
||||
#
|
||||
# As a special exception, the copyright holders of this library give you
|
||||
# permission to link this library with independent modules to produce an
|
||||
# executable, regardless of the license terms of these independent
|
||||
# modules, and to copy and distribute the resulting executable under
|
||||
# terms of your choice, provided that you also meet, for each linked
|
||||
# independent module, the terms and conditions of the license of that
|
||||
# module. An independent module is a module which is not derived from
|
||||
# or based on this library. If you modify this library, you may extend
|
||||
# this exception to your version of the library, but you are not
|
||||
# obligated to do so. If you do not wish to do so, delete this
|
||||
# exception statement from your version.
|
||||
|
||||
SerialVer.NoClassesSpecd=no classes specified
|
||||
SerialVer.HelpHeader=serialver [OPTIONS]... CLASS...\n\nPrint the serialVersionUID of the specified classes
|
||||
SerialVer.5=classpath
|
||||
SerialVer.ClasspathHelp=class path to use to find classes
|
||||
SerialVer.ClassNotSerial=serialver: class {0} is not serializable
|
||||
SerialVer.ClassNotFound=serialver: class {0} not found
|
||||
SerialVer.DupClasspath=classpath already specified
|
@ -23,7 +23,7 @@ endif
|
||||
|
||||
if CREATE_WRAPPERS
|
||||
bin_SCRIPTS =
|
||||
bin_PROGRAMS = appletviewer jarsigner keytool
|
||||
bin_PROGRAMS = gappletviewer gjarsigner gkeytool
|
||||
|
||||
if FOUND_GCJ
|
||||
LIBJVM = -lgcj
|
||||
@ -35,26 +35,40 @@ LIBJVM =
|
||||
endif
|
||||
endif
|
||||
|
||||
appletviewer_SOURCES = toolwrapper.c
|
||||
appletviewer_CFLAGS = -Wall \
|
||||
-DDATA_DIR="\"$(datadir)\"" \
|
||||
-DPACKAGE="\"$(PACKAGE)\"" \
|
||||
-DTOOLNAME="\"appletviewer\""
|
||||
appletviewer_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
# Some architecture independent data to be installed.
|
||||
TOOLS_DATA = $(TOOLS_ZIP)
|
||||
|
||||
jarsigner_SOURCES = toolwrapper.c
|
||||
jarsigner_CFLAGS = -Wall \
|
||||
-DDATA_DIR="\"$(datadir)\"" \
|
||||
-DPACKAGE="\"$(PACKAGE)\"" \
|
||||
-DTOOLNAME="\"jarsigner\""
|
||||
jarsigner_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
# Where we want these data files installed.
|
||||
## GCJ LOCAL: install libgcj-tools.jar alongside libgcj.jar.
|
||||
TOOLSdir = $(datadir)/java
|
||||
|
||||
keytool_SOURCES = toolwrapper.c
|
||||
keytool_CFLAGS = -Wall \
|
||||
-DDATA_DIR="\"$(datadir)\"" \
|
||||
-DPACKAGE="\"$(PACKAGE)\"" \
|
||||
-DTOOLNAME="\"keytool\""
|
||||
keytool_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
# The zip files with classes we want to produce.
|
||||
## GCJ LOCAL: rename tools.zip libgcj-tools-$(gcc_version).jar
|
||||
TOOLS_ZIP = libgcj-tools-$(gcc_version).jar
|
||||
|
||||
## GCJ LOCAL: calculate GCC version
|
||||
gcc_version := $(shell cat $(top_srcdir)/../../gcc/BASE-VER)
|
||||
|
||||
gappletviewer_SOURCES = toolwrapper.c
|
||||
gappletviewer_CFLAGS = -Wall \
|
||||
-DTOOLS_ZIP="\"$(TOOLSdir)/$(TOOLS_ZIP)\"" \
|
||||
-DTOOLPACKAGE="\"appletviewer\"" \
|
||||
-DTOOLNAME="\"gappletviewer\""
|
||||
gappletviewer_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
|
||||
gjarsigner_SOURCES = toolwrapper.c
|
||||
gjarsigner_CFLAGS = -Wall \
|
||||
-DTOOLS_ZIP="\"$(TOOLSdir)/$(TOOLS_ZIP)\"" \
|
||||
-DTOOLPACKAGE="\"jarsigner\"" \
|
||||
-DTOOLNAME="\"gjarsigner\""
|
||||
gjarsigner_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
|
||||
gkeytool_SOURCES = toolwrapper.c
|
||||
gkeytool_CFLAGS = -Wall \
|
||||
-DTOOLS_ZIP="\"$(TOOLSdir)/$(TOOLS_ZIP)\"" \
|
||||
-DTOOLPACKAGE="\"keytool\"" \
|
||||
-DTOOLNAME="\"gkeytool\""
|
||||
gkeytool_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
|
||||
else
|
||||
bin_SCRIPTS = appletviewer jarsigner keytool
|
||||
@ -65,10 +79,6 @@ EXTRA_DIST = toolwrapper.c appletviewer.in jarsigner.in keytool.in
|
||||
# All our example java source files
|
||||
TOOLS_JAVA_FILES = $(srcdir)/gnu/classpath/tools/*.java $(srcdir)/gnu/classpath/tools/*/*.java $(srcdir)/gnu/classpath/tools/*/*/*.java
|
||||
|
||||
|
||||
# The zip files with classes we want to produce.
|
||||
TOOLS_ZIP = tools.zip
|
||||
|
||||
# Extra objects that will not exist until configure-time
|
||||
BUILT_SOURCES = $(TOOLS_ZIP)
|
||||
|
||||
@ -88,13 +98,7 @@ TOOLS_HELPS = $(GIOP_HELPS) $(RMI_HELPS)
|
||||
READMES = $(srcdir)/gnu/classpath/tools/giop/README
|
||||
|
||||
# All the files we find "interesting"
|
||||
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS) $(READMES)
|
||||
|
||||
# Some architecture independent data to be installed.
|
||||
TOOLS_DATA = $(TOOLS_ZIP) README
|
||||
|
||||
# Where we want these data files installed.
|
||||
TOOLSdir = $(pkgdatadir)
|
||||
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS)
|
||||
|
||||
# Make sure everything is included in the distribution.
|
||||
dist-hook:
|
||||
@ -126,8 +130,7 @@ $(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
|
||||
cp $(GIOP_HELPS) classes/gnu/classpath/tools/giop/
|
||||
$(JCOMPILER) -d classes $(TOOLS_JAVA_FILES)
|
||||
(cd classes; \
|
||||
if test "$(ZIP)" != ""; then $(ZIP) -r ../$(TOOLS_ZIP) .; fi; \
|
||||
if test "$(FASTJAR)" != ""; then $(FASTJAR) cf ../$(TOOLS_ZIP) .; fi; \
|
||||
$(FASTJAR) cf ../$(TOOLS_ZIP) .; \
|
||||
cd ..)
|
||||
rm -rf classes
|
||||
|
||||
|
@ -39,8 +39,8 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
@CREATE_WRAPPERS_TRUE@bin_PROGRAMS = appletviewer$(EXEEXT) \
|
||||
@CREATE_WRAPPERS_TRUE@ jarsigner$(EXEEXT) keytool$(EXEEXT)
|
||||
@CREATE_WRAPPERS_TRUE@bin_PROGRAMS = gappletviewer$(EXEEXT) \
|
||||
@CREATE_WRAPPERS_TRUE@ gjarsigner$(EXEEXT) gkeytool$(EXEEXT)
|
||||
subdir = tools
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/appletviewer.in $(srcdir)/jarsigner.in \
|
||||
@ -62,21 +62,21 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
|
||||
"$(DESTDIR)$(TOOLSdir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am__appletviewer_SOURCES_DIST = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@am_appletviewer_OBJECTS = \
|
||||
@CREATE_WRAPPERS_TRUE@ appletviewer-toolwrapper.$(OBJEXT)
|
||||
appletviewer_OBJECTS = $(am_appletviewer_OBJECTS)
|
||||
appletviewer_LDADD = $(LDADD)
|
||||
am__jarsigner_SOURCES_DIST = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@am_jarsigner_OBJECTS = \
|
||||
@CREATE_WRAPPERS_TRUE@ jarsigner-toolwrapper.$(OBJEXT)
|
||||
jarsigner_OBJECTS = $(am_jarsigner_OBJECTS)
|
||||
jarsigner_LDADD = $(LDADD)
|
||||
am__keytool_SOURCES_DIST = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@am_keytool_OBJECTS = \
|
||||
@CREATE_WRAPPERS_TRUE@ keytool-toolwrapper.$(OBJEXT)
|
||||
keytool_OBJECTS = $(am_keytool_OBJECTS)
|
||||
keytool_LDADD = $(LDADD)
|
||||
am__gappletviewer_SOURCES_DIST = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@am_gappletviewer_OBJECTS = \
|
||||
@CREATE_WRAPPERS_TRUE@ gappletviewer-toolwrapper.$(OBJEXT)
|
||||
gappletviewer_OBJECTS = $(am_gappletviewer_OBJECTS)
|
||||
gappletviewer_LDADD = $(LDADD)
|
||||
am__gjarsigner_SOURCES_DIST = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@am_gjarsigner_OBJECTS = \
|
||||
@CREATE_WRAPPERS_TRUE@ gjarsigner-toolwrapper.$(OBJEXT)
|
||||
gjarsigner_OBJECTS = $(am_gjarsigner_OBJECTS)
|
||||
gjarsigner_LDADD = $(LDADD)
|
||||
am__gkeytool_SOURCES_DIST = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@am_gkeytool_OBJECTS = \
|
||||
@CREATE_WRAPPERS_TRUE@ gkeytool-toolwrapper.$(OBJEXT)
|
||||
gkeytool_OBJECTS = $(am_gkeytool_OBJECTS)
|
||||
gkeytool_LDADD = $(LDADD)
|
||||
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
|
||||
@ -90,10 +90,10 @@ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(appletviewer_SOURCES) $(jarsigner_SOURCES) \
|
||||
$(keytool_SOURCES)
|
||||
DIST_SOURCES = $(am__appletviewer_SOURCES_DIST) \
|
||||
$(am__jarsigner_SOURCES_DIST) $(am__keytool_SOURCES_DIST)
|
||||
SOURCES = $(gappletviewer_SOURCES) $(gjarsigner_SOURCES) \
|
||||
$(gkeytool_SOURCES)
|
||||
DIST_SOURCES = $(am__gappletviewer_SOURCES_DIST) \
|
||||
$(am__gjarsigner_SOURCES_DIST) $(am__gkeytool_SOURCES_DIST)
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
@ -331,35 +331,42 @@ GLIBJ_CLASSPATH = '$(top_builddir)/lib':'$(top_builddir)/lib/glibj.zip'
|
||||
@CREATE_WRAPPERS_TRUE@@FOUND_CACAO_FALSE@@FOUND_GCJ_FALSE@LIBJVM =
|
||||
@CREATE_WRAPPERS_TRUE@@FOUND_CACAO_TRUE@@FOUND_GCJ_FALSE@LIBJVM = -ljvm
|
||||
@CREATE_WRAPPERS_TRUE@@FOUND_GCJ_TRUE@LIBJVM = -lgcj
|
||||
@CREATE_WRAPPERS_TRUE@appletviewer_SOURCES = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@appletviewer_CFLAGS = -Wall \
|
||||
@CREATE_WRAPPERS_TRUE@ -DDATA_DIR="\"$(datadir)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DPACKAGE="\"$(PACKAGE)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"appletviewer\""
|
||||
|
||||
@CREATE_WRAPPERS_TRUE@appletviewer_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
@CREATE_WRAPPERS_TRUE@jarsigner_SOURCES = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@jarsigner_CFLAGS = -Wall \
|
||||
@CREATE_WRAPPERS_TRUE@ -DDATA_DIR="\"$(datadir)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DPACKAGE="\"$(PACKAGE)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"jarsigner\""
|
||||
# Some architecture independent data to be installed.
|
||||
@CREATE_WRAPPERS_TRUE@TOOLS_DATA = $(TOOLS_ZIP)
|
||||
|
||||
@CREATE_WRAPPERS_TRUE@jarsigner_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
@CREATE_WRAPPERS_TRUE@keytool_SOURCES = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@keytool_CFLAGS = -Wall \
|
||||
@CREATE_WRAPPERS_TRUE@ -DDATA_DIR="\"$(datadir)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DPACKAGE="\"$(PACKAGE)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"keytool\""
|
||||
# Where we want these data files installed.
|
||||
@CREATE_WRAPPERS_TRUE@TOOLSdir = $(datadir)/java
|
||||
|
||||
@CREATE_WRAPPERS_TRUE@keytool_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
# The zip files with classes we want to produce.
|
||||
@CREATE_WRAPPERS_TRUE@TOOLS_ZIP = libgcj-tools-$(gcc_version).jar
|
||||
@CREATE_WRAPPERS_TRUE@gcc_version := $(shell cat $(top_srcdir)/../../gcc/BASE-VER)
|
||||
@CREATE_WRAPPERS_TRUE@gappletviewer_SOURCES = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@gappletviewer_CFLAGS = -Wall \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLS_ZIP="\"$(TOOLSdir)/$(TOOLS_ZIP)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLPACKAGE="\"appletviewer\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"gappletviewer\""
|
||||
|
||||
@CREATE_WRAPPERS_TRUE@gappletviewer_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
@CREATE_WRAPPERS_TRUE@gjarsigner_SOURCES = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@gjarsigner_CFLAGS = -Wall \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLS_ZIP="\"$(TOOLSdir)/$(TOOLS_ZIP)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLPACKAGE="\"jarsigner\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"gjarsigner\""
|
||||
|
||||
@CREATE_WRAPPERS_TRUE@gjarsigner_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
@CREATE_WRAPPERS_TRUE@gkeytool_SOURCES = toolwrapper.c
|
||||
@CREATE_WRAPPERS_TRUE@gkeytool_CFLAGS = -Wall \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLS_ZIP="\"$(TOOLSdir)/$(TOOLS_ZIP)\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLPACKAGE="\"keytool\"" \
|
||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"gkeytool\""
|
||||
|
||||
@CREATE_WRAPPERS_TRUE@gkeytool_LDFLAGS = -L$(libdir) $(LIBJVM)
|
||||
EXTRA_DIST = toolwrapper.c appletviewer.in jarsigner.in keytool.in
|
||||
|
||||
# All our example java source files
|
||||
TOOLS_JAVA_FILES = $(srcdir)/gnu/classpath/tools/*.java $(srcdir)/gnu/classpath/tools/*/*.java $(srcdir)/gnu/classpath/tools/*/*/*.java
|
||||
|
||||
# The zip files with classes we want to produce.
|
||||
TOOLS_ZIP = tools.zip
|
||||
|
||||
# Extra objects that will not exist until configure-time
|
||||
BUILT_SOURCES = $(TOOLS_ZIP)
|
||||
|
||||
@ -377,13 +384,7 @@ TOOLS_HELPS = $(GIOP_HELPS) $(RMI_HELPS)
|
||||
READMES = $(srcdir)/gnu/classpath/tools/giop/README
|
||||
|
||||
# All the files we find "interesting"
|
||||
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS) $(READMES)
|
||||
|
||||
# Some architecture independent data to be installed.
|
||||
TOOLS_DATA = $(TOOLS_ZIP) README
|
||||
|
||||
# Where we want these data files installed.
|
||||
TOOLSdir = $(pkgdatadir)
|
||||
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS)
|
||||
all: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||
|
||||
@ -468,15 +469,15 @@ installcheck-binPROGRAMS: $(bin_PROGRAMS)
|
||||
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
|
||||
done; \
|
||||
done; rm -f c$${pid}_.???; exit $$bad
|
||||
appletviewer$(EXEEXT): $(appletviewer_OBJECTS) $(appletviewer_DEPENDENCIES)
|
||||
@rm -f appletviewer$(EXEEXT)
|
||||
$(LINK) $(appletviewer_LDFLAGS) $(appletviewer_OBJECTS) $(appletviewer_LDADD) $(LIBS)
|
||||
jarsigner$(EXEEXT): $(jarsigner_OBJECTS) $(jarsigner_DEPENDENCIES)
|
||||
@rm -f jarsigner$(EXEEXT)
|
||||
$(LINK) $(jarsigner_LDFLAGS) $(jarsigner_OBJECTS) $(jarsigner_LDADD) $(LIBS)
|
||||
keytool$(EXEEXT): $(keytool_OBJECTS) $(keytool_DEPENDENCIES)
|
||||
@rm -f keytool$(EXEEXT)
|
||||
$(LINK) $(keytool_LDFLAGS) $(keytool_OBJECTS) $(keytool_LDADD) $(LIBS)
|
||||
gappletviewer$(EXEEXT): $(gappletviewer_OBJECTS) $(gappletviewer_DEPENDENCIES)
|
||||
@rm -f gappletviewer$(EXEEXT)
|
||||
$(LINK) $(gappletviewer_LDFLAGS) $(gappletviewer_OBJECTS) $(gappletviewer_LDADD) $(LIBS)
|
||||
gjarsigner$(EXEEXT): $(gjarsigner_OBJECTS) $(gjarsigner_DEPENDENCIES)
|
||||
@rm -f gjarsigner$(EXEEXT)
|
||||
$(LINK) $(gjarsigner_LDFLAGS) $(gjarsigner_OBJECTS) $(gjarsigner_LDADD) $(LIBS)
|
||||
gkeytool$(EXEEXT): $(gkeytool_OBJECTS) $(gkeytool_DEPENDENCIES)
|
||||
@rm -f gkeytool$(EXEEXT)
|
||||
$(LINK) $(gkeytool_LDFLAGS) $(gkeytool_OBJECTS) $(gkeytool_LDADD) $(LIBS)
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@ -503,9 +504,9 @@ mostlyclean-compile:
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appletviewer-toolwrapper.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jarsigner-toolwrapper.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keytool-toolwrapper.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gappletviewer-toolwrapper.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gjarsigner-toolwrapper.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gkeytool-toolwrapper.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@ -528,47 +529,47 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
appletviewer-toolwrapper.o: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(appletviewer_CFLAGS) $(CFLAGS) -MT appletviewer-toolwrapper.o -MD -MP -MF "$(DEPDIR)/appletviewer-toolwrapper.Tpo" -c -o appletviewer-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/appletviewer-toolwrapper.Tpo" "$(DEPDIR)/appletviewer-toolwrapper.Po"; else rm -f "$(DEPDIR)/appletviewer-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='appletviewer-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
||||
gappletviewer-toolwrapper.o: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gappletviewer_CFLAGS) $(CFLAGS) -MT gappletviewer-toolwrapper.o -MD -MP -MF "$(DEPDIR)/gappletviewer-toolwrapper.Tpo" -c -o gappletviewer-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gappletviewer-toolwrapper.Tpo" "$(DEPDIR)/gappletviewer-toolwrapper.Po"; else rm -f "$(DEPDIR)/gappletviewer-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='gappletviewer-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(appletviewer_CFLAGS) $(CFLAGS) -c -o appletviewer-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gappletviewer_CFLAGS) $(CFLAGS) -c -o gappletviewer-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c
|
||||
|
||||
appletviewer-toolwrapper.obj: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(appletviewer_CFLAGS) $(CFLAGS) -MT appletviewer-toolwrapper.obj -MD -MP -MF "$(DEPDIR)/appletviewer-toolwrapper.Tpo" -c -o appletviewer-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/appletviewer-toolwrapper.Tpo" "$(DEPDIR)/appletviewer-toolwrapper.Po"; else rm -f "$(DEPDIR)/appletviewer-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='appletviewer-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
||||
gappletviewer-toolwrapper.obj: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gappletviewer_CFLAGS) $(CFLAGS) -MT gappletviewer-toolwrapper.obj -MD -MP -MF "$(DEPDIR)/gappletviewer-toolwrapper.Tpo" -c -o gappletviewer-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gappletviewer-toolwrapper.Tpo" "$(DEPDIR)/gappletviewer-toolwrapper.Po"; else rm -f "$(DEPDIR)/gappletviewer-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='gappletviewer-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(appletviewer_CFLAGS) $(CFLAGS) -c -o appletviewer-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gappletviewer_CFLAGS) $(CFLAGS) -c -o gappletviewer-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`
|
||||
|
||||
jarsigner-toolwrapper.o: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jarsigner_CFLAGS) $(CFLAGS) -MT jarsigner-toolwrapper.o -MD -MP -MF "$(DEPDIR)/jarsigner-toolwrapper.Tpo" -c -o jarsigner-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jarsigner-toolwrapper.Tpo" "$(DEPDIR)/jarsigner-toolwrapper.Po"; else rm -f "$(DEPDIR)/jarsigner-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='jarsigner-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
||||
gjarsigner-toolwrapper.o: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gjarsigner_CFLAGS) $(CFLAGS) -MT gjarsigner-toolwrapper.o -MD -MP -MF "$(DEPDIR)/gjarsigner-toolwrapper.Tpo" -c -o gjarsigner-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gjarsigner-toolwrapper.Tpo" "$(DEPDIR)/gjarsigner-toolwrapper.Po"; else rm -f "$(DEPDIR)/gjarsigner-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='gjarsigner-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jarsigner_CFLAGS) $(CFLAGS) -c -o jarsigner-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gjarsigner_CFLAGS) $(CFLAGS) -c -o gjarsigner-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c
|
||||
|
||||
jarsigner-toolwrapper.obj: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jarsigner_CFLAGS) $(CFLAGS) -MT jarsigner-toolwrapper.obj -MD -MP -MF "$(DEPDIR)/jarsigner-toolwrapper.Tpo" -c -o jarsigner-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/jarsigner-toolwrapper.Tpo" "$(DEPDIR)/jarsigner-toolwrapper.Po"; else rm -f "$(DEPDIR)/jarsigner-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='jarsigner-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
||||
gjarsigner-toolwrapper.obj: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gjarsigner_CFLAGS) $(CFLAGS) -MT gjarsigner-toolwrapper.obj -MD -MP -MF "$(DEPDIR)/gjarsigner-toolwrapper.Tpo" -c -o gjarsigner-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gjarsigner-toolwrapper.Tpo" "$(DEPDIR)/gjarsigner-toolwrapper.Po"; else rm -f "$(DEPDIR)/gjarsigner-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='gjarsigner-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(jarsigner_CFLAGS) $(CFLAGS) -c -o jarsigner-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gjarsigner_CFLAGS) $(CFLAGS) -c -o gjarsigner-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`
|
||||
|
||||
keytool-toolwrapper.o: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(keytool_CFLAGS) $(CFLAGS) -MT keytool-toolwrapper.o -MD -MP -MF "$(DEPDIR)/keytool-toolwrapper.Tpo" -c -o keytool-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/keytool-toolwrapper.Tpo" "$(DEPDIR)/keytool-toolwrapper.Po"; else rm -f "$(DEPDIR)/keytool-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='keytool-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
||||
gkeytool-toolwrapper.o: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkeytool_CFLAGS) $(CFLAGS) -MT gkeytool-toolwrapper.o -MD -MP -MF "$(DEPDIR)/gkeytool-toolwrapper.Tpo" -c -o gkeytool-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gkeytool-toolwrapper.Tpo" "$(DEPDIR)/gkeytool-toolwrapper.Po"; else rm -f "$(DEPDIR)/gkeytool-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='gkeytool-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(keytool_CFLAGS) $(CFLAGS) -c -o keytool-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkeytool_CFLAGS) $(CFLAGS) -c -o gkeytool-toolwrapper.o `test -f 'toolwrapper.c' || echo '$(srcdir)/'`toolwrapper.c
|
||||
|
||||
keytool-toolwrapper.obj: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(keytool_CFLAGS) $(CFLAGS) -MT keytool-toolwrapper.obj -MD -MP -MF "$(DEPDIR)/keytool-toolwrapper.Tpo" -c -o keytool-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/keytool-toolwrapper.Tpo" "$(DEPDIR)/keytool-toolwrapper.Po"; else rm -f "$(DEPDIR)/keytool-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='keytool-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
||||
gkeytool-toolwrapper.obj: toolwrapper.c
|
||||
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkeytool_CFLAGS) $(CFLAGS) -MT gkeytool-toolwrapper.obj -MD -MP -MF "$(DEPDIR)/gkeytool-toolwrapper.Tpo" -c -o gkeytool-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/gkeytool-toolwrapper.Tpo" "$(DEPDIR)/gkeytool-toolwrapper.Po"; else rm -f "$(DEPDIR)/gkeytool-toolwrapper.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='toolwrapper.c' object='gkeytool-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(keytool_CFLAGS) $(CFLAGS) -c -o keytool-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gkeytool_CFLAGS) $(CFLAGS) -c -o gkeytool-toolwrapper.obj `if test -f 'toolwrapper.c'; then $(CYGPATH_W) 'toolwrapper.c'; else $(CYGPATH_W) '$(srcdir)/toolwrapper.c'; fi`
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
@ -808,8 +809,7 @@ $(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
|
||||
cp $(GIOP_HELPS) classes/gnu/classpath/tools/giop/
|
||||
$(JCOMPILER) -d classes $(TOOLS_JAVA_FILES)
|
||||
(cd classes; \
|
||||
if test "$(ZIP)" != ""; then $(ZIP) -r ../$(TOOLS_ZIP) .; fi; \
|
||||
if test "$(FASTJAR)" != ""; then $(FASTJAR) cf ../$(TOOLS_ZIP) .; fi; \
|
||||
$(FASTJAR) cf ../$(TOOLS_ZIP) .; \
|
||||
cd ..)
|
||||
rm -rf classes
|
||||
|
||||
|
@ -128,7 +128,7 @@ main (int argc, const char** argv)
|
||||
goto destroy;
|
||||
}
|
||||
|
||||
vm_args.options[vm_args.nOptions++].optionString = "-Djava.class.path=" DATA_DIR "/" PACKAGE "/tools.zip";
|
||||
vm_args.options[vm_args.nOptions++].optionString = "-Djava.class.path=" TOOLS_ZIP;
|
||||
}
|
||||
|
||||
/* Terminate vm_args.options with a NULL element. */
|
||||
@ -188,7 +188,7 @@ main (int argc, const char** argv)
|
||||
(*env)->SetObjectArrayElement (env, args_array, i, str);
|
||||
}
|
||||
|
||||
class_id = (*env)->FindClass (env, "gnu/classpath/tools/" TOOLNAME "/Main");
|
||||
class_id = (*env)->FindClass (env, "gnu/classpath/tools/" TOOLPACKAGE "/Main");
|
||||
if (class_id == NULL)
|
||||
{
|
||||
fprintf (stderr, TOOLNAME ": FindClass failed.\n");
|
||||
|
26
libjava/configure
vendored
26
libjava/configure
vendored
@ -853,6 +853,7 @@ Optional Features:
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
--enable-multilib build many library versions (default)
|
||||
--enable-plugin build gcjwebplugin web browser plugin
|
||||
--disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors
|
||||
--enable-maintainer-mode enable make rules and dependencies not useful
|
||||
@ -1607,6 +1608,21 @@ echo "$as_me: error: bad value ${enableval} for multilib option" >&2;}
|
||||
else
|
||||
multilib=yes
|
||||
fi;
|
||||
# Check whether --enable-plugin or --disable-plugin was given.
|
||||
if test "${enable_plugin+set}" = set; then
|
||||
enableval="$enable_plugin"
|
||||
case "$enableval" in
|
||||
yes) plugin_enabled=yes ;;
|
||||
no) plugin_enabled=no ;;
|
||||
*) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable plugin" >&5
|
||||
echo "$as_me: error: Unknown argument to enable/disable plugin" >&2;}
|
||||
{ (exit 1); exit 1; }; };;
|
||||
esac
|
||||
else
|
||||
plugin_enabled=no
|
||||
|
||||
fi;
|
||||
|
||||
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
|
||||
|
||||
|
||||
@ -4985,6 +5001,8 @@ test -f libgcj.spec || touch libgcj.spec
|
||||
|
||||
# Set up to configure Classpath.
|
||||
# FIXME: no supported way to pass args in autoconf.
|
||||
ac_configure_args="$ac_configure_args --with-fastjar=$JAR"
|
||||
ac_configure_args="$ac_configure_args --enable-tool-wrappers"
|
||||
ac_configure_args="$ac_configure_args --disable-load-library"
|
||||
ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
|
||||
ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT"
|
||||
@ -4994,7 +5012,9 @@ ac_configure_args="$ac_configure_args --with-vm-classes=$dir1:$dir2"
|
||||
ac_configure_args="$ac_configure_args --disable-core-jni"
|
||||
ac_configure_args="$ac_configure_args --disable-examples"
|
||||
ac_configure_args="$ac_configure_args --with-glibj=build"
|
||||
ac_configure_args="$ac_configure_args --disable-plugin"
|
||||
if test "$plugin_enabled" != yes; then
|
||||
ac_configure_args="$ac_configure_args --disable-plugin"
|
||||
fi
|
||||
if test "$use_gtk_awt" != yes; then
|
||||
ac_configure_args="$ac_configure_args --disable-gtk-peer"
|
||||
fi
|
||||
@ -5817,7 +5837,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
|
||||
case $host in
|
||||
*-*-irix6*)
|
||||
# Find out which ABI we are using.
|
||||
echo '#line 5820 "configure"' > conftest.$ac_ext
|
||||
echo '#line 5840 "configure"' > conftest.$ac_ext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>&5
|
||||
ac_status=$?
|
||||
@ -6820,7 +6840,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then
|
||||
:
|
||||
else
|
||||
cat > conftest.$ac_ext << EOF
|
||||
#line 6823 "configure"
|
||||
#line 6843 "configure"
|
||||
struct S { ~S(); };
|
||||
void bar();
|
||||
void foo()
|
||||
|
@ -84,6 +84,17 @@ AC_ARG_ENABLE(multilib,
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
|
||||
esac], [multilib=yes])dnl
|
||||
|
||||
AC_ARG_ENABLE(plugin,
|
||||
AS_HELP_STRING([--enable-plugin],
|
||||
[build gcjwebplugin web browser plugin]),
|
||||
[case "$enableval" in
|
||||
yes) plugin_enabled=yes ;;
|
||||
no) plugin_enabled=no ;;
|
||||
*) AC_MSG_ERROR([Unknown argument to enable/disable plugin]);;
|
||||
esac],
|
||||
[plugin_enabled=no]
|
||||
)
|
||||
|
||||
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
|
||||
GCC_NO_EXECUTABLES
|
||||
|
||||
@ -320,6 +331,8 @@ test -f libgcj.spec || touch libgcj.spec
|
||||
|
||||
# Set up to configure Classpath.
|
||||
# FIXME: no supported way to pass args in autoconf.
|
||||
ac_configure_args="$ac_configure_args --with-fastjar=$JAR"
|
||||
ac_configure_args="$ac_configure_args --enable-tool-wrappers"
|
||||
ac_configure_args="$ac_configure_args --disable-load-library"
|
||||
ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
|
||||
ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT"
|
||||
@ -330,7 +343,9 @@ ac_configure_args="$ac_configure_args --disable-core-jni"
|
||||
dnl FIXME?
|
||||
ac_configure_args="$ac_configure_args --disable-examples"
|
||||
ac_configure_args="$ac_configure_args --with-glibj=build"
|
||||
ac_configure_args="$ac_configure_args --disable-plugin"
|
||||
if test "$plugin_enabled" != yes; then
|
||||
ac_configure_args="$ac_configure_args --disable-plugin"
|
||||
fi
|
||||
if test "$use_gtk_awt" != yes; then
|
||||
ac_configure_args="$ac_configure_args --disable-gtk-peer"
|
||||
fi
|
||||
|
@ -89,8 +89,6 @@ AWK = @AWK@
|
||||
BACKTRACESPEC = @BACKTRACESPEC@
|
||||
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
||||
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
||||
CAIRO_CFLAGS = @CAIRO_CFLAGS@
|
||||
CAIRO_LIBS = @CAIRO_LIBS@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
@ -126,8 +124,6 @@ GCSPEC = @GCSPEC@
|
||||
GCTESTSPEC = @GCTESTSPEC@
|
||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||
GLIB_LIBS = @GLIB_LIBS@
|
||||
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
|
||||
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
|
||||
GTK_CFLAGS = @GTK_CFLAGS@
|
||||
GTK_LIBS = @GTK_LIBS@
|
||||
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
||||
@ -180,8 +176,6 @@ PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@
|
||||
PANGOFT2_LIBS = @PANGOFT2_LIBS@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
|
@ -88,8 +88,6 @@ AWK = @AWK@
|
||||
BACKTRACESPEC = @BACKTRACESPEC@
|
||||
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
||||
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
||||
CAIRO_CFLAGS = @CAIRO_CFLAGS@
|
||||
CAIRO_LIBS = @CAIRO_LIBS@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
@ -125,8 +123,6 @@ GCSPEC = @GCSPEC@
|
||||
GCTESTSPEC = @GCTESTSPEC@
|
||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||
GLIB_LIBS = @GLIB_LIBS@
|
||||
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
|
||||
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
|
||||
GTK_CFLAGS = @GTK_CFLAGS@
|
||||
GTK_LIBS = @GTK_LIBS@
|
||||
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
||||
@ -179,8 +175,6 @@ PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@
|
||||
PANGOFT2_LIBS = @PANGOFT2_LIBS@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PERL = @PERL@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user