mirror of git://gcc.gnu.org/git/gcc.git
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>
|
2006-06-13 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||||
|
|
||||||
* configure.host (hppa*-*): Set 'enable_hash_synchronization_default'
|
* configure.host (hppa*-*): Set 'enable_hash_synchronization_default'
|
||||||
|
|
|
||||||
|
|
@ -436,8 +436,6 @@ AWK = @AWK@
|
||||||
BACKTRACESPEC = @BACKTRACESPEC@
|
BACKTRACESPEC = @BACKTRACESPEC@
|
||||||
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
||||||
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
||||||
CAIRO_CFLAGS = @CAIRO_CFLAGS@
|
|
||||||
CAIRO_LIBS = @CAIRO_LIBS@
|
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CCDEPMODE = @CCDEPMODE@
|
CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
|
|
@ -473,8 +471,6 @@ GCSPEC = @GCSPEC@
|
||||||
GCTESTSPEC = @GCTESTSPEC@
|
GCTESTSPEC = @GCTESTSPEC@
|
||||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
GLIB_LIBS = @GLIB_LIBS@
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
|
|
||||||
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
|
|
||||||
GTK_CFLAGS = @GTK_CFLAGS@
|
GTK_CFLAGS = @GTK_CFLAGS@
|
||||||
GTK_LIBS = @GTK_LIBS@
|
GTK_LIBS = @GTK_LIBS@
|
||||||
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
||||||
|
|
@ -527,8 +523,6 @@ PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@
|
|
||||||
PANGOFT2_LIBS = @PANGOFT2_LIBS@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PERL = @PERL@
|
PERL = @PERL@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
|
@ -1663,6 +1657,7 @@ classpath/gnu/java/net/DefaultContentHandlerFactory.java \
|
||||||
classpath/gnu/java/net/EmptyX509TrustManager.java \
|
classpath/gnu/java/net/EmptyX509TrustManager.java \
|
||||||
classpath/gnu/java/net/GetLocalHostAction.java \
|
classpath/gnu/java/net/GetLocalHostAction.java \
|
||||||
classpath/gnu/java/net/HeaderFieldHelper.java \
|
classpath/gnu/java/net/HeaderFieldHelper.java \
|
||||||
|
classpath/gnu/java/net/IndexListParser.java \
|
||||||
classpath/gnu/java/net/LineInputStream.java \
|
classpath/gnu/java/net/LineInputStream.java \
|
||||||
gnu/java/net/PlainDatagramSocketImpl.java \
|
gnu/java/net/PlainDatagramSocketImpl.java \
|
||||||
gnu/java/net/PlainSocketImpl.java \
|
gnu/java/net/PlainSocketImpl.java \
|
||||||
|
|
@ -6931,8 +6926,14 @@ bc_objects = \
|
||||||
org-xml.lo
|
org-xml.lo
|
||||||
|
|
||||||
property_files = \
|
property_files = \
|
||||||
classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties \
|
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties \
|
||||||
classpath/resource/gnu/classpath/tools/keytool/MessageBundle.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/java/awt/peer/gtk/font.properties \
|
||||||
classpath/resource/gnu/javax/print/PrinterDialog.properties \
|
classpath/resource/gnu/javax/print/PrinterDialog.properties \
|
||||||
classpath/resource/gnu/javax/print/PrinterDialog_de.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
|
## Input file for automake to generate the Makefile.in used by configure
|
||||||
|
|
||||||
# lib first, to compile .class files before native code, last examples
|
# lib first, to compile .class files before native code, last examples
|
||||||
## GCJ LOCAL: we remove 'tools' for the time being.
|
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
|
||||||
## We don't build any of them into actual tools yet.
|
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
|
||||||
SUBDIRS = lib doc external include native resource scripts $(EXAMPLESDIR)
|
|
||||||
DIST_SUBDIRS = lib doc external include native resource scripts examples
|
|
||||||
|
|
||||||
## GCJ LOCAL: we need an extra -I here.
|
## GCJ LOCAL: we need an extra -I here.
|
||||||
ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
|
ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
|
||||||
|
|
|
||||||
|
|
@ -295,8 +295,8 @@ target_vendor = @target_vendor@
|
||||||
vm_classes = @vm_classes@
|
vm_classes = @vm_classes@
|
||||||
|
|
||||||
# lib first, to compile .class files before native code, last examples
|
# lib first, to compile .class files before native code, last examples
|
||||||
SUBDIRS = lib doc external include native resource scripts $(EXAMPLESDIR)
|
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
|
||||||
DIST_SUBDIRS = lib doc external include native resource scripts examples
|
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
|
||||||
ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
|
ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
|
||||||
EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE \
|
EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE \
|
||||||
ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 \
|
ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 \
|
||||||
|
|
|
||||||
|
|
@ -1066,6 +1066,10 @@ class VirtualMachine
|
||||||
stack[sp] = ((e1 != 0) || (stack[sp] != 0)) ? 1 : 0;
|
stack[sp] = ((e1 != 0) || (stack[sp] != 0)) ? 1 : 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x5C: // NOT
|
||||||
|
stack[sp] = (stack[sp] != 0) ? 0 : 1;
|
||||||
|
break;
|
||||||
|
|
||||||
case 0x5e: // SDB, Set Delta Base in the graphics state
|
case 0x5e: // SDB, Set Delta Base in the graphics state
|
||||||
deltaBase = stack[sp--];
|
deltaBase = stack[sp--];
|
||||||
break;
|
break;
|
||||||
|
|
@ -1764,7 +1768,7 @@ class VirtualMachine
|
||||||
/* 50 */ "LT", "LTEQ", "GT", "GTEQ",
|
/* 50 */ "LT", "LTEQ", "GT", "GTEQ",
|
||||||
/* 54 */ "EQ", "NEQ", "INST_56", "INST_57",
|
/* 54 */ "EQ", "NEQ", "INST_56", "INST_57",
|
||||||
/* 58 */ "IF", "EIF", "AND", "OR",
|
/* 58 */ "IF", "EIF", "AND", "OR",
|
||||||
/* 5c */ "INST_5C", "INST_5D", "SDB", "SDS",
|
/* 5c */ "NOT", "INST_5D", "SDB", "SDS",
|
||||||
/* 60 */ "ADD", "SUB", "DIV", "MUL",
|
/* 60 */ "ADD", "SUB", "DIV", "MUL",
|
||||||
/* 64 */ "ABS", "NEG", "FLOOR", "CEILING",
|
/* 64 */ "ABS", "NEG", "FLOOR", "CEILING",
|
||||||
/* 68 */ "ROUND[0]", "ROUND[1]", "ROUND[2]", "ROUND[3]",
|
/* 68 */ "ROUND[0]", "ROUND[1]", "ROUND[2]", "ROUND[3]",
|
||||||
|
|
|
||||||
|
|
@ -1331,8 +1331,8 @@ public abstract class AbstractGraphics2D
|
||||||
{
|
{
|
||||||
AffineTransform t = new AffineTransform();
|
AffineTransform t = new AffineTransform();
|
||||||
t.translate(x, y);
|
t.translate(x, y);
|
||||||
double scaleX = (double) image.getWidth(observer) / (double) width;
|
double scaleX = (double) width / (double) image.getWidth(observer);
|
||||||
double scaleY = (double) image.getHeight(observer) / (double) height;
|
double scaleY = (double) height / (double) image.getHeight(observer);
|
||||||
t.scale(scaleX, scaleY);
|
t.scale(scaleX, scaleY);
|
||||||
return drawImage(image, t, observer);
|
return drawImage(image, t, observer);
|
||||||
}
|
}
|
||||||
|
|
@ -1473,15 +1473,11 @@ public abstract class AbstractGraphics2D
|
||||||
antialias = (v == RenderingHints.VALUE_ANTIALIAS_ON);
|
antialias = (v == RenderingHints.VALUE_ANTIALIAS_ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
double offs = 0.5;
|
|
||||||
if (antialias)
|
|
||||||
offs = offs / AA_SAMPLING;
|
|
||||||
|
|
||||||
Rectangle2D userBounds = s.getBounds2D();
|
Rectangle2D userBounds = s.getBounds2D();
|
||||||
Rectangle2D deviceBounds = new Rectangle2D.Double();
|
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();
|
Rectangle2D clipBounds = new Rectangle2D.Double();
|
||||||
ArrayList clipSegs = getSegments(clip, transform, clipBounds, true, offs);
|
ArrayList clipSegs = getSegments(clip, transform, clipBounds, true);
|
||||||
segs.addAll(clipSegs);
|
segs.addAll(clipSegs);
|
||||||
Rectangle2D inclClipBounds = new Rectangle2D.Double();
|
Rectangle2D inclClipBounds = new Rectangle2D.Double();
|
||||||
Rectangle2D.union(clipBounds, deviceBounds, inclClipBounds);
|
Rectangle2D.union(clipBounds, deviceBounds, inclClipBounds);
|
||||||
|
|
@ -1676,7 +1672,10 @@ public abstract class AbstractGraphics2D
|
||||||
|
|
||||||
// Scan all relevant lines.
|
// Scan all relevant lines.
|
||||||
int minYInt = (int) Math.ceil(icMinY);
|
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];
|
ArrayList bucket = edgeTable[y - minYInt];
|
||||||
// Update all the x intersections in the current activeEdges table
|
// 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
|
* @return a list of PolyEdge that form the shape in device space
|
||||||
*/
|
*/
|
||||||
private ArrayList getSegments(Shape s, AffineTransform t,
|
private ArrayList getSegments(Shape s, AffineTransform t,
|
||||||
Rectangle2D deviceBounds, boolean isClip,
|
Rectangle2D deviceBounds, boolean isClip)
|
||||||
double offs)
|
|
||||||
{
|
{
|
||||||
// Flatten the path. TODO: Determine the best flattening factor
|
// Flatten the path. TODO: Determine the best flattening factor
|
||||||
// wrt to speed and quality.
|
// wrt to speed and quality.
|
||||||
|
|
@ -2213,14 +2211,14 @@ public abstract class AbstractGraphics2D
|
||||||
else if (segType == PathIterator.SEG_CLOSE)
|
else if (segType == PathIterator.SEG_CLOSE)
|
||||||
{
|
{
|
||||||
// Close the polyline.
|
// Close the polyline.
|
||||||
PolyEdge edge = new PolyEdge(segX, segY - offs,
|
PolyEdge edge = new PolyEdge(segX, segY,
|
||||||
polyX, polyY - offs, isClip);
|
polyX, polyY, isClip);
|
||||||
segs.add(edge);
|
segs.add(edge);
|
||||||
}
|
}
|
||||||
else if (segType == PathIterator.SEG_LINETO)
|
else if (segType == PathIterator.SEG_LINETO)
|
||||||
{
|
{
|
||||||
PolyEdge edge = new PolyEdge(segX, segY - offs,
|
PolyEdge edge = new PolyEdge(segX, segY,
|
||||||
seg[0], seg[1] - offs, isClip);
|
seg[0], seg[1], isClip);
|
||||||
segs.add(edge);
|
segs.add(edge);
|
||||||
segX = seg[0];
|
segX = seg[0];
|
||||||
segY = seg[1];
|
segY = seg[1];
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,7 @@ public class PolyEdge
|
||||||
public String toString()
|
public String toString()
|
||||||
{
|
{
|
||||||
return "Edge: " + x0 + ", " + y0 + ", " + x1 + ", " + y1 + ", slope: "
|
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;
|
package gnu.java.awt.peer.gtk;
|
||||||
|
|
||||||
import gnu.classpath.Configuration;
|
|
||||||
import gnu.java.awt.ClasspathToolkit;
|
import gnu.java.awt.ClasspathToolkit;
|
||||||
|
|
||||||
import java.awt.AlphaComposite;
|
import java.awt.AlphaComposite;
|
||||||
import java.awt.BasicStroke;
|
import java.awt.BasicStroke;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Composite;
|
import java.awt.Composite;
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.GradientPaint;
|
import java.awt.GradientPaint;
|
||||||
|
|
@ -63,11 +61,12 @@ import java.awt.TexturePaint;
|
||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.font.FontRenderContext;
|
import java.awt.font.FontRenderContext;
|
||||||
import java.awt.font.GlyphVector;
|
import java.awt.font.GlyphVector;
|
||||||
|
import java.awt.font.TextLayout;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Arc2D;
|
import java.awt.geom.Arc2D;
|
||||||
import java.awt.geom.Area;
|
import java.awt.geom.Area;
|
||||||
import java.awt.geom.Line2D;
|
|
||||||
import java.awt.geom.GeneralPath;
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Line2D;
|
||||||
import java.awt.geom.NoninvertibleTransformException;
|
import java.awt.geom.NoninvertibleTransformException;
|
||||||
import java.awt.geom.PathIterator;
|
import java.awt.geom.PathIterator;
|
||||||
import java.awt.geom.Point2D;
|
import java.awt.geom.Point2D;
|
||||||
|
|
@ -77,12 +76,11 @@ import java.awt.image.AffineTransformOp;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.BufferedImageOp;
|
import java.awt.image.BufferedImageOp;
|
||||||
import java.awt.image.ColorModel;
|
import java.awt.image.ColorModel;
|
||||||
import java.awt.image.CropImageFilter;
|
|
||||||
import java.awt.image.DataBuffer;
|
import java.awt.image.DataBuffer;
|
||||||
import java.awt.image.DataBufferInt;
|
import java.awt.image.DataBufferInt;
|
||||||
import java.awt.image.DirectColorModel;
|
import java.awt.image.DirectColorModel;
|
||||||
import java.awt.image.FilteredImageSource;
|
|
||||||
import java.awt.image.ImageObserver;
|
import java.awt.image.ImageObserver;
|
||||||
|
import java.awt.image.ImageProducer;
|
||||||
import java.awt.image.ImagingOpException;
|
import java.awt.image.ImagingOpException;
|
||||||
import java.awt.image.MultiPixelPackedSampleModel;
|
import java.awt.image.MultiPixelPackedSampleModel;
|
||||||
import java.awt.image.Raster;
|
import java.awt.image.Raster;
|
||||||
|
|
@ -94,7 +92,6 @@ import java.awt.image.renderable.RenderableImage;
|
||||||
import java.text.AttributedCharacterIterator;
|
import java.text.AttributedCharacterIterator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Stack;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is an abstract implementation of Graphics2D on Cairo.
|
* 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());
|
bg = new Color(g.bg.getRGB());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g.clip == null)
|
clip = g.getClip();
|
||||||
clip = null;
|
|
||||||
else
|
|
||||||
clip = new Rectangle(g.getClipBounds());
|
|
||||||
|
|
||||||
if (g.transform == null)
|
if (g.transform == null)
|
||||||
transform = new AffineTransform();
|
transform = null;
|
||||||
else
|
else
|
||||||
transform = new AffineTransform(g.transform);
|
transform = new AffineTransform(g.transform);
|
||||||
|
|
||||||
|
|
@ -257,7 +251,8 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
setBackground(bg);
|
setBackground(bg);
|
||||||
setPaint(paint);
|
setPaint(paint);
|
||||||
setStroke(stroke);
|
setStroke(stroke);
|
||||||
setTransform(transform);
|
setTransformImpl(transform);
|
||||||
|
setClip(clip);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -276,7 +271,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
*/
|
*/
|
||||||
public void dispose()
|
public void dispose()
|
||||||
{
|
{
|
||||||
disposeNative();
|
disposeNative(nativePointer);
|
||||||
nativePointer = 0;
|
nativePointer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -304,7 +299,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
/**
|
/**
|
||||||
* Dispose of allocate native resouces.
|
* Dispose of allocate native resouces.
|
||||||
*/
|
*/
|
||||||
public native void disposeNative();
|
public native void disposeNative(long pointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draw pixels as an RGBA int matrix
|
* Draw pixels as an RGBA int matrix
|
||||||
|
|
@ -312,132 +307,161 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
* @param stride - stride of the array width
|
* @param stride - stride of the array width
|
||||||
* @param i2u - affine transform array
|
* @param i2u - affine transform array
|
||||||
*/
|
*/
|
||||||
private native void drawPixels(int[] pixels, int w, int h, int stride,
|
private native void drawPixels(long pointer, int[] pixels, int w, int h,
|
||||||
double[] i2u);
|
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 r1, int g1, int b1, int a1, int r2,
|
||||||
int g2, int b2, int a2, boolean cyclic);
|
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
|
* Set the current transform matrix
|
||||||
*/
|
*/
|
||||||
private native void cairoSetMatrix(double[] m);
|
private native void cairoSetMatrix(long pointer, double[] m);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the compositing operator
|
* 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
|
* 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);
|
double blue, double alpha);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the current winding rule in Cairo
|
* 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.
|
* Set the line style, cap, join and miter limit.
|
||||||
* Cap and join parameters are in the BasicStroke enumerations.
|
* 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
|
* 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
|
* Draws a Glyph Vector
|
||||||
*/
|
*/
|
||||||
native void cairoDrawGlyphVector(GdkFontPeer font,
|
native void cairoDrawGlyphVector(long pointer, GdkFontPeer font,
|
||||||
float x, float y, int n,
|
float x, float y, int n,
|
||||||
int[] codes, float[] positions);
|
int[] codes, float[] positions);
|
||||||
|
|
||||||
|
|
||||||
private native void cairoRelCurveTo(double dx1, double dy1, double dx2,
|
private native void cairoRelCurveTo(long pointer, double dx1, double dy1,
|
||||||
double dy2, double dx3, double dy3);
|
double dx2, double dy2, double dx3,
|
||||||
|
double dy3);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Appends a rectangle to the current path
|
* Appends a rectangle to the current path
|
||||||
*/
|
*/
|
||||||
private native void cairoRectangle(double x, double y, double width,
|
private native void cairoRectangle(long pointer, double x, double y,
|
||||||
double height);
|
double width, double height);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* New current path
|
* New current path
|
||||||
*/
|
*/
|
||||||
private native void cairoNewPath();
|
private native void cairoNewPath(long pointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close current path
|
* Close current path
|
||||||
*/
|
*/
|
||||||
private native void cairoClosePath();
|
private native void cairoClosePath(long pointer);
|
||||||
|
|
||||||
/** moveTo */
|
/** moveTo */
|
||||||
private native void cairoMoveTo(double x, double y);
|
private native void cairoMoveTo(long pointer, double x, double y);
|
||||||
|
|
||||||
/** relative moveTo */
|
/** relative moveTo */
|
||||||
private native void cairoRelMoveTo(double dx, double dy);
|
private native void cairoRelMoveTo(long pointer, double dx, double dy);
|
||||||
|
|
||||||
/** lineTo */
|
/** lineTo */
|
||||||
private native void cairoLineTo(double x, double y);
|
private native void cairoLineTo(long pointer, double x, double y);
|
||||||
|
|
||||||
/** relative lineTo */
|
/** relative lineTo */
|
||||||
private native void cairoRelLineTo(double dx, double dy);
|
private native void cairoRelLineTo(long pointer, double dx, double dy);
|
||||||
|
|
||||||
/** Cubic curve-to */
|
/** 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);
|
double x3, double y3);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stroke current path
|
* Stroke current path
|
||||||
*/
|
*/
|
||||||
private native void cairoStroke();
|
private native void cairoStroke(long pointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fill current path
|
* Fill current path
|
||||||
*/
|
*/
|
||||||
private native void cairoFill();
|
private native void cairoFill(long pointer, double alpha);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clip current path
|
* Clip current path
|
||||||
*/
|
*/
|
||||||
private native void cairoClip();
|
private native void cairoClip(long pointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save clip
|
* Save clip
|
||||||
*/
|
*/
|
||||||
private native void cairoPreserveClip();
|
private native void cairoPreserveClip(long pointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save clip
|
* Save clip
|
||||||
*/
|
*/
|
||||||
private native void cairoResetClip();
|
private native void cairoResetClip(long pointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set interpolation types
|
* Set interpolation types
|
||||||
*/
|
*/
|
||||||
private native void cairoSurfaceSetFilter(int filter);
|
private native void cairoSurfaceSetFilter(long pointer, int filter);
|
||||||
|
|
||||||
///////////////////////// TRANSFORMS ///////////////////////////////////
|
///////////////////////// TRANSFORMS ///////////////////////////////////
|
||||||
/**
|
/**
|
||||||
* Set the current transform
|
* Set the current transform
|
||||||
*/
|
*/
|
||||||
public void setTransform(AffineTransform tx)
|
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;
|
transform = tx;
|
||||||
if (transform != null)
|
if (transform != null)
|
||||||
{
|
{
|
||||||
double[] m = new double[6];
|
double[] m = new double[6];
|
||||||
transform.getMatrix(m);
|
transform.getMatrix(m);
|
||||||
cairoSetMatrix(m);
|
cairoSetMatrix(nativePointer, m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -447,28 +471,22 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
transform = new AffineTransform(tx);
|
transform = new AffineTransform(tx);
|
||||||
else
|
else
|
||||||
transform.concatenate(tx);
|
transform.concatenate(tx);
|
||||||
setTransform(transform);
|
|
||||||
if (clip != null)
|
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
|
try
|
||||||
{
|
{
|
||||||
tx.createInverse().transform(coords, 0, coords, 0, 2);
|
AffineTransform clipTransform = tx.createInverse();
|
||||||
r.setRect(coords[0], coords[1], coords[2] - coords[0],
|
updateClip(clipTransform);
|
||||||
coords[3] - coords[1]);
|
|
||||||
clip = r;
|
|
||||||
}
|
}
|
||||||
catch (java.awt.geom.NoninvertibleTransformException e)
|
catch (NoninvertibleTransformException ex)
|
||||||
{
|
{
|
||||||
|
// TODO: How can we deal properly with this?
|
||||||
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setTransformImpl(transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rotate(double theta)
|
public void rotate(double theta)
|
||||||
|
|
@ -501,18 +519,21 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
{
|
{
|
||||||
// FIXME: this should actuall try to transform the shape
|
// FIXME: this should actuall try to transform the shape
|
||||||
// rather than degrade to bounds.
|
// rather than degrade to bounds.
|
||||||
Rectangle2D r;
|
|
||||||
|
|
||||||
if (clip instanceof Rectangle2D)
|
if (clip instanceof Rectangle2D)
|
||||||
r = (Rectangle2D) clip;
|
{
|
||||||
|
Rectangle2D r = (Rectangle2D) clip;
|
||||||
|
r.setRect(r.getX() - tx, r.getY() - ty, r.getWidth(),
|
||||||
|
r.getHeight());
|
||||||
|
}
|
||||||
else
|
else
|
||||||
r = clip.getBounds2D();
|
{
|
||||||
|
AffineTransform clipTransform =
|
||||||
r.setRect(r.getX() - tx, r.getY() - ty, r.getWidth(), r.getHeight());
|
AffineTransform.getTranslateInstance(-tx, -ty);
|
||||||
clip = r;
|
updateClip(clipTransform);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setTransform(transform);
|
setTransformImpl(transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void translate(int x, int y)
|
public void translate(int x, int y)
|
||||||
|
|
@ -531,19 +552,27 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
{
|
{
|
||||||
// Do not touch clip when s == null.
|
// Do not touch clip when s == null.
|
||||||
if (s == null)
|
if (s == null)
|
||||||
|
{
|
||||||
|
// 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;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// If the current clip is still null, initialize it.
|
// If the current clip is still null, initialize it.
|
||||||
if (clip == null)
|
if (clip == null)
|
||||||
clip = originalClip;
|
{
|
||||||
|
clip = getRealBounds();
|
||||||
|
}
|
||||||
|
|
||||||
// This is so common, let's optimize this.
|
// This is so common, let's optimize this.
|
||||||
else if (clip instanceof Rectangle2D && s instanceof Rectangle2D)
|
if (clip instanceof Rectangle2D && s instanceof Rectangle2D)
|
||||||
{
|
{
|
||||||
Rectangle2D clipRect = (Rectangle2D) clip;
|
Rectangle2D clipRect = (Rectangle2D) clip;
|
||||||
Rectangle2D r = (Rectangle2D) s;
|
Rectangle2D r = (Rectangle2D) s;
|
||||||
Rectangle2D.intersect(clipRect, r, clipRect);
|
Rectangle2D.intersect(clipRect, r, clipRect);
|
||||||
// Call setClip so that subclasses get notified.
|
|
||||||
setClip(clipRect);
|
setClip(clipRect);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -603,7 +632,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
AffineTransformOp op = new AffineTransformOp(at, getRenderingHints());
|
AffineTransformOp op = new AffineTransformOp(at, getRenderingHints());
|
||||||
BufferedImage texture = op.filter(img, null);
|
BufferedImage texture = op.filter(img, null);
|
||||||
int[] pixels = texture.getRGB(0, 0, width, height, null, 0, width);
|
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)
|
else if (paint instanceof GradientPaint)
|
||||||
{
|
{
|
||||||
|
|
@ -612,9 +641,10 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
Point2D p2 = gp.getPoint2();
|
Point2D p2 = gp.getPoint2();
|
||||||
Color c1 = gp.getColor1();
|
Color c1 = gp.getColor1();
|
||||||
Color c2 = gp.getColor2();
|
Color c2 = gp.getColor2();
|
||||||
setGradient(p1.getX(), p1.getY(), p2.getX(), p2.getY(), c1.getRed(),
|
setGradient(nativePointer, p1.getX(), p1.getY(), p2.getX(), p2.getY(),
|
||||||
c1.getGreen(), c1.getBlue(), c1.getAlpha(), c2.getRed(),
|
c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha(),
|
||||||
c2.getGreen(), c2.getBlue(), c2.getAlpha(), gp.isCyclic());
|
c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha(),
|
||||||
|
gp.isCyclic());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw new java.lang.UnsupportedOperationException();
|
throw new java.lang.UnsupportedOperationException();
|
||||||
|
|
@ -631,7 +661,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
if (stroke instanceof BasicStroke)
|
if (stroke instanceof BasicStroke)
|
||||||
{
|
{
|
||||||
BasicStroke bs = (BasicStroke) stroke;
|
BasicStroke bs = (BasicStroke) stroke;
|
||||||
cairoSetLine(bs.getLineWidth(), bs.getEndCap(),
|
cairoSetLine(nativePointer, bs.getLineWidth(), bs.getEndCap(),
|
||||||
bs.getLineJoin(), bs.getMiterLimit());
|
bs.getLineJoin(), bs.getMiterLimit());
|
||||||
|
|
||||||
float[] dashes = bs.getDashArray();
|
float[] dashes = bs.getDashArray();
|
||||||
|
|
@ -640,11 +670,11 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
double[] double_dashes = new double[dashes.length];
|
double[] double_dashes = new double[dashes.length];
|
||||||
for (int i = 0; i < dashes.length; i++)
|
for (int i = 0; i < dashes.length; i++)
|
||||||
double_dashes[i] = dashes[i];
|
double_dashes[i] = dashes[i];
|
||||||
cairoSetDash(double_dashes, double_dashes.length,
|
cairoSetDash(nativePointer, double_dashes, double_dashes.length,
|
||||||
(double) bs.getDashPhase());
|
(double) bs.getDashPhase());
|
||||||
}
|
}
|
||||||
else
|
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)
|
if (fg == null)
|
||||||
fg = Color.BLACK;
|
fg = Color.BLACK;
|
||||||
cairoSetRGBAColor(fg.getRed() / 255.0, fg.getGreen() / 255.0,
|
cairoSetRGBAColor(nativePointer, fg.getRed() / 255.0,
|
||||||
fg.getBlue() / 255.0, fg.getAlpha() / 255.0);
|
fg.getGreen() / 255.0,fg.getBlue() / 255.0,
|
||||||
|
fg.getAlpha() / 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color getColor()
|
public Color getColor()
|
||||||
|
|
@ -686,6 +717,14 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
|
|
||||||
public void clipRect(int x, int y, int width, int height)
|
public void clipRect(int x, int y, int width, int 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));
|
clip(new Rectangle(x, y, width, height));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -693,8 +732,15 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
{
|
{
|
||||||
if (clip == null)
|
if (clip == null)
|
||||||
return null;
|
return null;
|
||||||
else
|
else if (clip instanceof Rectangle2D)
|
||||||
return clip.getBounds2D(); //getClipInDevSpace();
|
return clip.getBounds2D(); //getClipInDevSpace();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GeneralPath p = new GeneralPath();
|
||||||
|
PathIterator pi = clip.getPathIterator(new AffineTransform());
|
||||||
|
p.append(pi, false);
|
||||||
|
return p;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Rectangle getClipBounds()
|
public Rectangle getClipBounds()
|
||||||
|
|
@ -745,23 +791,23 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
firstClip = false;
|
firstClip = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s == null)
|
|
||||||
clip = originalClip;
|
|
||||||
else
|
|
||||||
clip = s;
|
clip = s;
|
||||||
|
cairoResetClip(nativePointer);
|
||||||
|
|
||||||
cairoResetClip();
|
if (clip != null)
|
||||||
|
{
|
||||||
cairoNewPath();
|
cairoNewPath(nativePointer);
|
||||||
if (clip instanceof Rectangle2D)
|
if (clip instanceof Rectangle2D)
|
||||||
{
|
{
|
||||||
Rectangle2D r = (Rectangle2D) clip;
|
Rectangle2D r = (Rectangle2D) clip;
|
||||||
cairoRectangle(r.getX(), r.getY(), r.getWidth(), r.getHeight());
|
cairoRectangle(nativePointer, r.getX(), r.getY(), r.getWidth(),
|
||||||
|
r.getHeight());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
walkPath(clip.getPathIterator(null), false);
|
walkPath(clip.getPathIterator(null), false);
|
||||||
|
|
||||||
cairoClip();
|
cairoClip(nativePointer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBackground(Color c)
|
public void setBackground(Color c)
|
||||||
|
|
@ -797,10 +843,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
if (comp instanceof AlphaComposite)
|
if (comp instanceof AlphaComposite)
|
||||||
{
|
{
|
||||||
AlphaComposite a = (AlphaComposite) comp;
|
AlphaComposite a = (AlphaComposite) comp;
|
||||||
cairoSetOperator(a.getRule());
|
cairoSetOperator(nativePointer, a.getRule());
|
||||||
Color c = getColor();
|
|
||||||
setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(),
|
|
||||||
(int) (a.getAlpha() * ((float) c.getAlpha()))));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -813,38 +856,55 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
|
|
||||||
public void draw(Shape s)
|
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));
|
fill(stroke.createStrokedShape(s));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cairoNewPath();
|
cairoNewPath(nativePointer);
|
||||||
|
|
||||||
if (s instanceof Rectangle2D)
|
if (s instanceof Rectangle2D)
|
||||||
{
|
{
|
||||||
Rectangle2D r = (Rectangle2D) s;
|
Rectangle2D r = (Rectangle2D) s;
|
||||||
cairoRectangle(shifted(r.getX(), shiftDrawCalls),
|
cairoRectangle(nativePointer, shifted(r.getX(), shiftDrawCalls),
|
||||||
shifted(r.getY(), shiftDrawCalls), r.getWidth(),
|
shifted(r.getY(), shiftDrawCalls), r.getWidth(),
|
||||||
r.getHeight());
|
r.getHeight());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
walkPath(s.getPathIterator(null), shiftDrawCalls);
|
walkPath(s.getPathIterator(null), shiftDrawCalls);
|
||||||
cairoStroke();
|
cairoStroke(nativePointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fill(Shape s)
|
public void fill(Shape s)
|
||||||
{
|
{
|
||||||
cairoNewPath();
|
cairoNewPath(nativePointer);
|
||||||
if (s instanceof Rectangle2D)
|
if (s instanceof Rectangle2D)
|
||||||
{
|
{
|
||||||
Rectangle2D r = (Rectangle2D) s;
|
Rectangle2D r = (Rectangle2D) s;
|
||||||
cairoRectangle(r.getX(), r.getY(), r.getWidth(), r.getHeight());
|
cairoRectangle(nativePointer, r.getX(), r.getY(), r.getWidth(),
|
||||||
|
r.getHeight());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
walkPath(s.getPathIterator(null), false);
|
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)
|
public void clearRect(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
if (bg != null)
|
if (bg != null)
|
||||||
cairoSetRGBAColor(bg.getRed() / 255.0, bg.getGreen() / 255.0,
|
cairoSetRGBAColor(nativePointer, bg.getRed() / 255.0,
|
||||||
bg.getBlue() / 255.0, 1.0);
|
bg.getGreen() / 255.0, bg.getBlue() / 255.0, 1.0);
|
||||||
fillRect(x, y, width, height);
|
fillRect(x, y, width, height);
|
||||||
updateColor();
|
updateColor();
|
||||||
}
|
}
|
||||||
|
|
@ -1005,19 +1065,19 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
|| hintKey.equals(RenderingHints.KEY_ALPHA_INTERPOLATION))
|
|| hintKey.equals(RenderingHints.KEY_ALPHA_INTERPOLATION))
|
||||||
{
|
{
|
||||||
if (hintValue.equals(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR))
|
if (hintValue.equals(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR))
|
||||||
cairoSurfaceSetFilter(0);
|
cairoSurfaceSetFilter(nativePointer, 0);
|
||||||
|
|
||||||
else if (hintValue.equals(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
|
else if (hintValue.equals(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
|
||||||
cairoSurfaceSetFilter(1);
|
cairoSurfaceSetFilter(nativePointer, 1);
|
||||||
|
|
||||||
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED))
|
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED))
|
||||||
cairoSurfaceSetFilter(2);
|
cairoSurfaceSetFilter(nativePointer, 2);
|
||||||
|
|
||||||
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY))
|
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY))
|
||||||
cairoSurfaceSetFilter(3);
|
cairoSurfaceSetFilter(nativePointer, 3);
|
||||||
|
|
||||||
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT))
|
else if (hintValue.equals(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT))
|
||||||
cairoSurfaceSetFilter(4);
|
cairoSurfaceSetFilter(nativePointer, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
shiftDrawCalls = hints.containsValue(RenderingHints.VALUE_STROKE_NORMALIZE)
|
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.containsKey(RenderingHints.KEY_INTERPOLATION))
|
||||||
{
|
{
|
||||||
if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR))
|
if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR))
|
||||||
cairoSurfaceSetFilter(0);
|
cairoSurfaceSetFilter(nativePointer, 0);
|
||||||
|
|
||||||
else if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
|
else if (hints.containsValue(RenderingHints.VALUE_INTERPOLATION_BILINEAR))
|
||||||
cairoSurfaceSetFilter(1);
|
cairoSurfaceSetFilter(nativePointer, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hints.containsKey(RenderingHints.KEY_ALPHA_INTERPOLATION))
|
if (hints.containsKey(RenderingHints.KEY_ALPHA_INTERPOLATION))
|
||||||
{
|
{
|
||||||
if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED))
|
if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED))
|
||||||
cairoSurfaceSetFilter(2);
|
cairoSurfaceSetFilter(nativePointer, 2);
|
||||||
|
|
||||||
else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY))
|
else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY))
|
||||||
cairoSurfaceSetFilter(3);
|
cairoSurfaceSetFilter(nativePointer, 3);
|
||||||
|
|
||||||
else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT))
|
else if (hints.containsValue(RenderingHints.VALUE_ALPHA_INTERPOLATION_DEFAULT))
|
||||||
cairoSurfaceSetFilter(4);
|
cairoSurfaceSetFilter(nativePointer, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
shiftDrawCalls = hints.containsValue(RenderingHints.VALUE_STROKE_NORMALIZE)
|
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
|
// other way around. Therefore to get the "user -> pixel" transform
|
||||||
// that cairo wants from "image -> user" transform that we currently
|
// that cairo wants from "image -> user" transform that we currently
|
||||||
// have, we will need to invert the transformation matrix.
|
// have, we will need to invert the transformation matrix.
|
||||||
AffineTransform invertedXform = new AffineTransform();
|
AffineTransform invertedXform;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -1096,11 +1156,17 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
+ xform.toString());
|
+ 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) )
|
if( !(img instanceof BufferedImage) )
|
||||||
return this.drawImage(Toolkit.getDefaultToolkit().
|
{
|
||||||
createImage(img.getSource()),
|
ImageProducer source = img.getSource();
|
||||||
xform, bgcolor, obs);
|
if (source == null)
|
||||||
|
return false;
|
||||||
|
img = Toolkit.getDefaultToolkit().createImage(source);
|
||||||
|
}
|
||||||
|
|
||||||
BufferedImage b = (BufferedImage) img;
|
BufferedImage b = (BufferedImage) img;
|
||||||
DataBuffer db;
|
DataBuffer db;
|
||||||
|
|
@ -1117,9 +1183,13 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
|
|
||||||
invertedXform.getMatrix(i2u);
|
invertedXform.getMatrix(i2u);
|
||||||
|
|
||||||
|
double alpha = 1.0;
|
||||||
|
if (comp instanceof AlphaComposite)
|
||||||
|
alpha = ((AlphaComposite) comp).getAlpha();
|
||||||
|
|
||||||
if(db instanceof CairoSurface)
|
if(db instanceof CairoSurface)
|
||||||
{
|
{
|
||||||
((CairoSurface)db).drawSurface(this, i2u);
|
((CairoSurface)db).drawSurface(nativePointer, i2u, alpha);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1155,7 +1225,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
null, 0, width);
|
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.
|
// Cairo seems to lose the current color which must be restored.
|
||||||
updateColor();
|
updateColor();
|
||||||
|
|
@ -1271,8 +1341,8 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
{
|
{
|
||||||
if (str == null || str.length() == 0)
|
if (str == null || str.length() == 0)
|
||||||
return;
|
return;
|
||||||
|
(new TextLayout( str, getFont(), getFontRenderContext() )).
|
||||||
drawGlyphVector(getFont().createGlyphVector(null, str), x, y);
|
draw(this, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawString(String str, int x, int y)
|
public void drawString(String str, int x, int y)
|
||||||
|
|
@ -1286,13 +1356,26 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawGlyphVector(GlyphVector gv, float x, float y)
|
public void drawGlyphVector(GlyphVector gv, float x, float y)
|
||||||
|
{
|
||||||
|
double alpha = 1.0;
|
||||||
|
if (comp instanceof AlphaComposite)
|
||||||
|
alpha = ((AlphaComposite) comp).getAlpha();
|
||||||
|
if (gv instanceof FreetypeGlyphVector && alpha == 1.0)
|
||||||
{
|
{
|
||||||
int n = gv.getNumGlyphs ();
|
int n = gv.getNumGlyphs ();
|
||||||
int[] codes = gv.getGlyphCodes (0, n, null);
|
int[] codes = gv.getGlyphCodes (0, n, null);
|
||||||
float[] positions = gv.getGlyphPositions (0, n, null);
|
float[] positions = gv.getGlyphPositions (0, n, null);
|
||||||
|
|
||||||
setFont (gv.getFont ());
|
setFont (gv.getFont ());
|
||||||
cairoDrawGlyphVector( (GdkFontPeer)getFont().getPeer(), x, y, n, codes, positions);
|
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)
|
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++)
|
for (int i = 0; i < pixels.length; i++)
|
||||||
pixels[i] |= 0xFF000000;
|
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.
|
// Cairo seems to lose the current color which must be restored.
|
||||||
updateColor();
|
updateColor();
|
||||||
|
|
@ -1473,7 +1560,7 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
double y = 0;
|
double y = 0;
|
||||||
double[] coords = new double[6];
|
double[] coords = new double[6];
|
||||||
|
|
||||||
cairoSetFillRule(p.getWindingRule());
|
cairoSetFillRule(nativePointer, p.getWindingRule());
|
||||||
for (; ! p.isDone(); p.next())
|
for (; ! p.isDone(); p.next())
|
||||||
{
|
{
|
||||||
int seg = p.currentSegment(coords);
|
int seg = p.currentSegment(coords);
|
||||||
|
|
@ -1482,12 +1569,12 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
case PathIterator.SEG_MOVETO:
|
case PathIterator.SEG_MOVETO:
|
||||||
x = shifted(coords[0], doShift);
|
x = shifted(coords[0], doShift);
|
||||||
y = shifted(coords[1], doShift);
|
y = shifted(coords[1], doShift);
|
||||||
cairoMoveTo(x, y);
|
cairoMoveTo(nativePointer, x, y);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_LINETO:
|
case PathIterator.SEG_LINETO:
|
||||||
x = shifted(coords[0], doShift);
|
x = shifted(coords[0], doShift);
|
||||||
y = shifted(coords[1], doShift);
|
y = shifted(coords[1], doShift);
|
||||||
cairoLineTo(x, y);
|
cairoLineTo(nativePointer, x, y);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_QUADTO:
|
case PathIterator.SEG_QUADTO:
|
||||||
// splitting a quadratic bezier into a cubic:
|
// splitting a quadratic bezier into a cubic:
|
||||||
|
|
@ -1500,18 +1587,18 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
|
|
||||||
x = shifted(coords[2], doShift);
|
x = shifted(coords[2], doShift);
|
||||||
y = shifted(coords[3], doShift);
|
y = shifted(coords[3], doShift);
|
||||||
cairoCurveTo(x1, y1, x2, y2, x, y);
|
cairoCurveTo(nativePointer, x1, y1, x2, y2, x, y);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_CUBICTO:
|
case PathIterator.SEG_CUBICTO:
|
||||||
x = shifted(coords[4], doShift);
|
x = shifted(coords[4], doShift);
|
||||||
y = shifted(coords[5], doShift);
|
y = shifted(coords[5], doShift);
|
||||||
cairoCurveTo(shifted(coords[0], doShift),
|
cairoCurveTo(nativePointer, shifted(coords[0], doShift),
|
||||||
shifted(coords[1], doShift),
|
shifted(coords[1], doShift),
|
||||||
shifted(coords[2], doShift),
|
shifted(coords[2], doShift),
|
||||||
shifted(coords[3], doShift), x, y);
|
shifted(coords[3], doShift), x, y);
|
||||||
break;
|
break;
|
||||||
case PathIterator.SEG_CLOSE:
|
case PathIterator.SEG_CLOSE:
|
||||||
cairoClosePath();
|
cairoClosePath(nativePointer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1583,4 +1670,47 @@ public abstract class CairoGraphics2D extends Graphics2D
|
||||||
|
|
||||||
return db.getData();
|
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.
|
* Allocates and clears the buffer and creates the cairo surface.
|
||||||
* @param width, height - the image size
|
* @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);
|
private native void create(int width, int height, int stride);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroys the cairo surface and frees the buffer.
|
* Destroys the cairo surface and frees the buffer.
|
||||||
*/
|
*/
|
||||||
private native void destroy();
|
private native void destroy(long surfacePointer, long bufferPointer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets buffer elements
|
* Gets buffer elements
|
||||||
*/
|
*/
|
||||||
private native int nativeGetElem(int i);
|
private native int nativeGetElem(long bufferPointer, int i);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets buffer elements.
|
* 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,
|
* Draws this image to a given CairoGraphics context,
|
||||||
* with an affine transform given by i2u.
|
* 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.
|
* 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.
|
* 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.
|
* Create a cairo_surface_t with specified width and height.
|
||||||
* The format will be ARGB32 with premultiplied alpha and native bit
|
* The format will be ARGB32 with premultiplied alpha and native bit
|
||||||
* and word ordering.
|
* and word ordering.
|
||||||
*/
|
*/
|
||||||
CairoSurface(int width, int height)
|
public CairoSurface(int width, int height)
|
||||||
{
|
{
|
||||||
super(DataBuffer.TYPE_INT, width * height);
|
super(DataBuffer.TYPE_INT, width * height);
|
||||||
|
|
||||||
|
|
@ -140,7 +156,7 @@ public class CairoSurface extends DataBuffer
|
||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
|
|
||||||
create(width, height, width * 4);
|
create(width, height, width);
|
||||||
|
|
||||||
if(surfacePointer == 0 || bufferPointer == 0)
|
if(surfacePointer == 0 || bufferPointer == 0)
|
||||||
throw new Error("Could not allocate bitmap.");
|
throw new Error("Could not allocate bitmap.");
|
||||||
|
|
@ -160,7 +176,7 @@ public class CairoSurface extends DataBuffer
|
||||||
width = image.width;
|
width = image.width;
|
||||||
height = image.height;
|
height = image.height;
|
||||||
|
|
||||||
create(width, height, width * 4);
|
create(width, height, width);
|
||||||
|
|
||||||
if(surfacePointer == 0 || bufferPointer == 0)
|
if(surfacePointer == 0 || bufferPointer == 0)
|
||||||
throw new Error("Could not allocate bitmap.");
|
throw new Error("Could not allocate bitmap.");
|
||||||
|
|
@ -195,7 +211,7 @@ public class CairoSurface extends DataBuffer
|
||||||
public void dispose()
|
public void dispose()
|
||||||
{
|
{
|
||||||
if(surfacePointer != 0)
|
if(surfacePointer != 0)
|
||||||
destroy();
|
destroy(surfacePointer, bufferPointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -211,7 +227,8 @@ public class CairoSurface extends DataBuffer
|
||||||
*/
|
*/
|
||||||
public GtkImage getGtkImage()
|
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)
|
if(bank != 0 || i < 0 || i >= width*height)
|
||||||
throw new IndexOutOfBoundsException(i+" size: "+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)
|
if(bank != 0 || i < 0 || i >= width*height)
|
||||||
throw new IndexOutOfBoundsException(i+" size: "+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.
|
* Creates a cairo_t drawing context, returns the pointer as a long.
|
||||||
* Used by CairoSurfaceGraphics.
|
* 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.
|
* Copy an area of the surface. Expects parameters must be within bounds.
|
||||||
* Count on a segfault otherwise.
|
* Count on a segfault otherwise.
|
||||||
*/
|
*/
|
||||||
native void copyAreaNative(int x, int y, int width, int height,
|
native void copyAreaNative2(long bufferPointer, int x, int y, int width,
|
||||||
int dx, int dy, int stride);
|
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.Graphics;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.GraphicsEnvironment;
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
|
|
@ -63,7 +64,6 @@ public class CairoSurfaceGraphics extends CairoGraphics2D
|
||||||
this.surface = surface;
|
this.surface = surface;
|
||||||
cairo_t = surface.newCairoContext();
|
cairo_t = surface.newCairoContext();
|
||||||
setup( cairo_t );
|
setup( cairo_t );
|
||||||
setClip(0, 0, surface.width, surface.height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -75,7 +75,6 @@ public class CairoSurfaceGraphics extends CairoGraphics2D
|
||||||
surface = copyFrom.surface;
|
surface = copyFrom.surface;
|
||||||
cairo_t = surface.newCairoContext();
|
cairo_t = surface.newCairoContext();
|
||||||
copy( copyFrom, cairo_t );
|
copy( copyFrom, cairo_t );
|
||||||
setClip(0, 0, surface.width, surface.height);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Graphics create()
|
public Graphics create()
|
||||||
|
|
@ -85,7 +84,7 @@ public class CairoSurfaceGraphics extends CairoGraphics2D
|
||||||
|
|
||||||
public GraphicsConfiguration getDeviceConfiguration()
|
public GraphicsConfiguration getDeviceConfiguration()
|
||||||
{
|
{
|
||||||
throw new UnsupportedOperationException();
|
return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Rectangle2D getRealBounds()
|
protected Rectangle2D getRealBounds()
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ import java.awt.GraphicsConfiguration;
|
||||||
import java.awt.Image;
|
import java.awt.Image;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
import java.awt.Shape;
|
import java.awt.Shape;
|
||||||
|
import java.awt.Toolkit;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.font.FontRenderContext;
|
import java.awt.font.FontRenderContext;
|
||||||
import java.awt.font.GlyphVector;
|
import java.awt.font.GlyphVector;
|
||||||
|
|
@ -53,6 +54,7 @@ import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.ImageObserver;
|
import java.awt.image.ImageObserver;
|
||||||
|
import java.awt.image.ImageProducer;
|
||||||
import java.awt.image.ImagingOpException;
|
import java.awt.image.ImagingOpException;
|
||||||
import java.awt.image.RenderedImage;
|
import java.awt.image.RenderedImage;
|
||||||
|
|
||||||
|
|
@ -67,6 +69,35 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||||
private GtkComponentPeer component;
|
private GtkComponentPeer component;
|
||||||
protected long cairo_t;
|
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()
|
ComponentGraphics()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -104,8 +135,8 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||||
*/
|
*/
|
||||||
public void dispose()
|
public void dispose()
|
||||||
{
|
{
|
||||||
disposeSurface(nativePointer);
|
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
disposeSurface(nativePointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -138,7 +169,7 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||||
int width, int height, int dx, int dy);
|
int width, int height, int dx, int dy);
|
||||||
|
|
||||||
private native void drawVolatile(GtkComponentPeer component,
|
private native void drawVolatile(GtkComponentPeer component,
|
||||||
Image vimg, int x, int y,
|
long vimg, int x, int y,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -180,63 +211,152 @@ public class ComponentGraphics extends CairoGraphics2D
|
||||||
*/
|
*/
|
||||||
public void draw(Shape s)
|
public void draw(Shape s)
|
||||||
{
|
{
|
||||||
start_gdk_drawing();
|
lock();
|
||||||
|
try
|
||||||
|
{
|
||||||
super.draw(s);
|
super.draw(s);
|
||||||
end_gdk_drawing();
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fill(Shape s)
|
public void fill(Shape s)
|
||||||
{
|
{
|
||||||
start_gdk_drawing();
|
lock();
|
||||||
|
try
|
||||||
|
{
|
||||||
super.fill(s);
|
super.fill(s);
|
||||||
end_gdk_drawing();
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawRenderedImage(RenderedImage image, AffineTransform xform)
|
public void drawRenderedImage(RenderedImage image, AffineTransform xform)
|
||||||
{
|
{
|
||||||
start_gdk_drawing();
|
lock();
|
||||||
|
try
|
||||||
|
{
|
||||||
super.drawRenderedImage(image, xform);
|
super.drawRenderedImage(image, xform);
|
||||||
end_gdk_drawing();
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean drawImage(Image img, AffineTransform xform,
|
protected boolean drawImage(Image img, AffineTransform xform,
|
||||||
Color bgcolor, ImageObserver obs)
|
Color bgcolor, ImageObserver obs)
|
||||||
{
|
{
|
||||||
start_gdk_drawing();
|
boolean rv;
|
||||||
boolean rv = super.drawImage(img, xform, bgcolor, obs);
|
lock();
|
||||||
end_gdk_drawing();
|
try
|
||||||
|
{
|
||||||
|
rv = super.drawImage(img, xform, bgcolor, obs);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawGlyphVector(GlyphVector gv, float x, float y)
|
public void drawGlyphVector(GlyphVector gv, float x, float y)
|
||||||
{
|
{
|
||||||
start_gdk_drawing();
|
lock();
|
||||||
|
try
|
||||||
|
{
|
||||||
super.drawGlyphVector(gv, x, y);
|
super.drawGlyphVector(gv, x, y);
|
||||||
end_gdk_drawing();
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean drawImage(Image img, int x, int y, ImageObserver observer)
|
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 vimg = (GtkVolatileImage) img;
|
||||||
((GtkVolatileImage)img).width,
|
int type = transform.getType();
|
||||||
((GtkVolatileImage)img).height );
|
if (type == AffineTransform.TYPE_IDENTITY)
|
||||||
|
{
|
||||||
|
drawVolatile(component, vimg.nativePointer,
|
||||||
|
x, y, vimg.width, vimg.height);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.drawImage( img, x, y, observer );
|
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,
|
public boolean drawImage(Image img, int x, int y, int width, int height,
|
||||||
ImageObserver observer)
|
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 vimg = (GtkVolatileImage) img;
|
||||||
width, height );
|
int type = transform.getType();
|
||||||
|
if (type == AffineTransform.TYPE_IDENTITY)
|
||||||
|
{
|
||||||
|
drawVolatile(component, vimg.nativePointer,
|
||||||
|
x, y, width, height);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.drawImage( img, x, y, width, height, observer );
|
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 Font font;
|
||||||
private GdkFontPeer peer; // ATTN: Accessed from native code.
|
private GdkFontPeer peer; // ATTN: Accessed from native code.
|
||||||
|
|
||||||
|
private Rectangle2D logicalBounds;
|
||||||
|
|
||||||
|
private float[] glyphPositions;
|
||||||
/**
|
/**
|
||||||
* The string represented by this GlyphVector.
|
* The string represented by this GlyphVector.
|
||||||
*/
|
*/
|
||||||
|
|
@ -81,10 +84,21 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
*/
|
*/
|
||||||
private AffineTransform[] glyphTransforms;
|
private AffineTransform[] glyphTransforms;
|
||||||
|
|
||||||
|
private GlyphMetrics[] metricsCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a glyphvector from a given (Freetype) font and a String.
|
* Create a glyphvector from a given (Freetype) font and a String.
|
||||||
*/
|
*/
|
||||||
public FreetypeGlyphVector(Font f, String s, FontRenderContext frc)
|
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.s = s;
|
||||||
this.font = f;
|
this.font = f;
|
||||||
|
|
@ -94,6 +108,14 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
peer = (GdkFontPeer)font.getPeer();
|
peer = (GdkFontPeer)font.getPeer();
|
||||||
|
|
||||||
getGlyphs();
|
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();
|
performDefaultLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -121,21 +143,25 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
{
|
{
|
||||||
nGlyphs = s.codePointCount( 0, s.length() );
|
nGlyphs = s.codePointCount( 0, s.length() );
|
||||||
glyphCodes = new int[ nGlyphs ];
|
glyphCodes = new int[ nGlyphs ];
|
||||||
|
int[] codePoints = new int[ nGlyphs ];
|
||||||
int stringIndex = 0;
|
int stringIndex = 0;
|
||||||
|
|
||||||
for(int i = 0; i < nGlyphs; i++)
|
for(int i = 0; i < nGlyphs; i++)
|
||||||
{
|
{
|
||||||
glyphCodes[i] = getGlyph( s.codePointAt(stringIndex) );
|
codePoints[i] = s.codePointAt( stringIndex );
|
||||||
// UTF32 surrogate handling
|
// UTF32 surrogate handling
|
||||||
if( s.codePointAt( stringIndex ) != (int)s.charAt( stringIndex ) )
|
if( codePoints[i] != (int)s.charAt( stringIndex ) )
|
||||||
stringIndex ++;
|
stringIndex ++;
|
||||||
stringIndex ++;
|
stringIndex ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glyphCodes = getGlyphs( codePoints );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the glyph code within the font for a given character
|
* 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
|
* Returns the kerning of a glyph pair
|
||||||
|
|
@ -180,12 +206,15 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
*/
|
*/
|
||||||
public void performDefaultLayout()
|
public void performDefaultLayout()
|
||||||
{
|
{
|
||||||
|
logicalBounds = null; // invalidate caches.
|
||||||
|
glyphPositions = null;
|
||||||
|
|
||||||
glyphTransforms = new AffineTransform[ nGlyphs ];
|
glyphTransforms = new AffineTransform[ nGlyphs ];
|
||||||
double x = 0;
|
double x = 0;
|
||||||
|
|
||||||
for(int i = 0; i < nGlyphs; i++)
|
for(int i = 0; i < nGlyphs; i++)
|
||||||
{
|
{
|
||||||
GlyphMetrics gm = getGlyphMetrics( i );
|
GlyphMetrics gm = getGlyphMetrics( i );
|
||||||
Rectangle2D r = gm.getBounds2D();
|
|
||||||
glyphTransforms[ i ] = AffineTransform.getTranslateInstance(x, 0);
|
glyphTransforms[ i ] = AffineTransform.getTranslateInstance(x, 0);
|
||||||
x += gm.getAdvanceX();
|
x += gm.getAdvanceX();
|
||||||
if( i > 0 )
|
if( i > 0 )
|
||||||
|
|
@ -235,19 +264,48 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
gm.getAdvanceX(), r.getHeight() );
|
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.
|
* Returns the metrics of a single glyph.
|
||||||
*/
|
*/
|
||||||
public GlyphMetrics getGlyphMetrics(int glyphIndex)
|
public GlyphMetrics getGlyphMetrics(int glyphIndex)
|
||||||
{
|
{
|
||||||
double[] val = getMetricsNative( glyphCodes[ glyphIndex ] );
|
if( metricsCache == null )
|
||||||
if( val == null )
|
setupGlyphMetrics();
|
||||||
return null;
|
|
||||||
|
|
||||||
return new GlyphMetrics( true, (float)val[1], (float)val[2],
|
return metricsCache[ glyphIndex ];
|
||||||
new Rectangle2D.Double( val[3], val[4],
|
|
||||||
val[5], val[6] ),
|
|
||||||
GlyphMetrics.STANDARD );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -275,6 +333,9 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
public float[] getGlyphPositions(int beginGlyphIndex, int numEntries,
|
public float[] getGlyphPositions(int beginGlyphIndex, int numEntries,
|
||||||
float[] positionReturn)
|
float[] positionReturn)
|
||||||
{
|
{
|
||||||
|
if( glyphPositions != null )
|
||||||
|
return glyphPositions;
|
||||||
|
|
||||||
float[] rval;
|
float[] rval;
|
||||||
|
|
||||||
if( positionReturn == null )
|
if( positionReturn == null )
|
||||||
|
|
@ -289,6 +350,7 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
rval[i * 2 + 1] = (float)p.getY();
|
rval[i * 2 + 1] = (float)p.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glyphPositions = rval;
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -316,11 +378,19 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
{
|
{
|
||||||
if( nGlyphs == 0 )
|
if( nGlyphs == 0 )
|
||||||
return new Rectangle2D.Double(0, 0, 0, 0);
|
return new Rectangle2D.Double(0, 0, 0, 0);
|
||||||
|
if( logicalBounds != null )
|
||||||
|
return logicalBounds;
|
||||||
|
|
||||||
Rectangle2D rect = (Rectangle2D)getGlyphLogicalBounds( 0 );
|
Rectangle2D rect = (Rectangle2D)getGlyphLogicalBounds( 0 );
|
||||||
for( int i = 1; i < nGlyphs; i++ )
|
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;
|
return rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -360,7 +430,9 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
public Shape getOutline(float x, float y)
|
public Shape getOutline(float x, float y)
|
||||||
{
|
{
|
||||||
AffineTransform tx = AffineTransform.getTranslateInstance( x, 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.?
|
// FIXME: Scaling, etc.?
|
||||||
glyphTransforms[ glyphIndex ].setToTranslation( newPos.getX(),
|
glyphTransforms[ glyphIndex ].setToTranslation( newPos.getX(),
|
||||||
newPos.getY() );
|
newPos.getY() );
|
||||||
|
logicalBounds = null;
|
||||||
|
glyphPositions = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -388,5 +462,7 @@ public class FreetypeGlyphVector extends GlyphVector
|
||||||
public void setGlyphTransform(int glyphIndex, AffineTransform newTX)
|
public void setGlyphTransform(int glyphIndex, AffineTransform newTX)
|
||||||
{
|
{
|
||||||
glyphTransforms[ glyphIndex ].setTransform( newTX );
|
glyphTransforms[ glyphIndex ].setTransform( newTX );
|
||||||
|
logicalBounds = null;
|
||||||
|
glyphPositions = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class GdkFontPeer extends ClasspathFontPeer
|
public class GdkFontPeer extends ClasspathFontPeer
|
||||||
{
|
{
|
||||||
|
|
@ -64,6 +65,11 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
private final int native_state = GtkGenericPeer.getUniqueInteger ();
|
private final int native_state = GtkGenericPeer.getUniqueInteger ();
|
||||||
private static ResourceBundle bundle;
|
private static ResourceBundle bundle;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache GlyphMetrics objects.
|
||||||
|
*/
|
||||||
|
private HashMap metricsCache;
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
System.loadLibrary("gtkpeer");
|
System.loadLibrary("gtkpeer");
|
||||||
|
|
@ -145,6 +151,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
super(name, style, size);
|
super(name, style, size);
|
||||||
initState ();
|
initState ();
|
||||||
setFont (this.familyName, this.style, (int)this.size);
|
setFont (this.familyName, this.style, (int)this.size);
|
||||||
|
metricsCache = new HashMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public GdkFontPeer (String name, Map attributes)
|
public GdkFontPeer (String name, Map attributes)
|
||||||
|
|
@ -152,6 +159,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
super(name, attributes);
|
super(name, attributes);
|
||||||
initState ();
|
initState ();
|
||||||
setFont (this.familyName, this.style, (int)this.size);
|
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)
|
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;
|
private FontMetrics fm;
|
||||||
int nchars;
|
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;
|
fm = m;
|
||||||
nchars = n;
|
nchars = n;
|
||||||
|
strikethroughOffset = 0f;
|
||||||
|
underlineOffset = 0f;
|
||||||
|
strikethroughThickness = ((float)fp.getSize(null)) / 12f;
|
||||||
|
underlineThickness = strikethroughThickness;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getAscent()
|
public float getAscent()
|
||||||
|
|
@ -273,6 +288,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
|
|
||||||
public int getBaselineIndex()
|
public int getBaselineIndex()
|
||||||
{
|
{
|
||||||
|
// FIXME
|
||||||
return Font.ROMAN_BASELINE;
|
return Font.ROMAN_BASELINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -303,7 +319,7 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
public LineMetrics getLineMetrics (Font font, CharacterIterator ci,
|
public LineMetrics getLineMetrics (Font font, CharacterIterator ci,
|
||||||
int begin, int limit, FontRenderContext rc)
|
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)
|
public Rectangle2D getMaxCharBounds (Font font, FontRenderContext rc)
|
||||||
|
|
@ -350,20 +366,15 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
char[] chars, int start, int limit,
|
char[] chars, int start, int limit,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
int nchars = (limit - start) + 1;
|
return new FreetypeGlyphVector( font, new String( chars, start,
|
||||||
char[] nc = new char[nchars];
|
limit - start),
|
||||||
|
frc, flags);
|
||||||
for (int i = 0; i < nchars; ++i)
|
|
||||||
nc[i] = chars[start + i];
|
|
||||||
|
|
||||||
return createGlyphVector (font, frc,
|
|
||||||
new StringCharacterIterator (new String (nc)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public LineMetrics getLineMetrics (Font font, String str,
|
public LineMetrics getLineMetrics (Font font, String str,
|
||||||
FontRenderContext frc)
|
FontRenderContext frc)
|
||||||
{
|
{
|
||||||
return new GdkFontLineMetrics (getFontMetrics (font), str.length ());
|
return new GdkFontLineMetrics (this, getFontMetrics (font), str.length ());
|
||||||
}
|
}
|
||||||
|
|
||||||
public FontMetrics getFontMetrics (Font font)
|
public FontMetrics getFontMetrics (Font font)
|
||||||
|
|
@ -372,4 +383,21 @@ public class GdkFontPeer extends ClasspathFontPeer
|
||||||
// the metrics cache.
|
// the metrics cache.
|
||||||
return Toolkit.getDefaultToolkit().getFontMetrics (font);
|
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,7 +103,14 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||||
native void pumpBytes (byte[] bytes, int len) throws IOException;
|
native void pumpBytes (byte[] bytes, int len) throws IOException;
|
||||||
native void pumpDone () throws IOException;
|
native void pumpDone () throws IOException;
|
||||||
native void finish (boolean needsClose);
|
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
|
// gdk-pixbuf provids data in RGBA format
|
||||||
static final ColorModel cm = new DirectColorModel (32, 0xff000000,
|
static final ColorModel cm = new DirectColorModel (32, 0xff000000,
|
||||||
|
|
@ -461,7 +468,7 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class GdkPixbufWriter
|
private static class GdkPixbufWriter
|
||||||
extends ImageWriter
|
extends ImageWriter implements Runnable
|
||||||
{
|
{
|
||||||
String ext;
|
String ext;
|
||||||
public GdkPixbufWriter(GdkPixbufWriterSpi ownerSpi, Object ext)
|
public GdkPixbufWriter(GdkPixbufWriterSpi ownerSpi, Object ext)
|
||||||
|
|
@ -519,14 +526,106 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
|
||||||
model = img.getColorModel();
|
model = img.getColorModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Thread workerThread = new Thread(this, "GdkPixbufWriter");
|
||||||
|
workerThread.start();
|
||||||
processImageStarted(1);
|
processImageStarted(1);
|
||||||
synchronized(pixbufLock)
|
synchronized(pixbufLock)
|
||||||
{
|
{
|
||||||
streamImage(pixels, this.ext, width, height, model.hasAlpha(),
|
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();
|
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
|
private static class GdkPixbufReader
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* GdkTextLayout.java
|
/* 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.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
|
@ -84,7 +84,7 @@ public class GdkTextLayout
|
||||||
|
|
||||||
private native void dispose ();
|
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();
|
static native void initStaticState();
|
||||||
|
|
||||||
|
|
@ -216,7 +216,7 @@ public class GdkTextLayout
|
||||||
|
|
||||||
public void draw (Graphics2D g2, float x, float y)
|
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,
|
public TextHitInfo getStrongCaret (TextHitInfo hit1,
|
||||||
|
|
|
||||||
|
|
@ -57,13 +57,27 @@ public class GtkVolatileImage extends VolatileImage
|
||||||
|
|
||||||
native long init(GtkComponentPeer component, int width, int height);
|
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 drawVolatile( long ptr, int x, int y, int w, int h );
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
public GtkVolatileImage(GtkComponentPeer component,
|
public GtkVolatileImage(GtkComponentPeer component,
|
||||||
int width, int height, ImageCapabilities caps)
|
int width, int height, ImageCapabilities caps)
|
||||||
|
|
@ -91,7 +105,7 @@ public class GtkVolatileImage extends VolatileImage
|
||||||
|
|
||||||
public void dispose()
|
public void dispose()
|
||||||
{
|
{
|
||||||
destroy();
|
destroy(nativePointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BufferedImage getSnapshot()
|
public BufferedImage getSnapshot()
|
||||||
|
|
|
||||||
|
|
@ -67,14 +67,12 @@ public class VolatileImageGraphics extends ComponentGraphics
|
||||||
this.owner = img;
|
this.owner = img;
|
||||||
cairo_t = initFromVolatile( owner.nativePointer, img.width, img.height );
|
cairo_t = initFromVolatile( owner.nativePointer, img.width, img.height );
|
||||||
setup( cairo_t );
|
setup( cairo_t );
|
||||||
setClip( new Rectangle( 0, 0, img.width, img.height) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private VolatileImageGraphics(VolatileImageGraphics copy)
|
private VolatileImageGraphics(VolatileImageGraphics copy)
|
||||||
{
|
{
|
||||||
this.owner = copy.owner;
|
this.owner = copy.owner;
|
||||||
initFromVolatile( owner.nativePointer, owner.width, owner.height );
|
cairo_t = initFromVolatile(owner.nativePointer, owner.width, owner.height);
|
||||||
setClip( new Rectangle( 0, 0, owner.width, owner.height) );
|
|
||||||
copy( copy, cairo_t );
|
copy( copy, cairo_t );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,5 +116,10 @@ public class VolatileImageGraphics extends ComponentGraphics
|
||||||
}
|
}
|
||||||
return super.drawImage( img, x, y, width, height, observer );
|
return super.drawImage( img, x, y, width, height, observer );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Rectangle2D getRealBounds()
|
||||||
|
{
|
||||||
|
return new Rectangle2D.Double(0, 0, owner.width, owner.height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
#endif
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init (JNIEnv *env, jobject, jlong);
|
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_disposeNative (JNIEnv *env, jobject, jlong);
|
||||||
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_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, jdouble, jdouble, jdouble, jdouble, jint, jint, jint, jint, jint, jint, jint, jint, jboolean);
|
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, jintArray, jint, jint, jint);
|
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, jdoubleArray);
|
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, jint);
|
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, jdouble, jdouble, jdouble, jdouble);
|
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, jint);
|
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, jdouble, jint, jint, jdouble);
|
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, jdoubleArray, 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, jobject, jfloat, jfloat, jint, jintArray, jfloatArray);
|
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, jdouble, jdouble, jdouble, jdouble, jdouble, jdouble);
|
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, 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);
|
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);
|
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, jdouble, jdouble);
|
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, 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, 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, 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, jdouble, jdouble, jdouble, jdouble, 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);
|
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);
|
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);
|
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);
|
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);
|
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, jint);
|
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, jobject, jlong, jint);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,15 +11,15 @@ extern "C"
|
||||||
#endif
|
#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_create (JNIEnv *env, jobject, jint, jint, jint);
|
||||||
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_destroy (JNIEnv *env, jobject);
|
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, jint);
|
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, jint, 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_drawSurface (JNIEnv *env, jobject, jobject, jdoubleArray);
|
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_nativeDrawSurface (JNIEnv *env, jobject, jlong, jlong, jdoubleArray, jdouble);
|
||||||
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels (JNIEnv *env, jobject, jint);
|
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_setPixels (JNIEnv *env, jobject, jintArray);
|
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, jint);
|
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_newCairoContext (JNIEnv *env, jobject);
|
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_copyAreaNative (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint, jint);
|
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative2 (JNIEnv *env, jobject, jlong, jint, jint, jint, jint, jint, jint, jint);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#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 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 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_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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ extern "C"
|
||||||
{
|
{
|
||||||
#endif
|
#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 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 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);
|
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_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_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_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 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);
|
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_getOutline (JNIEnv *env, jobject, jobject);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_init (JNIEnv *env, jobject, jobject, jint, jint);
|
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 void JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_destroy (JNIEnv *env, jobject, jlong);
|
||||||
JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels (JNIEnv *env, jobject);
|
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_copyArea (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint);
|
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_drawVolatile (JNIEnv *env, jobject, jlong, 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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1739,9 +1739,8 @@ public abstract class Component
|
||||||
if (gfx == null && parent != null)
|
if (gfx == null && parent != null)
|
||||||
{
|
{
|
||||||
gfx = parent.getGraphics();
|
gfx = parent.getGraphics();
|
||||||
Rectangle bounds = getBounds();
|
gfx.clipRect(getX(), getY(), getWidth(), getHeight());
|
||||||
gfx.setClip(bounds);
|
gfx.translate(getX(), getY());
|
||||||
gfx.translate(bounds.x, bounds.y);
|
|
||||||
return gfx;
|
return gfx;
|
||||||
}
|
}
|
||||||
gfx.setFont(font);
|
gfx.setFont(font);
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,8 @@ exception statement from your version. */
|
||||||
|
|
||||||
package java.awt.datatransfer;
|
package java.awt.datatransfer;
|
||||||
|
|
||||||
|
import gnu.classpath.NotImplementedException;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
@ -785,7 +787,8 @@ public class DataFlavor implements java.io.Externalizable, Cloneable
|
||||||
*
|
*
|
||||||
* @exception IOException If an error occurs.
|
* @exception IOException If an error occurs.
|
||||||
*/
|
*/
|
||||||
public void writeExternal(ObjectOutput stream) throws IOException
|
public void writeExternal(ObjectOutput stream)
|
||||||
|
throws IOException, NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: Implement me
|
// FIXME: Implement me
|
||||||
}
|
}
|
||||||
|
|
@ -801,7 +804,7 @@ public class DataFlavor implements java.io.Externalizable, Cloneable
|
||||||
* cannot be found.
|
* cannot be found.
|
||||||
*/
|
*/
|
||||||
public void readExternal(ObjectInput stream)
|
public void readExternal(ObjectInput stream)
|
||||||
throws IOException, ClassNotFoundException
|
throws IOException, ClassNotFoundException, NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: Implement me
|
// FIXME: Implement me
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* DropTargetContext.java --
|
/* 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.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
|
@ -37,6 +37,8 @@ exception statement from your version. */
|
||||||
|
|
||||||
package java.awt.dnd;
|
package java.awt.dnd;
|
||||||
|
|
||||||
|
import gnu.classpath.NotImplementedException;
|
||||||
|
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.datatransfer.DataFlavor;
|
import java.awt.datatransfer.DataFlavor;
|
||||||
import java.awt.datatransfer.Transferable;
|
import java.awt.datatransfer.Transferable;
|
||||||
|
|
@ -59,23 +61,23 @@ public class DropTargetContext implements Serializable
|
||||||
protected boolean isLocal;
|
protected boolean isLocal;
|
||||||
protected Transferable transferable;
|
protected Transferable transferable;
|
||||||
|
|
||||||
TransferableProxy (Transferable t, boolean local)
|
TransferableProxy(Transferable t, boolean local)
|
||||||
{
|
{
|
||||||
this.transferable = t;
|
this.transferable = t;
|
||||||
this.isLocal = local;
|
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
|
throws UnsupportedFlavorException, IOException
|
||||||
{
|
{
|
||||||
return transferable.getTransferData (flavor);
|
return transferable.getTransferData (flavor);
|
||||||
|
|
@ -87,32 +89,32 @@ public class DropTargetContext implements Serializable
|
||||||
private java.awt.dnd.peer.DropTargetContextPeer dtcp;
|
private java.awt.dnd.peer.DropTargetContextPeer dtcp;
|
||||||
|
|
||||||
// package private
|
// package private
|
||||||
DropTargetContext (DropTarget dropTarget)
|
DropTargetContext(DropTarget dropTarget)
|
||||||
{
|
{
|
||||||
this.dropTarget = dropTarget;
|
this.dropTarget = dropTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DropTarget getDropTarget ()
|
public DropTarget getDropTarget()
|
||||||
{
|
{
|
||||||
return dropTarget;
|
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;
|
this.dtcp = dtcp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeNotify ()
|
public void removeNotify()
|
||||||
{
|
{
|
||||||
this.dtcp = null;
|
this.dtcp = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setTargetActions (int actions)
|
protected void setTargetActions(int actions)
|
||||||
{
|
{
|
||||||
targetActions = actions;
|
targetActions = actions;
|
||||||
}
|
}
|
||||||
|
|
@ -127,45 +129,51 @@ public class DropTargetContext implements Serializable
|
||||||
*
|
*
|
||||||
* @exception InvalidDnDOperationException If a drop is not outstanding.
|
* @exception InvalidDnDOperationException If a drop is not outstanding.
|
||||||
*/
|
*/
|
||||||
public void dropComplete (boolean success)
|
public void dropComplete(boolean success)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void acceptDrag (int dragOperation)
|
protected void acceptDrag(int dragOperation)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void rejectDrag ()
|
protected void rejectDrag()
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void acceptDrop (int dropOperation)
|
protected void acceptDrop(int dropOperation)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void rejectDrop ()
|
protected void rejectDrop()
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
}
|
}
|
||||||
|
|
||||||
protected DataFlavor[] getCurrentDataFlavors ()
|
protected DataFlavor[] getCurrentDataFlavors()
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
return null;
|
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.
|
* @exception InvalidDnDOperationException If a drag is not outstanding.
|
||||||
*/
|
*/
|
||||||
protected Transferable getTransferable() throws InvalidDnDOperationException
|
protected Transferable getTransferable()
|
||||||
|
throws InvalidDnDOperationException, NotImplementedException
|
||||||
{
|
{
|
||||||
// FIXME: implement this
|
// FIXME: implement this
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -181,6 +190,6 @@ public class DropTargetContext implements Serializable
|
||||||
|
|
||||||
protected Transferable createTransferableProxy(Transferable t, boolean local)
|
protected Transferable createTransferableProxy(Transferable t, boolean local)
|
||||||
{
|
{
|
||||||
return new TransferableProxy (t, local);
|
return new TransferableProxy(t, local);
|
||||||
}
|
}
|
||||||
} // class DropTargetContext
|
} // class DropTargetContext
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ exception statement from your version. */
|
||||||
|
|
||||||
package java.awt.dnd;
|
package java.awt.dnd;
|
||||||
|
|
||||||
|
import gnu.classpath.NotImplementedException;
|
||||||
|
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
import java.awt.datatransfer.DataFlavor;
|
import java.awt.datatransfer.DataFlavor;
|
||||||
import java.awt.datatransfer.Transferable;
|
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.
|
* actions is not a bitwise mask of DnDConstants, or dtc is null.
|
||||||
* @exception NullPointerException If location is null.
|
* @exception NullPointerException If location is null.
|
||||||
*/
|
*/
|
||||||
public DropTargetDropEvent (DropTargetContext dtc, Point location,
|
public DropTargetDropEvent(DropTargetContext dtc, Point location,
|
||||||
int dropAction, int actions)
|
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.
|
* actions is not a bitwise mask of DnDConstants, or dtc is null.
|
||||||
* @exception NullPointerException If location is null.
|
* @exception NullPointerException If location is null.
|
||||||
*/
|
*/
|
||||||
public DropTargetDropEvent (DropTargetContext dtc, Point location,
|
public DropTargetDropEvent(DropTargetContext dtc, Point location,
|
||||||
int dropAction, int actions, boolean isLocalTx)
|
int dropAction, int actions, boolean isLocalTx)
|
||||||
{
|
{
|
||||||
super (dtc);
|
super(dtc);
|
||||||
|
|
||||||
if (location == null)
|
if (location == null)
|
||||||
throw new NullPointerException ();
|
throw new NullPointerException();
|
||||||
|
|
||||||
if (dtc == null)
|
if (dtc == null)
|
||||||
throw new IllegalArgumentException ();
|
throw new IllegalArgumentException();
|
||||||
|
|
||||||
if (dropAction != DnDConstants.ACTION_NONE
|
if (dropAction != DnDConstants.ACTION_NONE
|
||||||
&& dropAction != DnDConstants.ACTION_COPY
|
&& dropAction != DnDConstants.ACTION_COPY
|
||||||
|
|
@ -95,7 +97,7 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||||
&& dropAction != DnDConstants.ACTION_COPY_OR_MOVE
|
&& dropAction != DnDConstants.ACTION_COPY_OR_MOVE
|
||||||
&& dropAction != DnDConstants.ACTION_LINK
|
&& dropAction != DnDConstants.ACTION_LINK
|
||||||
&& dropAction != DnDConstants.ACTION_REFERENCE)
|
&& dropAction != DnDConstants.ACTION_REFERENCE)
|
||||||
throw new IllegalArgumentException ();
|
throw new IllegalArgumentException();
|
||||||
|
|
||||||
int actionsMask = DnDConstants.ACTION_NONE
|
int actionsMask = DnDConstants.ACTION_NONE
|
||||||
| DnDConstants.ACTION_COPY
|
| DnDConstants.ACTION_COPY
|
||||||
|
|
@ -105,7 +107,7 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||||
| DnDConstants.ACTION_REFERENCE;
|
| DnDConstants.ACTION_REFERENCE;
|
||||||
|
|
||||||
if (~(actions ^ actionsMask) != 0)
|
if (~(actions ^ actionsMask) != 0)
|
||||||
throw new IllegalArgumentException ();
|
throw new IllegalArgumentException();
|
||||||
|
|
||||||
this.dropAction = dropAction;
|
this.dropAction = dropAction;
|
||||||
this.actions = actions;
|
this.actions = actions;
|
||||||
|
|
@ -113,52 +115,53 @@ public class DropTargetDropEvent extends DropTargetEvent
|
||||||
this.isLocalTx = isLocalTx;
|
this.isLocalTx = isLocalTx;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Point getLocation ()
|
public Point getLocation()
|
||||||
{
|
{
|
||||||
return location;
|
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;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getDropAction ()
|
public int getDropAction()
|
||||||
{
|
{
|
||||||
return dropAction;
|
return dropAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Transferable getTransferable ()
|
public Transferable getTransferable()
|
||||||
{
|
{
|
||||||
return context.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
|
// FIXME: implement this
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* LineBreakMeasurer.java
|
/* LineBreakMeasurer.java
|
||||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
|
@ -38,84 +38,161 @@ exception statement from your version. */
|
||||||
|
|
||||||
package java.awt.font;
|
package java.awt.font;
|
||||||
|
|
||||||
import gnu.classpath.NotImplementedException;
|
|
||||||
|
|
||||||
import java.text.AttributedCharacterIterator;
|
import java.text.AttributedCharacterIterator;
|
||||||
|
import java.text.AttributedString;
|
||||||
import java.text.BreakIterator;
|
import java.text.BreakIterator;
|
||||||
|
import java.awt.font.TextLayout;
|
||||||
|
import java.awt.font.FontRenderContext;
|
||||||
|
import java.awt.Shape;
|
||||||
|
|
||||||
public final class LineBreakMeasurer
|
public final class LineBreakMeasurer
|
||||||
{
|
{
|
||||||
private AttributedCharacterIterator ci;
|
private AttributedCharacterIterator text;
|
||||||
|
private int position;
|
||||||
private FontRenderContext frc;
|
private FontRenderContext frc;
|
||||||
private BreakIterator bi;
|
private TextLayout totalLayout;
|
||||||
|
private int numChars;
|
||||||
|
|
||||||
/**
|
public LineBreakMeasurer(AttributedCharacterIterator text,
|
||||||
* Constructs a <code>LineBreakMeasurer</code> object.
|
|
||||||
*/
|
|
||||||
public LineBreakMeasurer (AttributedCharacterIterator text,
|
|
||||||
FontRenderContext frc)
|
|
||||||
{
|
|
||||||
this (text, null, frc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a <code>LineBreakMeasurer</code> object.
|
|
||||||
*/
|
|
||||||
public LineBreakMeasurer (AttributedCharacterIterator text,
|
|
||||||
BreakIterator breakIter, FontRenderContext frc)
|
BreakIterator breakIter, FontRenderContext frc)
|
||||||
{
|
{
|
||||||
this.ci = text;
|
this.text = text;
|
||||||
this.bi = breakIter;
|
|
||||||
this.frc = frc;
|
this.frc = frc;
|
||||||
|
position = 0;
|
||||||
|
totalLayout = new TextLayout(text, frc);
|
||||||
|
numChars = totalLayout.getCharacterCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteChar (AttributedCharacterIterator newParagraph,
|
public LineBreakMeasurer(AttributedCharacterIterator text,
|
||||||
|
FontRenderContext frc)
|
||||||
|
{
|
||||||
|
this.text = text;
|
||||||
|
this.frc = frc;
|
||||||
|
position = 0;
|
||||||
|
totalLayout = new TextLayout(text, frc);
|
||||||
|
numChars = totalLayout.getCharacterCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteChar(AttributedCharacterIterator newParagraph,
|
||||||
int deletePos)
|
int deletePos)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
throw new Error ("not implemented");
|
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 int getPosition ()
|
public void insertChar(AttributedCharacterIterator newParagraph,
|
||||||
{
|
|
||||||
return ci.getIndex ();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void insertChar (AttributedCharacterIterator newParagraph,
|
|
||||||
int insertPos)
|
int insertPos)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
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)
|
public TextLayout nextLayout(float wrappingWidth)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
throw new Error ("not implemented");
|
return nextLayout( wrappingWidth, numChars, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextLayout nextLayout (float wrappingWidth, int offsetLimit,
|
public TextLayout nextLayout(float wrappingWidth, int offsetLimit,
|
||||||
boolean requireNextWord)
|
boolean requireNextWord)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
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)
|
public int nextOffset(float wrappingWidth)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
throw new Error ("not implemented");
|
return nextOffset( wrappingWidth, numChars, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
public int nextOffset (float wrappingWidth, int offsetLimit,
|
public int nextOffset(float wrappingWidth, int offsetLimit,
|
||||||
boolean requireNextWord)
|
boolean requireNextWord)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPosition (int newPosition)
|
return guessOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPosition(int newPosition)
|
||||||
{
|
{
|
||||||
ci.setIndex (newPosition);
|
position = newPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPosition()
|
||||||
|
{
|
||||||
|
return position;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* TextLayout.java --
|
/* TextLayout.java --
|
||||||
Copyright (C) 2003, 2004 Free Software Foundation, Inc.
|
Copyright (C) 2006 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
|
@ -38,8 +38,7 @@ exception statement from your version. */
|
||||||
|
|
||||||
package java.awt.font;
|
package java.awt.font;
|
||||||
|
|
||||||
import gnu.java.awt.ClasspathToolkit;
|
import gnu.classpath.NotImplementedException;
|
||||||
import gnu.java.awt.peer.ClasspathTextLayoutPeer;
|
|
||||||
|
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
|
|
@ -47,116 +46,269 @@ import java.awt.Shape;
|
||||||
import java.awt.Toolkit;
|
import java.awt.Toolkit;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.geom.Rectangle2D;
|
import java.awt.geom.Rectangle2D;
|
||||||
|
import java.awt.geom.GeneralPath;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
import java.text.AttributedCharacterIterator;
|
import java.text.AttributedCharacterIterator;
|
||||||
import java.text.AttributedString;
|
import java.text.AttributedString;
|
||||||
|
import java.text.Bidi;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Michael Koch
|
* @author Sven de Marothy
|
||||||
*/
|
*/
|
||||||
public final class TextLayout implements Cloneable
|
public final class TextLayout implements Cloneable
|
||||||
{
|
{
|
||||||
public static final CaretPolicy DEFAULT_CARET_POLICY = new CaretPolicy ();
|
private GlyphVector[] runs;
|
||||||
ClasspathTextLayoutPeer peer;
|
private Font font;
|
||||||
|
private FontRenderContext frc;
|
||||||
|
private String string;
|
||||||
|
private Rectangle2D boundsCache;
|
||||||
|
private LineMetrics lm;
|
||||||
|
|
||||||
public static class CaretPolicy
|
/**
|
||||||
{
|
* Start and end character indices of the runs.
|
||||||
public CaretPolicy ()
|
* First index is the run number, second is 0 or 1 for the starting
|
||||||
{
|
* and ending character index of the run, respectively.
|
||||||
// Do nothing here.
|
*/
|
||||||
}
|
private int[][] runIndices;
|
||||||
|
|
||||||
public TextHitInfo getStrongCaret (TextHitInfo hit1, TextHitInfo hit2,
|
/**
|
||||||
TextLayout layout)
|
* Base directionality, determined from the first char.
|
||||||
{
|
*/
|
||||||
return layout.peer.getStrongCaret(hit1, hit2);
|
private boolean leftToRight;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public TextLayout (AttributedCharacterIterator text, FontRenderContext frc)
|
/**
|
||||||
{
|
* Whether this layout contains whitespace or not.
|
||||||
AttributedString as = new AttributedString (text);
|
*/
|
||||||
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
|
private boolean hasWhitespace = false;
|
||||||
peer = tk.getClasspathTextLayoutPeer(as, frc);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default caret policy.
|
||||||
|
*/
|
||||||
|
static TextLayout.CaretPolicy DEFAULT_CARET_POLICY = new CaretPolicy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a TextLayout.
|
||||||
|
*/
|
||||||
public TextLayout (String string, Font font, FontRenderContext frc)
|
public TextLayout (String string, Font font, FontRenderContext frc)
|
||||||
{
|
{
|
||||||
AttributedString as = new AttributedString (string);
|
this.font = font;
|
||||||
as.addAttribute (TextAttribute.FONT, font);
|
this.frc = frc;
|
||||||
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
|
this.string = string;
|
||||||
peer = tk.getClasspathTextLayoutPeer(as, frc);
|
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)
|
public TextLayout (String string, Map attributes, FontRenderContext frc)
|
||||||
{
|
{
|
||||||
AttributedString as = new AttributedString (string, attributes);
|
this( string, new Font( attributes ), frc );
|
||||||
ClasspathToolkit tk = (ClasspathToolkit)(Toolkit.getDefaultToolkit ());
|
}
|
||||||
peer = tk.getClasspathTextLayoutPeer(as, 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 ()
|
protected Object clone ()
|
||||||
{
|
{
|
||||||
try
|
return new TextLayout( string, font, frc );
|
||||||
{
|
|
||||||
TextLayout tl = (TextLayout) super.clone ();
|
|
||||||
tl.peer = (ClasspathTextLayoutPeer) this.peer.clone();
|
|
||||||
return tl;
|
|
||||||
}
|
}
|
||||||
catch (CloneNotSupportedException e)
|
|
||||||
{
|
|
||||||
// This should never occur
|
|
||||||
throw new InternalError ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void draw (Graphics2D g2, float x, float y)
|
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)
|
public boolean equals (Object obj)
|
||||||
{
|
{
|
||||||
if (! (obj instanceof TextLayout))
|
if( !( obj instanceof TextLayout) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return equals ((TextLayout) obj);
|
return equals( (TextLayout) obj );
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean equals (TextLayout tl)
|
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 ()
|
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 ()
|
public float getAscent ()
|
||||||
{
|
{
|
||||||
return peer.getAscent();
|
return lm.getAscent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getBaseline ()
|
public byte getBaseline ()
|
||||||
{
|
{
|
||||||
return peer.getBaseline();
|
return (byte)lm.getBaselineIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float[] getBaselineOffsets ()
|
public float[] getBaselineOffsets ()
|
||||||
{
|
{
|
||||||
return peer.getBaselineOffsets();
|
return lm.getBaselineOffsets();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getBlackBoxBounds (int firstEndpoint, int secondEndpoint)
|
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()
|
public Rectangle2D getBounds()
|
||||||
{
|
{
|
||||||
return peer.getBounds();
|
if( boundsCache == null )
|
||||||
|
boundsCache = getOutline(new AffineTransform()).getBounds();
|
||||||
|
return boundsCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float[] getCaretInfo (TextHitInfo hit)
|
public float[] getCaretInfo (TextHitInfo hit)
|
||||||
|
|
@ -165,144 +317,274 @@ public final class TextLayout implements Cloneable
|
||||||
}
|
}
|
||||||
|
|
||||||
public float[] getCaretInfo (TextHitInfo hit, Rectangle2D bounds)
|
public float[] getCaretInfo (TextHitInfo hit, Rectangle2D bounds)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return peer.getCaretInfo(hit, bounds);
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getCaretShape (TextHitInfo hit)
|
public Shape getCaretShape (TextHitInfo hit)
|
||||||
{
|
{
|
||||||
return getCaretShape(hit, getBounds());
|
return getCaretShape( hit, getBounds() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getCaretShape (TextHitInfo hit, Rectangle2D bounds)
|
public Shape getCaretShape (TextHitInfo hit, Rectangle2D bounds)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return peer.getCaretShape(hit, bounds);
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape[] getCaretShapes (int offset)
|
public Shape[] getCaretShapes (int offset)
|
||||||
{
|
{
|
||||||
return getCaretShapes(offset, getBounds());
|
return getCaretShapes( offset, getBounds() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape[] getCaretShapes (int offset, Rectangle2D bounds)
|
public Shape[] getCaretShapes (int offset, Rectangle2D bounds)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return getCaretShapes(offset, getBounds(), DEFAULT_CARET_POLICY);
|
throw new Error ("not implemented");
|
||||||
}
|
|
||||||
|
|
||||||
public Shape[] getCaretShapes (int offset, Rectangle2D bounds,
|
|
||||||
TextLayout.CaretPolicy policy)
|
|
||||||
{
|
|
||||||
return peer.getCaretShapes(offset, bounds, policy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getCharacterCount ()
|
public int getCharacterCount ()
|
||||||
{
|
{
|
||||||
return peer.getCharacterCount();
|
return string.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte getCharacterLevel (int index)
|
public byte getCharacterLevel (int index)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return peer.getCharacterLevel(index);
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getDescent ()
|
public float getDescent ()
|
||||||
{
|
{
|
||||||
return peer.getDescent();
|
return lm.getDescent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextLayout getJustifiedLayout (float justificationWidth)
|
public TextLayout getJustifiedLayout (float justificationWidth)
|
||||||
{
|
{
|
||||||
return peer.getJustifiedLayout(justificationWidth);
|
TextLayout newLayout = (TextLayout)clone();
|
||||||
|
|
||||||
|
if( hasWhitespace )
|
||||||
|
newLayout.handleJustify( justificationWidth );
|
||||||
|
|
||||||
|
return newLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getLeading ()
|
public float getLeading ()
|
||||||
{
|
{
|
||||||
return peer.getLeading();
|
return lm.getLeading();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint)
|
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint)
|
||||||
{
|
{
|
||||||
return getLogicalHighlightShape (firstEndpoint, secondEndpoint, getBounds());
|
return getLogicalHighlightShape( firstEndpoint, secondEndpoint,
|
||||||
|
getBounds() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint,
|
public Shape getLogicalHighlightShape (int firstEndpoint, int secondEndpoint,
|
||||||
Rectangle2D bounds)
|
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,
|
public int[] getLogicalRangesForVisualSelection (TextHitInfo firstEndpoint,
|
||||||
TextHitInfo secondEndpoint)
|
TextHitInfo secondEndpoint)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return peer.getLogicalRangesForVisualSelection(firstEndpoint, secondEndpoint);
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextHitInfo getNextLeftHit (int offset)
|
public TextHitInfo getNextLeftHit (int offset)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return getNextLeftHit(offset, DEFAULT_CARET_POLICY);
|
throw new Error ("not implemented");
|
||||||
}
|
|
||||||
|
|
||||||
public TextHitInfo getNextLeftHit (int offset, TextLayout.CaretPolicy policy)
|
|
||||||
{
|
|
||||||
return peer.getNextLeftHit(offset, policy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextHitInfo getNextLeftHit (TextHitInfo hit)
|
public TextHitInfo getNextLeftHit (TextHitInfo hit)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return getNextLeftHit(hit.getCharIndex());
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextHitInfo getNextRightHit (int offset)
|
public TextHitInfo getNextRightHit (int offset)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return getNextRightHit(offset, DEFAULT_CARET_POLICY);
|
throw new Error ("not implemented");
|
||||||
}
|
|
||||||
|
|
||||||
public TextHitInfo getNextRightHit (int offset, TextLayout.CaretPolicy policy)
|
|
||||||
{
|
|
||||||
return peer.getNextRightHit(offset, policy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextHitInfo getNextRightHit (TextHitInfo hit)
|
public TextHitInfo getNextRightHit (TextHitInfo hit)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return getNextRightHit(hit.getCharIndex());
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getOutline (AffineTransform tx)
|
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 ()
|
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,
|
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
|
||||||
TextHitInfo secondEndpoint)
|
TextHitInfo secondEndpoint)
|
||||||
{
|
{
|
||||||
return getVisualHighlightShape(firstEndpoint, secondEndpoint, getBounds());
|
return getVisualHighlightShape( firstEndpoint, secondEndpoint,
|
||||||
|
getBounds() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
|
public Shape getVisualHighlightShape (TextHitInfo firstEndpoint,
|
||||||
TextHitInfo secondEndpoint,
|
TextHitInfo secondEndpoint,
|
||||||
Rectangle2D bounds)
|
Rectangle2D bounds)
|
||||||
|
throws NotImplementedException
|
||||||
{
|
{
|
||||||
return peer.getVisualHighlightShape(firstEndpoint, secondEndpoint, bounds);
|
throw new Error ("not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextHitInfo getVisualOtherHit (TextHitInfo hit)
|
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)
|
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
|
||||||
|
|
||||||
|
// 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++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode ()
|
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++ )
|
||||||
{
|
{
|
||||||
return peer.hashCode();
|
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)
|
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)
|
public TextHitInfo hitTestChar (float x, float y, Rectangle2D bounds)
|
||||||
{
|
{
|
||||||
return peer.hitTestChar(x, y, bounds);
|
return hitTestChar( x, y, getBounds() );
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLeftToRight ()
|
public boolean isLeftToRight ()
|
||||||
{
|
{
|
||||||
return peer.isLeftToRight();
|
return leftToRight;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isVertical ()
|
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 ()
|
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)
|
public static AffineTransform getTranslateInstance(double tx, double ty)
|
||||||
{
|
{
|
||||||
AffineTransform t = new AffineTransform();
|
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;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* BufferedImage.java --
|
/* 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.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
|
@ -99,6 +99,13 @@ public class BufferedImage extends Image
|
||||||
|
|
||||||
Vector observers;
|
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)
|
public BufferedImage(int w, int h, int type)
|
||||||
{
|
{
|
||||||
ColorModel cm = null;
|
ColorModel cm = null;
|
||||||
|
|
@ -363,11 +370,28 @@ public class BufferedImage extends Image
|
||||||
return 1;
|
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)
|
public Object getProperty(String string)
|
||||||
{
|
{
|
||||||
if (properties == null)
|
if (string == null)
|
||||||
return null;
|
throw new NullPointerException("The property name cannot be null.");
|
||||||
return properties.get(string);
|
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)
|
public Object getProperty(String string, ImageObserver imageobserver)
|
||||||
|
|
@ -375,10 +399,15 @@ public class BufferedImage extends Image
|
||||||
return getProperty(string);
|
return getProperty(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns <code>null</code> always.
|
||||||
|
*
|
||||||
|
* @return <code>null</code> always.
|
||||||
|
*/
|
||||||
public String[] getPropertyNames()
|
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;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,8 @@ public class PixelGrabber implements ImageConsumer
|
||||||
* in the grab rectangle will be stored at
|
* in the grab rectangle will be stored at
|
||||||
* <code>pix[(n - y) * scansize + (m - x) + off]</code>.
|
* <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,
|
* @param x the x coordinate of the grab rectangle's top-left pixel,
|
||||||
* specified relative to the top-left corner of the image produced
|
* specified relative to the top-left corner of the image produced
|
||||||
* by <code>ip</code>
|
* 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,
|
public PixelGrabber(ImageProducer ip, int x, int y, int w, int h,
|
||||||
int pix[], int off, int scansize)
|
int pix[], int off, int scansize)
|
||||||
{
|
{
|
||||||
if (ip == null)
|
|
||||||
throw new NullPointerException("The ImageProducer must not be null.");
|
|
||||||
|
|
||||||
this.ip = ip;
|
this.ip = ip;
|
||||||
this.x = x;
|
this.x = x;
|
||||||
this.y = y;
|
this.y = y;
|
||||||
|
|
@ -222,7 +220,6 @@ public class PixelGrabber implements ImageConsumer
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
ex.printStackTrace();
|
|
||||||
imageComplete(ImageConsumer.IMAGEABORTED);
|
imageComplete(ImageConsumer.IMAGEABORTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -644,6 +644,7 @@ public final class Bidi
|
||||||
case Character.DIRECTIONALITY_OTHER_NEUTRALS:
|
case Character.DIRECTIONALITY_OTHER_NEUTRALS:
|
||||||
case Character.DIRECTIONALITY_SEGMENT_SEPARATOR:
|
case Character.DIRECTIONALITY_SEGMENT_SEPARATOR:
|
||||||
case Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR:
|
case Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR:
|
||||||
|
case Character.DIRECTIONALITY_WHITESPACE:
|
||||||
if (neutralStart == -1)
|
if (neutralStart == -1)
|
||||||
neutralStart = i;
|
neutralStart = i;
|
||||||
break;
|
break;
|
||||||
|
|
@ -657,7 +658,7 @@ public final class Bidi
|
||||||
? prevStrong
|
? prevStrong
|
||||||
: embeddingDirection);
|
: embeddingDirection);
|
||||||
for (int j = neutralStart; j < i; ++j)
|
for (int j = neutralStart; j < i; ++j)
|
||||||
types[i] = override;
|
types[j] = override;
|
||||||
}
|
}
|
||||||
prevStrong = newStrong;
|
prevStrong = newStrong;
|
||||||
neutralStart = -1;
|
neutralStart = -1;
|
||||||
|
|
|
||||||
|
|
@ -2039,19 +2039,10 @@ public abstract class JComponent extends Container implements Serializable
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
boolean translated = false;
|
boolean translated = false;
|
||||||
try
|
Graphics g2 = g.create(bounds.x, bounds.y, bounds.width,
|
||||||
{
|
bounds.height);
|
||||||
g.clipRect(bounds.x, bounds.y, bounds.width, bounds.height);
|
children[i].paint(g2);
|
||||||
g.translate(bounds.x, bounds.y);
|
g2.dispose();
|
||||||
translated = true;
|
|
||||||
children[i].paint(g);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (translated)
|
|
||||||
g.translate(-bounds.x, -bounds.y);
|
|
||||||
g.setClip(oldClip);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
g.setClip(originalClip);
|
g.setClip(originalClip);
|
||||||
}
|
}
|
||||||
|
|
@ -2183,13 +2174,19 @@ public abstract class JComponent extends Container implements Serializable
|
||||||
|
|
||||||
// Paint on the offscreen buffer.
|
// Paint on the offscreen buffer.
|
||||||
Component root = getRoot(this);
|
Component root = getRoot(this);
|
||||||
Image buffer = rm.getOffscreenBuffer(this, root.getWidth(),
|
Image buffer = rm.getVolatileOffscreenBuffer(this, root.getWidth(),
|
||||||
root.getHeight());
|
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);
|
//Rectangle targetClip = SwingUtilities.convertRectangle(this, r, root);
|
||||||
Point translation = SwingUtilities.convertPoint(this, 0, 0, root);
|
Point translation = SwingUtilities.convertPoint(this, 0, 0, root);
|
||||||
Graphics g2 = buffer.getGraphics();
|
Graphics g2 = buffer.getGraphics();
|
||||||
g2.translate(translation.x, translation.y);
|
clipAndTranslateGraphics(root, this, g2);
|
||||||
g2.setClip(r.x, r.y, r.width, r.height);
|
g2.clipRect(r.x, r.y, r.width, r.height);
|
||||||
g2 = getComponentGraphics(g2);
|
g2 = getComponentGraphics(g2);
|
||||||
isPaintingDoubleBuffered = true;
|
isPaintingDoubleBuffered = true;
|
||||||
try
|
try
|
||||||
|
|
@ -2208,6 +2205,26 @@ public abstract class JComponent extends Container implements Serializable
|
||||||
r.height));
|
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.
|
* Performs normal painting without double buffering.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -990,10 +990,6 @@ public class JTabbedPane extends JComponent implements Serializable,
|
||||||
checkIndex(index, -1, tabs.size());
|
checkIndex(index, -1, tabs.size());
|
||||||
if (index != getSelectedIndex())
|
if (index != getSelectedIndex())
|
||||||
{
|
{
|
||||||
if (getSelectedIndex() != -1 && getSelectedComponent() != null)
|
|
||||||
getSelectedComponent().hide();
|
|
||||||
if (index != -1 && getComponentAt(index) != null)
|
|
||||||
getComponentAt(index).show();
|
|
||||||
model.setSelectedIndex(index);
|
model.setSelectedIndex(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -767,10 +767,22 @@ public class RepaintManager
|
||||||
public Image getVolatileOffscreenBuffer(Component comp, int proposedWidth,
|
public Image getVolatileOffscreenBuffer(Component comp, int proposedWidth,
|
||||||
int proposedHeight)
|
int proposedHeight)
|
||||||
{
|
{
|
||||||
int maxWidth = doubleBufferMaximumSize.width;
|
Component root = getRoot(comp);
|
||||||
int maxHeight = doubleBufferMaximumSize.height;
|
Image buffer = (Image) offscreenBuffers.get(root);
|
||||||
return comp.createVolatileImage(Math.min(maxWidth, proposedWidth),
|
if (buffer == null
|
||||||
Math.min(maxHeight, proposedHeight));
|
|| 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.shadow = shadow;
|
||||||
this.darkShadow = darkShadow;
|
this.darkShadow = darkShadow;
|
||||||
this.highlight = highlight;
|
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>.
|
* @return A new instance of <code>BasicCheckBoxUI</code>.
|
||||||
*/
|
*/
|
||||||
public static ComponentUI createUI(JComponent c) {
|
public static ComponentUI createUI(JComponent c)
|
||||||
|
{
|
||||||
return new BasicCheckBoxUI();
|
return new BasicCheckBoxUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,19 @@ public class BasicComboBoxRenderer
|
||||||
*/
|
*/
|
||||||
public Dimension getPreferredSize()
|
public Dimension getPreferredSize()
|
||||||
{
|
{
|
||||||
|
if (this.getText() != null && ! this.getText().equals(""))
|
||||||
return super.getPreferredSize();
|
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();
|
Object prototype = comboBox.getPrototypeDisplayValue();
|
||||||
if (prototype != null)
|
if (prototype != null)
|
||||||
{
|
{
|
||||||
Component comp = renderer.getListCellRendererComponent
|
Component comp = renderer.getListCellRendererComponent(listBox,
|
||||||
(listBox, prototype, -1, false, false);
|
prototype, -1, false, false);
|
||||||
currentValuePane.add(comp);
|
currentValuePane.add(comp);
|
||||||
comp.setFont(comboBox.getFont());
|
comp.setFont(comboBox.getFont());
|
||||||
Dimension renderSize = comp.getPreferredSize();
|
Dimension renderSize = comp.getPreferredSize();
|
||||||
|
|
@ -938,8 +938,8 @@ public class BasicComboBoxUI extends ComboBoxUI
|
||||||
{
|
{
|
||||||
for (int i = 0; i < size; ++i)
|
for (int i = 0; i < size; ++i)
|
||||||
{
|
{
|
||||||
Component comp = renderer.getListCellRendererComponent
|
Component comp = renderer.getListCellRendererComponent(listBox,
|
||||||
(listBox, model.getElementAt(i), -1, false, false);
|
model.getElementAt(i), -1, false, false);
|
||||||
currentValuePane.add(comp);
|
currentValuePane.add(comp);
|
||||||
comp.setFont(comboBox.getFont());
|
comp.setFont(comboBox.getFont());
|
||||||
Dimension renderSize = comp.getPreferredSize();
|
Dimension renderSize = comp.getPreferredSize();
|
||||||
|
|
|
||||||
|
|
@ -677,7 +677,7 @@ public class BasicComboPopup extends JPopupMenu implements ComboPopup
|
||||||
{
|
{
|
||||||
Point point = SwingUtilities.convertPoint((Component) e.getSource(),
|
Point point = SwingUtilities.convertPoint((Component) e.getSource(),
|
||||||
e.getPoint(), list);
|
e.getPoint(), list);
|
||||||
MouseEvent newEvent= new MouseEvent((Component) e.getSource(),
|
MouseEvent newEvent = new MouseEvent((Component) e.getSource(),
|
||||||
e.getID(), e.getWhen(),
|
e.getID(), e.getWhen(),
|
||||||
e.getModifiers(), point.x, point.y,
|
e.getModifiers(), point.x, point.y,
|
||||||
e.getModifiers(),
|
e.getModifiers(),
|
||||||
|
|
|
||||||
|
|
@ -699,10 +699,10 @@ public class BasicFileChooserUI extends FileChooserUI
|
||||||
String fileDescText;
|
String fileDescText;
|
||||||
|
|
||||||
/** Is a directory selected? */
|
/** Is a directory selected? */
|
||||||
boolean dirSelected = false;
|
boolean dirSelected;
|
||||||
|
|
||||||
/** The current directory. */
|
/** The current directory. */
|
||||||
File currDir = null;
|
File currDir;
|
||||||
|
|
||||||
// FIXME: describe what is contained in the bottom panel
|
// FIXME: describe what is contained in the bottom panel
|
||||||
/** The bottom panel. */
|
/** The bottom panel. */
|
||||||
|
|
|
||||||
|
|
@ -179,10 +179,10 @@ public class BasicInternalFrameUI extends InternalFrameUI
|
||||||
protected final int RESIZE_NONE = 0;
|
protected final int RESIZE_NONE = 0;
|
||||||
|
|
||||||
/** The x offset from the top left corner of the JInternalFrame. */
|
/** 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. */
|
/** 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. */
|
/** The direction that the resize is occuring in. */
|
||||||
private transient int direction = -1;
|
private transient int direction = -1;
|
||||||
|
|
@ -314,7 +314,7 @@ public class BasicInternalFrameUI extends InternalFrameUI
|
||||||
frame.setCursor(Cursor.getDefaultCursor());
|
frame.setCursor(Cursor.getDefaultCursor());
|
||||||
showingCursor = Cursor.DEFAULT_CURSOR;
|
showingCursor = Cursor.DEFAULT_CURSOR;
|
||||||
}
|
}
|
||||||
else if (e.getSource()==frame && frame.isResizable())
|
else if (e.getSource() == frame && frame.isResizable())
|
||||||
{
|
{
|
||||||
setCursor(e);
|
setCursor(e);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,9 @@ import javax.swing.plaf.IconUIResource;
|
||||||
import javax.swing.plaf.InsetsUIResource;
|
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
|
* @author Andrew Selkirk
|
||||||
*/
|
*/
|
||||||
public abstract class BasicLookAndFeel extends LookAndFeel
|
public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
|
|
@ -126,9 +128,12 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
Component target = ev.getComponent();
|
Component target = ev.getComponent();
|
||||||
if (target instanceof Container)
|
if (target instanceof Container)
|
||||||
target = ((Container) target).findComponentAt(ev.getPoint());
|
target = ((Container) target).findComponentAt(ev.getPoint());
|
||||||
if (! m.isComponentPartOfCurrentMenu(target))
|
if (m.getSelectedPath().length > 0
|
||||||
|
&& ! m.isComponentPartOfCurrentMenu(target))
|
||||||
|
{
|
||||||
m.clearSelectedPath();
|
m.clearSelectedPath();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -192,11 +197,22 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
|
|
||||||
static final long serialVersionUID = -6096995660290287879L;
|
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.
|
* Helps closing menu popups when user clicks outside of the menu area.
|
||||||
*/
|
*/
|
||||||
private transient PopupHelper popupHelper;
|
private transient PopupHelper popupHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps the audio actions for this l&f.
|
||||||
|
*/
|
||||||
private ActionMap audioActionMap;
|
private ActionMap audioActionMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -425,9 +441,15 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* loadResourceBundle
|
* Loads the resource bundle in 'resources/basic' and adds the contained
|
||||||
* @param defaults TODO
|
* 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)
|
private void loadResourceBundle(UIDefaults defaults)
|
||||||
{
|
{
|
||||||
ResourceBundle bundle;
|
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).
|
* @param defaults the defaults table (<code>null</code> not permitted).
|
||||||
*/
|
*/
|
||||||
protected void initComponentDefaults(UIDefaults defaults)
|
protected void initComponentDefaults(UIDefaults defaults)
|
||||||
|
|
@ -509,7 +533,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
return BasicIconFactory.getMenuItemCheckIcon();
|
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.textIconGap", new Integer(4),
|
||||||
"CheckBox.textShiftOffset", new Integer(0),
|
"CheckBox.textShiftOffset", new Integer(0),
|
||||||
"CheckBoxMenuItem.acceleratorFont", new FontUIResource("Dialog",
|
"CheckBoxMenuItem.acceleratorFont", new FontUIResource("Dialog",
|
||||||
|
|
@ -599,7 +623,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
"ctrl F4", "close",
|
"ctrl F4", "close",
|
||||||
"KP_DOWN", "down",
|
"KP_DOWN", "down",
|
||||||
"ctrl F10", "maximize",
|
"ctrl F10", "maximize",
|
||||||
"ctrl alt shift F6","selectPreviousFrame"
|
"ctrl alt shift F6", "selectPreviousFrame"
|
||||||
}),
|
}),
|
||||||
"DesktopIcon.border", new BorderUIResource.CompoundBorderUIResource(null,
|
"DesktopIcon.border", new BorderUIResource.CompoundBorderUIResource(null,
|
||||||
null),
|
null),
|
||||||
|
|
@ -1069,14 +1093,14 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
"PAGE_DOWN", "positiveBlockIncrement",
|
"PAGE_DOWN", "positiveBlockIncrement",
|
||||||
"END", "maxScroll",
|
"END", "maxScroll",
|
||||||
"HOME", "minScroll",
|
"HOME", "minScroll",
|
||||||
"LEFT", "positiveUnitIncrement",
|
"LEFT", "negativeUnitIncrement",
|
||||||
"KP_UP", "negativeUnitIncrement",
|
"KP_UP", "negativeUnitIncrement",
|
||||||
"KP_DOWN", "positiveUnitIncrement",
|
"KP_DOWN", "positiveUnitIncrement",
|
||||||
"UP", "negativeUnitIncrement",
|
"UP", "negativeUnitIncrement",
|
||||||
"RIGHT", "negativeUnitIncrement",
|
"RIGHT", "positiveUnitIncrement",
|
||||||
"KP_LEFT", "positiveUnitIncrement",
|
"KP_LEFT", "negativeUnitIncrement",
|
||||||
"DOWN", "positiveUnitIncrement",
|
"DOWN", "positiveUnitIncrement",
|
||||||
"KP_RIGHT", "negativeUnitIncrement"
|
"KP_RIGHT", "positiveUnitIncrement"
|
||||||
}),
|
}),
|
||||||
"ScrollBar.foreground", new ColorUIResource(light),
|
"ScrollBar.foreground", new ColorUIResource(light),
|
||||||
"ScrollBar.maximumThumbSize", new DimensionUIResource(4096, 4096),
|
"ScrollBar.maximumThumbSize", new DimensionUIResource(4096, 4096),
|
||||||
|
|
@ -1091,7 +1115,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
"ScrollPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
|
"ScrollPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
|
||||||
"PAGE_UP", "scrollUp",
|
"PAGE_UP", "scrollUp",
|
||||||
"KP_LEFT", "unitScrollLeft",
|
"KP_LEFT", "unitScrollLeft",
|
||||||
"ctrl PAGE_DOWN","scrollRight",
|
"ctrl PAGE_DOWN", "scrollRight",
|
||||||
"PAGE_DOWN", "scrollDown",
|
"PAGE_DOWN", "scrollDown",
|
||||||
"KP_RIGHT", "unitScrollRight",
|
"KP_RIGHT", "unitScrollRight",
|
||||||
"LEFT", "unitScrollLeft",
|
"LEFT", "unitScrollLeft",
|
||||||
|
|
@ -1167,7 +1191,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
"SplitPaneDivider.border", BasicBorders.getSplitPaneDividerBorder(),
|
"SplitPaneDivider.border", BasicBorders.getSplitPaneDividerBorder(),
|
||||||
"SplitPaneDivider.draggingColor", new ColorUIResource(Color.DARK_GRAY),
|
"SplitPaneDivider.draggingColor", new ColorUIResource(Color.DARK_GRAY),
|
||||||
"TabbedPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
|
"TabbedPane.ancestorInputMap", new UIDefaults.LazyInputMap(new Object[] {
|
||||||
"ctrl PAGE_DOWN","navigatePageDown",
|
"ctrl PAGE_DOWN", "navigatePageDown",
|
||||||
"ctrl PAGE_UP", "navigatePageUp",
|
"ctrl PAGE_UP", "navigatePageUp",
|
||||||
"ctrl UP", "requestFocus",
|
"ctrl UP", "requestFocus",
|
||||||
"ctrl KP_UP", "requestFocus"
|
"ctrl KP_UP", "requestFocus"
|
||||||
|
|
@ -1220,13 +1244,13 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
"COPY", "copy",
|
"COPY", "copy",
|
||||||
"ctrl KP_UP", "selectPreviousRowChangeLead",
|
"ctrl KP_UP", "selectPreviousRowChangeLead",
|
||||||
"PASTE", "paste",
|
"PASTE", "paste",
|
||||||
"shift PAGE_DOWN","scrollDownExtendSelection",
|
"shift PAGE_DOWN", "scrollDownExtendSelection",
|
||||||
"PAGE_DOWN", "scrollDownChangeSelection",
|
"PAGE_DOWN", "scrollDownChangeSelection",
|
||||||
"END", "selectLastColumn",
|
"END", "selectLastColumn",
|
||||||
"shift END", "selectLastColumnExtendSelection",
|
"shift END", "selectLastColumnExtendSelection",
|
||||||
"HOME", "selectFirstColumn",
|
"HOME", "selectFirstColumn",
|
||||||
"ctrl END", "selectLastRow",
|
"ctrl END", "selectLastRow",
|
||||||
"ctrl shift END","selectLastRowExtendSelection",
|
"ctrl shift END", "selectLastRowExtendSelection",
|
||||||
"LEFT", "selectPreviousColumn",
|
"LEFT", "selectPreviousColumn",
|
||||||
"shift HOME", "selectFirstColumnExtendSelection",
|
"shift HOME", "selectFirstColumnExtendSelection",
|
||||||
"UP", "selectPreviousRow",
|
"UP", "selectPreviousRow",
|
||||||
|
|
@ -1234,7 +1258,7 @@ public abstract class BasicLookAndFeel extends LookAndFeel
|
||||||
"ctrl HOME", "selectFirstRow",
|
"ctrl HOME", "selectFirstRow",
|
||||||
"shift LEFT", "selectPreviousColumnExtendSelection",
|
"shift LEFT", "selectPreviousColumnExtendSelection",
|
||||||
"DOWN", "selectNextRow",
|
"DOWN", "selectNextRow",
|
||||||
"ctrl shift HOME","selectFirstRowExtendSelection",
|
"ctrl shift HOME", "selectFirstRowExtendSelection",
|
||||||
"shift UP", "selectPreviousRowExtendSelection",
|
"shift UP", "selectPreviousRowExtendSelection",
|
||||||
"F2", "startEditing",
|
"F2", "startEditing",
|
||||||
"shift RIGHT", "selectNextColumnExtendSelection",
|
"shift RIGHT", "selectNextColumnExtendSelection",
|
||||||
|
|
|
||||||
|
|
@ -239,9 +239,10 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||||
{
|
{
|
||||||
if (e.getPropertyName() == "accelerator")
|
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)
|
if (map != null)
|
||||||
map.remove((KeyStroke)e.getOldValue());
|
map.remove((KeyStroke) e.getOldValue());
|
||||||
else
|
else
|
||||||
map = new ComponentInputMapUIResource(menuItem);
|
map = new ComponentInputMapUIResource(menuItem);
|
||||||
|
|
||||||
|
|
@ -499,7 +500,8 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||||
*/
|
*/
|
||||||
public Dimension getPreferredSize(JComponent c)
|
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");
|
prefix + ".foreground", prefix + ".font");
|
||||||
menuItem.setMargin(UIManager.getInsets(prefix + ".margin"));
|
menuItem.setMargin(UIManager.getInsets(prefix + ".margin"));
|
||||||
acceleratorFont = UIManager.getFont(prefix + ".acceleratorFont");
|
acceleratorFont = UIManager.getFont(prefix + ".acceleratorFont");
|
||||||
acceleratorForeground = UIManager.getColor(prefix + ".acceleratorForeground");
|
acceleratorForeground = UIManager.getColor(prefix
|
||||||
acceleratorSelectionForeground = UIManager.getColor(prefix + ".acceleratorSelectionForeground");
|
+ ".acceleratorForeground");
|
||||||
|
acceleratorSelectionForeground = UIManager.getColor(prefix
|
||||||
|
+ ".acceleratorSelectionForeground");
|
||||||
selectionBackground = UIManager.getColor(prefix + ".selectionBackground");
|
selectionBackground = UIManager.getColor(prefix + ".selectionBackground");
|
||||||
selectionForeground = UIManager.getColor(prefix + ".selectionForeground");
|
selectionForeground = UIManager.getColor(prefix + ".selectionForeground");
|
||||||
acceleratorDelimiter = UIManager.getString(prefix + ".acceleratorDelimiter");
|
acceleratorDelimiter = UIManager.getString(prefix + ".acceleratorDelimiter");
|
||||||
|
|
@ -551,13 +555,15 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||||
*/
|
*/
|
||||||
protected void installKeyboardActions()
|
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)
|
if (focusedWindowMap == null)
|
||||||
focusedWindowMap = new ComponentInputMapUIResource(menuItem);
|
focusedWindowMap = new ComponentInputMapUIResource(menuItem);
|
||||||
KeyStroke accelerator = menuItem.getAccelerator();
|
KeyStroke accelerator = menuItem.getAccelerator();
|
||||||
if (accelerator != null)
|
if (accelerator != null)
|
||||||
focusedWindowMap.put(accelerator, "doClick");
|
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);
|
ActionMap UIActionMap = SwingUtilities.getUIActionMap(menuItem);
|
||||||
if (UIActionMap == null)
|
if (UIActionMap == null)
|
||||||
|
|
@ -1268,8 +1274,8 @@ public class BasicMenuItemUI extends MenuItemUI
|
||||||
Insets insets = m.getInsets();
|
Insets insets = m.getInsets();
|
||||||
viewRect.x += insets.left;
|
viewRect.x += insets.left;
|
||||||
viewRect.y += insets.top;
|
viewRect.y += insets.top;
|
||||||
viewRect.width -= (insets.left + insets.right);
|
viewRect.width -= insets.left + insets.right;
|
||||||
viewRect.height -= (insets.top + insets.bottom);
|
viewRect.height -= insets.top + insets.bottom;
|
||||||
|
|
||||||
// Fetch the fonts.
|
// Fetch the fonts.
|
||||||
Font font = m.getFont();
|
Font font = m.getFont();
|
||||||
|
|
|
||||||
|
|
@ -139,8 +139,8 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||||
((JDialog) owner).dispose();
|
((JDialog) owner).dispose();
|
||||||
|
|
||||||
//else we probably have some kind of internal frame.
|
//else we probably have some kind of internal frame.
|
||||||
JInternalFrame inf = (JInternalFrame) SwingUtilities.getAncestorOfClass(JInternalFrame.class,
|
JInternalFrame inf = (JInternalFrame) SwingUtilities.getAncestorOfClass(
|
||||||
optionPane);
|
JInternalFrame.class, optionPane);
|
||||||
if (inf != null)
|
if (inf != null)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
@ -433,7 +433,7 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||||
public static final int MinimumHeight = 90;
|
public static final int MinimumHeight = 90;
|
||||||
|
|
||||||
/** Whether the JOptionPane contains custom components. */
|
/** 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
|
// The initialFocusComponent seems to always be set to a button (even if
|
||||||
// I try to set initialSelectionValue). This is different from what the
|
// I try to set initialSelectionValue). This is different from what the
|
||||||
|
|
@ -821,8 +821,8 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||||
if (remainder.length() == 0)
|
if (remainder.length() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Recursivly call ourselves to burst the remainder of the string,
|
// Recursively call ourselves to burst the remainder of the string,
|
||||||
if ((remainder.length() > maxll || remainder.contains("\n")))
|
if (remainder.length() > maxll || remainder.contains("\n"))
|
||||||
burstStringInto(c, remainder, maxll);
|
burstStringInto(c, remainder, maxll);
|
||||||
else
|
else
|
||||||
// Add the remainder to the container and be done.
|
// Add the remainder to the container and be done.
|
||||||
|
|
@ -979,7 +979,7 @@ public class BasicOptionPaneUI extends OptionPaneUI
|
||||||
case JOptionPane.DEFAULT_OPTION:
|
case JOptionPane.DEFAULT_OPTION:
|
||||||
return (optionPane.getWantsInput()) ?
|
return (optionPane.getWantsInput()) ?
|
||||||
new Object[] { OK_STRING, CANCEL_STRING } :
|
new Object[] { OK_STRING, CANCEL_STRING } :
|
||||||
( optionPane.getMessageType() == JOptionPane.QUESTION_MESSAGE ) ?
|
(optionPane.getMessageType() == JOptionPane.QUESTION_MESSAGE) ?
|
||||||
new Object[] { YES_STRING, NO_STRING, CANCEL_STRING } :
|
new Object[] { YES_STRING, NO_STRING, CANCEL_STRING } :
|
||||||
// ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, PLAIN_MESSAGE
|
// ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, PLAIN_MESSAGE
|
||||||
new Object[] { OK_STRING };
|
new Object[] { OK_STRING };
|
||||||
|
|
|
||||||
|
|
@ -384,7 +384,7 @@ public class BasicProgressBarUI extends ProgressBarUI
|
||||||
}
|
}
|
||||||
|
|
||||||
int index = getAnimationIndex();
|
int index = getAnimationIndex();
|
||||||
if (animationIndex > (numFrames) / 2)
|
if (animationIndex > numFrames / 2)
|
||||||
index = numFrames - getAnimationIndex();
|
index = numFrames - getAnimationIndex();
|
||||||
|
|
||||||
if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
|
if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
|
||||||
|
|
@ -671,7 +671,8 @@ public class BasicProgressBarUI extends ProgressBarUI
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
g.setColor(c.getForeground());
|
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(""))
|
if (progressBar.isStringPainted() && !progressBar.getString().equals(""))
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,8 @@ public class BasicRadioButtonUI extends BasicToggleButtonUI
|
||||||
*
|
*
|
||||||
* @return a new instance of <code>BasicRadioButtonUI</code>
|
* @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();
|
return new BasicRadioButtonUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -155,8 +156,8 @@ public class BasicRadioButtonUI extends BasicToggleButtonUI
|
||||||
currentIcon = b.getDisabledIcon();
|
currentIcon = b.getDisabledIcon();
|
||||||
|
|
||||||
SwingUtilities.calculateInnerArea(b, vr);
|
SwingUtilities.calculateInnerArea(b, vr);
|
||||||
String text = SwingUtilities.layoutCompoundLabel
|
String text = SwingUtilities.layoutCompoundLabel(c, g.getFontMetrics(f),
|
||||||
(c, g.getFontMetrics(f), b.getText(), currentIcon,
|
b.getText(), currentIcon,
|
||||||
b.getVerticalAlignment(), b.getHorizontalAlignment(),
|
b.getVerticalAlignment(), b.getHorizontalAlignment(),
|
||||||
b.getVerticalTextPosition(), b.getHorizontalTextPosition(),
|
b.getVerticalTextPosition(), b.getHorizontalTextPosition(),
|
||||||
vr, ir, tr, b.getIconTextGap() + defaultTextShiftOffset);
|
vr, ir, tr, b.getIconTextGap() + defaultTextShiftOffset);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/* BasicScrollBarUI.java --
|
/* 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.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
|
|
@ -38,8 +38,6 @@ exception statement from your version. */
|
||||||
|
|
||||||
package javax.swing.plaf.basic;
|
package javax.swing.plaf.basic;
|
||||||
|
|
||||||
import gnu.classpath.NotImplementedException;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Component;
|
import java.awt.Component;
|
||||||
import java.awt.Container;
|
import java.awt.Container;
|
||||||
|
|
@ -56,10 +54,14 @@ import java.awt.event.MouseMotionListener;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
|
|
||||||
|
import javax.swing.AbstractAction;
|
||||||
|
import javax.swing.ActionMap;
|
||||||
import javax.swing.BoundedRangeModel;
|
import javax.swing.BoundedRangeModel;
|
||||||
|
import javax.swing.InputMap;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JScrollBar;
|
import javax.swing.JScrollBar;
|
||||||
|
import javax.swing.JSlider;
|
||||||
import javax.swing.LookAndFeel;
|
import javax.swing.LookAndFeel;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
@ -67,6 +69,7 @@ import javax.swing.Timer;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
|
import javax.swing.plaf.ActionMapUIResource;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import javax.swing.plaf.ScrollBarUI;
|
import javax.swing.plaf.ScrollBarUI;
|
||||||
|
|
||||||
|
|
@ -397,9 +400,9 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (direction == POSITIVE_SCROLL)
|
if (direction == POSITIVE_SCROLL)
|
||||||
return (value > scrollbar.getValue());
|
return value > scrollbar.getValue();
|
||||||
else
|
else
|
||||||
return (value < scrollbar.getValue());
|
return value < scrollbar.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -724,7 +727,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||||
int orientation = scrollbar.getOrientation();
|
int orientation = scrollbar.getOrientation();
|
||||||
switch (orientation)
|
switch (orientation)
|
||||||
{
|
{
|
||||||
case (JScrollBar.HORIZONTAL):
|
case JScrollBar.HORIZONTAL:
|
||||||
incrButton = createIncreaseButton(EAST);
|
incrButton = createIncreaseButton(EAST);
|
||||||
decrButton = createDecreaseButton(WEST);
|
decrButton = createDecreaseButton(WEST);
|
||||||
break;
|
break;
|
||||||
|
|
@ -762,12 +765,148 @@ 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()
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -817,6 +956,7 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||||
installComponents();
|
installComponents();
|
||||||
configureScrollBarColors();
|
configureScrollBarColors();
|
||||||
installListeners();
|
installListeners();
|
||||||
|
installKeyboardActions();
|
||||||
|
|
||||||
calculatePreferredSize();
|
calculatePreferredSize();
|
||||||
}
|
}
|
||||||
|
|
@ -1139,16 +1279,6 @@ public class BasicScrollBarUI extends ScrollBarUI implements LayoutManager,
|
||||||
decrButton = null;
|
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.
|
* 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)
|
public void uninstallUI(JComponent c)
|
||||||
{
|
{
|
||||||
|
uninstallKeyboardActions();
|
||||||
uninstallListeners();
|
uninstallListeners();
|
||||||
uninstallDefaults();
|
uninstallDefaults();
|
||||||
uninstallComponents();
|
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.
|
// 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.
|
// This really shouldn't ever happen, but just in case, we'll return the middle.
|
||||||
if (len == 0)
|
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 this isn't a legal value, then we'll have to move to one now.
|
||||||
if (value > max)
|
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.
|
// 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.
|
// This really shouldn't ever happen, but just in case, we'll return the middle.
|
||||||
if (len == 0)
|
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 this isn't a legal value, then we'll have to move to one now.
|
||||||
if (value > max)
|
if (value > max)
|
||||||
|
|
|
||||||
|
|
@ -516,7 +516,7 @@ public class BasicScrollPaneUI extends ScrollPaneUI
|
||||||
{
|
{
|
||||||
map = createActionMap();
|
map = createActionMap();
|
||||||
if (map != null)
|
if (map != null)
|
||||||
UIManager.put("Slider.actionMap", map);
|
UIManager.put("ScrollPane.actionMap", map);
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ import javax.swing.JComponent;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JSlider;
|
import javax.swing.JSlider;
|
||||||
import javax.swing.LookAndFeel;
|
import javax.swing.LookAndFeel;
|
||||||
import javax.swing.RepaintManager;
|
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.Timer;
|
import javax.swing.Timer;
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
|
|
@ -483,9 +482,9 @@ public class BasicSliderUI extends SliderUI
|
||||||
value = valueForYPosition(currentMouseY);
|
value = valueForYPosition(currentMouseY);
|
||||||
|
|
||||||
if (direction == POSITIVE_SCROLL)
|
if (direction == POSITIVE_SCROLL)
|
||||||
return (value > slider.getValue());
|
return value > slider.getValue();
|
||||||
else
|
else
|
||||||
return (value < slider.getValue());
|
return value < slider.getValue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1152,10 +1151,6 @@ public class BasicSliderUI extends SliderUI
|
||||||
Dimension d = getThumbSize();
|
Dimension d = getThumbSize();
|
||||||
thumbRect.width = d.width;
|
thumbRect.width = d.width;
|
||||||
thumbRect.height = d.height;
|
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)
|
if (slider.getOrientation() == JSlider.HORIZONTAL)
|
||||||
{
|
{
|
||||||
thumbRect.x = xPositionForValue(value) - thumbRect.width / 2;
|
thumbRect.x = xPositionForValue(value) - thumbRect.width / 2;
|
||||||
thumbRect.y = trackRect.y;
|
thumbRect.y = trackRect.y + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thumbRect.x = trackRect.x;
|
thumbRect.x = trackRect.x + 1;
|
||||||
thumbRect.y = yPositionForValue(value) - thumbRect.height / 2;
|
thumbRect.y = yPositionForValue(value) - thumbRect.height / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1298,7 +1293,11 @@ public class BasicSliderUI extends SliderUI
|
||||||
tickRect.x = trackRect.x;
|
tickRect.x = trackRect.x;
|
||||||
tickRect.y = trackRect.y + trackRect.height;
|
tickRect.y = trackRect.y + trackRect.height;
|
||||||
tickRect.width = trackRect.width;
|
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)
|
if (tickRect.y + tickRect.height > contentRect.y + contentRect.height)
|
||||||
tickRect.height = contentRect.y + contentRect.height - tickRect.y;
|
tickRect.height = contentRect.y + contentRect.height - tickRect.y;
|
||||||
|
|
@ -1307,34 +1306,56 @@ public class BasicSliderUI extends SliderUI
|
||||||
{
|
{
|
||||||
tickRect.x = trackRect.x + trackRect.width;
|
tickRect.x = trackRect.x + trackRect.width;
|
||||||
tickRect.y = trackRect.y;
|
tickRect.y = trackRect.y;
|
||||||
tickRect.width = (slider.getPaintTicks() ? getTickLength() : 0);
|
tickRect.width = slider.getPaintTicks() ? getTickLength() : 0;
|
||||||
tickRect.height = trackRect.height;
|
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)
|
if (tickRect.x + tickRect.width > contentRect.x + contentRect.width)
|
||||||
tickRect.width = contentRect.x + contentRect.width - tickRect.x;
|
tickRect.width = contentRect.x + contentRect.width - tickRect.x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method calculates the size and position of the labelRect. It must
|
* Calculates the <code>labelRect</code> field, taking into account the
|
||||||
* take into account the orientation of the slider.
|
* orientation of the slider.
|
||||||
*/
|
*/
|
||||||
protected void calculateLabelRect()
|
protected void calculateLabelRect()
|
||||||
{
|
{
|
||||||
if (slider.getOrientation() == JSlider.HORIZONTAL)
|
if (slider.getOrientation() == JSlider.HORIZONTAL)
|
||||||
|
{
|
||||||
|
if (slider.getPaintLabels())
|
||||||
{
|
{
|
||||||
labelRect.x = contentRect.x;
|
labelRect.x = contentRect.x;
|
||||||
labelRect.y = tickRect.y + tickRect.height;
|
labelRect.y = tickRect.y + tickRect.height - 1;
|
||||||
labelRect.width = contentRect.width;
|
labelRect.width = contentRect.width;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
labelRect.x = trackRect.x;
|
||||||
|
labelRect.y = tickRect.y + tickRect.height;
|
||||||
|
labelRect.width = trackRect.width;
|
||||||
|
}
|
||||||
labelRect.height = getHeightOfTallestLabel();
|
labelRect.height = getHeightOfTallestLabel();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
labelRect.x = tickRect.x + tickRect.width;
|
if (slider.getPaintLabels())
|
||||||
|
{
|
||||||
|
labelRect.x = tickRect.x + tickRect.width - 1;
|
||||||
labelRect.y = contentRect.y;
|
labelRect.y = contentRect.y;
|
||||||
labelRect.width = getWidthOfWidestLabel();
|
|
||||||
labelRect.height = contentRect.height;
|
labelRect.height = contentRect.height;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
labelRect.x = tickRect.x + tickRect.width;
|
||||||
|
labelRect.y = trackRect.y;
|
||||||
|
labelRect.height = trackRect.height;
|
||||||
|
}
|
||||||
|
labelRect.width = getWidthOfWidestLabel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1644,7 +1665,7 @@ public class BasicSliderUI extends SliderUI
|
||||||
int width;
|
int width;
|
||||||
int height;
|
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 b = new Point(a);
|
||||||
Point c = new Point(a);
|
Point c = new Point(a);
|
||||||
Point d = 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
|
// is. This really shouldn't ever happen, but just in case, we'll return
|
||||||
// the middle.
|
// the middle.
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return ((max - min) / 2);
|
return (max - min) / 2;
|
||||||
|
|
||||||
if (! drawInverted())
|
if (! drawInverted())
|
||||||
value = ((len - (yPos - trackRect.y)) * (max - min) / len + min);
|
value = (len - (yPos - trackRect.y)) * (max - min) / len + min;
|
||||||
else
|
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 this isn't a legal value, then we'll have to move to one now.
|
||||||
if (value > max)
|
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
|
// is. This really shouldn't ever happen, but just in case, we'll return
|
||||||
// the middle.
|
// the middle.
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return ((max - min) / 2);
|
return (max - min) / 2;
|
||||||
|
|
||||||
if (! drawInverted())
|
if (! drawInverted())
|
||||||
value = ((xPos - trackRect.x) * (max - min) / len + min);
|
value = (xPos - trackRect.x) * (max - min) / len + min;
|
||||||
else
|
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 this isn't a legal value, then we'll have to move to one now.
|
||||||
if (value > max)
|
if (value > max)
|
||||||
|
|
|
||||||
|
|
@ -530,6 +530,20 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||||
|
|
||||||
int tabPlacement = tabPane.getTabPlacement();
|
int tabPlacement = tabPane.getTabPlacement();
|
||||||
Insets insets = tabPane.getInsets();
|
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();
|
int childCount = tabPane.getComponentCount();
|
||||||
if (childCount > 0)
|
if (childCount > 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1410,6 +1424,11 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||||
*/
|
*/
|
||||||
private boolean tabsOpaque;
|
private boolean tabsOpaque;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The currently visible component.
|
||||||
|
*/
|
||||||
|
private Component visibleComponent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new BasicTabbedPaneUI object.
|
* Creates a new BasicTabbedPaneUI object.
|
||||||
*/
|
*/
|
||||||
|
|
@ -2479,7 +2498,7 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||||
*/
|
*/
|
||||||
protected Component getVisibleComponent()
|
protected Component getVisibleComponent()
|
||||||
{
|
{
|
||||||
return tabPane.getComponentAt(tabPane.getSelectedIndex());
|
return visibleComponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -2488,9 +2507,20 @@ public class BasicTabbedPaneUI extends TabbedPaneUI implements SwingConstants
|
||||||
* @param component The component to be set visible.
|
* @param component The component to be set visible.
|
||||||
*/
|
*/
|
||||||
protected void setVisibleComponent(Component component)
|
protected void setVisibleComponent(Component 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);
|
component.setVisible(true);
|
||||||
tabPane.setSelectedComponent(component);
|
}
|
||||||
|
visibleComponent = component;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -249,11 +249,11 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||||
|
|
||||||
originalCursor = header.getCursor();
|
originalCursor = header.getCursor();
|
||||||
if (p < x)
|
if (p < x)
|
||||||
header.setCursor(Cursor.getPredefinedCursor
|
header.setCursor(Cursor.getPredefinedCursor(
|
||||||
(Cursor.W_RESIZE_CURSOR));
|
Cursor.W_RESIZE_CURSOR));
|
||||||
else
|
else
|
||||||
header.setCursor(Cursor.getPredefinedCursor
|
header.setCursor(Cursor.getPredefinedCursor(
|
||||||
(Cursor.E_RESIZE_CURSOR));
|
Cursor.E_RESIZE_CURSOR));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -368,7 +368,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||||
int x = e.getX();
|
int x = e.getX();
|
||||||
int p = 0;
|
int p = 0;
|
||||||
|
|
||||||
int col = model.getColumnCount()-1;
|
int col = model.getColumnCount() - 1;
|
||||||
int n = model.getColumnCount();
|
int n = model.getColumnCount();
|
||||||
|
|
||||||
// This loop does not find the column if the mouse if out of the
|
// 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.setBackground(header.getBackground());
|
||||||
comp.setForeground(header.getForeground());
|
comp.setForeground(header.getForeground());
|
||||||
if (comp instanceof JComponent)
|
if (comp instanceof JComponent)
|
||||||
((JComponent)comp).setBorder(cellBorder);
|
((JComponent) comp).setBorder(cellBorder);
|
||||||
rendererPane.paintComponent(gfx, comp, header, bounds.x, bounds.y,
|
rendererPane.paintComponent(gfx, comp, header, bounds.x, bounds.y,
|
||||||
bounds.width, bounds.height);
|
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
|
// This displays a running rectangle that is much simplier than the total
|
||||||
// animation, as it is seen in Sun's application.
|
// animation, as it is seen in Sun's application.
|
||||||
// TODO animate the collumn dragging like in Sun's jre.
|
// TODO animate the collumn dragging like in Sun's jre.
|
||||||
if (draggingHeaderRect!=null)
|
if (draggingHeaderRect != null)
|
||||||
{
|
{
|
||||||
gfx.setColor(header.getForeground());
|
gfx.setColor(header.getForeground());
|
||||||
gfx.drawRect(draggingHeaderRect.x, draggingHeaderRect.y+2,
|
gfx.drawRect(draggingHeaderRect.x, draggingHeaderRect.y + 2,
|
||||||
draggingHeaderRect.width-1, draggingHeaderRect.height-6);
|
draggingHeaderRect.width - 1, draggingHeaderRect.height - 6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -533,7 +533,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||||
TableColumnModel cmod = header.getColumnModel();
|
TableColumnModel cmod = header.getColumnModel();
|
||||||
TableCellRenderer defaultRend = header.getDefaultRenderer();
|
TableCellRenderer defaultRend = header.getDefaultRenderer();
|
||||||
int ncols = cmod.getColumnCount();
|
int ncols = cmod.getColumnCount();
|
||||||
Dimension ret = new Dimension(0,0);
|
Dimension ret = new Dimension(0, 0);
|
||||||
int spacing = 0;
|
int spacing = 0;
|
||||||
|
|
||||||
if (header.getTable() != null
|
if (header.getTable() != null
|
||||||
|
|
@ -556,7 +556,7 @@ public class BasicTableHeaderUI extends TableHeaderUI
|
||||||
comp.setBackground(header.getBackground());
|
comp.setBackground(header.getBackground());
|
||||||
comp.setForeground(header.getForeground());
|
comp.setForeground(header.getForeground());
|
||||||
if (comp instanceof JComponent)
|
if (comp instanceof JComponent)
|
||||||
((JComponent)comp).setBorder(cellBorder);
|
((JComponent) comp).setBorder(cellBorder);
|
||||||
|
|
||||||
Dimension d = comp.getPreferredSize();
|
Dimension d = comp.getPreferredSize();
|
||||||
ret.width += spacing;
|
ret.width += spacing;
|
||||||
|
|
|
||||||
|
|
@ -269,8 +269,8 @@ public class BasicTableUI extends TableUI
|
||||||
begin = new Point(e.getX(), e.getY());
|
begin = new Point(e.getX(), e.getY());
|
||||||
curr = 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 control is pressed and the cell is already selected, deselect it
|
||||||
if (e.isControlDown() && table.
|
if (e.isControlDown() && table.isCellSelected(
|
||||||
isCellSelected(table.rowAtPoint(begin),table.columnAtPoint(begin)))
|
table.rowAtPoint(begin), table.columnAtPoint(begin)))
|
||||||
{
|
{
|
||||||
table.getSelectionModel().
|
table.getSelectionModel().
|
||||||
removeSelectionInterval(table.rowAtPoint(begin),
|
removeSelectionInterval(table.rowAtPoint(begin),
|
||||||
|
|
@ -467,22 +467,21 @@ public class BasicTableUI extends TableUI
|
||||||
// Register key bindings in the UI InputMap-ActionMap pair
|
// Register key bindings in the UI InputMap-ActionMap pair
|
||||||
for (int i = 0; i < keys.length; i++)
|
for (int i = 0; i < keys.length; i++)
|
||||||
{
|
{
|
||||||
KeyStroke stroke = (KeyStroke)keys[i];
|
KeyStroke stroke = (KeyStroke) keys[i];
|
||||||
String actionString = (String) ancestorMap.get(stroke);
|
String actionString = (String) ancestorMap.get(stroke);
|
||||||
|
|
||||||
parentInputMap.put(KeyStroke.getKeyStroke(stroke.getKeyCode(),
|
parentInputMap.put(KeyStroke.getKeyStroke(stroke.getKeyCode(),
|
||||||
stroke.getModifiers()),
|
stroke.getModifiers()),
|
||||||
actionString);
|
actionString);
|
||||||
|
|
||||||
parentActionMap.put (actionString,
|
parentActionMap.put(actionString,
|
||||||
new ActionListenerProxy (action, actionString));
|
new ActionListenerProxy(action, actionString));
|
||||||
|
|
||||||
}
|
}
|
||||||
// Set the UI InputMap-ActionMap pair to be the parents of the
|
// Set the UI InputMap-ActionMap pair to be the parents of the
|
||||||
// JTable's InputMap-ActionMap pair
|
// JTable's InputMap-ActionMap pair
|
||||||
parentInputMap.setParent
|
parentInputMap.setParent(table.getInputMap(
|
||||||
(table.getInputMap
|
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).getParent());
|
||||||
(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).getParent());
|
|
||||||
parentActionMap.setParent(table.getActionMap().getParent());
|
parentActionMap.setParent(table.getActionMap().getParent());
|
||||||
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
|
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
|
||||||
setParent(parentInputMap);
|
setParent(parentInputMap);
|
||||||
|
|
@ -532,10 +531,12 @@ public class BasicTableUI extends TableUI
|
||||||
*
|
*
|
||||||
* @param e the ActionEvent that caused this action.
|
* @param e the ActionEvent that caused this action.
|
||||||
*/
|
*/
|
||||||
public void actionPerformed (ActionEvent e)
|
public void actionPerformed(ActionEvent e)
|
||||||
{
|
{
|
||||||
DefaultListSelectionModel rowModel = (DefaultListSelectionModel) table.getSelectionModel();
|
DefaultListSelectionModel rowModel
|
||||||
DefaultListSelectionModel colModel = (DefaultListSelectionModel) table.getColumnModel().getSelectionModel();
|
= (DefaultListSelectionModel) table.getSelectionModel();
|
||||||
|
DefaultListSelectionModel colModel
|
||||||
|
= (DefaultListSelectionModel) table.getColumnModel().getSelectionModel();
|
||||||
|
|
||||||
int rowLead = rowModel.getLeadSelectionIndex();
|
int rowLead = rowModel.getLeadSelectionIndex();
|
||||||
int rowMax = table.getModel().getRowCount() - 1;
|
int rowMax = table.getModel().getRowCount() - 1;
|
||||||
|
|
@ -556,7 +557,7 @@ public class BasicTableUI extends TableUI
|
||||||
else if (command.equals("startEditing"))
|
else if (command.equals("startEditing"))
|
||||||
{
|
{
|
||||||
if (table.isCellEditable(rowLead, colLead))
|
if (table.isCellEditable(rowLead, colLead))
|
||||||
table.editCellAt(rowLead,colLead);
|
table.editCellAt(rowLead, colLead);
|
||||||
}
|
}
|
||||||
else if (command.equals("selectFirstRowExtendSelection"))
|
else if (command.equals("selectFirstRowExtendSelection"))
|
||||||
{
|
{
|
||||||
|
|
@ -572,7 +573,7 @@ public class BasicTableUI extends TableUI
|
||||||
}
|
}
|
||||||
else if (command.equals("selectLastRow"))
|
else if (command.equals("selectLastRow"))
|
||||||
{
|
{
|
||||||
rowModel.setSelectionInterval(rowMax,rowMax);
|
rowModel.setSelectionInterval(rowMax, rowMax);
|
||||||
}
|
}
|
||||||
else if (command.equals("selectNextRowExtendSelection"))
|
else if (command.equals("selectNextRowExtendSelection"))
|
||||||
{
|
{
|
||||||
|
|
@ -580,7 +581,7 @@ public class BasicTableUI extends TableUI
|
||||||
}
|
}
|
||||||
else if (command.equals("selectFirstRow"))
|
else if (command.equals("selectFirstRow"))
|
||||||
{
|
{
|
||||||
rowModel.setSelectionInterval(0,0);
|
rowModel.setSelectionInterval(0, 0);
|
||||||
}
|
}
|
||||||
else if (command.equals("selectNextColumnExtendSelection"))
|
else if (command.equals("selectNextColumnExtendSelection"))
|
||||||
{
|
{
|
||||||
|
|
@ -603,9 +604,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (rowLead == getFirstVisibleRowIndex())
|
if (rowLead == getFirstVisibleRowIndex())
|
||||||
target = Math.max
|
target = Math.max(0, rowLead - (getLastVisibleRowIndex()
|
||||||
(0, rowLead - (getLastVisibleRowIndex() -
|
- getFirstVisibleRowIndex() + 1));
|
||||||
getFirstVisibleRowIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getFirstVisibleRowIndex();
|
target = getFirstVisibleRowIndex();
|
||||||
|
|
||||||
|
|
@ -621,9 +621,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (colLead == getLastVisibleColumnIndex())
|
if (colLead == getLastVisibleColumnIndex())
|
||||||
target = Math.min
|
target = Math.min(colMax, colLead + (getLastVisibleColumnIndex()
|
||||||
(colMax, colLead + (getLastVisibleColumnIndex() -
|
- getFirstVisibleColumnIndex() + 1));
|
||||||
getFirstVisibleColumnIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getLastVisibleColumnIndex();
|
target = getLastVisibleColumnIndex();
|
||||||
|
|
||||||
|
|
@ -639,9 +638,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (colLead == getFirstVisibleColumnIndex())
|
if (colLead == getFirstVisibleColumnIndex())
|
||||||
target = Math.max
|
target = Math.max(0, colLead - (getLastVisibleColumnIndex()
|
||||||
(0, colLead - (getLastVisibleColumnIndex() -
|
- getFirstVisibleColumnIndex() + 1));
|
||||||
getFirstVisibleColumnIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getFirstVisibleColumnIndex();
|
target = getFirstVisibleColumnIndex();
|
||||||
|
|
||||||
|
|
@ -701,12 +699,10 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
if (command.indexOf("Column") != -1)
|
if (command.indexOf("Column") != -1)
|
||||||
advanceSingleSelection(colModel, colMax, rowModel, rowMax,
|
advanceSingleSelection(colModel, colMax, rowModel, rowMax,
|
||||||
(command.equals
|
command.equals("selectPreviousColumnCell"));
|
||||||
("selectPreviousColumnCell")));
|
|
||||||
else
|
else
|
||||||
advanceSingleSelection(rowModel, rowMax, colModel, colMax,
|
advanceSingleSelection(rowModel, rowMax, colModel, colMax,
|
||||||
(command.equals
|
command.equals("selectPreviousRowCell"));
|
||||||
("selectPreviousRowCell")));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -729,14 +725,12 @@ public class BasicTableUI extends TableUI
|
||||||
if (command.indexOf("Column") != -1)
|
if (command.indexOf("Column") != -1)
|
||||||
advanceMultipleSelection(colModel, colMinSelected, colMaxSelected,
|
advanceMultipleSelection(colModel, colMinSelected, colMaxSelected,
|
||||||
rowModel, rowMinSelected, rowMaxSelected,
|
rowModel, rowMinSelected, rowMaxSelected,
|
||||||
(command.equals
|
command.equals("selectPreviousColumnCell"), true);
|
||||||
("selectPreviousColumnCell")), true);
|
|
||||||
|
|
||||||
else
|
else
|
||||||
advanceMultipleSelection(rowModel, rowMinSelected, rowMaxSelected,
|
advanceMultipleSelection(rowModel, rowMinSelected, rowMaxSelected,
|
||||||
colModel, colMinSelected, colMaxSelected,
|
colModel, colMinSelected, colMaxSelected,
|
||||||
(command.equals
|
command.equals("selectPreviousRowCell"), false);
|
||||||
("selectPreviousRowCell")), false);
|
|
||||||
}
|
}
|
||||||
else if (command.equals("selectNextColumn"))
|
else if (command.equals("selectNextColumn"))
|
||||||
{
|
{
|
||||||
|
|
@ -747,9 +741,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (colLead == getFirstVisibleColumnIndex())
|
if (colLead == getFirstVisibleColumnIndex())
|
||||||
target = Math.max
|
target = Math.max(0, colLead - (getLastVisibleColumnIndex()
|
||||||
(0, colLead - (getLastVisibleColumnIndex() -
|
- getFirstVisibleColumnIndex() + 1));
|
||||||
getFirstVisibleColumnIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getFirstVisibleColumnIndex();
|
target = getFirstVisibleColumnIndex();
|
||||||
|
|
||||||
|
|
@ -760,9 +753,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (rowLead == getLastVisibleRowIndex())
|
if (rowLead == getLastVisibleRowIndex())
|
||||||
target = Math.min
|
target = Math.min(rowMax, rowLead + (getLastVisibleRowIndex()
|
||||||
(rowMax, rowLead + (getLastVisibleRowIndex() -
|
- getFirstVisibleRowIndex() + 1));
|
||||||
getFirstVisibleRowIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getLastVisibleRowIndex();
|
target = getLastVisibleRowIndex();
|
||||||
|
|
||||||
|
|
@ -773,9 +765,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (colLead == getLastVisibleColumnIndex())
|
if (colLead == getLastVisibleColumnIndex())
|
||||||
target = Math.min
|
target = Math.min(colMax, colLead + (getLastVisibleColumnIndex()
|
||||||
(colMax, colLead + (getLastVisibleColumnIndex() -
|
- getFirstVisibleColumnIndex() + 1));
|
||||||
getFirstVisibleColumnIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getLastVisibleColumnIndex();
|
target = getLastVisibleColumnIndex();
|
||||||
|
|
||||||
|
|
@ -795,9 +786,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (rowLead == getLastVisibleRowIndex())
|
if (rowLead == getLastVisibleRowIndex())
|
||||||
target = Math.min
|
target = Math.min(rowMax, rowLead + (getLastVisibleRowIndex()
|
||||||
(rowMax, rowLead + (getLastVisibleRowIndex() -
|
- getFirstVisibleRowIndex() + 1));
|
||||||
getFirstVisibleRowIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getLastVisibleRowIndex();
|
target = getLastVisibleRowIndex();
|
||||||
|
|
||||||
|
|
@ -808,9 +798,8 @@ public class BasicTableUI extends TableUI
|
||||||
{
|
{
|
||||||
int target;
|
int target;
|
||||||
if (rowLead == getFirstVisibleRowIndex())
|
if (rowLead == getFirstVisibleRowIndex())
|
||||||
target = Math.max
|
target = Math.max(0, rowLead - (getLastVisibleRowIndex()
|
||||||
(0, rowLead - (getLastVisibleRowIndex() -
|
- getFirstVisibleRowIndex() + 1));
|
||||||
getFirstVisibleRowIndex() + 1));
|
|
||||||
else
|
else
|
||||||
target = getFirstVisibleRowIndex();
|
target = getFirstVisibleRowIndex();
|
||||||
|
|
||||||
|
|
@ -819,34 +808,37 @@ public class BasicTableUI extends TableUI
|
||||||
}
|
}
|
||||||
else if (command.equals("selectNextRowChangeLead"))
|
else if (command.equals("selectNextRowChangeLead"))
|
||||||
{
|
{
|
||||||
if (rowModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
if (rowModel.getSelectionMode()
|
||||||
|
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||||
{
|
{
|
||||||
// just "selectNextRow"
|
// just "selectNextRow"
|
||||||
rowModel.setSelectionInterval(Math.min(rowLead + 1, rowMax),
|
rowModel.setSelectionInterval(Math.min(rowLead + 1, rowMax),
|
||||||
Math.min(rowLead + 1, rowMax));
|
Math.min(rowLead + 1, rowMax));
|
||||||
colModel.setSelectionInterval(colLead,colLead);
|
colModel.setSelectionInterval(colLead, colLead);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
rowModel.moveLeadSelectionIndex(Math.min(rowLead + 1, rowMax));
|
rowModel.moveLeadSelectionIndex(Math.min(rowLead + 1, rowMax));
|
||||||
}
|
}
|
||||||
else if (command.equals("selectPreviousRowChangeLead"))
|
else if (command.equals("selectPreviousRowChangeLead"))
|
||||||
{
|
{
|
||||||
if (rowModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
if (rowModel.getSelectionMode()
|
||||||
|
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||||
{
|
{
|
||||||
// just selectPreviousRow
|
// just selectPreviousRow
|
||||||
rowModel.setSelectionInterval(Math.max(rowLead - 1, 0),
|
rowModel.setSelectionInterval(Math.max(rowLead - 1, 0),
|
||||||
Math.min(rowLead -1, 0));
|
Math.min(rowLead - 1, 0));
|
||||||
colModel.setSelectionInterval(colLead,colLead);
|
colModel.setSelectionInterval(colLead, colLead);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
rowModel.moveLeadSelectionIndex(Math.max(rowLead - 1, 0));
|
rowModel.moveLeadSelectionIndex(Math.max(rowLead - 1, 0));
|
||||||
}
|
}
|
||||||
else if (command.equals("selectNextColumnChangeLead"))
|
else if (command.equals("selectNextColumnChangeLead"))
|
||||||
{
|
{
|
||||||
if (colModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
if (colModel.getSelectionMode()
|
||||||
|
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||||
{
|
{
|
||||||
// just selectNextColumn
|
// just selectNextColumn
|
||||||
rowModel.setSelectionInterval(rowLead,rowLead);
|
rowModel.setSelectionInterval(rowLead, rowLead);
|
||||||
colModel.setSelectionInterval(Math.min(colLead + 1, colMax),
|
colModel.setSelectionInterval(Math.min(colLead + 1, colMax),
|
||||||
Math.min(colLead + 1, colMax));
|
Math.min(colLead + 1, colMax));
|
||||||
}
|
}
|
||||||
|
|
@ -855,10 +847,11 @@ public class BasicTableUI extends TableUI
|
||||||
}
|
}
|
||||||
else if (command.equals("selectPreviousColumnChangeLead"))
|
else if (command.equals("selectPreviousColumnChangeLead"))
|
||||||
{
|
{
|
||||||
if (colModel.getSelectionMode() != ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
if (colModel.getSelectionMode()
|
||||||
|
!= ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
|
||||||
{
|
{
|
||||||
// just selectPreviousColumn
|
// just selectPreviousColumn
|
||||||
rowModel.setSelectionInterval(rowLead,rowLead);
|
rowModel.setSelectionInterval(rowLead, rowLead);
|
||||||
colModel.setSelectionInterval(Math.max(colLead - 1, 0),
|
colModel.setSelectionInterval(Math.max(colLead - 1, 0),
|
||||||
Math.max(colLead - 1, 0));
|
Math.max(colLead - 1, 0));
|
||||||
|
|
||||||
|
|
@ -924,9 +917,9 @@ public class BasicTableUI extends TableUI
|
||||||
&& command != "addToSelection")
|
&& command != "addToSelection")
|
||||||
table.editingStopped(new ChangeEvent("update"));
|
table.editingStopped(new ChangeEvent("update"));
|
||||||
|
|
||||||
table.scrollRectToVisible
|
table.scrollRectToVisible(table.getCellRect(
|
||||||
(table.getCellRect(rowModel.getLeadSelectionIndex(),
|
rowModel.getLeadSelectionIndex(), colModel.getLeadSelectionIndex(),
|
||||||
colModel.getLeadSelectionIndex(), false));
|
false));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1010,13 +1003,13 @@ public class BasicTableUI extends TableUI
|
||||||
* @param reverse true if shift was held for the event
|
* @param reverse true if shift was held for the event
|
||||||
* @param eventIsTab true if TAB was pressed, false if ENTER pressed
|
* @param eventIsTab true if TAB was pressed, false if ENTER pressed
|
||||||
*/
|
*/
|
||||||
void advanceMultipleSelection (ListSelectionModel firstModel, int firstMin,
|
void advanceMultipleSelection(ListSelectionModel firstModel, int firstMin,
|
||||||
int firstMax, ListSelectionModel secondModel,
|
int firstMax, ListSelectionModel secondModel,
|
||||||
int secondMin, int secondMax, boolean reverse,
|
int secondMin, int secondMax, boolean reverse,
|
||||||
boolean eventIsTab)
|
boolean eventIsTab)
|
||||||
{
|
{
|
||||||
// If eventIsTab, all the "firsts" correspond to columns, otherwise, to rows
|
// If eventIsTab, all the "firsts" correspond to columns, otherwise, to
|
||||||
// "seconds" correspond to the opposite
|
// rows "seconds" correspond to the opposite
|
||||||
int firstLead = firstModel.getLeadSelectionIndex();
|
int firstLead = firstModel.getLeadSelectionIndex();
|
||||||
int secondLead = secondModel.getLeadSelectionIndex();
|
int secondLead = secondModel.getLeadSelectionIndex();
|
||||||
int numFirsts = eventIsTab ?
|
int numFirsts = eventIsTab ?
|
||||||
|
|
@ -1115,7 +1108,7 @@ public class BasicTableUI extends TableUI
|
||||||
* @param reverse true if SHIFT was pressed for the event
|
* @param reverse true if SHIFT was pressed for the event
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void advanceSingleSelection (ListSelectionModel firstModel, int firstMax,
|
void advanceSingleSelection(ListSelectionModel firstModel, int firstMax,
|
||||||
ListSelectionModel secondModel, int secondMax,
|
ListSelectionModel secondModel, int secondMax,
|
||||||
boolean reverse)
|
boolean reverse)
|
||||||
{
|
{
|
||||||
|
|
@ -1136,8 +1129,8 @@ public class BasicTableUI extends TableUI
|
||||||
|
|
||||||
// do we have to wrap the "seconds"?
|
// do we have to wrap the "seconds"?
|
||||||
if (reverse && (firstLead == 0) || !reverse && (firstLead == firstMax))
|
if (reverse && (firstLead == 0) || !reverse && (firstLead == firstMax))
|
||||||
secondModel.setSelectionInterval((secondLead + 1)%(secondMax + 1),
|
secondModel.setSelectionInterval((secondLead + 1) % (secondMax + 1),
|
||||||
(secondLead + 1)%(secondMax + 1));
|
(secondLead + 1) % (secondMax + 1));
|
||||||
// if not, just reselect the current lead
|
// if not, just reselect the current lead
|
||||||
else
|
else
|
||||||
secondModel.setSelectionInterval(secondLead, secondLead);
|
secondModel.setSelectionInterval(secondLead, secondLead);
|
||||||
|
|
@ -1152,8 +1145,8 @@ public class BasicTableUI extends TableUI
|
||||||
firstLead -= 2;
|
firstLead -= 2;
|
||||||
}
|
}
|
||||||
// select the next "first"
|
// select the next "first"
|
||||||
firstModel.setSelectionInterval ((firstLead + 1)%(firstMax + 1),
|
firstModel.setSelectionInterval((firstLead + 1) % (firstMax + 1),
|
||||||
(firstLead + 1)%(firstMax + 1));
|
(firstLead + 1) % (firstMax + 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1212,7 +1205,7 @@ public class BasicTableUI extends TableUI
|
||||||
|
|
||||||
public void installUI(JComponent comp)
|
public void installUI(JComponent comp)
|
||||||
{
|
{
|
||||||
table = (JTable)comp;
|
table = (JTable) comp;
|
||||||
rendererPane = new CellRendererPane();
|
rendererPane = new CellRendererPane();
|
||||||
table.add(rendererPane);
|
table.add(rendererPane);
|
||||||
|
|
||||||
|
|
@ -1282,8 +1275,8 @@ public class BasicTableUI extends TableUI
|
||||||
int rowMargin = table.getRowMargin();
|
int rowMargin = table.getRowMargin();
|
||||||
|
|
||||||
TableColumnModel cmodel = table.getColumnModel();
|
TableColumnModel cmodel = table.getColumnModel();
|
||||||
int [] widths = new int[cn+1];
|
int[] widths = new int[cn + 1];
|
||||||
for (int i = c0; i <=cn ; i++)
|
for (int i = c0; i <= cn; i++)
|
||||||
{
|
{
|
||||||
widths[i] = cmodel.getColumn(i).getWidth() - columnMargin;
|
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.
|
// Fetch the colors for enabled/disabled text components.
|
||||||
background = UIManager.getColor(prefix + ".background");
|
background = UIManager.getColor(prefix + ".background");
|
||||||
inactiveBackground = UIManager.getColor(prefix + ".inactiveBackground");
|
inactiveBackground = UIManager.getColor(prefix + ".inactiveBackground");
|
||||||
textComponent.setDisabledTextColor
|
textComponent.setDisabledTextColor(UIManager.getColor(prefix
|
||||||
(UIManager.getColor(prefix + ".inactiveForeground"));
|
+ ".inactiveForeground"));
|
||||||
textComponent.setSelectedTextColor(UIManager.getColor(prefix + ".selectionForeground"));
|
textComponent.setSelectedTextColor(UIManager.getColor(prefix
|
||||||
textComponent.setSelectionColor(UIManager.getColor(prefix + ".selectionBackground"));
|
+ ".selectionForeground"));
|
||||||
|
textComponent.setSelectionColor(UIManager.getColor(prefix
|
||||||
|
+ ".selectionBackground"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -639,7 +641,8 @@ public abstract class BasicTextUI extends TextUI
|
||||||
Clipboard cb = Toolkit.getDefaultToolkit().getSystemSelection();
|
Clipboard cb = Toolkit.getDefaultToolkit().getSystemSelection();
|
||||||
if (cb != null)
|
if (cb != null)
|
||||||
{
|
{
|
||||||
StringSelection selection = new StringSelection(textComponent.getSelectedText());
|
StringSelection selection = new StringSelection(
|
||||||
|
textComponent.getSelectedText());
|
||||||
cb.setContents(selection, selection);
|
cb.setContents(selection, selection);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -853,7 +856,8 @@ public abstract class BasicTextUI extends TextUI
|
||||||
*/
|
*/
|
||||||
protected void uninstallKeyboardActions()
|
protected void uninstallKeyboardActions()
|
||||||
{
|
{
|
||||||
SwingUtilities.replaceUIInputMap(textComponent, JComponent.WHEN_FOCUSED, null);
|
SwingUtilities.replaceUIInputMap(textComponent, JComponent.WHEN_FOCUSED,
|
||||||
|
null);
|
||||||
SwingUtilities.replaceUIActionMap(textComponent, null);
|
SwingUtilities.replaceUIActionMap(textComponent, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1114,13 +1118,14 @@ public abstract class BasicTextUI extends TextUI
|
||||||
&& Utilities.getRowStart(t, nextPosBelow) != p1RowStart)
|
&& Utilities.getRowStart(t, nextPosBelow) != p1RowStart)
|
||||||
{
|
{
|
||||||
posBelow = nextPosBelow;
|
posBelow = nextPosBelow;
|
||||||
nextPosBelow = Utilities.getPositionBelow(t, posBelow, l1.x);
|
nextPosBelow = Utilities.getPositionBelow(t, posBelow,
|
||||||
|
l1.x);
|
||||||
|
|
||||||
if (posBelow == nextPosBelow)
|
if (posBelow == nextPosBelow)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Now posBelow is an offset on the last line which has to be damaged
|
// Now posBelow is an offset on the last line which has to be
|
||||||
// completely. (newPosBelow is on the same line as p1)
|
// damaged completely. (newPosBelow is on the same line as p1)
|
||||||
|
|
||||||
// Retrieve the rectangle of posBelow and use its y and height
|
// Retrieve the rectangle of posBelow and use its y and height
|
||||||
// value to calculate the final height of the multiple line
|
// 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 w = 0;
|
||||||
int h = 0;
|
int h = 0;
|
||||||
|
|
||||||
boolean tmp = ((loc == SwingConstants.NORTH)
|
boolean tmp = (loc == SwingConstants.NORTH)
|
||||||
|| (loc == SwingConstants.SOUTH) || (loc == -1));
|
|| (loc == SwingConstants.SOUTH) || (loc == -1);
|
||||||
|
|
||||||
cachedOrientation = toolBar.getOrientation();
|
cachedOrientation = toolBar.getOrientation();
|
||||||
cachedBounds = toolBar.getSize();
|
cachedBounds = toolBar.getSize();
|
||||||
|
|
@ -1084,7 +1084,8 @@ public class BasicToolBarUI extends ToolBarUI implements SwingConstants
|
||||||
isDragging = true;
|
isDragging = true;
|
||||||
|
|
||||||
if (dragWindow != null)
|
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);
|
dragTo(e.getPoint(), origin);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -248,7 +248,7 @@ public class BasicTreeUI
|
||||||
int gap = 4;
|
int gap = 4;
|
||||||
|
|
||||||
/** The max height of the nodes in the tree. */
|
/** The max height of the nodes in the tree. */
|
||||||
int maxHeight = 0;
|
int maxHeight;
|
||||||
|
|
||||||
/** The hash color. */
|
/** The hash color. */
|
||||||
Color hashColor;
|
Color hashColor;
|
||||||
|
|
@ -1129,7 +1129,7 @@ public class BasicTreeUI
|
||||||
{
|
{
|
||||||
Enumeration expanded = tree.getExpandedDescendants(path);
|
Enumeration expanded = tree.getExpandedDescendants(path);
|
||||||
while (expanded.hasMoreElements())
|
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)
|
protected TreePath getLastChildPath(TreePath parent)
|
||||||
{
|
{
|
||||||
return ((TreePath) parent.getLastPathComponent());
|
return (TreePath) parent.getLastPathComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1295,21 +1295,21 @@ public class BasicTreeUI
|
||||||
ActionMapUIResource am = new ActionMapUIResource();
|
ActionMapUIResource am = new ActionMapUIResource();
|
||||||
Action action;
|
Action action;
|
||||||
|
|
||||||
action= new TreeAction();
|
action = new TreeAction();
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
|
|
||||||
// TreeHomeAction.
|
// TreeHomeAction.
|
||||||
action= new TreeHomeAction(-1, "selectFirst");
|
action = new TreeHomeAction(-1, "selectFirst");
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
action= new TreeHomeAction(-1, "selectFirstChangeLead");
|
action = new TreeHomeAction(-1, "selectFirstChangeLead");
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
action= new TreeHomeAction(-1, "selectFirstExtendSelection");
|
action = new TreeHomeAction(-1, "selectFirstExtendSelection");
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
action= new TreeHomeAction(1, "selectLast");
|
action = new TreeHomeAction(1, "selectLast");
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
action= new TreeHomeAction(1, "selectLastChangeLead");
|
action = new TreeHomeAction(1, "selectLastChangeLead");
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
action= new TreeHomeAction(1, "selectLastExtendSelection");
|
action = new TreeHomeAction(1, "selectLastExtendSelection");
|
||||||
am.put(action.getValue(Action.NAME), action);
|
am.put(action.getValue(Action.NAME), action);
|
||||||
|
|
||||||
// TreeIncrementAction.
|
// TreeIncrementAction.
|
||||||
|
|
@ -1414,8 +1414,8 @@ public class BasicTreeUI
|
||||||
if (treeSelectionModel != null
|
if (treeSelectionModel != null
|
||||||
&& selectionModelPropertyChangeListener != null)
|
&& selectionModelPropertyChangeListener != null)
|
||||||
{
|
{
|
||||||
treeSelectionModel.addPropertyChangeListener
|
treeSelectionModel.addPropertyChangeListener(
|
||||||
(selectionModelPropertyChangeListener);
|
selectionModelPropertyChangeListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentListener = createComponentListener();
|
componentListener = createComponentListener();
|
||||||
|
|
@ -1819,7 +1819,7 @@ public class BasicTreeUI
|
||||||
|
|
||||||
Insets i = tree.getInsets();
|
Insets i = tree.getInsets();
|
||||||
int left = getRowX(tree.getRowForPath(path), path.getPathCount() - 1)
|
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;
|
cntlClick = mouseX >= left && mouseX <= left + width;
|
||||||
}
|
}
|
||||||
return cntlClick;
|
return cntlClick;
|
||||||
|
|
@ -2207,7 +2207,7 @@ public class BasicTreeUI
|
||||||
{
|
{
|
||||||
cancelEditing(tree);
|
cancelEditing(tree);
|
||||||
}
|
}
|
||||||
}// CellEditorHandler
|
} // CellEditorHandler
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repaints the lead selection row when focus is lost/grained.
|
* Repaints the lead selection row when focus is lost/grained.
|
||||||
|
|
@ -2255,7 +2255,7 @@ public class BasicTreeUI
|
||||||
void repaintLeadRow()
|
void repaintLeadRow()
|
||||||
{
|
{
|
||||||
TreePath lead = tree.getLeadSelectionPath();
|
TreePath lead = tree.getLeadSelectionPath();
|
||||||
if (lead!=null)
|
if (lead != null)
|
||||||
tree.repaint(tree.getPathBounds(lead));
|
tree.repaint(tree.getPathBounds(lead));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2588,7 +2588,7 @@ public class BasicTreeUI
|
||||||
{
|
{
|
||||||
return BasicTreeUI.this.getRowX(row, depth);
|
return BasicTreeUI.this.getRowX(row, depth);
|
||||||
}
|
}
|
||||||
}// NodeDimensionsHandler
|
} // NodeDimensionsHandler
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PropertyChangeListener for the tree. Updates the appropriate variable, or
|
* PropertyChangeListener for the tree. Updates the appropriate variable, or
|
||||||
|
|
@ -2742,7 +2742,7 @@ public class BasicTreeUI
|
||||||
tree.revalidate();
|
tree.revalidate();
|
||||||
tree.repaint();
|
tree.repaint();
|
||||||
}
|
}
|
||||||
}// TreeExpansionHandler
|
} // TreeExpansionHandler
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TreeHomeAction is used to handle end/home actions. Scrolls either the first
|
* TreeHomeAction is used to handle end/home actions. Scrolls either the first
|
||||||
|
|
@ -3040,7 +3040,7 @@ public class BasicTreeUI
|
||||||
treeState.treeStructureChanged(e);
|
treeState.treeStructureChanged(e);
|
||||||
tree.repaint();
|
tree.repaint();
|
||||||
}
|
}
|
||||||
}// TreeModelHandler
|
} // TreeModelHandler
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TreePageAction handles page up and page down events.
|
* TreePageAction handles page up and page down events.
|
||||||
|
|
@ -3125,7 +3125,7 @@ public class BasicTreeUI
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
newVisible.y -= (visible.height - newVisible.height);
|
newVisible.y -= visible.height - newVisible.height;
|
||||||
newVisible.height = visible.height;
|
newVisible.height = visible.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3169,7 +3169,7 @@ public class BasicTreeUI
|
||||||
{
|
{
|
||||||
return (tree != null) && tree.isEnabled();
|
return (tree != null) && tree.isEnabled();
|
||||||
}
|
}
|
||||||
}// TreePageAction
|
} // TreePageAction
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Listens for changes in the selection model and updates the display
|
* Listens for changes in the selection model and updates the display
|
||||||
|
|
@ -3208,13 +3208,13 @@ public class BasicTreeUI
|
||||||
Rectangle n = treeState.getBounds(event.getNewLeadSelectionPath(),
|
Rectangle n = treeState.getBounds(event.getNewLeadSelectionPath(),
|
||||||
new Rectangle());
|
new Rectangle());
|
||||||
|
|
||||||
if (o!=null)
|
if (o != null)
|
||||||
tree.repaint(o);
|
tree.repaint(o);
|
||||||
if (n!=null)
|
if (n != null)
|
||||||
tree.repaint(n);
|
tree.repaint(n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}// TreeSelectionHandler
|
} // TreeSelectionHandler
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For the first selected row expandedness will be toggled.
|
* For the first selected row expandedness will be toggled.
|
||||||
|
|
@ -3315,7 +3315,7 @@ public class BasicTreeUI
|
||||||
// is not visible.
|
// is not visible.
|
||||||
TreePath parent = current.getParentPath();
|
TreePath parent = current.getParentPath();
|
||||||
if (parent != null &&
|
if (parent != null &&
|
||||||
!(parent.getPathCount()==1 && !tree.isRootVisible()) )
|
! (parent.getPathCount() == 1 && ! tree.isRootVisible()))
|
||||||
tree.setSelectionPath(parent);
|
tree.setSelectionPath(parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3647,7 +3647,7 @@ public class BasicTreeUI
|
||||||
if (parent != null)
|
if (parent != null)
|
||||||
{
|
{
|
||||||
Rectangle parentBounds = getPathBounds(tree, parent);
|
Rectangle parentBounds = getPathBounds(tree, parent);
|
||||||
paintVerticalLine(g, tree, parentBounds.x + 2* gap,
|
paintVerticalLine(g, tree, parentBounds.x + 2 * gap,
|
||||||
parentBounds.y + parentBounds.height / 2,
|
parentBounds.y + parentBounds.height / 2,
|
||||||
bounds.y + bounds.height / 2);
|
bounds.y + bounds.height / 2);
|
||||||
}
|
}
|
||||||
|
|
@ -3717,7 +3717,7 @@ public class BasicTreeUI
|
||||||
boolean isLeaf)
|
boolean isLeaf)
|
||||||
{
|
{
|
||||||
Object node = path.getLastPathComponent();
|
Object node = path.getLastPathComponent();
|
||||||
return (! isLeaf && hasControlIcons());
|
return ! isLeaf && hasControlIcons();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ exception statement from your version. */
|
||||||
package javax.swing.plaf.metal;
|
package javax.swing.plaf.metal;
|
||||||
|
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Container;
|
import java.awt.Component;
|
||||||
import java.awt.Font;
|
import java.awt.Font;
|
||||||
import java.awt.FontMetrics;
|
import java.awt.FontMetrics;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
|
@ -51,7 +51,6 @@ import javax.swing.JButton;
|
||||||
import javax.swing.JComponent;
|
import javax.swing.JComponent;
|
||||||
import javax.swing.JToolBar;
|
import javax.swing.JToolBar;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.SwingUtilities;
|
|
||||||
import javax.swing.UIManager;
|
import javax.swing.UIManager;
|
||||||
import javax.swing.plaf.ComponentUI;
|
import javax.swing.plaf.ComponentUI;
|
||||||
import javax.swing.plaf.UIResource;
|
import javax.swing.plaf.UIResource;
|
||||||
|
|
@ -240,63 +239,61 @@ public class MetalButtonUI
|
||||||
public void update(Graphics g, JComponent c)
|
public void update(Graphics g, JComponent c)
|
||||||
{
|
{
|
||||||
AbstractButton b = (AbstractButton) c;
|
AbstractButton b = (AbstractButton) c;
|
||||||
if (b.isContentAreaFilled()
|
if ((b.getBackground() instanceof UIResource)
|
||||||
&& (UIManager.get(getPropertyPrefix() + "gradient") != null)
|
&& b.isContentAreaFilled() && b.isEnabled())
|
||||||
&& b.isEnabled()
|
{
|
||||||
&& (b.getBackground() instanceof UIResource))
|
ButtonModel m = b.getModel();
|
||||||
updateWidthGradient(g, b, b.getParent());
|
String uiKey = "Button.gradient";
|
||||||
else
|
if (! isToolbarButton(b))
|
||||||
|
{
|
||||||
|
if (! m.isArmed() && ! m.isPressed() && isDrawingGradient(uiKey))
|
||||||
|
{
|
||||||
|
MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
|
||||||
|
SwingConstants.VERTICAL,
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Fallback if we didn't have any of the two above cases.
|
||||||
super.update(g, c);
|
super.update(g, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateWidthGradient(Graphics g, AbstractButton b, Container parent)
|
/**
|
||||||
|
* 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)
|
||||||
{
|
{
|
||||||
ButtonModel m = b.getModel();
|
Component parent = b.getParent();
|
||||||
String gradientPropertyName = getPropertyPrefix() + "gradient";
|
return parent instanceof JToolBar;
|
||||||
|
|
||||||
// Gradient painting behavior depends on whether the button is part of a
|
|
||||||
// JToolBar.
|
|
||||||
if (parent instanceof JToolBar)
|
|
||||||
{
|
|
||||||
if (! m.isPressed() && ! m.isArmed())
|
|
||||||
{
|
|
||||||
if (m.isRollover())
|
|
||||||
{
|
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
/**
|
||||||
else if (! m.isPressed() && ! m.isArmed())
|
* 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)
|
||||||
{
|
{
|
||||||
// When the button is not part of a JToolBar just paint itself with a
|
return (UIManager.get(uiKey) != null);
|
||||||
// gradient and everything is fine.
|
|
||||||
MetalUtils.paintGradient(g, 0, 0, b.getWidth(), b.getHeight(),
|
|
||||||
SwingConstants.VERTICAL,
|
|
||||||
gradientPropertyName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
paint(g, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -967,7 +967,7 @@ public class MetalIconFactory implements Serializable
|
||||||
* This mask is used to paint the gradient in the shape of the thumb.
|
* 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},
|
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},
|
{2, 10}, {3, 9}, {4, 8}, {5, 7},
|
||||||
{6, 6}};
|
{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.
|
* 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},
|
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},
|
{2, 10}, {3, 9}, {4, 8}, {5, 7},
|
||||||
{6, 6}};
|
{6, 6}};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1053,14 +1053,6 @@ public class DefaultStyledDocument extends AbstractDocument implements
|
||||||
|
|
||||||
Edit edit = getEditForParagraphAndIndex(paragraph, index);
|
Edit edit = getEditForParagraphAndIndex(paragraph, index);
|
||||||
edit.addAddedElement(leaf);
|
edit.addAddedElement(leaf);
|
||||||
|
|
||||||
if (end != toRec.getEndOffset())
|
|
||||||
{
|
|
||||||
recreateLeaves(end, toRec, onlyContent);
|
|
||||||
|
|
||||||
if (onlyContent)
|
|
||||||
edit.addRemovedElement(target);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
paragraph.replace(0, 0, new Element[] { leaf });
|
paragraph.replace(0, 0, new Element[] { leaf });
|
||||||
|
|
|
||||||
|
|
@ -918,7 +918,7 @@ public class GapContent
|
||||||
int mid = 0;
|
int mid = 0;
|
||||||
while (low <= hi)
|
while (low <= hi)
|
||||||
{
|
{
|
||||||
mid = (low + hi) >> 1;
|
mid = (low + hi) >>> 1;
|
||||||
final int d = a[mid];
|
final int d = a[mid];
|
||||||
if (d == key)
|
if (d == key)
|
||||||
return mid;
|
return mid;
|
||||||
|
|
|
||||||
|
|
@ -39,13 +39,15 @@ exception statement from your version. */
|
||||||
package javax.swing.text.html;
|
package javax.swing.text.html;
|
||||||
|
|
||||||
import gnu.classpath.NotImplementedException;
|
import gnu.classpath.NotImplementedException;
|
||||||
|
|
||||||
import gnu.javax.swing.text.html.CharacterAttributeTranslator;
|
import gnu.javax.swing.text.html.CharacterAttributeTranslator;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import javax.swing.JEditorPane;
|
||||||
import javax.swing.text.AbstractDocument;
|
import javax.swing.text.AbstractDocument;
|
||||||
import javax.swing.text.AttributeSet;
|
import javax.swing.text.AttributeSet;
|
||||||
import javax.swing.text.BadLocationException;
|
import javax.swing.text.BadLocationException;
|
||||||
|
|
@ -59,9 +61,15 @@ import javax.swing.text.StyleConstants;
|
||||||
import javax.swing.text.html.HTML.Tag;
|
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 Anthony Balkissoon (abalkiss@redhat.com)
|
||||||
* @author Lillian Angel (langel@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
|
* This method is called when a start tag is seen for one of the types
|
||||||
* of tags associated with this Action.
|
* of tags associated with this Action.
|
||||||
*/
|
*/
|
||||||
public void start(HTML.Tag t, MutableAttributeSet a)
|
public void start(HTML.Tag t, MutableAttributeSet a)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
// FIXME: Implement.
|
blockOpen(t, a);
|
||||||
print ("HiddenAction.start not implemented");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -658,10 +674,8 @@ public class HTMLDocument extends DefaultStyledDocument
|
||||||
* with this Action.
|
* with this Action.
|
||||||
*/
|
*/
|
||||||
public void end(HTML.Tag t)
|
public void end(HTML.Tag t)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
// FIXME: Implement.
|
blockClose(t);
|
||||||
print ("HiddenAction.end not implemented");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -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
|
public class SpecialAction extends TagAction
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* This method is called when a start tag is seen for one of the types
|
* The functionality is delegated to {@link HTMLReader#addSpecialElement}
|
||||||
* of tags associated with this Action.
|
|
||||||
*/
|
*/
|
||||||
public void start(HTML.Tag t, MutableAttributeSet a)
|
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
|
* @param a the attribute set specifying the special content
|
||||||
*/
|
*/
|
||||||
protected void addSpecialElement(HTML.Tag t, MutableAttributeSet a)
|
protected void addSpecialElement(HTML.Tag t, MutableAttributeSet a)
|
||||||
throws NotImplementedException
|
|
||||||
{
|
{
|
||||||
// FIXME: Implement
|
a.addAttribute(StyleConstants.NameAttribute, t);
|
||||||
print ("HTMLReader.addSpecialElement not implemented yet");
|
|
||||||
|
// 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()
|
void printBuffer()
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,10 @@ if CREATE_GTK_PEER_LIBRARIES
|
||||||
JAWTDIR = jawt
|
JAWTDIR = jawt
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) target
|
if CREATE_PLUGIN
|
||||||
DIST_SUBDIRS = fdlibm jni jawt target
|
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@
|
vm_classes = @vm_classes@
|
||||||
@CREATE_JNI_LIBRARIES_TRUE@JNIDIR = jni
|
@CREATE_JNI_LIBRARIES_TRUE@JNIDIR = jni
|
||||||
@CREATE_GTK_PEER_LIBRARIES_TRUE@JAWTDIR = jawt
|
@CREATE_GTK_PEER_LIBRARIES_TRUE@JAWTDIR = jawt
|
||||||
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) target
|
@CREATE_PLUGIN_TRUE@PLUGINDIR = plugin
|
||||||
DIST_SUBDIRS = fdlibm jni jawt target
|
SUBDIRS = fdlibm $(JNIDIR) $(JAWTDIR) $(PLUGINDIR) target
|
||||||
|
DIST_SUBDIRS = fdlibm jni jawt plugin target
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.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_SOURCES = jawt.c
|
||||||
libjawt_la_LIBADD = $(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
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_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @PANGOFT2_LIBS@ @X_LIBS@ @XTEST_LIBS@
|
||||||
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
|
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,9 @@ am__vpath_adj = case $$p in \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
am__installdirs = "$(DESTDIR)$(nativeexeclibdir)"
|
am__installdirs = "$(DESTDIR)$(gcjversionedlibdir)"
|
||||||
nativeexeclibLTLIBRARIES_INSTALL = $(INSTALL)
|
gcjversionedlibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
LTLIBRARIES = $(nativeexeclib_LTLIBRARIES)
|
LTLIBRARIES = $(gcjversionedlib_LTLIBRARIES)
|
||||||
libjawt_la_DEPENDENCIES = \
|
libjawt_la_DEPENDENCIES = \
|
||||||
$(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
$(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
||||||
am_libjawt_la_OBJECTS = jawt.lo
|
am_libjawt_la_OBJECTS = jawt.lo
|
||||||
|
|
@ -295,9 +295,14 @@ target_cpu = @target_cpu@
|
||||||
target_os = @target_os@
|
target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
vm_classes = @vm_classes@
|
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_SOURCES = jawt.c
|
||||||
libjawt_la_LIBADD = $(top_builddir)/native/jni/gtk-peer/libgtkpeer.la
|
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_LDFLAGS = @CLASSPATH_MODULE@ @GTK_LIBS@ @PANGOFT2_LIBS@ @X_LIBS@ @XTEST_LIBS@
|
||||||
AM_CPPFLAGS = @CLASSPATH_INCLUDES@
|
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
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
install-nativeexeclibLTLIBRARIES: $(nativeexeclib_LTLIBRARIES)
|
install-gcjversionedlibLTLIBRARIES: $(gcjversionedlib_LTLIBRARIES)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(nativeexeclibdir)" || $(mkdir_p) "$(DESTDIR)$(nativeexeclibdir)"
|
test -z "$(gcjversionedlibdir)" || $(mkdir_p) "$(DESTDIR)$(gcjversionedlibdir)"
|
||||||
@list='$(nativeexeclib_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
if test -f $$p; then \
|
if test -f $$p; then \
|
||||||
f=$(am__strip_dir) \
|
f=$(am__strip_dir) \
|
||||||
echo " $(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 $(nativeexeclibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(nativeexeclibdir)/$$f"; \
|
$(LIBTOOL) --mode=install $(gcjversionedlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(gcjversionedlibdir)/$$f"; \
|
||||||
else :; fi; \
|
else :; fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-nativeexeclibLTLIBRARIES:
|
uninstall-gcjversionedlibLTLIBRARIES:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(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) \
|
p=$(am__strip_dir) \
|
||||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(nativeexeclibdir)/$$p'"; \
|
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(gcjversionedlibdir)/$$p'"; \
|
||||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(nativeexeclibdir)/$$p"; \
|
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(gcjversionedlibdir)/$$p"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
clean-nativeexeclibLTLIBRARIES:
|
clean-gcjversionedlibLTLIBRARIES:
|
||||||
-test -z "$(nativeexeclib_LTLIBRARIES)" || rm -f $(nativeexeclib_LTLIBRARIES)
|
-test -z "$(gcjversionedlib_LTLIBRARIES)" || rm -f $(gcjversionedlib_LTLIBRARIES)
|
||||||
@list='$(nativeexeclib_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
test "$$dir" != "$$p" || dir=.; \
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
echo "rm -f \"$${dir}/so_locations\""; \
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
rm -f "$${dir}/so_locations"; \
|
rm -f "$${dir}/so_locations"; \
|
||||||
done
|
done
|
||||||
libjawt.la: $(libjawt_la_OBJECTS) $(libjawt_la_DEPENDENCIES)
|
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:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
@ -487,7 +492,7 @@ check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile $(LTLIBRARIES)
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
installdirs:
|
installdirs:
|
||||||
for dir in "$(DESTDIR)$(nativeexeclibdir)"; do \
|
for dir in "$(DESTDIR)$(gcjversionedlibdir)"; do \
|
||||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: install-am
|
install: install-am
|
||||||
|
|
@ -516,7 +521,7 @@ maintainer-clean-generic:
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
clean: clean-am
|
clean: clean-am
|
||||||
|
|
||||||
clean-am: clean-generic clean-libtool clean-nativeexeclibLTLIBRARIES \
|
clean-am: clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||||
mostlyclean-am
|
mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
|
|
@ -535,9 +540,9 @@ info: info-am
|
||||||
|
|
||||||
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
|
install-info: install-info-am
|
||||||
|
|
||||||
|
|
@ -563,20 +568,21 @@ ps: ps-am
|
||||||
|
|
||||||
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 \
|
.PHONY: CTAGS GTAGS all all-am check check-am clean \
|
||||||
clean-libtool clean-nativeexeclibLTLIBRARIES ctags distclean \
|
clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||||
distclean-compile distclean-generic distclean-libtool \
|
ctags distclean distclean-compile distclean-generic \
|
||||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||||
install install-am install-data install-data-am install-exec \
|
html-am info info-am install install-am install-data \
|
||||||
install-exec-am install-info install-info-am install-man \
|
install-data-am install-exec install-exec-am \
|
||||||
install-nativeexeclibLTLIBRARIES install-strip installcheck \
|
install-gcjversionedlibLTLIBRARIES install-info \
|
||||||
|
install-info-am install-man install-strip installcheck \
|
||||||
installcheck-am installdirs maintainer-clean \
|
installcheck-am installdirs maintainer-clean \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
tags uninstall uninstall-am uninstall-info-am \
|
tags uninstall uninstall-am \
|
||||||
uninstall-nativeexeclibLTLIBRARIES
|
uninstall-gcjversionedlibLTLIBRARIES uninstall-info-am
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# 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.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,4 @@ struct cairographics2d
|
||||||
char *pattern_pixels;
|
char *pattern_pixels;
|
||||||
};
|
};
|
||||||
|
|
||||||
cairo_t *cp_gtk_get_cairo_t(JNIEnv *env,
|
|
||||||
jobject cairographics2dobj);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -51,33 +51,6 @@ exception statement from your version. */
|
||||||
|
|
||||||
static void install_font_peer(cairo_t *cr, struct peerfont *pfont);
|
static void install_font_peer(cairo_t *cr, struct peerfont *pfont);
|
||||||
static void update_pattern_transform (struct cairographics2d *gr);
|
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.
|
* Allocates the cairographics2d structure.
|
||||||
|
|
@ -106,9 +79,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_init
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative
|
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)
|
if (gr == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
@ -136,7 +110,8 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
|
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 x1, jdouble y1,
|
||||||
jdouble x2, jdouble y2,
|
jdouble x2, jdouble y2,
|
||||||
jint r1, jint g1, jint b1, jint a1,
|
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_pattern_t* pattern;
|
||||||
cairo_extend_t extend;
|
cairo_extend_t extend;
|
||||||
|
|
||||||
gr = getPointer (env, obj);
|
gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||||
g_assert( gr != NULL );
|
g_assert( gr != NULL );
|
||||||
|
|
||||||
pattern = cairo_pattern_create_linear(x1, y1, x2, y2);
|
pattern = cairo_pattern_create_linear(x1, y1, x2, y2);
|
||||||
|
|
@ -169,12 +144,13 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setGradient
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setTexturePixels
|
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;
|
struct cairographics2d *gr = NULL;
|
||||||
jint *jpixels = NULL;
|
jint *jpixels = NULL;
|
||||||
|
|
||||||
gr = getPointer (env, obj);
|
gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||||
g_assert (gr != NULL);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
if (gr->pattern)
|
if (gr->pattern)
|
||||||
|
|
@ -210,12 +186,13 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_setTexturePixels
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
||||||
(JNIEnv *env, jobject obj, jintArray java_pixels,
|
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||||
jint w, jint h, jint stride, jdoubleArray java_matrix)
|
jlong pointer, jintArray java_pixels,
|
||||||
|
jint w, jint h, jint stride, jdoubleArray java_matrix, jdouble alpha)
|
||||||
{
|
{
|
||||||
jint *native_pixels = NULL;
|
jint *native_pixels = NULL;
|
||||||
jdouble *native_matrix = NULL;
|
jdouble *native_matrix = NULL;
|
||||||
struct cairographics2d *gr = getPointer (env, obj);
|
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||||
g_assert (gr != NULL);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL);
|
native_pixels = (*env)->GetIntArrayElements (env, java_pixels, NULL);
|
||||||
|
|
@ -241,7 +218,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
||||||
if (gr->pattern)
|
if (gr->pattern)
|
||||||
cairo_pattern_set_filter (p, cairo_pattern_get_filter (gr->pattern));
|
cairo_pattern_set_filter (p, cairo_pattern_get_filter (gr->pattern));
|
||||||
cairo_set_source (gr->cr, p);
|
cairo_set_source (gr->cr, p);
|
||||||
|
if (alpha == 1.)
|
||||||
cairo_paint (gr->cr);
|
cairo_paint (gr->cr);
|
||||||
|
else
|
||||||
|
cairo_paint_with_alpha(gr->cr, alpha);
|
||||||
|
|
||||||
cairo_pattern_destroy (p);
|
cairo_pattern_destroy (p);
|
||||||
cairo_surface_destroy (surf);
|
cairo_surface_destroy (surf);
|
||||||
}
|
}
|
||||||
|
|
@ -253,10 +234,13 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_drawPixels
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
|
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;
|
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);
|
native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, NULL);
|
||||||
g_assert (native_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[0], native_matrix[1],
|
||||||
native_matrix[2], native_matrix[3],
|
native_matrix[2], native_matrix[3],
|
||||||
native_matrix[4], native_matrix[5]);
|
native_matrix[4], native_matrix[5]);
|
||||||
|
g_assert (gr != NULL);
|
||||||
cairo_set_matrix (gr->cr, &mat);
|
cairo_set_matrix (gr->cr, &mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -279,7 +264,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetMatrix
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
||||||
(JNIEnv *env, jobject obj,
|
(JNIEnv *env, jobject obj, jlong pointer,
|
||||||
jobject font,
|
jobject font,
|
||||||
jfloat x, jfloat y, jint n,
|
jfloat x, jfloat y, jint n,
|
||||||
jintArray java_codes,
|
jintArray java_codes,
|
||||||
|
|
@ -297,7 +282,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
||||||
g_assert (java_codes != NULL);
|
g_assert (java_codes != NULL);
|
||||||
g_assert (java_positions != NULL);
|
g_assert (java_positions != NULL);
|
||||||
|
|
||||||
gr = getPointer (env, obj);
|
gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||||
g_assert (gr != NULL);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font);
|
pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font);
|
||||||
|
|
@ -329,9 +314,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
switch ((enum java_awt_alpha_composite_rule) op)
|
switch ((enum java_awt_alpha_composite_rule) op)
|
||||||
|
|
@ -388,9 +374,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetOperator
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetRGBAColor
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_set_source_rgba (gr->cr, r, g, b, a);
|
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
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFillRule
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
switch ((enum java_awt_geom_path_iterator_winding_rule) rule)
|
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
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
/* set width */
|
/* set width */
|
||||||
|
|
@ -468,10 +457,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetLine
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
|
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;
|
jdouble *dasharr = NULL;
|
||||||
struct cairographics2d *gr = getPointer (env, obj);
|
struct cairographics2d *gr = JLONG_TO_PTR(struct cairographics2d, pointer);
|
||||||
g_assert (gr != NULL);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
dasharr = (*env)->GetDoubleArrayElements (env, dashes, NULL);
|
dasharr = (*env)->GetDoubleArrayElements (env, dashes, NULL);
|
||||||
|
|
@ -484,9 +474,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetDash
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_new_path (gr->cr);
|
cairo_new_path (gr->cr);
|
||||||
|
|
@ -494,9 +485,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoNewPath
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_move_to (gr->cr, x, y);
|
cairo_move_to (gr->cr, x, y);
|
||||||
|
|
@ -504,9 +496,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoMoveTo
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_line_to (gr->cr, x, y);
|
cairo_line_to (gr->cr, x, y);
|
||||||
|
|
@ -514,18 +507,21 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoLineTo
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoCurveTo
|
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);
|
g_assert (gr != NULL);
|
||||||
cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3);
|
cairo_curve_to (gr->cr, x1, y1, x2, y2, x3, y3);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_rel_move_to (gr->cr, dx, dy);
|
cairo_rel_move_to (gr->cr, dx, dy);
|
||||||
|
|
@ -533,9 +529,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelMoveTo
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_rel_line_to (gr->cr, dx, dy);
|
cairo_rel_line_to (gr->cr, dx, dy);
|
||||||
|
|
@ -543,9 +540,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelLineTo
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRelCurveTo
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_rel_curve_to (gr->cr, dx1, dy1, dx2, dy2, dx3, dy3);
|
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
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoRectangle
|
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);
|
cairo_rectangle (gr->cr, x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_close_path (gr->cr);
|
cairo_close_path (gr->cr);
|
||||||
|
|
@ -572,9 +573,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClosePath
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_stroke (gr->cr);
|
cairo_stroke (gr->cr);
|
||||||
|
|
@ -582,19 +584,29 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
|
if (alpha == 1.0)
|
||||||
cairo_fill (gr->cr);
|
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
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
|
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 );
|
g_assert( gr != NULL );
|
||||||
|
|
||||||
cairo_clip( gr->cr );
|
cairo_clip( gr->cr );
|
||||||
|
|
@ -602,9 +614,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_reset_clip( gr->cr );
|
cairo_reset_clip( gr->cr );
|
||||||
|
|
@ -612,9 +625,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
cairo_clip_preserve( gr->cr );
|
cairo_clip_preserve( gr->cr );
|
||||||
|
|
@ -622,9 +636,10 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter
|
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);
|
g_assert (gr != NULL);
|
||||||
|
|
||||||
if (gr->pattern == NULL)
|
if (gr->pattern == NULL)
|
||||||
|
|
@ -650,6 +665,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/************************** FONT STUFF ****************************/
|
/************************** FONT STUFF ****************************/
|
||||||
static void
|
static void
|
||||||
install_font_peer(cairo_t *cr,
|
install_font_peer(cairo_t *cr,
|
||||||
|
|
@ -700,4 +716,3 @@ update_pattern_transform (struct cairographics2d *gr)
|
||||||
cairo_pattern_set_matrix (gr->pattern, &mat);
|
cairo_pattern_set_matrix (gr->pattern, &mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,6 @@ exception statement from your version. */
|
||||||
#define BUFFER "bufferPointer"
|
#define BUFFER "bufferPointer"
|
||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
static void *getNativeObject( JNIEnv *env, jobject obj, const char *pointer );
|
|
||||||
static void setNativeObject( JNIEnv *env, jobject obj, void *ptr, 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);
|
setNativeObject(env, obj, data, BUFFER);
|
||||||
|
|
||||||
surface = cairo_image_surface_create_for_data
|
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);
|
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
|
* Destroy the surface
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
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;
|
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 )
|
if( surface != NULL )
|
||||||
cairo_surface_destroy(surface);
|
cairo_surface_destroy(surface);
|
||||||
|
|
||||||
buffer = getNativeObject(env, obj, BUFFER);
|
buffer = JLONG_TO_PTR(void, bufferPointer);
|
||||||
if( buffer != NULL )
|
if( buffer != NULL )
|
||||||
g_free(buffer);
|
g_free(buffer);
|
||||||
}
|
}
|
||||||
|
|
@ -90,9 +91,11 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_destroy (JNIEnv *env, jobject obj)
|
||||||
* Gets a pixel
|
* Gets a pixel
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL
|
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 )
|
if( pixeldata == NULL )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -105,9 +108,10 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetElem (JNIEnv *env, jobject obj,
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetElem
|
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 )
|
if( pixeldata == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
@ -119,13 +123,14 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetElem
|
||||||
* Gets all pixels in an array
|
* Gets all pixels in an array
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jintArray JNICALL
|
JNIEXPORT jintArray JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels
|
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeGetPixels
|
||||||
(JNIEnv *env, jobject obj, int size)
|
(JNIEnv *env __attribute((unused)), jobject obj __attribute((unused)),
|
||||||
|
jlong bufferPointer, int size)
|
||||||
{
|
{
|
||||||
jint *pixeldata, *jpixdata;
|
jint *pixeldata, *jpixdata;
|
||||||
jintArray jpixels;
|
jintArray jpixels;
|
||||||
|
|
||||||
pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
pixeldata = JLONG_TO_PTR(void, bufferPointer);
|
||||||
g_assert(pixeldata != NULL);
|
g_assert(pixeldata != NULL);
|
||||||
|
|
||||||
jpixels = (*env)->NewIntArray (env, size);
|
jpixels = (*env)->NewIntArray (env, size);
|
||||||
|
|
@ -140,8 +145,8 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels
|
||||||
* Sets all pixels by an array.
|
* Sets all pixels by an array.
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels
|
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeSetPixels
|
||||||
(JNIEnv *env, jobject obj, jintArray jpixels)
|
(JNIEnv *env, jobject obj, jlong bufferPointer, jintArray jpixels)
|
||||||
{
|
{
|
||||||
jint *pixeldata, *jpixdata;
|
jint *pixeldata, *jpixdata;
|
||||||
int size;
|
int size;
|
||||||
|
|
@ -161,7 +166,7 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels
|
||||||
g_assert (field != 0);
|
g_assert (field != 0);
|
||||||
height = (*env)->GetIntField (env, obj, field);
|
height = (*env)->GetIntField (env, obj, field);
|
||||||
|
|
||||||
pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
pixeldata = JLONG_TO_PTR(void, bufferPointer);
|
||||||
g_assert(pixeldata != NULL);
|
g_assert(pixeldata != NULL);
|
||||||
|
|
||||||
jpixdata = (*env)->GetIntArrayElements (env, jpixels, NULL);
|
jpixdata = (*env)->GetIntArrayElements (env, jpixels, NULL);
|
||||||
|
|
@ -174,15 +179,15 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface
|
Java_gnu_java_awt_peer_gtk_CairoSurface_nativeDrawSurface
|
||||||
(JNIEnv *env, jobject obj, jobject context, jdoubleArray java_matrix)
|
(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;
|
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);
|
g_assert(surface != NULL);
|
||||||
|
|
||||||
cr = cp_gtk_get_cairo_t(env, context);
|
|
||||||
g_assert(cr != NULL);
|
g_assert(cr != NULL);
|
||||||
|
|
||||||
native_matrix = (*env)->GetDoubleArrayElements (env, java_matrix, 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_pattern_set_matrix (p, &mat);
|
||||||
|
|
||||||
cairo_set_source(cr, p);
|
cairo_set_source(cr, p);
|
||||||
|
if (alpha == 1.0)
|
||||||
cairo_paint(cr);
|
cairo_paint(cr);
|
||||||
|
else
|
||||||
|
cairo_paint_with_alpha(cr, alpha);
|
||||||
|
|
||||||
cairo_pattern_destroy(p);
|
cairo_pattern_destroy(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,10 +220,11 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL
|
JNIEXPORT jlong JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer
|
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 *dst;
|
||||||
jint *src = (jint *)getNativeObject(env, obj, BUFFER);
|
jint *src = JLONG_TO_PTR(void, bufferPointer);
|
||||||
int i;
|
int i;
|
||||||
int t;
|
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.
|
* Create and return a cairo context for drawing to the surface.
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jlong JNICALL
|
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;
|
cairo_t *ptr;
|
||||||
g_assert(surface != NULL);
|
g_assert(surface != NULL);
|
||||||
ptr = cairo_create(surface);
|
ptr = cairo_create(surface);
|
||||||
|
|
@ -251,17 +263,15 @@ Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject ob
|
||||||
* copyArea.
|
* copyArea.
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative (JNIEnv *env,
|
Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative2
|
||||||
jobject obj,
|
(JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)),
|
||||||
jint x, jint y,
|
jlong bufferPointer,
|
||||||
jint w, jint h,
|
jint x, jint y, jint w, jint h, jint dx, jint dy, jint stride)
|
||||||
jint dx, jint dy,
|
|
||||||
jint stride)
|
|
||||||
{
|
{
|
||||||
int row;
|
int row;
|
||||||
int srcOffset, dstOffset;
|
int srcOffset, dstOffset;
|
||||||
jint *temp;
|
jint *temp;
|
||||||
jint *pixeldata = (jint *)getNativeObject(env, obj, BUFFER);
|
jint *pixeldata = JLONG_TO_PTR(jint, bufferPointer);
|
||||||
g_assert( pixeldata != NULL );
|
g_assert( pixeldata != NULL );
|
||||||
|
|
||||||
temp = g_malloc( h * w * 4 );
|
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)->SetLongField( env, obj, nofid, value );
|
||||||
(*env)->DeleteLocalRef( env, cls );
|
(*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);
|
surface = cairo_get_target (gr->cr);
|
||||||
if (surface != NULL)
|
if (surface != NULL)
|
||||||
|
{
|
||||||
|
gdk_threads_enter();
|
||||||
cairo_surface_destroy (surface);
|
cairo_surface_destroy (surface);
|
||||||
|
gdk_threads_leave();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jlong JNICALL
|
JNIEXPORT jlong JNICALL
|
||||||
|
|
@ -275,7 +279,7 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_copyAreaNative
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile
|
Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile
|
||||||
(JNIEnv *env, jobject obj __attribute__ ((unused)), jobject peer,
|
(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;
|
GdkPixmap *pixmap;
|
||||||
GtkWidget *widget = NULL;
|
GtkWidget *widget = NULL;
|
||||||
|
|
@ -289,7 +293,7 @@ Java_gnu_java_awt_peer_gtk_ComponentGraphics_drawVolatile
|
||||||
widget = GTK_WIDGET (ptr);
|
widget = GTK_WIDGET (ptr);
|
||||||
g_assert (widget != NULL);
|
g_assert (widget != NULL);
|
||||||
|
|
||||||
pixmap = cp_gtk_get_pixmap( env, img );
|
pixmap = JLONG_TO_PTR(GdkPixmap, img);
|
||||||
|
|
||||||
gc = gdk_gc_new(widget->window);
|
gc = gdk_gc_new(widget->window);
|
||||||
gdk_draw_drawable(widget->window,
|
gdk_draw_drawable(widget->window,
|
||||||
|
|
|
||||||
|
|
@ -81,24 +81,37 @@ getFont(JNIEnv *env, jobject obj)
|
||||||
return (PangoFcFont *)pfont->font;
|
return (PangoFcFont *)pfont->font;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
JNIEXPORT jintArray JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyph
|
Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs
|
||||||
(JNIEnv *env, jobject obj, jint codepoint)
|
(JNIEnv *env, jobject obj, jintArray codepoints)
|
||||||
{
|
{
|
||||||
FT_Face ft_face;
|
FT_Face ft_face;
|
||||||
jint glyph_index;
|
jintArray retArray;
|
||||||
PangoFcFont *font;
|
PangoFcFont *font;
|
||||||
|
jint *values, *cpvals;
|
||||||
|
jint length;
|
||||||
|
int i;
|
||||||
|
|
||||||
font = getFont(env, obj);
|
font = getFont(env, obj);
|
||||||
|
|
||||||
ft_face = pango_fc_font_lock_face( font );
|
ft_face = pango_fc_font_lock_face( font );
|
||||||
g_assert (ft_face != NULL);
|
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);
|
pango_fc_font_unlock_face (font);
|
||||||
|
|
||||||
return glyph_index;
|
return retArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jobject JNICALL
|
JNIEXPORT jobject JNICALL
|
||||||
|
|
@ -143,7 +156,7 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getMetricsNative
|
||||||
|
|
||||||
FT_Set_Transform( ft_face, NULL, NULL );
|
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 );
|
pango_fc_font_unlock_face( font );
|
||||||
printf("Couldn't load glyph %i\n", glyphIndex);
|
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
|
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState
|
||||||
(JNIEnv *env, jclass clazz)
|
(JNIEnv *env, jclass clazz)
|
||||||
{
|
{
|
||||||
jclass dataOutputClass;
|
jclass writerClass;
|
||||||
|
|
||||||
(*env)->GetJavaVM(env, &vm);
|
(*env)->GetJavaVM(env, &vm);
|
||||||
|
|
||||||
|
|
@ -296,9 +296,9 @@ Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState
|
||||||
"(Ljava/lang/String;Z)"
|
"(Ljava/lang/String;Z)"
|
||||||
"Lgnu/java/awt/peer/gtk/GdkPixbufDecoder$ImageFormatSpec;");
|
"Lgnu/java/awt/peer/gtk/GdkPixbufDecoder$ImageFormatSpec;");
|
||||||
|
|
||||||
|
writerClass = (*env)->FindClass
|
||||||
dataOutputClass = (*env)->FindClass(env, "java/io/DataOutput");
|
(env, "gnu/java/awt/peer/gtk/GdkPixbufDecoder$GdkPixbufWriter");
|
||||||
dataOutputWriteID = (*env)->GetMethodID (env, dataOutputClass,
|
dataOutputWriteID = (*env)->GetMethodID (env, writerClass,
|
||||||
"write", "([B)V");
|
"write", "([B)V");
|
||||||
|
|
||||||
query_formats (env, clazz);
|
query_formats (env, clazz);
|
||||||
|
|
@ -344,7 +344,7 @@ Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpDone
|
||||||
struct stream_save_request
|
struct stream_save_request
|
||||||
{
|
{
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
jobject *stream;
|
jobject *writer;
|
||||||
};
|
};
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
|
@ -358,21 +358,14 @@ save_to_stream(const gchar *buf,
|
||||||
jbyteArray jbuf;
|
jbyteArray jbuf;
|
||||||
jbyte *cbuf;
|
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);
|
jbuf = (*(ssr->env))->NewByteArray ((ssr->env), count);
|
||||||
cbuf = (*(ssr->env))->GetByteArrayElements ((ssr->env), jbuf, NULL);
|
cbuf = (*(ssr->env))->GetByteArrayElements ((ssr->env), jbuf, NULL);
|
||||||
memcpy (cbuf, buf, count);
|
memcpy (cbuf, buf, count);
|
||||||
(*(ssr->env))->ReleaseByteArrayElements ((ssr->env), jbuf, cbuf, 0);
|
(*(ssr->env))->ReleaseByteArrayElements ((ssr->env), jbuf, cbuf, 0);
|
||||||
(*(ssr->env))->CallVoidMethod ((ssr->env), *(ssr->stream),
|
(*(ssr->env))->CallVoidMethod ((ssr->env), *(ssr->writer),
|
||||||
dataOutputWriteID, jbuf);
|
dataOutputWriteID, jbuf);
|
||||||
(*(ssr->env))->DeleteLocalRef((ssr->env), jbuf);
|
(*(ssr->env))->DeleteLocalRef((ssr->env), jbuf);
|
||||||
|
|
||||||
gdk_threads_enter ();
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -381,7 +374,7 @@ JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_streamImage
|
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,
|
jintArray jarr, jstring jenctype, jint width, jint height,
|
||||||
jboolean hasAlpha, jobject stream)
|
jboolean hasAlpha, jobject writer)
|
||||||
{
|
{
|
||||||
GdkPixbuf* pixbuf;
|
GdkPixbuf* pixbuf;
|
||||||
jint *ints;
|
jint *ints;
|
||||||
|
|
@ -391,7 +384,7 @@ Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_streamImage
|
||||||
int i;
|
int i;
|
||||||
struct stream_save_request ssr;
|
struct stream_save_request ssr;
|
||||||
|
|
||||||
ssr.stream = &stream;
|
ssr.writer = &writer;
|
||||||
ssr.env = env;
|
ssr.env = env;
|
||||||
|
|
||||||
ints = (*env)->GetIntArrayElements (env, jarr, NULL);
|
ints = (*env)->GetIntArrayElements (env, jarr, NULL);
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@
|
||||||
#include <pango/pangofc-font.h>
|
#include <pango/pangofc-font.h>
|
||||||
#include <freetype/ftglyph.h>
|
#include <freetype/ftglyph.h>
|
||||||
#include <freetype/ftoutln.h>
|
#include <freetype/ftoutln.h>
|
||||||
|
#include "jcl.h"
|
||||||
#include "native_state.h"
|
#include "native_state.h"
|
||||||
#include "gdkfont.h"
|
#include "gdkfont.h"
|
||||||
#include "gnu_java_awt_peer_gtk_GdkTextLayout.h"
|
#include "gnu_java_awt_peer_gtk_GdkTextLayout.h"
|
||||||
|
|
@ -239,23 +240,21 @@ Java_gnu_java_awt_peer_gtk_GdkTextLayout_dispose
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_GdkTextLayout_cairoDrawGdkTextLayout
|
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
|
* 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.
|
* 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;
|
struct textlayout *tl = NULL;
|
||||||
PangoLayoutIter *i = NULL;
|
PangoLayoutIter *i = NULL;
|
||||||
PangoLayoutRun *run = NULL;
|
PangoLayoutRun *run = NULL;
|
||||||
cairo_glyph_t *glyphs = NULL;
|
cairo_glyph_t *glyphs = NULL;
|
||||||
gint n_glyphs = 0;
|
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);
|
tl = (struct textlayout *)NSA_GET_TEXT_LAYOUT_PTR (env, obj);
|
||||||
|
|
||||||
g_assert (cr != NULL);
|
g_assert (cr != NULL);
|
||||||
|
|
|
||||||
|
|
@ -47,11 +47,6 @@ exception statement from your version. */
|
||||||
#include "gnu_java_awt_peer_gtk_GtkVolatileImage.h"
|
#include "gnu_java_awt_peer_gtk_GtkVolatileImage.h"
|
||||||
#include "cairographics2d.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.
|
* 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
|
* Destroy the surface
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
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 )
|
if( pixmap != NULL )
|
||||||
{
|
{
|
||||||
gdk_threads_enter();
|
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
|
* Gets all pixels in an array
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jintArray JNICALL
|
JNIEXPORT jintArray JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels
|
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeGetPixels
|
||||||
(JNIEnv *env, jobject obj)
|
(JNIEnv *env, jobject obj, jlong pointer)
|
||||||
{
|
{
|
||||||
/* jint *pixeldata, *jpixdata; */
|
/* jint *pixeldata, *jpixdata; */
|
||||||
jint *jpixdata;
|
jint *jpixdata;
|
||||||
|
|
@ -126,7 +123,7 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels
|
||||||
g_assert (field != 0);
|
g_assert (field != 0);
|
||||||
height = (*env)->GetIntField (env, obj, field);
|
height = (*env)->GetIntField (env, obj, field);
|
||||||
|
|
||||||
pixmap = GDK_PIXMAP(getNativeObject(env, obj));
|
pixmap = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||||
g_assert(pixmap != NULL);
|
g_assert(pixmap != NULL);
|
||||||
|
|
||||||
gdk_threads_enter();
|
gdk_threads_enter();
|
||||||
|
|
@ -149,11 +146,12 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_getPixels
|
||||||
* Copy area
|
* Copy area
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea
|
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeCopyArea
|
||||||
(JNIEnv *env, jobject obj, jint x, jint y, jint w, jint h, jint dx, jint dy)
|
(JNIEnv *env __attribute__((unused)), jobject obj __attribute((unused)),
|
||||||
|
jlong pointer, jint x, jint y, jint w, jint h, jint dx, jint dy)
|
||||||
{
|
{
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
GdkPixmap* pixmap = getNativeObject(env, obj);
|
GdkPixmap* pixmap = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||||
|
|
||||||
g_assert (pixmap != NULL);
|
g_assert (pixmap != NULL);
|
||||||
|
|
||||||
|
|
@ -169,14 +167,15 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_copyArea
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile
|
Java_gnu_java_awt_peer_gtk_GtkVolatileImage_nativeDrawVolatile
|
||||||
(JNIEnv *env, jobject obj, jlong ptr, jint x, jint y, jint w, jint h)
|
(JNIEnv *env __attribute__((unused)), jobject obj __attribute((unused)),
|
||||||
|
jlong pointer, jlong srcptr, jint x, jint y, jint w, jint h)
|
||||||
{
|
{
|
||||||
GdkPixmap *dst, *src;
|
GdkPixmap *dst, *src;
|
||||||
GdkGC *gc;
|
GdkGC *gc;
|
||||||
|
|
||||||
src = JLONG_TO_PTR(GdkPixmap, ptr);
|
src = JLONG_TO_PTR(GdkPixmap, srcptr);
|
||||||
dst = getNativeObject(env, obj);
|
dst = JLONG_TO_PTR(GdkPixmap, pointer);
|
||||||
g_assert (src != NULL);
|
g_assert (src != NULL);
|
||||||
g_assert (dst != NULL);
|
g_assert (dst != NULL);
|
||||||
|
|
||||||
|
|
@ -194,23 +193,3 @@ Java_gnu_java_awt_peer_gtk_GtkVolatileImage_drawVolatile
|
||||||
gdk_threads_leave();
|
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_SOURCES = gcjwebplugin.cc
|
||||||
|
|
||||||
libgcjwebplugin_la_CXXFLAGS = \
|
libgcjwebplugin_la_CXXFLAGS = \
|
||||||
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/appletviewer\"" \
|
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/gappletviewer\"" \
|
||||||
-DPLUGIN_DATA_DIRECTORY="\"$(PLUGIN_DIR)/gcjwebplugin-data\"" \
|
-DPLUGIN_DATA_DIRECTORY="\"$(PLUGIN_DIR)/gcjwebplugin-data\"" \
|
||||||
$(MOZILLA_CFLAGS) $(GLIB_CFLAGS) $(GTK_CFLAGS)
|
$(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) \
|
$(GLIB_LIBS) $(GTK_LIBS) \
|
||||||
-lstdc++
|
-lstdc++
|
||||||
|
|
||||||
install-plugin: $(lib_LTLIBRARIES)
|
## GCJ LOCAL: depend on gcjversionedlib_LTLIBRARIES
|
||||||
|
install-plugin: $(gcjversionedlib_LTLIBRARIES)
|
||||||
$(INSTALL) -d -m0755 $(DESTDIR)$(PLUGIN_DIR)
|
$(INSTALL) -d -m0755 $(DESTDIR)$(PLUGIN_DIR)
|
||||||
$(INSTALL) .libs/libgcjwebplugin.so $(DESTDIR)$(PLUGIN_DIR)
|
$(INSTALL) .libs/libgcjwebplugin.so $(DESTDIR)$(PLUGIN_DIR)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,9 +58,9 @@ am__vpath_adj = case $$p in \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||||
am__installdirs = "$(DESTDIR)$(libdir)"
|
am__installdirs = "$(DESTDIR)$(gcjversionedlibdir)"
|
||||||
libLTLIBRARIES_INSTALL = $(INSTALL)
|
gcjversionedlibLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
LTLIBRARIES = $(gcjversionedlib_LTLIBRARIES)
|
||||||
libgcjwebplugin_la_LIBADD =
|
libgcjwebplugin_la_LIBADD =
|
||||||
am_libgcjwebplugin_la_OBJECTS = libgcjwebplugin_la-gcjwebplugin.lo
|
am_libgcjwebplugin_la_OBJECTS = libgcjwebplugin_la-gcjwebplugin.lo
|
||||||
libgcjwebplugin_la_OBJECTS = $(am_libgcjwebplugin_la_OBJECTS)
|
libgcjwebplugin_la_OBJECTS = $(am_libgcjwebplugin_la_OBJECTS)
|
||||||
|
|
@ -294,14 +294,17 @@ target_cpu = @target_cpu@
|
||||||
target_os = @target_os@
|
target_os = @target_os@
|
||||||
target_vendor = @target_vendor@
|
target_vendor = @target_vendor@
|
||||||
vm_classes = @vm_classes@
|
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_SOURCES = gcjwebplugin.cc
|
||||||
libgcjwebplugin_la_CXXFLAGS = \
|
libgcjwebplugin_la_CXXFLAGS = \
|
||||||
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/appletviewer\"" \
|
-Wall -DAPPLETVIEWER_EXECUTABLE="\"$(bindir)/gappletviewer\"" \
|
||||||
-DPLUGIN_DATA_DIRECTORY="\"$(PLUGIN_DIR)/gcjwebplugin-data\"" \
|
-DPLUGIN_DATA_DIRECTORY="\"$(PLUGIN_DIR)/gcjwebplugin-data\"" \
|
||||||
$(MOZILLA_CFLAGS) $(GLIB_CFLAGS) $(GTK_CFLAGS)
|
$(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) \
|
$(GLIB_LIBS) $(GTK_LIBS) \
|
||||||
-lstdc++
|
-lstdc++
|
||||||
|
|
||||||
|
|
@ -338,35 +341,35 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
install-gcjversionedlibLTLIBRARIES: $(gcjversionedlib_LTLIBRARIES)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
|
test -z "$(gcjversionedlibdir)" || $(mkdir_p) "$(DESTDIR)$(gcjversionedlibdir)"
|
||||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
if test -f $$p; then \
|
if test -f $$p; then \
|
||||||
f=$(am__strip_dir) \
|
f=$(am__strip_dir) \
|
||||||
echo " $(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 $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
$(LIBTOOL) --mode=install $(gcjversionedlibLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(gcjversionedlibdir)/$$f"; \
|
||||||
else :; fi; \
|
else :; fi; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-libLTLIBRARIES:
|
uninstall-gcjversionedlibLTLIBRARIES:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(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) \
|
p=$(am__strip_dir) \
|
||||||
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(gcjversionedlibdir)/$$p'"; \
|
||||||
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
$(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(gcjversionedlibdir)/$$p"; \
|
||||||
done
|
done
|
||||||
|
|
||||||
clean-libLTLIBRARIES:
|
clean-gcjversionedlibLTLIBRARIES:
|
||||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
-test -z "$(gcjversionedlib_LTLIBRARIES)" || rm -f $(gcjversionedlib_LTLIBRARIES)
|
||||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
@list='$(gcjversionedlib_LTLIBRARIES)'; for p in $$list; do \
|
||||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||||
test "$$dir" != "$$p" || dir=.; \
|
test "$$dir" != "$$p" || dir=.; \
|
||||||
echo "rm -f \"$${dir}/so_locations\""; \
|
echo "rm -f \"$${dir}/so_locations\""; \
|
||||||
rm -f "$${dir}/so_locations"; \
|
rm -f "$${dir}/so_locations"; \
|
||||||
done
|
done
|
||||||
libgcjwebplugin.la: $(libgcjwebplugin_la_OBJECTS) $(libgcjwebplugin_la_DEPENDENCIES)
|
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:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
@ -493,7 +496,7 @@ check-am: all-am
|
||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile $(LTLIBRARIES)
|
all-am: Makefile $(LTLIBRARIES)
|
||||||
installdirs:
|
installdirs:
|
||||||
for dir in "$(DESTDIR)$(libdir)"; do \
|
for dir in "$(DESTDIR)$(gcjversionedlibdir)"; do \
|
||||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: install-am
|
install: install-am
|
||||||
|
|
@ -522,7 +525,7 @@ maintainer-clean-generic:
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
clean: clean-am
|
clean: clean-am
|
||||||
|
|
||||||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
clean-am: clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||||
mostlyclean-am
|
mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
|
|
@ -541,9 +544,9 @@ info: info-am
|
||||||
|
|
||||||
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
|
install-info: install-info-am
|
||||||
|
|
||||||
|
|
@ -569,23 +572,24 @@ ps: ps-am
|
||||||
|
|
||||||
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 \
|
.PHONY: CTAGS GTAGS all all-am check check-am clean \
|
||||||
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
clean-gcjversionedlibLTLIBRARIES clean-generic clean-libtool \
|
||||||
distclean-compile distclean-generic distclean-libtool \
|
ctags distclean distclean-compile distclean-generic \
|
||||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
distclean-libtool distclean-tags distdir dvi dvi-am html \
|
||||||
install install-am install-data install-data-am install-exec \
|
html-am info info-am install install-am install-data \
|
||||||
install-exec-am install-info install-info-am \
|
install-data-am install-exec install-exec-am \
|
||||||
install-libLTLIBRARIES install-man install-strip installcheck \
|
install-gcjversionedlibLTLIBRARIES install-info \
|
||||||
|
install-info-am install-man install-strip installcheck \
|
||||||
installcheck-am installdirs maintainer-clean \
|
installcheck-am installdirs maintainer-clean \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||||
tags uninstall uninstall-am uninstall-info-am \
|
tags uninstall uninstall-am \
|
||||||
uninstall-libLTLIBRARIES
|
uninstall-gcjversionedlibLTLIBRARIES uninstall-info-am
|
||||||
|
|
||||||
|
|
||||||
install-plugin: $(lib_LTLIBRARIES)
|
install-plugin: $(gcjversionedlib_LTLIBRARIES)
|
||||||
$(INSTALL) -d -m0755 $(DESTDIR)$(PLUGIN_DIR)
|
$(INSTALL) -d -m0755 $(DESTDIR)$(PLUGIN_DIR)
|
||||||
$(INSTALL) .libs/libgcjwebplugin.so $(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_printerr ("%s:%d: thread %p: Error: %s: %s\n", __FILE__, __LINE__, \
|
||||||
g_thread_self (), first, second)
|
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.
|
// Plugin information passed to about:plugins.
|
||||||
#define PLUGIN_NAME "GCJ Web Browser Plugin"
|
#define PLUGIN_NAME "GCJ Web Browser Plugin"
|
||||||
#define PLUGIN_DESC "The " PLUGIN_NAME " executes Java applets."
|
#define PLUGIN_DESC "The " PLUGIN_NAME " executes Java applets."
|
||||||
|
|
@ -120,7 +124,6 @@ exception statement from your version. */
|
||||||
// Security dialog messages.
|
// Security dialog messages.
|
||||||
#define RESPONSE_TRUST_APPLET "Trust Applet"
|
#define RESPONSE_TRUST_APPLET "Trust Applet"
|
||||||
#define RESPONSE_TRUST_APPLET_ADD_TO_LIST "Trust Applet and Add to Whitelist"
|
#define RESPONSE_TRUST_APPLET_ADD_TO_LIST "Trust Applet and Add to Whitelist"
|
||||||
#define WHITELIST_FILENAME PLUGIN_DATA_DIRECTORY "/whitelist.txt"
|
|
||||||
#define SECURITY_WARNING \
|
#define SECURITY_WARNING \
|
||||||
"%s wants to load an applet.\n" \
|
"%s wants to load an applet.\n" \
|
||||||
"GNU Classpath's security implementation is not complete.\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" \
|
" and run this applet from now on, without asking.\n" \
|
||||||
"The whitelist is a list of the URLs from which you trust" \
|
"The whitelist is a list of the URLs from which you trust" \
|
||||||
" applets.\n" \
|
" applets.\n" \
|
||||||
"Your whitelist file is \"" WHITELIST_FILENAME "\"."
|
"Your whitelist file is \" %s \"."
|
||||||
#define FAILURE_MESSAGE \
|
#define FAILURE_MESSAGE \
|
||||||
"This page wants to load an applet.\n" \
|
"This page wants to load an applet.\n" \
|
||||||
"The appletviewer is missing or not installed properly in \"" \
|
"The appletviewer is missing or not installed properly in \"" \
|
||||||
|
|
@ -144,9 +147,15 @@ static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID);
|
||||||
// Browser function table.
|
// Browser function table.
|
||||||
static NPNetscapeFuncs browserFunctions;
|
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
|
// Keeps track of initialization. NP_Initialize should only be
|
||||||
// called once.
|
// called once.
|
||||||
bool initialized = false;
|
gboolean initialized = false;
|
||||||
|
|
||||||
// GCJPluginData stores all the data associated with a single plugin
|
// GCJPluginData stores all the data associated with a single plugin
|
||||||
// instance. A separate plugin instance is created for each <APPLET>
|
// instance. A separate plugin instance is created for each <APPLET>
|
||||||
|
|
@ -315,6 +324,26 @@ GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode,
|
||||||
goto cleanup_appletviewer_mutex;
|
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))
|
if (!plugin_user_trusts_documentbase (documentbase))
|
||||||
{
|
{
|
||||||
PLUGIN_ERROR ("User does not trust applet.");
|
PLUGIN_ERROR ("User does not trust applet.");
|
||||||
|
|
@ -326,9 +355,8 @@ GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode,
|
||||||
// pipe.
|
// pipe.
|
||||||
|
|
||||||
// data->in_pipe_name
|
// data->in_pipe_name
|
||||||
data->in_pipe_name = g_strdup_printf (PLUGIN_DATA_DIRECTORY
|
data->in_pipe_name = g_strdup_printf ("%s/gcj-%s-appletviewer-to-plugin",
|
||||||
"/gcj-%s-appletviewer-to-plugin",
|
data_directory, data->instance_string);
|
||||||
data->instance_string);
|
|
||||||
if (!data->in_pipe_name)
|
if (!data->in_pipe_name)
|
||||||
{
|
{
|
||||||
PLUGIN_ERROR ("Failed to create input pipe name.");
|
PLUGIN_ERROR ("Failed to create input pipe name.");
|
||||||
|
|
@ -349,9 +377,8 @@ GCJ_New (NPMIMEType pluginType, NPP instance, uint16 mode,
|
||||||
// output pipe.
|
// output pipe.
|
||||||
|
|
||||||
// data->out_pipe_name
|
// data->out_pipe_name
|
||||||
data->out_pipe_name = g_strdup_printf (PLUGIN_DATA_DIRECTORY
|
data->out_pipe_name = g_strdup_printf ("%s/gcj-%s-plugin-to-appletviewer",
|
||||||
"/gcj-%s-plugin-to-appletviewer",
|
data_directory, data->instance_string);
|
||||||
data->instance_string);
|
|
||||||
|
|
||||||
if (!data->out_pipe_name)
|
if (!data->out_pipe_name)
|
||||||
{
|
{
|
||||||
|
|
@ -952,7 +979,7 @@ plugin_user_trusts_documentbase (char* documentbase)
|
||||||
channel_error = NULL;
|
channel_error = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
PLUGIN_ERROR ("Failed to open whitelist file.");
|
PLUGIN_ERROR ("Failed to read line from whitelist file.");
|
||||||
g_free (whitelist_entry);
|
g_free (whitelist_entry);
|
||||||
whitelist_entry = NULL;
|
whitelist_entry = NULL;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1061,7 +1088,7 @@ plugin_ask_user_about_documentbase (char* documentbase)
|
||||||
SECURITY_WARNING,
|
SECURITY_WARNING,
|
||||||
documentbase);
|
documentbase);
|
||||||
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
|
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),
|
cancel_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
|
||||||
GTK_STOCK_CANCEL,
|
GTK_STOCK_CANCEL,
|
||||||
|
|
@ -1606,43 +1633,25 @@ NP_Initialize (NPNetscapeFuncs* browserTable, NPPluginFuncs* pluginTable)
|
||||||
return NPERR_INVALID_FUNCTABLE_ERROR;
|
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
|
// Make sure the plugin data directory exists, creating it if
|
||||||
// necessary.
|
// necessary.
|
||||||
if (!g_file_test (PLUGIN_DATA_DIRECTORY,
|
if (!g_file_test (data_directory,
|
||||||
(GFileTest) (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
|
(GFileTest) (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
|
||||||
{
|
{
|
||||||
int file_error = 0;
|
int file_error = 0;
|
||||||
|
|
||||||
file_error = g_mkdir (PLUGIN_DATA_DIRECTORY, 0700);
|
file_error = g_mkdir (data_directory, 0700);
|
||||||
if (file_error != 0)
|
if (file_error != 0)
|
||||||
{
|
{
|
||||||
PLUGIN_ERROR_TWO ("Failed to create data directory "
|
PLUGIN_ERROR_THREE ("Failed to create data directory",
|
||||||
PLUGIN_DATA_DIRECTORY " ",
|
data_directory,
|
||||||
strerror (errno));
|
strerror (errno));
|
||||||
return NPERR_GENERIC_ERROR;
|
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.
|
// Store in a local table the browser functions that we may use.
|
||||||
browserFunctions.version = browserTable->version;
|
browserFunctions.version = browserTable->version;
|
||||||
browserFunctions.size = browserTable->size;
|
browserFunctions.size = browserTable->size;
|
||||||
|
|
@ -1751,6 +1760,18 @@ NP_Shutdown (void)
|
||||||
whitelist_file = NULL;
|
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;
|
initialized = false;
|
||||||
|
|
||||||
PLUGIN_DEBUG ("NP_Shutdown return");
|
PLUGIN_DEBUG ("NP_Shutdown return");
|
||||||
|
|
|
||||||
|
|
@ -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
|
if CREATE_WRAPPERS
|
||||||
bin_SCRIPTS =
|
bin_SCRIPTS =
|
||||||
bin_PROGRAMS = appletviewer jarsigner keytool
|
bin_PROGRAMS = gappletviewer gjarsigner gkeytool
|
||||||
|
|
||||||
if FOUND_GCJ
|
if FOUND_GCJ
|
||||||
LIBJVM = -lgcj
|
LIBJVM = -lgcj
|
||||||
|
|
@ -35,26 +35,40 @@ LIBJVM =
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
appletviewer_SOURCES = toolwrapper.c
|
# Some architecture independent data to be installed.
|
||||||
appletviewer_CFLAGS = -Wall \
|
TOOLS_DATA = $(TOOLS_ZIP)
|
||||||
-DDATA_DIR="\"$(datadir)\"" \
|
|
||||||
-DPACKAGE="\"$(PACKAGE)\"" \
|
|
||||||
-DTOOLNAME="\"appletviewer\""
|
|
||||||
appletviewer_LDFLAGS = -L$(libdir) $(LIBJVM)
|
|
||||||
|
|
||||||
jarsigner_SOURCES = toolwrapper.c
|
# Where we want these data files installed.
|
||||||
jarsigner_CFLAGS = -Wall \
|
## GCJ LOCAL: install libgcj-tools.jar alongside libgcj.jar.
|
||||||
-DDATA_DIR="\"$(datadir)\"" \
|
TOOLSdir = $(datadir)/java
|
||||||
-DPACKAGE="\"$(PACKAGE)\"" \
|
|
||||||
-DTOOLNAME="\"jarsigner\""
|
|
||||||
jarsigner_LDFLAGS = -L$(libdir) $(LIBJVM)
|
|
||||||
|
|
||||||
keytool_SOURCES = toolwrapper.c
|
# The zip files with classes we want to produce.
|
||||||
keytool_CFLAGS = -Wall \
|
## GCJ LOCAL: rename tools.zip libgcj-tools-$(gcc_version).jar
|
||||||
-DDATA_DIR="\"$(datadir)\"" \
|
TOOLS_ZIP = libgcj-tools-$(gcc_version).jar
|
||||||
-DPACKAGE="\"$(PACKAGE)\"" \
|
|
||||||
-DTOOLNAME="\"keytool\""
|
## GCJ LOCAL: calculate GCC version
|
||||||
keytool_LDFLAGS = -L$(libdir) $(LIBJVM)
|
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
|
else
|
||||||
bin_SCRIPTS = appletviewer jarsigner keytool
|
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
|
# All our example java source files
|
||||||
TOOLS_JAVA_FILES = $(srcdir)/gnu/classpath/tools/*.java $(srcdir)/gnu/classpath/tools/*/*.java $(srcdir)/gnu/classpath/tools/*/*/*.java
|
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
|
# Extra objects that will not exist until configure-time
|
||||||
BUILT_SOURCES = $(TOOLS_ZIP)
|
BUILT_SOURCES = $(TOOLS_ZIP)
|
||||||
|
|
||||||
|
|
@ -88,13 +98,7 @@ TOOLS_HELPS = $(GIOP_HELPS) $(RMI_HELPS)
|
||||||
READMES = $(srcdir)/gnu/classpath/tools/giop/README
|
READMES = $(srcdir)/gnu/classpath/tools/giop/README
|
||||||
|
|
||||||
# All the files we find "interesting"
|
# All the files we find "interesting"
|
||||||
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS) $(READMES)
|
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS)
|
||||||
|
|
||||||
# Some architecture independent data to be installed.
|
|
||||||
TOOLS_DATA = $(TOOLS_ZIP) README
|
|
||||||
|
|
||||||
# Where we want these data files installed.
|
|
||||||
TOOLSdir = $(pkgdatadir)
|
|
||||||
|
|
||||||
# Make sure everything is included in the distribution.
|
# Make sure everything is included in the distribution.
|
||||||
dist-hook:
|
dist-hook:
|
||||||
|
|
@ -126,8 +130,7 @@ $(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
|
||||||
cp $(GIOP_HELPS) classes/gnu/classpath/tools/giop/
|
cp $(GIOP_HELPS) classes/gnu/classpath/tools/giop/
|
||||||
$(JCOMPILER) -d classes $(TOOLS_JAVA_FILES)
|
$(JCOMPILER) -d classes $(TOOLS_JAVA_FILES)
|
||||||
(cd classes; \
|
(cd classes; \
|
||||||
if test "$(ZIP)" != ""; then $(ZIP) -r ../$(TOOLS_ZIP) .; fi; \
|
$(FASTJAR) cf ../$(TOOLS_ZIP) .; \
|
||||||
if test "$(FASTJAR)" != ""; then $(FASTJAR) cf ../$(TOOLS_ZIP) .; fi; \
|
|
||||||
cd ..)
|
cd ..)
|
||||||
rm -rf classes
|
rm -rf classes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,8 @@ POST_UNINSTALL = :
|
||||||
build_triplet = @build@
|
build_triplet = @build@
|
||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
target_triplet = @target@
|
target_triplet = @target@
|
||||||
@CREATE_WRAPPERS_TRUE@bin_PROGRAMS = appletviewer$(EXEEXT) \
|
@CREATE_WRAPPERS_TRUE@bin_PROGRAMS = gappletviewer$(EXEEXT) \
|
||||||
@CREATE_WRAPPERS_TRUE@ jarsigner$(EXEEXT) keytool$(EXEEXT)
|
@CREATE_WRAPPERS_TRUE@ gjarsigner$(EXEEXT) gkeytool$(EXEEXT)
|
||||||
subdir = tools
|
subdir = tools
|
||||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||||
$(srcdir)/appletviewer.in $(srcdir)/jarsigner.in \
|
$(srcdir)/appletviewer.in $(srcdir)/jarsigner.in \
|
||||||
|
|
@ -62,21 +62,21 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
|
||||||
"$(DESTDIR)$(TOOLSdir)"
|
"$(DESTDIR)$(TOOLSdir)"
|
||||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
PROGRAMS = $(bin_PROGRAMS)
|
PROGRAMS = $(bin_PROGRAMS)
|
||||||
am__appletviewer_SOURCES_DIST = toolwrapper.c
|
am__gappletviewer_SOURCES_DIST = toolwrapper.c
|
||||||
@CREATE_WRAPPERS_TRUE@am_appletviewer_OBJECTS = \
|
@CREATE_WRAPPERS_TRUE@am_gappletviewer_OBJECTS = \
|
||||||
@CREATE_WRAPPERS_TRUE@ appletviewer-toolwrapper.$(OBJEXT)
|
@CREATE_WRAPPERS_TRUE@ gappletviewer-toolwrapper.$(OBJEXT)
|
||||||
appletviewer_OBJECTS = $(am_appletviewer_OBJECTS)
|
gappletviewer_OBJECTS = $(am_gappletviewer_OBJECTS)
|
||||||
appletviewer_LDADD = $(LDADD)
|
gappletviewer_LDADD = $(LDADD)
|
||||||
am__jarsigner_SOURCES_DIST = toolwrapper.c
|
am__gjarsigner_SOURCES_DIST = toolwrapper.c
|
||||||
@CREATE_WRAPPERS_TRUE@am_jarsigner_OBJECTS = \
|
@CREATE_WRAPPERS_TRUE@am_gjarsigner_OBJECTS = \
|
||||||
@CREATE_WRAPPERS_TRUE@ jarsigner-toolwrapper.$(OBJEXT)
|
@CREATE_WRAPPERS_TRUE@ gjarsigner-toolwrapper.$(OBJEXT)
|
||||||
jarsigner_OBJECTS = $(am_jarsigner_OBJECTS)
|
gjarsigner_OBJECTS = $(am_gjarsigner_OBJECTS)
|
||||||
jarsigner_LDADD = $(LDADD)
|
gjarsigner_LDADD = $(LDADD)
|
||||||
am__keytool_SOURCES_DIST = toolwrapper.c
|
am__gkeytool_SOURCES_DIST = toolwrapper.c
|
||||||
@CREATE_WRAPPERS_TRUE@am_keytool_OBJECTS = \
|
@CREATE_WRAPPERS_TRUE@am_gkeytool_OBJECTS = \
|
||||||
@CREATE_WRAPPERS_TRUE@ keytool-toolwrapper.$(OBJEXT)
|
@CREATE_WRAPPERS_TRUE@ gkeytool-toolwrapper.$(OBJEXT)
|
||||||
keytool_OBJECTS = $(am_keytool_OBJECTS)
|
gkeytool_OBJECTS = $(am_gkeytool_OBJECTS)
|
||||||
keytool_LDADD = $(LDADD)
|
gkeytool_LDADD = $(LDADD)
|
||||||
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
||||||
SCRIPTS = $(bin_SCRIPTS)
|
SCRIPTS = $(bin_SCRIPTS)
|
||||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
|
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include
|
||||||
|
|
@ -90,10 +90,10 @@ LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
|
||||||
CCLD = $(CC)
|
CCLD = $(CC)
|
||||||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
SOURCES = $(appletviewer_SOURCES) $(jarsigner_SOURCES) \
|
SOURCES = $(gappletviewer_SOURCES) $(gjarsigner_SOURCES) \
|
||||||
$(keytool_SOURCES)
|
$(gkeytool_SOURCES)
|
||||||
DIST_SOURCES = $(am__appletviewer_SOURCES_DIST) \
|
DIST_SOURCES = $(am__gappletviewer_SOURCES_DIST) \
|
||||||
$(am__jarsigner_SOURCES_DIST) $(am__keytool_SOURCES_DIST)
|
$(am__gjarsigner_SOURCES_DIST) $(am__gkeytool_SOURCES_DIST)
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
am__vpath_adj = case $$p in \
|
am__vpath_adj = case $$p in \
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(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_FALSE@@FOUND_GCJ_FALSE@LIBJVM =
|
||||||
@CREATE_WRAPPERS_TRUE@@FOUND_CACAO_TRUE@@FOUND_GCJ_FALSE@LIBJVM = -ljvm
|
@CREATE_WRAPPERS_TRUE@@FOUND_CACAO_TRUE@@FOUND_GCJ_FALSE@LIBJVM = -ljvm
|
||||||
@CREATE_WRAPPERS_TRUE@@FOUND_GCJ_TRUE@LIBJVM = -lgcj
|
@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)
|
# Some architecture independent data to be installed.
|
||||||
@CREATE_WRAPPERS_TRUE@jarsigner_SOURCES = toolwrapper.c
|
@CREATE_WRAPPERS_TRUE@TOOLS_DATA = $(TOOLS_ZIP)
|
||||||
@CREATE_WRAPPERS_TRUE@jarsigner_CFLAGS = -Wall \
|
|
||||||
@CREATE_WRAPPERS_TRUE@ -DDATA_DIR="\"$(datadir)\"" \
|
|
||||||
@CREATE_WRAPPERS_TRUE@ -DPACKAGE="\"$(PACKAGE)\"" \
|
|
||||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"jarsigner\""
|
|
||||||
|
|
||||||
@CREATE_WRAPPERS_TRUE@jarsigner_LDFLAGS = -L$(libdir) $(LIBJVM)
|
# Where we want these data files installed.
|
||||||
@CREATE_WRAPPERS_TRUE@keytool_SOURCES = toolwrapper.c
|
@CREATE_WRAPPERS_TRUE@TOOLSdir = $(datadir)/java
|
||||||
@CREATE_WRAPPERS_TRUE@keytool_CFLAGS = -Wall \
|
|
||||||
@CREATE_WRAPPERS_TRUE@ -DDATA_DIR="\"$(datadir)\"" \
|
|
||||||
@CREATE_WRAPPERS_TRUE@ -DPACKAGE="\"$(PACKAGE)\"" \
|
|
||||||
@CREATE_WRAPPERS_TRUE@ -DTOOLNAME="\"keytool\""
|
|
||||||
|
|
||||||
@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
|
EXTRA_DIST = toolwrapper.c appletviewer.in jarsigner.in keytool.in
|
||||||
|
|
||||||
# All our example java source files
|
# All our example java source files
|
||||||
TOOLS_JAVA_FILES = $(srcdir)/gnu/classpath/tools/*.java $(srcdir)/gnu/classpath/tools/*/*.java $(srcdir)/gnu/classpath/tools/*/*/*.java
|
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
|
# Extra objects that will not exist until configure-time
|
||||||
BUILT_SOURCES = $(TOOLS_ZIP)
|
BUILT_SOURCES = $(TOOLS_ZIP)
|
||||||
|
|
||||||
|
|
@ -377,13 +384,7 @@ TOOLS_HELPS = $(GIOP_HELPS) $(RMI_HELPS)
|
||||||
READMES = $(srcdir)/gnu/classpath/tools/giop/README
|
READMES = $(srcdir)/gnu/classpath/tools/giop/README
|
||||||
|
|
||||||
# All the files we find "interesting"
|
# All the files we find "interesting"
|
||||||
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS) $(READMES)
|
ALL_TOOLS_FILES = $(TOOLS_JAVA_FILES) $(TOOLS_TEMPLATES) $(TOOLS_HELPS)
|
||||||
|
|
||||||
# Some architecture independent data to be installed.
|
|
||||||
TOOLS_DATA = $(TOOLS_ZIP) README
|
|
||||||
|
|
||||||
# Where we want these data files installed.
|
|
||||||
TOOLSdir = $(pkgdatadir)
|
|
||||||
all: $(BUILT_SOURCES)
|
all: $(BUILT_SOURCES)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
$(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; \
|
else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
|
||||||
done; \
|
done; \
|
||||||
done; rm -f c$${pid}_.???; exit $$bad
|
done; rm -f c$${pid}_.???; exit $$bad
|
||||||
appletviewer$(EXEEXT): $(appletviewer_OBJECTS) $(appletviewer_DEPENDENCIES)
|
gappletviewer$(EXEEXT): $(gappletviewer_OBJECTS) $(gappletviewer_DEPENDENCIES)
|
||||||
@rm -f appletviewer$(EXEEXT)
|
@rm -f gappletviewer$(EXEEXT)
|
||||||
$(LINK) $(appletviewer_LDFLAGS) $(appletviewer_OBJECTS) $(appletviewer_LDADD) $(LIBS)
|
$(LINK) $(gappletviewer_LDFLAGS) $(gappletviewer_OBJECTS) $(gappletviewer_LDADD) $(LIBS)
|
||||||
jarsigner$(EXEEXT): $(jarsigner_OBJECTS) $(jarsigner_DEPENDENCIES)
|
gjarsigner$(EXEEXT): $(gjarsigner_OBJECTS) $(gjarsigner_DEPENDENCIES)
|
||||||
@rm -f jarsigner$(EXEEXT)
|
@rm -f gjarsigner$(EXEEXT)
|
||||||
$(LINK) $(jarsigner_LDFLAGS) $(jarsigner_OBJECTS) $(jarsigner_LDADD) $(LIBS)
|
$(LINK) $(gjarsigner_LDFLAGS) $(gjarsigner_OBJECTS) $(gjarsigner_LDADD) $(LIBS)
|
||||||
keytool$(EXEEXT): $(keytool_OBJECTS) $(keytool_DEPENDENCIES)
|
gkeytool$(EXEEXT): $(gkeytool_OBJECTS) $(gkeytool_DEPENDENCIES)
|
||||||
@rm -f keytool$(EXEEXT)
|
@rm -f gkeytool$(EXEEXT)
|
||||||
$(LINK) $(keytool_LDFLAGS) $(keytool_OBJECTS) $(keytool_LDADD) $(LIBS)
|
$(LINK) $(gkeytool_LDFLAGS) $(gkeytool_OBJECTS) $(gkeytool_LDADD) $(LIBS)
|
||||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||||
|
|
@ -503,9 +504,9 @@ mostlyclean-compile:
|
||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appletviewer-toolwrapper.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gappletviewer-toolwrapper.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/jarsigner-toolwrapper.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gjarsigner-toolwrapper.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keytool-toolwrapper.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gkeytool-toolwrapper.Po@am__quote@
|
||||||
|
|
||||||
.c.o:
|
.c.o:
|
||||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -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@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
appletviewer-toolwrapper.o: toolwrapper.c
|
gappletviewer-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@ 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)/appletviewer-toolwrapper.Tpo" "$(DEPDIR)/appletviewer-toolwrapper.Po"; else rm -f "$(DEPDIR)/appletviewer-toolwrapper.Tpo"; exit 1; 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='appletviewer-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
@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@
|
@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
|
gappletviewer-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@ 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)/appletviewer-toolwrapper.Tpo" "$(DEPDIR)/appletviewer-toolwrapper.Po"; else rm -f "$(DEPDIR)/appletviewer-toolwrapper.Tpo"; exit 1; 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='appletviewer-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
@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@
|
@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
|
gjarsigner-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@ 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)/jarsigner-toolwrapper.Tpo" "$(DEPDIR)/jarsigner-toolwrapper.Po"; else rm -f "$(DEPDIR)/jarsigner-toolwrapper.Tpo"; exit 1; 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='jarsigner-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
@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@
|
@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
|
gjarsigner-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@ 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)/jarsigner-toolwrapper.Tpo" "$(DEPDIR)/jarsigner-toolwrapper.Po"; else rm -f "$(DEPDIR)/jarsigner-toolwrapper.Tpo"; exit 1; 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='jarsigner-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
@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@
|
@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
|
gkeytool-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@ 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)/keytool-toolwrapper.Tpo" "$(DEPDIR)/keytool-toolwrapper.Po"; else rm -f "$(DEPDIR)/keytool-toolwrapper.Tpo"; exit 1; 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='keytool-toolwrapper.o' libtool=no @AMDEPBACKSLASH@
|
@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@
|
@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
|
gkeytool-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@ 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)/keytool-toolwrapper.Tpo" "$(DEPDIR)/keytool-toolwrapper.Po"; else rm -f "$(DEPDIR)/keytool-toolwrapper.Tpo"; exit 1; 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='keytool-toolwrapper.obj' libtool=no @AMDEPBACKSLASH@
|
@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@
|
@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:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
@ -808,8 +809,7 @@ $(TOOLS_ZIP): $(TOOLS_JAVA_FILES)
|
||||||
cp $(GIOP_HELPS) classes/gnu/classpath/tools/giop/
|
cp $(GIOP_HELPS) classes/gnu/classpath/tools/giop/
|
||||||
$(JCOMPILER) -d classes $(TOOLS_JAVA_FILES)
|
$(JCOMPILER) -d classes $(TOOLS_JAVA_FILES)
|
||||||
(cd classes; \
|
(cd classes; \
|
||||||
if test "$(ZIP)" != ""; then $(ZIP) -r ../$(TOOLS_ZIP) .; fi; \
|
$(FASTJAR) cf ../$(TOOLS_ZIP) .; \
|
||||||
if test "$(FASTJAR)" != ""; then $(FASTJAR) cf ../$(TOOLS_ZIP) .; fi; \
|
|
||||||
cd ..)
|
cd ..)
|
||||||
rm -rf classes
|
rm -rf classes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ main (int argc, const char** argv)
|
||||||
goto destroy;
|
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. */
|
/* 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);
|
(*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)
|
if (class_id == NULL)
|
||||||
{
|
{
|
||||||
fprintf (stderr, TOOLNAME ": FindClass failed.\n");
|
fprintf (stderr, TOOLNAME ": FindClass failed.\n");
|
||||||
|
|
|
||||||
|
|
@ -853,6 +853,7 @@ Optional Features:
|
||||||
specify that runtime libraries should be installed
|
specify that runtime libraries should be installed
|
||||||
in a compiler-specific directory
|
in a compiler-specific directory
|
||||||
--enable-multilib build many library versions (default)
|
--enable-multilib build many library versions (default)
|
||||||
|
--enable-plugin build gcjwebplugin web browser plugin
|
||||||
--disable-dependency-tracking speeds up one-time build
|
--disable-dependency-tracking speeds up one-time build
|
||||||
--enable-dependency-tracking do not reject slow dependency extractors
|
--enable-dependency-tracking do not reject slow dependency extractors
|
||||||
--enable-maintainer-mode enable make rules and dependencies not useful
|
--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
|
else
|
||||||
multilib=yes
|
multilib=yes
|
||||||
fi;
|
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.
|
# 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.
|
# Set up to configure Classpath.
|
||||||
# FIXME: no supported way to pass args in autoconf.
|
# 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 --disable-load-library"
|
||||||
ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
|
ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
|
||||||
ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT"
|
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-core-jni"
|
||||||
ac_configure_args="$ac_configure_args --disable-examples"
|
ac_configure_args="$ac_configure_args --disable-examples"
|
||||||
ac_configure_args="$ac_configure_args --with-glibj=build"
|
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
|
if test "$use_gtk_awt" != yes; then
|
||||||
ac_configure_args="$ac_configure_args --disable-gtk-peer"
|
ac_configure_args="$ac_configure_args --disable-gtk-peer"
|
||||||
fi
|
fi
|
||||||
|
|
@ -5817,7 +5837,7 @@ test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
|
||||||
case $host in
|
case $host in
|
||||||
*-*-irix6*)
|
*-*-irix6*)
|
||||||
# Find out which ABI we are using.
|
# 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
|
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||||
(eval $ac_compile) 2>&5
|
(eval $ac_compile) 2>&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
|
|
@ -6820,7 +6840,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then
|
||||||
:
|
:
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext << EOF
|
cat > conftest.$ac_ext << EOF
|
||||||
#line 6823 "configure"
|
#line 6843 "configure"
|
||||||
struct S { ~S(); };
|
struct S { ~S(); };
|
||||||
void bar();
|
void bar();
|
||||||
void foo()
|
void foo()
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,17 @@ AC_ARG_ENABLE(multilib,
|
||||||
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
|
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
|
||||||
esac], [multilib=yes])dnl
|
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.
|
# It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
|
||||||
GCC_NO_EXECUTABLES
|
GCC_NO_EXECUTABLES
|
||||||
|
|
||||||
|
|
@ -320,6 +331,8 @@ test -f libgcj.spec || touch libgcj.spec
|
||||||
|
|
||||||
# Set up to configure Classpath.
|
# Set up to configure Classpath.
|
||||||
# FIXME: no supported way to pass args in autoconf.
|
# 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 --disable-load-library"
|
||||||
ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
|
ac_configure_args="$ac_configure_args --${LIBGCJDEBUG}-debug"
|
||||||
ac_configure_args="$ac_configure_args --enable-default-toolkit=$TOOLKIT"
|
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?
|
dnl FIXME?
|
||||||
ac_configure_args="$ac_configure_args --disable-examples"
|
ac_configure_args="$ac_configure_args --disable-examples"
|
||||||
ac_configure_args="$ac_configure_args --with-glibj=build"
|
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
|
if test "$use_gtk_awt" != yes; then
|
||||||
ac_configure_args="$ac_configure_args --disable-gtk-peer"
|
ac_configure_args="$ac_configure_args --disable-gtk-peer"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -89,8 +89,6 @@ AWK = @AWK@
|
||||||
BACKTRACESPEC = @BACKTRACESPEC@
|
BACKTRACESPEC = @BACKTRACESPEC@
|
||||||
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
||||||
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
||||||
CAIRO_CFLAGS = @CAIRO_CFLAGS@
|
|
||||||
CAIRO_LIBS = @CAIRO_LIBS@
|
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CCDEPMODE = @CCDEPMODE@
|
CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
|
|
@ -126,8 +124,6 @@ GCSPEC = @GCSPEC@
|
||||||
GCTESTSPEC = @GCTESTSPEC@
|
GCTESTSPEC = @GCTESTSPEC@
|
||||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
GLIB_LIBS = @GLIB_LIBS@
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
|
|
||||||
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
|
|
||||||
GTK_CFLAGS = @GTK_CFLAGS@
|
GTK_CFLAGS = @GTK_CFLAGS@
|
||||||
GTK_LIBS = @GTK_LIBS@
|
GTK_LIBS = @GTK_LIBS@
|
||||||
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
||||||
|
|
@ -180,8 +176,6 @@ PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@
|
|
||||||
PANGOFT2_LIBS = @PANGOFT2_LIBS@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PERL = @PERL@
|
PERL = @PERL@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
|
|
||||||
|
|
@ -88,8 +88,6 @@ AWK = @AWK@
|
||||||
BACKTRACESPEC = @BACKTRACESPEC@
|
BACKTRACESPEC = @BACKTRACESPEC@
|
||||||
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
BASH_JAR_FALSE = @BASH_JAR_FALSE@
|
||||||
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
BASH_JAR_TRUE = @BASH_JAR_TRUE@
|
||||||
CAIRO_CFLAGS = @CAIRO_CFLAGS@
|
|
||||||
CAIRO_LIBS = @CAIRO_LIBS@
|
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CCDEPMODE = @CCDEPMODE@
|
CCDEPMODE = @CCDEPMODE@
|
||||||
CFLAGS = @CFLAGS@
|
CFLAGS = @CFLAGS@
|
||||||
|
|
@ -125,8 +123,6 @@ GCSPEC = @GCSPEC@
|
||||||
GCTESTSPEC = @GCTESTSPEC@
|
GCTESTSPEC = @GCTESTSPEC@
|
||||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||||
GLIB_LIBS = @GLIB_LIBS@
|
GLIB_LIBS = @GLIB_LIBS@
|
||||||
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
|
|
||||||
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
|
|
||||||
GTK_CFLAGS = @GTK_CFLAGS@
|
GTK_CFLAGS = @GTK_CFLAGS@
|
||||||
GTK_LIBS = @GTK_LIBS@
|
GTK_LIBS = @GTK_LIBS@
|
||||||
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
|
||||||
|
|
@ -179,8 +175,6 @@ PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
PANGOFT2_CFLAGS = @PANGOFT2_CFLAGS@
|
|
||||||
PANGOFT2_LIBS = @PANGOFT2_LIBS@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PERL = @PERL@
|
PERL = @PERL@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue