Merge
This commit is contained in:
commit
7d90fc05af
2
.hgtags
2
.hgtags
@ -94,3 +94,5 @@ a4e6aa1f45ad23a6f083ed98d970b5006ea4d292 jdk7-b116
|
|||||||
228e73f288c543a8c34e2a54227103ae5649e6af jdk7-b117
|
228e73f288c543a8c34e2a54227103ae5649e6af jdk7-b117
|
||||||
2e876e59938a853934aa738c811b26c452bd9fe8 jdk7-b118
|
2e876e59938a853934aa738c811b26c452bd9fe8 jdk7-b118
|
||||||
4951967a61b4dbbf514828879f57bd1a0d4b420b jdk7-b119
|
4951967a61b4dbbf514828879f57bd1a0d4b420b jdk7-b119
|
||||||
|
8c840d3ab24f8d0f422b991638acb44b6ab1d98c jdk7-b120
|
||||||
|
0ce0a2c3a6926677dc507839a820ab6625541e5a jdk7-b121
|
||||||
|
@ -94,3 +94,5 @@ e8ebdf41b9c01a26642848f4134f5504e8fb3233 jdk7-b115
|
|||||||
7220e60b097fa027e922f1aeecdd330f3e37409f jdk7-b117
|
7220e60b097fa027e922f1aeecdd330f3e37409f jdk7-b117
|
||||||
a12a9e78df8a9d534da0b4a244ed68f0de0bd58e jdk7-b118
|
a12a9e78df8a9d534da0b4a244ed68f0de0bd58e jdk7-b118
|
||||||
661360bef6ccad6c119f067f5829b207de80c936 jdk7-b119
|
661360bef6ccad6c119f067f5829b207de80c936 jdk7-b119
|
||||||
|
366ff0b6d2151595629806b033e2e1497e3a55d4 jdk7-b120
|
||||||
|
2c2d4f88637b488014c37e1a2eb401f68bca8838 jdk7-b121
|
||||||
|
@ -93,3 +93,6 @@ da7561d479e0ddaa4650d8023ac0fc7294e014e3 jdk7-b115
|
|||||||
98c028de4301106f2285ac0e128a1bb9b4c24f5c jdk7-b116
|
98c028de4301106f2285ac0e128a1bb9b4c24f5c jdk7-b116
|
||||||
fa502e4834dac2176499cc1f44794d5dc32a11b9 jdk7-b117
|
fa502e4834dac2176499cc1f44794d5dc32a11b9 jdk7-b117
|
||||||
42e77836fded7c2a3080d27316b96634ea9e33c6 jdk7-b118
|
42e77836fded7c2a3080d27316b96634ea9e33c6 jdk7-b118
|
||||||
|
39829414ae31a0080578a49b751899edd518cd7d jdk7-b119
|
||||||
|
cff5a173ec1e89013359e804a3e31736ef6fb462 jdk7-b120
|
||||||
|
2cc9f32992101732b23730b737740e64ebc5fa89 jdk7-b121
|
||||||
|
@ -131,3 +131,6 @@ bdbc48857210a509b3c50a3291ecb9dd6a72e016 jdk7-b115
|
|||||||
806d0c037e6bbb88dac0699673f4ba55ee8c02da jdk7-b117
|
806d0c037e6bbb88dac0699673f4ba55ee8c02da jdk7-b117
|
||||||
698b7b727e12de44139d8cca6ab9a494ead13253 jdk7-b118
|
698b7b727e12de44139d8cca6ab9a494ead13253 jdk7-b118
|
||||||
3ef7426b4deac5dcfd4afb35cabe9ab3d666df91 hs20-b02
|
3ef7426b4deac5dcfd4afb35cabe9ab3d666df91 hs20-b02
|
||||||
|
5484e7c53fa7da5e869902437ee08a9ae10c1c69 jdk7-b119
|
||||||
|
f5603a6e50422046ebc0d2f1671d55cb8f1bf1e9 jdk7-b120
|
||||||
|
3f3653ab7af8dc1ddb9fa75dad56bf94f89e81a8 jdk7-b121
|
||||||
|
@ -94,3 +94,5 @@ f8d4e6c6cfce1cda23fcbd144628a9791a9e1a63 jdk7-b116
|
|||||||
9ee4d96e893436a48607924227dadd2d93b9b00d jdk7-b117
|
9ee4d96e893436a48607924227dadd2d93b9b00d jdk7-b117
|
||||||
b2f6d9c4f12ffd307a5de40455b2b61b31a5cb79 jdk7-b118
|
b2f6d9c4f12ffd307a5de40455b2b61b31a5cb79 jdk7-b118
|
||||||
9ee900f01c5872551c06f33ae909662ffd8463ac jdk7-b119
|
9ee900f01c5872551c06f33ae909662ffd8463ac jdk7-b119
|
||||||
|
4821de0908defe647fcdaab4485f98873e24dea0 jdk7-b120
|
||||||
|
63dae40fa19fd3bf4689ea2f3c1d9d690e1abcee jdk7-b121
|
||||||
|
@ -28,10 +28,10 @@ drops.master.copy.base=${drops.dir}
|
|||||||
jaxp_src.bundle.name=jaxp-1_4_4.zip
|
jaxp_src.bundle.name=jaxp-1_4_4.zip
|
||||||
jaxp_src.bundle.md5.checksum=2c40a758392c4abf2d59f355240df46a
|
jaxp_src.bundle.md5.checksum=2c40a758392c4abf2d59f355240df46a
|
||||||
jaxp_src.master.bundle.dir=${drops.master.copy.base}
|
jaxp_src.master.bundle.dir=${drops.master.copy.base}
|
||||||
jaxp_src.master.bundle.url.base=https://jaxp.dev.java.net/files/documents/913/152561
|
jaxp_src.master.bundle.url.base=https://java.net/downloads/jaxp/jdk7
|
||||||
|
|
||||||
#jaxp_tests.bundle.name=jaxp-unittests-1_4_4.zip
|
#jaxp_tests.bundle.name=jaxp-unittests-1_4_4.zip
|
||||||
#jaxp_tests.bundle.md5.checksum=51845e38b02920cf5374d0331ab3a4ee
|
#jaxp_tests.bundle.md5.checksum=51845e38b02920cf5374d0331ab3a4ee
|
||||||
#jaxp_tests.master.bundle.dir=${drops.master.copy.base}
|
#jaxp_tests.master.bundle.dir=${drops.master.copy.base}
|
||||||
#jaxp_tests.master.bundle.url.base=https://jaxp.dev.java.net/files/documents/913/152562
|
#jaxp_tests.master.bundle.url.base=https://java.net/downloads/jaxp/jdk7
|
||||||
|
|
||||||
|
@ -94,3 +94,5 @@ d35c94fd22362f478f75b4bfcd2bef6a83cb9b3f jdk7-b113
|
|||||||
1320fb3bb588298c79716bd2d10b5b4afacb9370 jdk7-b117
|
1320fb3bb588298c79716bd2d10b5b4afacb9370 jdk7-b117
|
||||||
19a2fab3f91a275f90791c15d1c21a24e820ff2d jdk7-b118
|
19a2fab3f91a275f90791c15d1c21a24e820ff2d jdk7-b118
|
||||||
41fa02b3663795ddf529690df7aa6714210093ec jdk7-b119
|
41fa02b3663795ddf529690df7aa6714210093ec jdk7-b119
|
||||||
|
a4f2e1ca67163ef79555082809d7cd719893c338 jdk7-b120
|
||||||
|
0fa950117faac7bdbc94e6c46b88f6f892031c17 jdk7-b121
|
||||||
|
@ -28,14 +28,14 @@ drops.master.copy.base=${drops.dir}
|
|||||||
jaxws_src.bundle.name= jdk7-jaxws2_2-2010_08_19.zip
|
jaxws_src.bundle.name= jdk7-jaxws2_2-2010_08_19.zip
|
||||||
jaxws_src.bundle.md5.checksum=8775ccefd3b4fa2dde5155ec4b7e4ceb
|
jaxws_src.bundle.md5.checksum=8775ccefd3b4fa2dde5155ec4b7e4ceb
|
||||||
jaxws_src.master.bundle.dir=${drops.master.copy.base}
|
jaxws_src.master.bundle.dir=${drops.master.copy.base}
|
||||||
jaxws_src.master.bundle.url.base=https://jax-ws.dev.java.net/files/documents/4202/152532
|
jaxws_src.master.bundle.url.base=https://java.net/downloads/jax-ws/JDK7
|
||||||
|
|
||||||
jaf_src.bundle.name=jdk7-jaf-2010_08_19.zip
|
jaf_src.bundle.name=jdk7-jaf-2010_08_19.zip
|
||||||
jaf_src.bundle.md5.checksum=18d15dfd71117daadb332af003d08212
|
jaf_src.bundle.md5.checksum=18d15dfd71117daadb332af003d08212
|
||||||
jaf_src.master.bundle.dir=${drops.master.copy.base}
|
jaf_src.master.bundle.dir=${drops.master.copy.base}
|
||||||
jaf_src.master.bundle.url.base=https://jax-ws.dev.java.net/files/documents/4202/152336
|
jaf_src.master.bundle.url.base=https://java.net/downloads/jax-ws/JDK7
|
||||||
|
|
||||||
#jaxws_tests.bundle.name=jdk7-jaxws-tests-2009_08_28.zip
|
#jaxws_tests.bundle.name=jdk7-jaxws-tests-2009_08_28.zip
|
||||||
#jaxws_tests.master.bundle.dir=${drops.master.copy.base}
|
#jaxws_tests.master.bundle.dir=${drops.master.copy.base}
|
||||||
#jaxws_tests.master.bundle.url.base=http://kenai.com/projects/jdk7-drops/downloads/download
|
#jaxws_tests.master.bundle.url.base=https://java.net/downloads/jax-ws/JDK7
|
||||||
|
|
||||||
|
@ -95,3 +95,4 @@ e250cef36ea05e627e7e6f7d75e5e19f529e2ba3 jdk7-b114
|
|||||||
b357910aa04aead2a16b6d6ff395a8df4b51d1dd jdk7-b118
|
b357910aa04aead2a16b6d6ff395a8df4b51d1dd jdk7-b118
|
||||||
ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119
|
ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119
|
||||||
37d74e29687cf07c2bf9411af58c7e42440855c3 jdk7-b120
|
37d74e29687cf07c2bf9411af58c7e42440855c3 jdk7-b120
|
||||||
|
a661d8587b5d8986aacae086f5df66af9e1a96b1 jdk7-b121
|
||||||
|
@ -83,14 +83,19 @@ ifndef CLOSED_SRC
|
|||||||
CLOSED_SRC = $(BUILDDIR)/../src/closed
|
CLOSED_SRC = $(BUILDDIR)/../src/closed
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# If we have no closed directory, force it to an openjdk build
|
# If CLOSE_SRC_INCLUDED isn't set to true, check if there's any
|
||||||
CLOSED_SRC_DIR_EXISTS := $(shell \
|
# closed directory.
|
||||||
if [ -d $(CLOSED_SRC) ] ; then \
|
ifneq ($(CLOSED_SRC_INCLUDED), true)
|
||||||
echo true; \
|
CLOSED_SRC_INCLUDED := $(shell \
|
||||||
else \
|
if [ -d $(CLOSED_SRC) ] ; then \
|
||||||
echo false; \
|
echo true; \
|
||||||
fi)
|
else \
|
||||||
ifeq ($(CLOSED_SRC_DIR_EXISTS), false)
|
echo false; \
|
||||||
|
fi)
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Set OPENJDK based on CLOSED_SRC_INCLUDED
|
||||||
|
ifeq ($(CLOSED_SRC_INCLUDED), false)
|
||||||
OPENJDK = true
|
OPENJDK = true
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ LIBM=-lm
|
|||||||
|
|
||||||
# GCC29_COMPILER_PATH: is the path to where the gcc 2.9 compiler is installed
|
# GCC29_COMPILER_PATH: is the path to where the gcc 2.9 compiler is installed
|
||||||
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
|
# NOTE: Must end with / so that it could be empty, allowing PATH usage.
|
||||||
ifneq "$(origin ALT_GCC29_COMPILER_PATH)" "undefined"
|
ifdef ALT_GCC29_COMPILER_PATH
|
||||||
GCC29_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC29_COMPILER_PATH))
|
GCC29_COMPILER_PATH :=$(call PrefixPath,$(ALT_GCC29_COMPILER_PATH))
|
||||||
else
|
else
|
||||||
GCC29_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(PLATFORM)/gcc29/usr/
|
GCC29_COMPILER_PATH = $(JDK_DEVTOOLS_DIR)/$(PLATFORM)/gcc29/usr/
|
||||||
|
@ -65,7 +65,7 @@
|
|||||||
# If we are using freetype, the freetype version expected.
|
# If we are using freetype, the freetype version expected.
|
||||||
#
|
#
|
||||||
# REQUIRED_GCC_VER
|
# REQUIRED_GCC_VER
|
||||||
# Solaris and Linux only. The required version of gcc/g++ for the plugin.
|
# Solaris and Linux only. The required version of gcc/g++ for the legacy OJI plugin.
|
||||||
#
|
#
|
||||||
# REQUIRED_LINK_VER
|
# REQUIRED_LINK_VER
|
||||||
# Windows only: The version of link.exe expected.
|
# Windows only: The version of link.exe expected.
|
||||||
|
@ -99,12 +99,16 @@ ifeq ($(PLATFORM), linux)
|
|||||||
echo "RedHat"; \
|
echo "RedHat"; \
|
||||||
elif [ -f /etc/SuSE-release ] ; then \
|
elif [ -f /etc/SuSE-release ] ; then \
|
||||||
echo "SuSE"; \
|
echo "SuSE"; \
|
||||||
|
elif [ -f /etc/lsb-release ] ; then \
|
||||||
|
$(EGREP) DISTRIB_ID /etc/lsb-release | $(SED) -e 's@.*DISTRIB_ID=\(.*\)@\1@'; \
|
||||||
else \
|
else \
|
||||||
echo "Unknown"; \
|
echo "Unknown"; \
|
||||||
fi)
|
fi)
|
||||||
OS_VARIANT_VERSION := $(shell \
|
OS_VARIANT_VERSION := $(shell \
|
||||||
if [ "$(OS_VARIANT_NAME)" = "Fedora" ] ; then \
|
if [ "$(OS_VARIANT_NAME)" = "Fedora" ] ; then \
|
||||||
$(CAT) /etc/fedora-release | $(HEAD) -1 | $(NAWK) '{ print $$3; }' ; \
|
$(CAT) /etc/fedora-release | $(HEAD) -1 | $(NAWK) '{ print $$3; }' ; \
|
||||||
|
elif [ -f /etc/lsb-release ] ; then \
|
||||||
|
$(EGREP) DISTRIB_RELEASE /etc/lsb-release | $(SED) -e 's@.*DISTRIB_RELEASE=\(.*\)@\1@'; \
|
||||||
fi)
|
fi)
|
||||||
ALSA_INCLUDE=/usr/include/alsa/version.h
|
ALSA_INCLUDE=/usr/include/alsa/version.h
|
||||||
ALSA_LIBRARY=/usr/lib/libasound.so
|
ALSA_LIBRARY=/usr/lib/libasound.so
|
||||||
@ -279,7 +283,7 @@ sane-arch_data_model:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
######################################################
|
######################################################
|
||||||
# Check the OS version (windows and linus have release name checks)
|
# Check the OS version (windows and linux have release name checks)
|
||||||
# NOTE: OPENJDK explicitly does not check for OS release information.
|
# NOTE: OPENJDK explicitly does not check for OS release information.
|
||||||
# Unless we know for sure that it will not build somewhere, we cannot
|
# Unless we know for sure that it will not build somewhere, we cannot
|
||||||
# generate a fatal sanity error, and a warning about the official
|
# generate a fatal sanity error, and a warning about the official
|
||||||
@ -1476,20 +1480,20 @@ ifeq ($(PLATFORM), windows)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
######################################################
|
######################################################
|
||||||
# Check the Solaris GNU c++ compiler for solaris plugin
|
# Check the GNU C++ compiler for OJI plugin
|
||||||
######################################################
|
######################################################
|
||||||
sane-gcc-compiler:
|
sane-gcc-compiler:
|
||||||
ifeq ($(PLATFORM), solaris)
|
ifndef OPENJDK
|
||||||
ifndef OPENJDK
|
ifeq ($(PLATFORM), solaris)
|
||||||
@if [ -r $(GCC_COMPILER_PATH) ]; then \
|
@if [ -r $(GCC_COMPILER_PATH) ]; then \
|
||||||
if [ ! "$(GCC_VER)" = $(REQUIRED_GCC_VERSION) ]; then \
|
if [ ! "$(GCC_VER)" = $(REQUIRED_GCC_VER) ]; then \
|
||||||
$(ECHO) "ERROR: The Solaris GCC compiler version must be $(REQUIRED_GCC_VERSION). \n" \
|
$(ECHO) "ERROR: The Solaris GCC compiler version must be $(REQUIRED_GCC_VER). \n" \
|
||||||
" You are using the following compiler version: $(GCC_VER) \n" \
|
" You are using the following compiler version: $(GCC_VER) \n" \
|
||||||
" The compiler was obtained from the following location: \n" \
|
" The compiler was obtained from the following location: \n" \
|
||||||
" $(GCC_COMPILER_PATH) \n" \
|
" $(GCC_COMPILER_PATH) \n" \
|
||||||
" Please change your compiler. \n" \
|
" Please change your compiler. \n" \
|
||||||
"" >> $(ERROR_FILE) ; \
|
"" >> $(ERROR_FILE) ; \
|
||||||
fi \
|
fi \
|
||||||
else \
|
else \
|
||||||
$(ECHO) "ERROR: You do not have a valid GCC_COMPILER_PATH setting. \n" \
|
$(ECHO) "ERROR: You do not have a valid GCC_COMPILER_PATH setting. \n" \
|
||||||
" Please check your access to \n" \
|
" Please check your access to \n" \
|
||||||
@ -1501,15 +1505,16 @@ ifeq ($(PLATFORM), solaris)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(PLATFORM), linux)
|
ifeq ($(PLATFORM), linux)
|
||||||
|
ifeq ($(ARCH_DATA_MODEL), 32)
|
||||||
ifdef ALT_GCC29_COMPILER_PATH
|
ifdef ALT_GCC29_COMPILER_PATH
|
||||||
@if [ ! -x $(ALT_GCC29_COMPILER_PATH)/bin/gcc ]; then \
|
@if [ ! -x $(ALT_GCC29_COMPILER_PATH)/bin/gcc ]; then \
|
||||||
$(ECHO) "ERROR: You do not have a valid ALT_GCC29_COMPILER_PATH setting. \n" \
|
$(ECHO) "ERROR: You do not have a valid ALT_GCC29_COMPILER_PATH setting. \n" \
|
||||||
" Please check your access to \n" \
|
" Please check your access to \n" \
|
||||||
" $(ALT_GCC29_COMPILER_PATH)/bin/gcc \n" \
|
" $(ALT_GCC29_COMPILER_PATH)/bin/gcc \n" \
|
||||||
" This will affect you if you build the plugin target. \n" \
|
" This will affect you if you build the plugin target. \n" \
|
||||||
"" >> $(ERROR_FILE) ; \
|
"" >> $(ERROR_FILE) ; \
|
||||||
fi
|
fi
|
||||||
endif
|
else
|
||||||
ifdef ALT_GCC29_PLUGIN_LIB_PATH
|
ifdef ALT_GCC29_PLUGIN_LIB_PATH
|
||||||
@if [ ! -r $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so ]; then \
|
@if [ ! -r $(ALT_GCC29_PLUGIN_LIB_PATH)/libjavaplugin_oji.so ]; then \
|
||||||
$(ECHO) "Error: You do not have a valid ALT_GCC29_PLUGIN_LIB_PATH setting. \n" \
|
$(ECHO) "Error: You do not have a valid ALT_GCC29_PLUGIN_LIB_PATH setting. \n" \
|
||||||
@ -1523,13 +1528,15 @@ ifeq ($(PLATFORM), solaris)
|
|||||||
$(ECHO) "ERROR: You do not have a valid GCC29_COMPILER_PATH setting. \n" \
|
$(ECHO) "ERROR: You do not have a valid GCC29_COMPILER_PATH setting. \n" \
|
||||||
" Please check your access to \n" \
|
" Please check your access to \n" \
|
||||||
" $(GCC29_COMPILER_PATH) \n" \
|
" $(GCC29_COMPILER_PATH) \n" \
|
||||||
" and/or check your value of ALT_GCC29_COMPILER_PATH. \n" \
|
" and/or check your value of ALT_GCC29_COMPILER_PATH or ALT_GCC29_PLUGIN_LIB_PATH \n" \
|
||||||
" This will affect you if you build the plugin target. \n" \
|
" This will affect you if you build the plugin target. \n" \
|
||||||
"" >> $(ERROR_FILE) ; \
|
"" >> $(ERROR_FILE) ; \
|
||||||
fi
|
fi
|
||||||
endif
|
endif # ALT_GCC29_PLUGIN_LIB_PATH
|
||||||
endif
|
endif # ALT_GCC29_COMPILER_PATH
|
||||||
endif
|
endif # ARCH_DATA_MODEL, 32
|
||||||
|
endif # LINUX
|
||||||
|
endif # OPEN_JDK
|
||||||
|
|
||||||
|
|
||||||
######################################################
|
######################################################
|
||||||
|
@ -33,8 +33,8 @@ DEMONAME = zipfs
|
|||||||
include $(BUILDDIR)/common/Defs.gmk
|
include $(BUILDDIR)/common/Defs.gmk
|
||||||
|
|
||||||
DEMO_ROOT = $(SHARE_SRC)/demo/nio/$(DEMONAME)
|
DEMO_ROOT = $(SHARE_SRC)/demo/nio/$(DEMONAME)
|
||||||
DEMO_TOPFILES = ./README.txt
|
DEMO_TOPFILES = README.txt Demo.java
|
||||||
DEMO_SRCDIR = $(DEMO_ROOT)
|
DEMO_SRCDIR = $(DEMO_ROOT)/src
|
||||||
DEMO_DESTDIR = $(DEMODIR)/nio/$(DEMONAME)
|
DEMO_DESTDIR = $(DEMODIR)/nio/$(DEMONAME)
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -42,10 +42,10 @@ DEMO_DESTDIR = $(DEMODIR)/nio/$(DEMONAME)
|
|||||||
#
|
#
|
||||||
include $(BUILDDIR)/common/Demo.gmk
|
include $(BUILDDIR)/common/Demo.gmk
|
||||||
|
|
||||||
#EXTJAR = $(EXTDIR)/$(DEMONAME).jar
|
EXTJAR = $(EXTDIR)/$(DEMONAME).jar
|
||||||
#
|
|
||||||
#all : build $(EXTJAR)
|
all : build $(EXTJAR)
|
||||||
#
|
|
||||||
#$(EXTJAR) : $(DEMO_JAR)
|
$(EXTJAR) : $(DEMO_JAR)
|
||||||
# $(prep-target)
|
$(prep-target)
|
||||||
# $(CP) $(DEMO_JAR) $(EXTJAR)
|
$(CP) $(DEMO_JAR) $(EXTJAR)
|
||||||
|
@ -432,6 +432,7 @@ SUNWprivate_1.1 {
|
|||||||
Java_sun_awt_X11_GtkFileDialogPeer_initIDs;
|
Java_sun_awt_X11_GtkFileDialogPeer_initIDs;
|
||||||
Java_sun_awt_X11_GtkFileDialogPeer_run;
|
Java_sun_awt_X11_GtkFileDialogPeer_run;
|
||||||
Java_sun_awt_X11_GtkFileDialogPeer_quit;
|
Java_sun_awt_X11_GtkFileDialogPeer_quit;
|
||||||
|
Java_sun_awt_X11_GtkFileDialogPeer_toFront;
|
||||||
|
|
||||||
Java_sun_print_CUPSPrinter_initIDs;
|
Java_sun_print_CUPSPrinter_initIDs;
|
||||||
Java_sun_print_CUPSPrinter_getCupsServer;
|
Java_sun_print_CUPSPrinter_getCupsServer;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -111,7 +111,7 @@ class CharacterData00 extends CharacterData {
|
|||||||
if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
|
if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
|
||||||
switch(ch) {
|
switch(ch) {
|
||||||
// map the offset overflow chars
|
// map the offset overflow chars
|
||||||
case 0x0130 : mapChar = 0x0069; break;
|
case 0x0130 : mapChar = 0x0069; break;
|
||||||
case 0x2126 : mapChar = 0x03C9; break;
|
case 0x2126 : mapChar = 0x03C9; break;
|
||||||
case 0x212A : mapChar = 0x006B; break;
|
case 0x212A : mapChar = 0x006B; break;
|
||||||
case 0x212B : mapChar = 0x00E5; break;
|
case 0x212B : mapChar = 0x00E5; break;
|
||||||
@ -192,7 +192,11 @@ class CharacterData00 extends CharacterData {
|
|||||||
case 0x2C6D : mapChar = 0x0251; break;
|
case 0x2C6D : mapChar = 0x0251; break;
|
||||||
case 0x2C6E : mapChar = 0x0271; break;
|
case 0x2C6E : mapChar = 0x0271; break;
|
||||||
case 0x2C6F : mapChar = 0x0250; break;
|
case 0x2C6F : mapChar = 0x0250; break;
|
||||||
|
case 0x2C70 : mapChar = 0x0252; break;
|
||||||
|
case 0x2C7E : mapChar = 0x023F; break;
|
||||||
|
case 0x2C7F : mapChar = 0x0240; break;
|
||||||
case 0xA77D : mapChar = 0x1D79; break;
|
case 0xA77D : mapChar = 0x1D79; break;
|
||||||
|
case 0xA78D : mapChar = 0x0265; break;
|
||||||
// default mapChar is already set, so no
|
// default mapChar is already set, so no
|
||||||
// need to redo it here.
|
// need to redo it here.
|
||||||
// default : mapChar = ch;
|
// default : mapChar = ch;
|
||||||
@ -246,8 +250,12 @@ class CharacterData00 extends CharacterData {
|
|||||||
case 0x1FC3 : mapChar = 0x1FCC; break;
|
case 0x1FC3 : mapChar = 0x1FCC; break;
|
||||||
case 0x1FF3 : mapChar = 0x1FFC; break;
|
case 0x1FF3 : mapChar = 0x1FFC; break;
|
||||||
|
|
||||||
|
case 0x023F : mapChar = 0x2C7E; break;
|
||||||
|
case 0x0240 : mapChar = 0x2C7F; break;
|
||||||
case 0x0250 : mapChar = 0x2C6F; break;
|
case 0x0250 : mapChar = 0x2C6F; break;
|
||||||
case 0x0251 : mapChar = 0x2C6D; break;
|
case 0x0251 : mapChar = 0x2C6D; break;
|
||||||
|
case 0x0252 : mapChar = 0x2C70; break;
|
||||||
|
case 0x0265 : mapChar = 0xA78D; break;
|
||||||
case 0x026B : mapChar = 0x2C62; break;
|
case 0x026B : mapChar = 0x2C62; break;
|
||||||
case 0x0271 : mapChar = 0x2C6E; break;
|
case 0x0271 : mapChar = 0x2C6E; break;
|
||||||
case 0x027D : mapChar = 0x2C64; break;
|
case 0x027D : mapChar = 0x2C64; break;
|
||||||
@ -487,8 +495,12 @@ class CharacterData00 extends CharacterData {
|
|||||||
case 0x017F : mapChar = 0x0053; break;
|
case 0x017F : mapChar = 0x0053; break;
|
||||||
case 0x1FBE : mapChar = 0x0399; break;
|
case 0x1FBE : mapChar = 0x0399; break;
|
||||||
|
|
||||||
|
case 0x023F : mapChar = 0x2C7E; break;
|
||||||
|
case 0x0240 : mapChar = 0x2C7F; break;
|
||||||
case 0x0250 : mapChar = 0x2C6F; break;
|
case 0x0250 : mapChar = 0x2C6F; break;
|
||||||
case 0x0251 : mapChar = 0x2C6D; break;
|
case 0x0251 : mapChar = 0x2C6D; break;
|
||||||
|
case 0x0252 : mapChar = 0x2C70; break;
|
||||||
|
case 0x0265 : mapChar = 0xA78D; break;
|
||||||
case 0x026B : mapChar = 0x2C62; break;
|
case 0x026B : mapChar = 0x2C62; break;
|
||||||
case 0x0271 : mapChar = 0x2C6E; break;
|
case 0x0271 : mapChar = 0x2C6E; break;
|
||||||
case 0x027D : mapChar = 0x2C64; break;
|
case 0x027D : mapChar = 0x2C64; break;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -251,9 +251,40 @@ class CharacterData01 extends CharacterData {
|
|||||||
case 0x010341: retval = 90; break; // GOTHIC LETTER NINETY
|
case 0x010341: retval = 90; break; // GOTHIC LETTER NINETY
|
||||||
case 0x01034A: retval = 900; break; // GOTHIC LETTER NINE HUNDRED
|
case 0x01034A: retval = 900; break; // GOTHIC LETTER NINE HUNDRED
|
||||||
case 0x0103D5: retval = 100; break; // OLD PERSIAN NUMBER HUNDRED
|
case 0x0103D5: retval = 100; break; // OLD PERSIAN NUMBER HUNDRED
|
||||||
|
case 0x01085D: retval = 100; break; // IMPERIAL ARAMAIC NUMBER ONE HUNDRED
|
||||||
|
case 0x01085E: retval = 1000; break; // IMPERIAL ARAMAIC NUMBER ONE THOUSAND
|
||||||
|
case 0x01085F: retval = 10000; break; // IMPERIAL ARAMAIC NUMBER TEN THOUSAND
|
||||||
case 0x010919: retval = 100; break; // PHOENICIAN NUMBER ONE HUNDRED
|
case 0x010919: retval = 100; break; // PHOENICIAN NUMBER ONE HUNDRED
|
||||||
case 0x010A46: retval = 100; break; // KHAROSHTHI NUMBER ONE HUNDRED
|
case 0x010A46: retval = 100; break; // KHAROSHTHI NUMBER ONE HUNDRED
|
||||||
case 0x010A47: retval = 1000; break; // KHAROSHTHI NUMBER ONE THOUSAND
|
case 0x010A47: retval = 1000; break; // KHAROSHTHI NUMBER ONE THOUSAND
|
||||||
|
case 0x010A7E: retval = 50; break; // OLD SOUTH ARABIAN NUMBER FIFTY
|
||||||
|
case 0x010B5E: retval = 100; break; // INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED
|
||||||
|
case 0x010B5F: retval = 1000; break; // INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
|
||||||
|
case 0x010B7E: retval = 100; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED
|
||||||
|
case 0x010B7F: retval = 1000; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
|
||||||
|
case 0x010E6C: retval = 40; break; // RUMI NUMBER FORTY
|
||||||
|
case 0x010E6D: retval = 50; break; // RUMI NUMBER FIFTY
|
||||||
|
case 0x010E6E: retval = 60; break; // RUMI NUMBER SIXTY
|
||||||
|
case 0x010E6F: retval = 70; break; // RUMI NUMBER SEVENTY
|
||||||
|
case 0x010E70: retval = 80; break; // RUMI NUMBER EIGHTY
|
||||||
|
case 0x010E71: retval = 90; break; // RUMI NUMBER NINETY
|
||||||
|
case 0x010E72: retval = 100; break; // RUMI NUMBER ONE HUNDRED
|
||||||
|
case 0x010E73: retval = 200; break; // RUMI NUMBER TWO HUNDRED
|
||||||
|
case 0x010E74: retval = 300; break; // RUMI NUMBER THREE HUNDRED
|
||||||
|
case 0x010E75: retval = 400; break; // RUMI NUMBER FOUR HUNDRED
|
||||||
|
case 0x010E76: retval = 500; break; // RUMI NUMBER FIVE HUNDRED
|
||||||
|
case 0x010E77: retval = 600; break; // RUMI NUMBER SIX HUNDRED
|
||||||
|
case 0x010E78: retval = 700; break; // RUMI NUMBER SEVEN HUNDRED
|
||||||
|
case 0x010E79: retval = 800; break; // RUMI NUMBER EIGHT HUNDRED
|
||||||
|
case 0x010E7A: retval = 900; break; // RUMI NUMBER NINE HUNDRED
|
||||||
|
case 0x01105E: retval = 40; break; // BRAHMI NUMBER FORTY
|
||||||
|
case 0x01105F: retval = 50; break; // BRAHMI NUMBER FIFTY
|
||||||
|
case 0x011060: retval = 60; break; // BRAHMI NUMBER SIXTY
|
||||||
|
case 0x011061: retval = 70; break; // BRAHMI NUMBER SEVENTY
|
||||||
|
case 0x011062: retval = 80; break; // BRAHMI NUMBER EIGHTY
|
||||||
|
case 0x011063: retval = 90; break; // BRAHMI NUMBER NINETY
|
||||||
|
case 0x011064: retval = 100; break; // BRAHMI NUMBER ONE HUNDRED
|
||||||
|
case 0x011065: retval = 1000; break; // BRAHMI NUMBER ONE THOUSAND
|
||||||
case 0x01D36C: retval = 40; break; // COUNTING ROD TENS DIGIT FOUR
|
case 0x01D36C: retval = 40; break; // COUNTING ROD TENS DIGIT FOUR
|
||||||
case 0x01D36D: retval = 50; break; // COUNTING ROD TENS DIGIT FIVE
|
case 0x01D36D: retval = 50; break; // COUNTING ROD TENS DIGIT FIVE
|
||||||
case 0x01D36E: retval = 60; break; // COUNTING ROD TENS DIGIT SIX
|
case 0x01D36E: retval = 60; break; // COUNTING ROD TENS DIGIT SIX
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Scripts-5.2.0.txt
|
# Scripts-6.0.0.txt
|
||||||
# Date: 2009-08-22, 04:58:43 GMT [MD]
|
# Date: 2010-08-19, 00:48:47 GMT [MD]
|
||||||
#
|
#
|
||||||
# Unicode Character Database
|
# Unicode Character Database
|
||||||
# Copyright (c) 1991-2009 Unicode, Inc.
|
# Copyright (c) 1991-2010 Unicode, Inc.
|
||||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||||
# For documentation, see http://www.unicode.org/reports/tr44/
|
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||||
|
|
||||||
@ -73,7 +73,7 @@
|
|||||||
02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
|
02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
|
||||||
02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
|
02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
|
||||||
02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
|
02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
|
||||||
02E5..02EB ; Common # Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
|
02E5..02E9 ; Common # Sk [5] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER EXTRA-LOW TONE BAR
|
||||||
02EC ; Common # Lm MODIFIER LETTER VOICING
|
02EC ; Common # Lm MODIFIER LETTER VOICING
|
||||||
02ED ; Common # Sk MODIFIER LETTER UNASPIRATED
|
02ED ; Common # Sk MODIFIER LETTER UNASPIRATED
|
||||||
02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE
|
02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE
|
||||||
@ -83,7 +83,6 @@
|
|||||||
0385 ; Common # Sk GREEK DIALYTIKA TONOS
|
0385 ; Common # Sk GREEK DIALYTIKA TONOS
|
||||||
0387 ; Common # Po GREEK ANO TELEIA
|
0387 ; Common # Po GREEK ANO TELEIA
|
||||||
0589 ; Common # Po ARMENIAN FULL STOP
|
0589 ; Common # Po ARMENIAN FULL STOP
|
||||||
0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
|
|
||||||
060C ; Common # Po ARABIC COMMA
|
060C ; Common # Po ARABIC COMMA
|
||||||
061B ; Common # Po ARABIC SEMICOLON
|
061B ; Common # Po ARABIC SEMICOLON
|
||||||
061F ; Common # Po ARABIC QUESTION MARK
|
061F ; Common # Po ARABIC QUESTION MARK
|
||||||
@ -92,7 +91,6 @@
|
|||||||
06DD ; Common # Cf ARABIC END OF AYAH
|
06DD ; Common # Cf ARABIC END OF AYAH
|
||||||
0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
|
0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
|
||||||
0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN
|
0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN
|
||||||
0CF1..0CF2 ; Common # So [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
|
|
||||||
0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
|
0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
|
||||||
0FD5..0FD8 ; Common # So [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
|
0FD5..0FD8 ; Common # So [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
|
||||||
10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR
|
10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR
|
||||||
@ -148,7 +146,7 @@
|
|||||||
208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
|
208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
|
||||||
208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
|
208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
|
||||||
208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
|
208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
|
||||||
20A0..20B8 ; Common # Sc [25] EURO-CURRENCY SIGN..TENGE SIGN
|
20A0..20B9 ; Common # Sc [26] EURO-CURRENCY SIGN..INDIAN RUPEE SIGN
|
||||||
2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
|
2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
|
||||||
2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
|
2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
|
||||||
2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
|
2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
|
||||||
@ -157,7 +155,8 @@
|
|||||||
210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
|
210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
|
||||||
2114 ; Common # So L B BAR SYMBOL
|
2114 ; Common # So L B BAR SYMBOL
|
||||||
2115 ; Common # L& DOUBLE-STRUCK CAPITAL N
|
2115 ; Common # L& DOUBLE-STRUCK CAPITAL N
|
||||||
2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P
|
2116..2117 ; Common # So [2] NUMERO SIGN..SOUND RECORDING COPYRIGHT
|
||||||
|
2118 ; Common # Sm SCRIPT CAPITAL P
|
||||||
2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
|
2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
|
||||||
211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE
|
211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE
|
||||||
2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z
|
2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z
|
||||||
@ -213,7 +212,7 @@
|
|||||||
239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
|
239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
|
||||||
23B4..23DB ; Common # So [40] TOP SQUARE BRACKET..FUSE
|
23B4..23DB ; Common # So [40] TOP SQUARE BRACKET..FUSE
|
||||||
23DC..23E1 ; Common # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
|
23DC..23E1 ; Common # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
|
||||||
23E2..23E8 ; Common # So [7] WHITE TRAPEZIUM..DECIMAL EXPONENT SYMBOL
|
23E2..23F3 ; Common # So [18] WHITE TRAPEZIUM..HOURGLASS WITH FLOWING SAND
|
||||||
2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
|
2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
|
||||||
2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
|
2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
|
||||||
2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
|
2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
|
||||||
@ -227,18 +226,8 @@
|
|||||||
25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
|
25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
|
||||||
2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
|
2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
|
||||||
266F ; Common # Sm MUSIC SHARP SIGN
|
266F ; Common # Sm MUSIC SHARP SIGN
|
||||||
2670..26CD ; Common # So [94] WEST SYRIAC CROSS..DISABLED CAR
|
2670..26FF ; Common # So [144] WEST SYRIAC CROSS..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
|
||||||
26CF..26E1 ; Common # So [19] PICK..RESTRICTED LEFT ENTRY-2
|
2701..2767 ; Common # So [103] UPPER BLADE SCISSORS..ROTATED FLORAL HEART BULLET
|
||||||
26E3 ; Common # So HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
|
|
||||||
26E8..26FF ; Common # So [24] BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
|
|
||||||
2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
|
|
||||||
2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE
|
|
||||||
270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR
|
|
||||||
2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
|
|
||||||
274D ; Common # So SHADOWED WHITE CIRCLE
|
|
||||||
274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
|
|
||||||
2756..275E ; Common # So [9] BLACK DIAMOND MINUS WHITE X..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
|
|
||||||
2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
|
|
||||||
2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
|
2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
|
||||||
2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
|
2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
|
||||||
276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
|
276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
|
||||||
@ -254,15 +243,13 @@
|
|||||||
2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
|
2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
|
||||||
2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
|
2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
|
||||||
2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
|
2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
|
||||||
2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW
|
2794..27BF ; Common # So [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
|
||||||
2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
|
|
||||||
27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
|
|
||||||
27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
|
27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
|
||||||
27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER
|
27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER
|
||||||
27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER
|
27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER
|
||||||
27C7..27CA ; Common # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
|
27C7..27CA ; Common # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
|
||||||
27CC ; Common # Sm LONG DIVISION
|
27CC ; Common # Sm LONG DIVISION
|
||||||
27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
|
27CE..27E5 ; Common # Sm [24] SQUARED LOGICAL AND..WHITE SQUARE WITH RIGHTWARDS TICK
|
||||||
27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
|
27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
|
||||||
27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
|
27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
|
||||||
27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET
|
27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET
|
||||||
@ -555,27 +542,51 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
|
|||||||
1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
|
1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
|
||||||
1F000..1F02B ; Common # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
|
1F000..1F02B ; Common # So [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
|
||||||
1F030..1F093 ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
|
1F030..1F093 ; Common # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
|
||||||
|
1F0A0..1F0AE ; Common # So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
|
||||||
|
1F0B1..1F0BE ; Common # So [14] PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS
|
||||||
|
1F0C1..1F0CF ; Common # So [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
|
||||||
|
1F0D1..1F0DF ; Common # So [15] PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER
|
||||||
1F100..1F10A ; Common # No [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
|
1F100..1F10A ; Common # No [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
|
||||||
1F110..1F12E ; Common # So [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
|
1F110..1F12E ; Common # So [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
|
||||||
1F131 ; Common # So SQUARED LATIN CAPITAL LETTER B
|
1F130..1F169 ; Common # So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
|
||||||
1F13D ; Common # So SQUARED LATIN CAPITAL LETTER N
|
1F170..1F19A ; Common # So [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
|
||||||
1F13F ; Common # So SQUARED LATIN CAPITAL LETTER P
|
1F1E6..1F1FF ; Common # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
|
||||||
1F142 ; Common # So SQUARED LATIN CAPITAL LETTER S
|
1F201..1F202 ; Common # So [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA
|
||||||
1F146 ; Common # So SQUARED LATIN CAPITAL LETTER W
|
1F210..1F23A ; Common # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
|
||||||
1F14A..1F14E ; Common # So [5] SQUARED HV..SQUARED PPV
|
|
||||||
1F157 ; Common # So NEGATIVE CIRCLED LATIN CAPITAL LETTER H
|
|
||||||
1F15F ; Common # So NEGATIVE CIRCLED LATIN CAPITAL LETTER P
|
|
||||||
1F179 ; Common # So NEGATIVE SQUARED LATIN CAPITAL LETTER J
|
|
||||||
1F17B..1F17C ; Common # So [2] NEGATIVE SQUARED LATIN CAPITAL LETTER L..NEGATIVE SQUARED LATIN CAPITAL LETTER M
|
|
||||||
1F17F ; Common # So NEGATIVE SQUARED LATIN CAPITAL LETTER P
|
|
||||||
1F18A..1F18D ; Common # So [4] CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P..NEGATIVE SQUARED SA
|
|
||||||
1F190 ; Common # So SQUARE DJ
|
|
||||||
1F210..1F231 ; Common # So [34] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-6253
|
|
||||||
1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
|
1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
|
||||||
|
1F250..1F251 ; Common # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
|
||||||
|
1F300..1F320 ; Common # So [33] CYCLONE..SHOOTING STAR
|
||||||
|
1F330..1F335 ; Common # So [6] CHESTNUT..CACTUS
|
||||||
|
1F337..1F37C ; Common # So [70] TULIP..BABY BOTTLE
|
||||||
|
1F380..1F393 ; Common # So [20] RIBBON..GRADUATION CAP
|
||||||
|
1F3A0..1F3C4 ; Common # So [37] CAROUSEL HORSE..SURFER
|
||||||
|
1F3C6..1F3CA ; Common # So [5] TROPHY..SWIMMER
|
||||||
|
1F3E0..1F3F0 ; Common # So [17] HOUSE BUILDING..EUROPEAN CASTLE
|
||||||
|
1F400..1F43E ; Common # So [63] RAT..PAW PRINTS
|
||||||
|
1F440 ; Common # So EYES
|
||||||
|
1F442..1F4F7 ; Common # So [182] EAR..CAMERA
|
||||||
|
1F4F9..1F4FC ; Common # So [4] VIDEO CAMERA..VIDEOCASSETTE
|
||||||
|
1F500..1F53D ; Common # So [62] TWISTED RIGHTWARDS ARROWS..DOWN-POINTING SMALL RED TRIANGLE
|
||||||
|
1F550..1F567 ; Common # So [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
|
||||||
|
1F5FB..1F5FF ; Common # So [5] MOUNT FUJI..MOYAI
|
||||||
|
1F601..1F610 ; Common # So [16] GRINNING FACE WITH SMILING EYES..NEUTRAL FACE
|
||||||
|
1F612..1F614 ; Common # So [3] UNAMUSED FACE..PENSIVE FACE
|
||||||
|
1F616 ; Common # So CONFOUNDED FACE
|
||||||
|
1F618 ; Common # So FACE THROWING A KISS
|
||||||
|
1F61A ; Common # So KISSING FACE WITH CLOSED EYES
|
||||||
|
1F61C..1F61E ; Common # So [3] FACE WITH STUCK-OUT TONGUE AND WINKING EYE..DISAPPOINTED FACE
|
||||||
|
1F620..1F625 ; Common # So [6] ANGRY FACE..DISAPPOINTED BUT RELIEVED FACE
|
||||||
|
1F628..1F62B ; Common # So [4] FEARFUL FACE..TIRED FACE
|
||||||
|
1F62D ; Common # So LOUDLY CRYING FACE
|
||||||
|
1F630..1F633 ; Common # So [4] FACE WITH OPEN MOUTH AND COLD SWEAT..FLUSHED FACE
|
||||||
|
1F635..1F640 ; Common # So [12] DIZZY FACE..WEARY CAT FACE
|
||||||
|
1F645..1F64F ; Common # So [11] FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS
|
||||||
|
1F680..1F6C5 ; Common # So [70] ROCKET..LEFT LUGGAGE
|
||||||
|
1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
|
||||||
E0001 ; Common # Cf LANGUAGE TAG
|
E0001 ; Common # Cf LANGUAGE TAG
|
||||||
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
|
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
|
||||||
|
|
||||||
# Total code points: 5395
|
# Total code points: 6379
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -603,7 +614,7 @@ E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
|
|||||||
1E00..1EFF ; Latin # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
|
1E00..1EFF ; Latin # L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
|
||||||
2071 ; Latin # Lm SUPERSCRIPT LATIN SMALL LETTER I
|
2071 ; Latin # Lm SUPERSCRIPT LATIN SMALL LETTER I
|
||||||
207F ; Latin # Lm SUPERSCRIPT LATIN SMALL LETTER N
|
207F ; Latin # Lm SUPERSCRIPT LATIN SMALL LETTER N
|
||||||
2090..2094 ; Latin # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
|
2090..209C ; Latin # Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
|
||||||
212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN
|
212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN
|
||||||
2132 ; Latin # L& TURNED CAPITAL F
|
2132 ; Latin # L& TURNED CAPITAL F
|
||||||
214E ; Latin # L& TURNED SMALL F
|
214E ; Latin # L& TURNED SMALL F
|
||||||
@ -616,13 +627,16 @@ E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
|
|||||||
A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
|
A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
|
||||||
A770 ; Latin # Lm MODIFIER LETTER US
|
A770 ; Latin # Lm MODIFIER LETTER US
|
||||||
A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
|
A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
|
||||||
A78B..A78C ; Latin # L& [2] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER SALTILLO
|
A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
|
||||||
|
A790..A791 ; Latin # L& [2] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER N WITH DESCENDER
|
||||||
|
A7A0..A7A9 ; Latin # L& [10] LATIN CAPITAL LETTER G WITH OBLIQUE STROKE..LATIN SMALL LETTER S WITH OBLIQUE STROKE
|
||||||
|
A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M
|
||||||
A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M
|
A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M
|
||||||
FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
|
FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
|
||||||
FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
|
FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
|
||||||
FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
|
FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
|
||||||
|
|
||||||
# Total code points: 1244
|
# Total code points: 1267
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -687,12 +701,11 @@ FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
|
|||||||
0483..0484 ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PALATALIZATION
|
0483..0484 ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PALATALIZATION
|
||||||
0487 ; Cyrillic # Mn COMBINING CYRILLIC POKRYTIE
|
0487 ; Cyrillic # Mn COMBINING CYRILLIC POKRYTIE
|
||||||
0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
|
0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
|
||||||
048A..0525 ; Cyrillic # L& [156] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER PE WITH DESCENDER
|
048A..0527 ; Cyrillic # L& [158] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER SHHA WITH DESCENDER
|
||||||
1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL
|
1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL
|
||||||
1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN
|
1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN
|
||||||
2DE0..2DFF ; Cyrillic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
|
2DE0..2DFF ; Cyrillic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
|
||||||
A640..A65F ; Cyrillic # L& [32] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER YN
|
A640..A66D ; Cyrillic # L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
|
||||||
A662..A66D ; Cyrillic # L& [12] CYRILLIC CAPITAL LETTER SOFT DE..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
|
|
||||||
A66E ; Cyrillic # Lo CYRILLIC LETTER MULTIOCULAR O
|
A66E ; Cyrillic # Lo CYRILLIC LETTER MULTIOCULAR O
|
||||||
A66F ; Cyrillic # Mn COMBINING CYRILLIC VZMET
|
A66F ; Cyrillic # Mn COMBINING CYRILLIC VZMET
|
||||||
A670..A672 ; Cyrillic # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
|
A670..A672 ; Cyrillic # Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
|
||||||
@ -702,7 +715,7 @@ A67E ; Cyrillic # Po CYRILLIC KAVYKA
|
|||||||
A67F ; Cyrillic # Lm CYRILLIC PAYEROK
|
A67F ; Cyrillic # Lm CYRILLIC PAYEROK
|
||||||
A680..A697 ; Cyrillic # L& [24] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER SHWE
|
A680..A697 ; Cyrillic # L& [24] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER SHWE
|
||||||
|
|
||||||
# Total code points: 404
|
# Total code points: 408
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -744,6 +757,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
|
|||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
|
0600..0603 ; Arabic # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
|
||||||
0606..0608 ; Arabic # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
|
0606..0608 ; Arabic # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
|
||||||
0609..060A ; Arabic # Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
|
0609..060A ; Arabic # Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
|
||||||
060B ; Arabic # Sc AFGHANI SIGN
|
060B ; Arabic # Sc AFGHANI SIGN
|
||||||
@ -751,7 +765,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
|
|||||||
060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
|
060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
|
||||||
0610..061A ; Arabic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
|
0610..061A ; Arabic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
|
||||||
061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
|
061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
|
||||||
0621..063F ; Arabic # Lo [31] ARABIC LETTER HAMZA..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
|
0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
|
||||||
0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
|
0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
|
||||||
0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS
|
0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS
|
||||||
066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
|
066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
|
||||||
@ -760,7 +774,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
|
|||||||
06D4 ; Arabic # Po ARABIC FULL STOP
|
06D4 ; Arabic # Po ARABIC FULL STOP
|
||||||
06D5 ; Arabic # Lo ARABIC LETTER AE
|
06D5 ; Arabic # Lo ARABIC LETTER AE
|
||||||
06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
|
06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
|
||||||
06DE ; Arabic # Me ARABIC START OF RUB EL HIZB
|
06DE ; Arabic # So ARABIC START OF RUB EL HIZB
|
||||||
06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
|
06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
|
||||||
06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
|
06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
|
||||||
06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
|
06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
|
||||||
@ -773,6 +787,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
|
|||||||
06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
|
06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
|
||||||
0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
|
0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
|
||||||
FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
|
FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
|
||||||
|
FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
|
||||||
FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
|
FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
|
||||||
FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
|
||||||
FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
|
||||||
@ -782,7 +797,7 @@ FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN
|
|||||||
FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
|
||||||
10E60..10E7E ; Arabic # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
|
10E60..10E7E ; Arabic # No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
|
||||||
|
|
||||||
# Total code points: 1030
|
# Total code points: 1051
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -809,27 +824,29 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA
|
|||||||
0900..0902 ; Devanagari # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
|
0900..0902 ; Devanagari # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
|
||||||
0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA
|
0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA
|
||||||
0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
|
0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
|
||||||
|
093A ; Devanagari # Mn DEVANAGARI VOWEL SIGN OE
|
||||||
|
093B ; Devanagari # Mc DEVANAGARI VOWEL SIGN OOE
|
||||||
093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA
|
093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA
|
||||||
093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA
|
093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA
|
||||||
093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
|
093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
|
||||||
0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
|
0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
|
||||||
0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
|
0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
|
||||||
094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA
|
094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA
|
||||||
094E ; Devanagari # Mc DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
|
094E..094F ; Devanagari # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
|
||||||
0950 ; Devanagari # Lo DEVANAGARI OM
|
0950 ; Devanagari # Lo DEVANAGARI OM
|
||||||
0953..0955 ; Devanagari # Mn [3] DEVANAGARI GRAVE ACCENT..DEVANAGARI VOWEL SIGN CANDRA LONG E
|
0953..0957 ; Devanagari # Mn [5] DEVANAGARI GRAVE ACCENT..DEVANAGARI VOWEL SIGN UUE
|
||||||
0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
|
0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
|
||||||
0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
|
0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
|
||||||
0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
|
0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
|
||||||
0971 ; Devanagari # Lm DEVANAGARI SIGN HIGH SPACING DOT
|
0971 ; Devanagari # Lm DEVANAGARI SIGN HIGH SPACING DOT
|
||||||
0972 ; Devanagari # Lo DEVANAGARI LETTER CANDRA A
|
0972..0977 ; Devanagari # Lo [6] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER UUE
|
||||||
0979..097F ; Devanagari # Lo [7] DEVANAGARI LETTER ZHA..DEVANAGARI LETTER BBA
|
0979..097F ; Devanagari # Lo [7] DEVANAGARI LETTER ZHA..DEVANAGARI LETTER BBA
|
||||||
A8E0..A8F1 ; Devanagari # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
|
A8E0..A8F1 ; Devanagari # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
|
||||||
A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
|
A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
|
||||||
A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
|
A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
|
||||||
A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
|
A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
|
||||||
|
|
||||||
# Total code points: 140
|
# Total code points: 150
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -941,8 +958,9 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
|
|||||||
0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
|
0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
|
||||||
0B70 ; Oriya # So ORIYA ISSHAR
|
0B70 ; Oriya # So ORIYA ISSHAR
|
||||||
0B71 ; Oriya # Lo ORIYA LETTER WA
|
0B71 ; Oriya # Lo ORIYA LETTER WA
|
||||||
|
0B72..0B77 ; Oriya # No [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
|
||||||
|
|
||||||
# Total code points: 84
|
# Total code points: 90
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1018,22 +1036,23 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
|
|||||||
0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
|
0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
|
||||||
0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
|
0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
|
||||||
0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
|
0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
|
||||||
|
0CF1..0CF2 ; Kannada # Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
|
||||||
|
|
||||||
# Total code points: 84
|
# Total code points: 86
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
|
0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
|
||||||
0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
|
0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
|
||||||
0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
|
0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
|
||||||
0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
|
0D12..0D3A ; Malayalam # Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
|
||||||
0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
|
|
||||||
0D3D ; Malayalam # Lo MALAYALAM SIGN AVAGRAHA
|
0D3D ; Malayalam # Lo MALAYALAM SIGN AVAGRAHA
|
||||||
0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
|
0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
|
||||||
0D41..0D44 ; Malayalam # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
|
0D41..0D44 ; Malayalam # Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
|
||||||
0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
|
0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
|
||||||
0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
|
0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
|
||||||
0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
|
0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
|
||||||
|
0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH
|
||||||
0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK
|
0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK
|
||||||
0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
|
0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
|
||||||
0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
|
0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
|
||||||
@ -1042,7 +1061,7 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
|
|||||||
0D79 ; Malayalam # So MALAYALAM DATE MARK
|
0D79 ; Malayalam # So MALAYALAM DATE MARK
|
||||||
0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
|
0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
|
||||||
|
|
||||||
# Total code points: 95
|
# Total code points: 98
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1132,16 +1151,17 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
|
|||||||
0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
|
0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
|
||||||
0F85 ; Tibetan # Po TIBETAN MARK PALUTA
|
0F85 ; Tibetan # Po TIBETAN MARK PALUTA
|
||||||
0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
|
0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
|
||||||
0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
|
0F88..0F8C ; Tibetan # Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
|
||||||
0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
|
0F8D..0F97 ; Tibetan # Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
|
||||||
0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
|
0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
|
||||||
0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
|
0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
|
||||||
0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN
|
0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN
|
||||||
0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
|
0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
|
||||||
0FCE..0FCF ; Tibetan # So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
|
0FCE..0FCF ; Tibetan # So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
|
||||||
0FD0..0FD4 ; Tibetan # Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
|
0FD0..0FD4 ; Tibetan # Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
|
||||||
|
0FD9..0FDA ; Tibetan # Po [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS
|
||||||
|
|
||||||
# Total code points: 201
|
# Total code points: 207
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1201,6 +1221,7 @@ AA7B ; Myanmar # Mc MYANMAR SIGN PAO KAREN TONE
|
|||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
1100..11FF ; Hangul # Lo [256] HANGUL CHOSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
|
1100..11FF ; Hangul # Lo [256] HANGUL CHOSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN
|
||||||
|
302E..302F ; Hangul # Mn [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
|
||||||
3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
|
3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
|
||||||
3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
|
3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
|
||||||
3260..327E ; Hangul # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
|
3260..327E ; Hangul # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
|
||||||
@ -1214,7 +1235,7 @@ FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL
|
|||||||
FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
|
FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
|
||||||
FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
|
FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
|
||||||
|
|
||||||
# Total code points: 11737
|
# Total code points: 11739
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1234,7 +1255,7 @@ FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL L
|
|||||||
12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
|
12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
|
||||||
1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
|
1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
|
||||||
1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
|
1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
|
||||||
135F ; Ethiopic # Mn ETHIOPIC COMBINING GEMINATION MARK
|
135D..135F ; Ethiopic # Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
|
||||||
1360 ; Ethiopic # So ETHIOPIC SECTION MARK
|
1360 ; Ethiopic # So ETHIOPIC SECTION MARK
|
||||||
1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
|
1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
|
||||||
1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
|
1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
|
||||||
@ -1249,8 +1270,13 @@ FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL L
|
|||||||
2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
|
2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
|
||||||
2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
|
2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
|
||||||
2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
|
2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
|
||||||
|
AB01..AB06 ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
|
||||||
|
AB09..AB0E ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
|
||||||
|
AB11..AB16 ; Ethiopic # Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
|
||||||
|
AB20..AB26 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
|
||||||
|
AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
|
||||||
|
|
||||||
# Total code points: 461
|
# Total code points: 495
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1329,9 +1355,10 @@ FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL L
|
|||||||
3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
|
3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
|
||||||
309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
|
309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
|
||||||
309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
|
309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
|
||||||
|
1B001 ; Hiragana # Lo HIRAGANA LETTER ARCHAIC YE
|
||||||
1F200 ; Hiragana # So SQUARE HIRAGANA HOKA
|
1F200 ; Hiragana # So SQUARE HIRAGANA HOKA
|
||||||
|
|
||||||
# Total code points: 90
|
# Total code points: 91
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1343,15 +1370,17 @@ FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL L
|
|||||||
3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO
|
3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO
|
||||||
FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
|
FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
|
||||||
FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
|
FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
|
||||||
|
1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E
|
||||||
|
|
||||||
# Total code points: 299
|
# Total code points: 300
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
|
02EA..02EB ; Bopomofo # Sk [2] MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER YANG DEPARTING TONE MARK
|
||||||
3105..312D ; Bopomofo # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH
|
3105..312D ; Bopomofo # Lo [41] BOPOMOFO LETTER B..BOPOMOFO LETTER IH
|
||||||
31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
|
31A0..31BA ; Bopomofo # Lo [27] BOPOMOFO LETTER BU..BOPOMOFO LETTER ZY
|
||||||
|
|
||||||
# Total code points: 65
|
# Total code points: 70
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1370,9 +1399,10 @@ FA30..FA6D ; Han # Lo [62] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILI
|
|||||||
FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
|
FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
|
||||||
20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
|
20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
|
||||||
2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
|
2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
|
||||||
|
2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
|
||||||
2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
|
||||||
|
|
||||||
# Total code points: 75738
|
# Total code points: 75960
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1410,6 +1440,7 @@ A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
|
|||||||
0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
|
0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
|
||||||
0485..0486 ; Inherited # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
|
0485..0486 ; Inherited # Mn [2] COMBINING CYRILLIC DASIA PNEUMATA..COMBINING CYRILLIC PSILI PNEUMATA
|
||||||
064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
|
064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
|
||||||
|
065F ; Inherited # Mn ARABIC WAVY HAMZA BELOW
|
||||||
0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
|
0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
|
||||||
0951..0952 ; Inherited # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA
|
0951..0952 ; Inherited # Mn [2] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI STRESS SIGN ANUDATTA
|
||||||
1CD0..1CD2 ; Inherited # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
|
1CD0..1CD2 ; Inherited # Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
|
||||||
@ -1417,14 +1448,14 @@ A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
|
|||||||
1CE2..1CE8 ; Inherited # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
|
1CE2..1CE8 ; Inherited # Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
|
||||||
1CED ; Inherited # Mn VEDIC SIGN TIRYAK
|
1CED ; Inherited # Mn VEDIC SIGN TIRYAK
|
||||||
1DC0..1DE6 ; Inherited # Mn [39] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER Z
|
1DC0..1DE6 ; Inherited # Mn [39] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER Z
|
||||||
1DFD..1DFF ; Inherited # Mn [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
1DFC..1DFF ; Inherited # Mn [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
|
||||||
200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
|
200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
|
||||||
20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
|
20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
|
||||||
20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
|
20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
|
||||||
20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE
|
20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE
|
||||||
20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
|
20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
|
||||||
20E5..20F0 ; Inherited # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
|
20E5..20F0 ; Inherited # Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
|
||||||
302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
|
302A..302D ; Inherited # Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
|
||||||
3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
|
3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
|
||||||
FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
|
FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
|
||||||
FE20..FE26 ; Inherited # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON
|
FE20..FE26 ; Inherited # Mn [7] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON
|
||||||
@ -1568,8 +1599,9 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2
|
|||||||
19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
|
19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
|
||||||
19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
|
19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
|
||||||
19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
|
19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
|
||||||
19D0..19DA ; New_Tai_Lue # Nd [11] NEW TAI LUE DIGIT ZERO..NEW TAI LUE THAM DIGIT ONE
|
19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
|
||||||
19DE..19DF ; New_Tai_Lue # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
|
19DA ; New_Tai_Lue # No NEW TAI LUE THAM DIGIT ONE
|
||||||
|
19DE..19DF ; New_Tai_Lue # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
|
||||||
|
|
||||||
# Total code points: 83
|
# Total code points: 83
|
||||||
|
|
||||||
@ -1584,8 +1616,10 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2
|
|||||||
|
|
||||||
2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
|
2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
|
||||||
2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
|
2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
|
||||||
|
2D70 ; Tifinagh # Po TIFINAGH SEPARATOR MARK
|
||||||
|
2D7F ; Tifinagh # Mn TIFINAGH CONSONANT JOINER
|
||||||
|
|
||||||
# Total code points: 55
|
# Total code points: 57
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1882,8 +1916,9 @@ A6A0..A6E5 ; Bamum # Lo [70] BAMUM LETTER A..BAMUM LETTER KI
|
|||||||
A6E6..A6EF ; Bamum # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
|
A6E6..A6EF ; Bamum # Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
|
||||||
A6F0..A6F1 ; Bamum # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
|
A6F0..A6F1 ; Bamum # Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
|
||||||
A6F2..A6F7 ; Bamum # Po [6] BAMUM NJAEMLI..BAMUM QUESTION MARK
|
A6F2..A6F7 ; Bamum # Po [6] BAMUM NJAEMLI..BAMUM QUESTION MARK
|
||||||
|
16800..16A38 ; Bamum # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
|
||||||
|
|
||||||
# Total code points: 88
|
# Total code points: 657
|
||||||
|
|
||||||
# ================================================
|
# ================================================
|
||||||
|
|
||||||
@ -1969,4 +2004,40 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
|
|||||||
|
|
||||||
# Total code points: 66
|
# Total code points: 66
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
1BC0..1BE5 ; Batak # Lo [38] BATAK LETTER A..BATAK LETTER U
|
||||||
|
1BE6 ; Batak # Mn BATAK SIGN TOMPI
|
||||||
|
1BE7 ; Batak # Mc BATAK VOWEL SIGN E
|
||||||
|
1BE8..1BE9 ; Batak # Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
|
||||||
|
1BEA..1BEC ; Batak # Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
|
||||||
|
1BED ; Batak # Mn BATAK VOWEL SIGN KARO O
|
||||||
|
1BEE ; Batak # Mc BATAK VOWEL SIGN U
|
||||||
|
1BEF..1BF1 ; Batak # Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
|
||||||
|
1BF2..1BF3 ; Batak # Mc [2] BATAK PANGOLAT..BATAK PANONGONAN
|
||||||
|
1BFC..1BFF ; Batak # Po [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT
|
||||||
|
|
||||||
|
# Total code points: 56
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
11000 ; Brahmi # Mc BRAHMI SIGN CANDRABINDU
|
||||||
|
11001 ; Brahmi # Mn BRAHMI SIGN ANUSVARA
|
||||||
|
11002 ; Brahmi # Mc BRAHMI SIGN VISARGA
|
||||||
|
11003..11037 ; Brahmi # Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
|
||||||
|
11038..11046 ; Brahmi # Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
|
||||||
|
11047..1104D ; Brahmi # Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
|
||||||
|
11052..11065 ; Brahmi # No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
|
||||||
|
11066..1106F ; Brahmi # Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
|
||||||
|
|
||||||
|
# Total code points: 108
|
||||||
|
|
||||||
|
# ================================================
|
||||||
|
|
||||||
|
0840..0858 ; Mandaic # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
|
||||||
|
0859..085B ; Mandaic # Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
|
||||||
|
085E ; Mandaic # Po MANDAIC PUNCTUATION
|
||||||
|
|
||||||
|
# Total code points: 29
|
||||||
|
|
||||||
# EOF
|
# EOF
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# SpecialCasing-5.1.0.txt
|
# SpecialCasing-6.0.0.txt
|
||||||
# Date: 2008-03-03, 21:58:10 GMT [MD]
|
# Date: 2010-05-18, 00:49:39 GMT [MD]
|
||||||
#
|
#
|
||||||
# Unicode Character Database
|
# Unicode Character Database
|
||||||
# Copyright (c) 1991-2008 Unicode, Inc.
|
# Copyright (c) 1991-2010 Unicode, Inc.
|
||||||
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
# For terms of use, see http://www.unicode.org/terms_of_use.html
|
||||||
# For documentation, see UCD.html
|
# For documentation, see http://www.unicode.org/reports/tr44/
|
||||||
#
|
#
|
||||||
# Special Casing Properties
|
# Special Casing Properties
|
||||||
#
|
#
|
||||||
@ -106,11 +106,11 @@ FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
|
|||||||
1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
|
1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
|
||||||
1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
|
1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
|
||||||
|
|
||||||
# IMPORTANT-when capitalizing iota-subscript (0345)
|
# IMPORTANT-when iota-subscript (0345) is uppercased or titlecased,
|
||||||
# It MUST be in normalized form--moved to the end of any sequence of combining marks.
|
# the result will be incorrect unless the iota-subscript is moved to the end
|
||||||
# This is because logically it represents a following base character!
|
# of any sequence of combining marks. Otherwise, the accents will go on the capital iota.
|
||||||
# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
|
# This process can be achieved by first transforming the text to NFC before casing.
|
||||||
# It should never be the first character in a word, so in titlecasing it can be left as is.
|
# E.g. <alpha><iota_subscript><acute> is uppercased to <ALPHA><acute><IOTA>
|
||||||
|
|
||||||
# The following cases are already in the UnicodeData file, so are only commented here.
|
# The following cases are already in the UnicodeData file, so are only commented here.
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
|||||||
5.1.0
|
6.0.0
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -113,6 +113,6 @@ public class BasicControl implements Control {
|
|||||||
* ASN.1 BER encoded value.
|
* ASN.1 BER encoded value.
|
||||||
*/
|
*/
|
||||||
public byte[] getEncodedValue() {
|
public byte[] getEncodedValue() {
|
||||||
return value;
|
return value == null ? null : value.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,12 +611,15 @@ public class Color implements Paint, java.io.Serializable {
|
|||||||
* <p>
|
* <p>
|
||||||
* This method applies an arbitrary scale factor to each of the three RGB
|
* This method applies an arbitrary scale factor to each of the three RGB
|
||||||
* components of this <code>Color</code> to create a brighter version
|
* components of this <code>Color</code> to create a brighter version
|
||||||
* of this <code>Color</code>. Although <code>brighter</code> and
|
* of this <code>Color</code>.
|
||||||
|
* The {@code alpha} value is preserved.
|
||||||
|
* Although <code>brighter</code> and
|
||||||
* <code>darker</code> are inverse operations, the results of a
|
* <code>darker</code> are inverse operations, the results of a
|
||||||
* series of invocations of these two methods might be inconsistent
|
* series of invocations of these two methods might be inconsistent
|
||||||
* because of rounding errors.
|
* because of rounding errors.
|
||||||
* @return a new <code>Color</code> object that is
|
* @return a new <code>Color</code> object that is
|
||||||
* a brighter version of this <code>Color</code>.
|
* a brighter version of this <code>Color</code>
|
||||||
|
* with the same {@code alpha} value.
|
||||||
* @see java.awt.Color#darker
|
* @see java.awt.Color#darker
|
||||||
* @since JDK1.0
|
* @since JDK1.0
|
||||||
*/
|
*/
|
||||||
@ -624,6 +627,7 @@ public class Color implements Paint, java.io.Serializable {
|
|||||||
int r = getRed();
|
int r = getRed();
|
||||||
int g = getGreen();
|
int g = getGreen();
|
||||||
int b = getBlue();
|
int b = getBlue();
|
||||||
|
int alpha = getAlpha();
|
||||||
|
|
||||||
/* From 2D group:
|
/* From 2D group:
|
||||||
* 1. black.brighter() should return grey
|
* 1. black.brighter() should return grey
|
||||||
@ -632,7 +636,7 @@ public class Color implements Paint, java.io.Serializable {
|
|||||||
*/
|
*/
|
||||||
int i = (int)(1.0/(1.0-FACTOR));
|
int i = (int)(1.0/(1.0-FACTOR));
|
||||||
if ( r == 0 && g == 0 && b == 0) {
|
if ( r == 0 && g == 0 && b == 0) {
|
||||||
return new Color(i, i, i);
|
return new Color(i, i, i, alpha);
|
||||||
}
|
}
|
||||||
if ( r > 0 && r < i ) r = i;
|
if ( r > 0 && r < i ) r = i;
|
||||||
if ( g > 0 && g < i ) g = i;
|
if ( g > 0 && g < i ) g = i;
|
||||||
@ -640,7 +644,8 @@ public class Color implements Paint, java.io.Serializable {
|
|||||||
|
|
||||||
return new Color(Math.min((int)(r/FACTOR), 255),
|
return new Color(Math.min((int)(r/FACTOR), 255),
|
||||||
Math.min((int)(g/FACTOR), 255),
|
Math.min((int)(g/FACTOR), 255),
|
||||||
Math.min((int)(b/FACTOR), 255));
|
Math.min((int)(b/FACTOR), 255),
|
||||||
|
alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -649,19 +654,23 @@ public class Color implements Paint, java.io.Serializable {
|
|||||||
* <p>
|
* <p>
|
||||||
* This method applies an arbitrary scale factor to each of the three RGB
|
* This method applies an arbitrary scale factor to each of the three RGB
|
||||||
* components of this <code>Color</code> to create a darker version of
|
* components of this <code>Color</code> to create a darker version of
|
||||||
* this <code>Color</code>. Although <code>brighter</code> and
|
* this <code>Color</code>.
|
||||||
|
* The {@code alpha} value is preserved.
|
||||||
|
* Although <code>brighter</code> and
|
||||||
* <code>darker</code> are inverse operations, the results of a series
|
* <code>darker</code> are inverse operations, the results of a series
|
||||||
* of invocations of these two methods might be inconsistent because
|
* of invocations of these two methods might be inconsistent because
|
||||||
* of rounding errors.
|
* of rounding errors.
|
||||||
* @return a new <code>Color</code> object that is
|
* @return a new <code>Color</code> object that is
|
||||||
* a darker version of this <code>Color</code>.
|
* a darker version of this <code>Color</code>
|
||||||
|
* with the same {@code alpha} value.
|
||||||
* @see java.awt.Color#brighter
|
* @see java.awt.Color#brighter
|
||||||
* @since JDK1.0
|
* @since JDK1.0
|
||||||
*/
|
*/
|
||||||
public Color darker() {
|
public Color darker() {
|
||||||
return new Color(Math.max((int)(getRed() *FACTOR), 0),
|
return new Color(Math.max((int)(getRed() *FACTOR), 0),
|
||||||
Math.max((int)(getGreen()*FACTOR), 0),
|
Math.max((int)(getGreen()*FACTOR), 0),
|
||||||
Math.max((int)(getBlue() *FACTOR), 0));
|
Math.max((int)(getBlue() *FACTOR), 0),
|
||||||
|
getAlpha());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,6 +51,7 @@ import javax.accessibility.*;
|
|||||||
import sun.util.logging.PlatformLogger;
|
import sun.util.logging.PlatformLogger;
|
||||||
|
|
||||||
import sun.awt.AppContext;
|
import sun.awt.AppContext;
|
||||||
|
import sun.awt.AWTAccessor;
|
||||||
import sun.awt.CausedFocusEvent;
|
import sun.awt.CausedFocusEvent;
|
||||||
import sun.awt.PeerEvent;
|
import sun.awt.PeerEvent;
|
||||||
import sun.awt.SunToolkit;
|
import sun.awt.SunToolkit;
|
||||||
@ -247,6 +248,13 @@ public class Container extends Component {
|
|||||||
if (!GraphicsEnvironment.isHeadless()) {
|
if (!GraphicsEnvironment.isHeadless()) {
|
||||||
initIDs();
|
initIDs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AWTAccessor.setContainerAccessor(new AWTAccessor.ContainerAccessor() {
|
||||||
|
@Override
|
||||||
|
public void validateUnconditionally(Container cont) {
|
||||||
|
cont.validateUnconditionally();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1248,14 +1248,31 @@ public class Dialog extends Window {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Disables or enables decorations for this dialog.
|
* Disables or enables decorations for this dialog.
|
||||||
* This method can only be called while the dialog is not displayable.
|
* <p>
|
||||||
* @param undecorated <code>true</code> if no dialog decorations are
|
* This method can only be called while the dialog is not displayable. To
|
||||||
* to be enabled;
|
* make this dialog decorated, it must be opaque and have the default shape,
|
||||||
* <code>false</code> if dialog decorations are to be enabled.
|
* otherwise the {@code IllegalComponentStateException} will be thrown.
|
||||||
* @throws <code>IllegalComponentStateException</code> if the dialog
|
* Refer to {@link Window#setShape}, {@link Window#setOpacity} and {@link
|
||||||
* is displayable.
|
* Window#setBackground} for details
|
||||||
|
*
|
||||||
|
* @param undecorated {@code true} if no dialog decorations are to be
|
||||||
|
* enabled; {@code false} if dialog decorations are to be enabled
|
||||||
|
*
|
||||||
|
* @throws IllegalComponentStateException if the dialog is displayable
|
||||||
|
* @throws IllegalComponentStateException if {@code undecorated} is
|
||||||
|
* {@code false}, and this dialog does not have the default shape
|
||||||
|
* @throws IllegalComponentStateException if {@code undecorated} is
|
||||||
|
* {@code false}, and this dialog opacity is less than {@code 1.0f}
|
||||||
|
* @throws IllegalComponentStateException if {@code undecorated} is
|
||||||
|
* {@code false}, and the alpha value of this dialog background
|
||||||
|
* color is less than {@code 1.0f}
|
||||||
|
*
|
||||||
* @see #isUndecorated
|
* @see #isUndecorated
|
||||||
* @see Component#isDisplayable
|
* @see Component#isDisplayable
|
||||||
|
* @see Window#getShape
|
||||||
|
* @see Window#getOpacity
|
||||||
|
* @see Window#getBackground
|
||||||
|
*
|
||||||
* @since 1.4
|
* @since 1.4
|
||||||
*/
|
*/
|
||||||
public void setUndecorated(boolean undecorated) {
|
public void setUndecorated(boolean undecorated) {
|
||||||
@ -1264,6 +1281,18 @@ public class Dialog extends Window {
|
|||||||
if (isDisplayable()) {
|
if (isDisplayable()) {
|
||||||
throw new IllegalComponentStateException("The dialog is displayable.");
|
throw new IllegalComponentStateException("The dialog is displayable.");
|
||||||
}
|
}
|
||||||
|
if (!undecorated) {
|
||||||
|
if (getOpacity() < 1.0f) {
|
||||||
|
throw new IllegalComponentStateException("The dialog is not opaque");
|
||||||
|
}
|
||||||
|
if (getShape() != null) {
|
||||||
|
throw new IllegalComponentStateException("The dialog does not have a default shape");
|
||||||
|
}
|
||||||
|
Color bg = getBackground();
|
||||||
|
if ((bg != null) && (bg.getAlpha() < 255)) {
|
||||||
|
throw new IllegalComponentStateException("The dialog background color is not opaque");
|
||||||
|
}
|
||||||
|
}
|
||||||
this.undecorated = undecorated;
|
this.undecorated = undecorated;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1280,6 +1309,45 @@ public class Dialog extends Window {
|
|||||||
return undecorated;
|
return undecorated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setOpacity(float opacity) {
|
||||||
|
synchronized (getTreeLock()) {
|
||||||
|
if ((opacity < 1.0f) && !isUndecorated()) {
|
||||||
|
throw new IllegalComponentStateException("The dialog is decorated");
|
||||||
|
}
|
||||||
|
super.setOpacity(opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setShape(Shape shape) {
|
||||||
|
synchronized (getTreeLock()) {
|
||||||
|
if ((shape != null) && !isUndecorated()) {
|
||||||
|
throw new IllegalComponentStateException("The dialog is decorated");
|
||||||
|
}
|
||||||
|
super.setShape(shape);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setBackground(Color bgColor) {
|
||||||
|
synchronized (getTreeLock()) {
|
||||||
|
if ((bgColor != null) && (bgColor.getAlpha() < 255) && !isUndecorated()) {
|
||||||
|
throw new IllegalComponentStateException("The dialog is decorated");
|
||||||
|
}
|
||||||
|
super.setBackground(bgColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a string representing the state of this dialog. This
|
* Returns a string representing the state of this dialog. This
|
||||||
* method is intended to be used only for debugging purposes, and the
|
* method is intended to be used only for debugging purposes, and the
|
||||||
|
@ -99,7 +99,7 @@ public class FileDialog extends Dialog {
|
|||||||
* Contains the File instances for all the files that the user selects.
|
* Contains the File instances for all the files that the user selects.
|
||||||
*
|
*
|
||||||
* @serial
|
* @serial
|
||||||
* @see getFiles
|
* @see #getFiles
|
||||||
* @since 1.7
|
* @since 1.7
|
||||||
*/
|
*/
|
||||||
private File[] files;
|
private File[] files;
|
||||||
|
@ -828,6 +828,11 @@ public class Frame extends Window implements MenuContainer {
|
|||||||
return frame.state;
|
return frame.state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public Rectangle getMaximizedBounds(Frame frame) {
|
||||||
|
synchronized(frame.getObjectLock()) {
|
||||||
|
return frame.maximizedBounds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -855,8 +860,10 @@ public class Frame extends Window implements MenuContainer {
|
|||||||
* @see #getMaximizedBounds()
|
* @see #getMaximizedBounds()
|
||||||
* @since 1.4
|
* @since 1.4
|
||||||
*/
|
*/
|
||||||
public synchronized void setMaximizedBounds(Rectangle bounds) {
|
public void setMaximizedBounds(Rectangle bounds) {
|
||||||
this.maximizedBounds = bounds;
|
synchronized(getObjectLock()) {
|
||||||
|
this.maximizedBounds = bounds;
|
||||||
|
}
|
||||||
FramePeer peer = (FramePeer)this.peer;
|
FramePeer peer = (FramePeer)this.peer;
|
||||||
if (peer != null) {
|
if (peer != null) {
|
||||||
peer.setMaximizedBounds(bounds);
|
peer.setMaximizedBounds(bounds);
|
||||||
@ -873,21 +880,40 @@ public class Frame extends Window implements MenuContainer {
|
|||||||
* @since 1.4
|
* @since 1.4
|
||||||
*/
|
*/
|
||||||
public Rectangle getMaximizedBounds() {
|
public Rectangle getMaximizedBounds() {
|
||||||
return maximizedBounds;
|
synchronized(getObjectLock()) {
|
||||||
|
return maximizedBounds;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disables or enables decorations for this frame.
|
* Disables or enables decorations for this frame.
|
||||||
* This method can only be called while the frame is not displayable.
|
* <p>
|
||||||
* @param undecorated <code>true</code> if no frame decorations are
|
* This method can only be called while the frame is not displayable. To
|
||||||
* to be enabled;
|
* make this frame decorated, it must be opaque and have the default shape,
|
||||||
* <code>false</code> if frame decorations are to be enabled.
|
* otherwise the {@code IllegalComponentStateException} will be thrown.
|
||||||
* @throws <code>IllegalComponentStateException</code> if the frame
|
* Refer to {@link Window#setShape}, {@link Window#setOpacity} and {@link
|
||||||
* is displayable.
|
* Window#setBackground} for details
|
||||||
|
*
|
||||||
|
* @param undecorated {@code true} if no frame decorations are to be
|
||||||
|
* enabled; {@code false} if frame decorations are to be enabled
|
||||||
|
*
|
||||||
|
* @throws IllegalComponentStateException if the frame is displayable
|
||||||
|
* @throws IllegalComponentStateException if {@code undecorated} is
|
||||||
|
* {@code false}, and this frame does not have the default shape
|
||||||
|
* @throws IllegalComponentStateException if {@code undecorated} is
|
||||||
|
* {@code false}, and this frame opacity is less than {@code 1.0f}
|
||||||
|
* @throws IllegalComponentStateException if {@code undecorated} is
|
||||||
|
* {@code false}, and the alpha value of this frame background
|
||||||
|
* color is less than {@code 1.0f}
|
||||||
|
*
|
||||||
* @see #isUndecorated
|
* @see #isUndecorated
|
||||||
* @see Component#isDisplayable
|
* @see Component#isDisplayable
|
||||||
|
* @see Window#getShape
|
||||||
|
* @see Window#getOpacity
|
||||||
|
* @see Window#getBackground
|
||||||
* @see javax.swing.JFrame#setDefaultLookAndFeelDecorated(boolean)
|
* @see javax.swing.JFrame#setDefaultLookAndFeelDecorated(boolean)
|
||||||
|
*
|
||||||
* @since 1.4
|
* @since 1.4
|
||||||
*/
|
*/
|
||||||
public void setUndecorated(boolean undecorated) {
|
public void setUndecorated(boolean undecorated) {
|
||||||
@ -896,6 +922,18 @@ public class Frame extends Window implements MenuContainer {
|
|||||||
if (isDisplayable()) {
|
if (isDisplayable()) {
|
||||||
throw new IllegalComponentStateException("The frame is displayable.");
|
throw new IllegalComponentStateException("The frame is displayable.");
|
||||||
}
|
}
|
||||||
|
if (!undecorated) {
|
||||||
|
if (getOpacity() < 1.0f) {
|
||||||
|
throw new IllegalComponentStateException("The frame is not opaque");
|
||||||
|
}
|
||||||
|
if (getShape() != null) {
|
||||||
|
throw new IllegalComponentStateException("The frame does not have a default shape");
|
||||||
|
}
|
||||||
|
Color bg = getBackground();
|
||||||
|
if ((bg != null) && (bg.getAlpha() < 255)) {
|
||||||
|
throw new IllegalComponentStateException("The frame background color is not opaque");
|
||||||
|
}
|
||||||
|
}
|
||||||
this.undecorated = undecorated;
|
this.undecorated = undecorated;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -912,6 +950,45 @@ public class Frame extends Window implements MenuContainer {
|
|||||||
return undecorated;
|
return undecorated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setOpacity(float opacity) {
|
||||||
|
synchronized (getTreeLock()) {
|
||||||
|
if ((opacity < 1.0f) && !isUndecorated()) {
|
||||||
|
throw new IllegalComponentStateException("The frame is decorated");
|
||||||
|
}
|
||||||
|
super.setOpacity(opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setShape(Shape shape) {
|
||||||
|
synchronized (getTreeLock()) {
|
||||||
|
if ((shape != null) && !isUndecorated()) {
|
||||||
|
throw new IllegalComponentStateException("The frame is decorated");
|
||||||
|
}
|
||||||
|
super.setShape(shape);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void setBackground(Color bgColor) {
|
||||||
|
synchronized (getTreeLock()) {
|
||||||
|
if ((bgColor != null) && (bgColor.getAlpha() < 255) && !isUndecorated()) {
|
||||||
|
throw new IllegalComponentStateException("The frame is decorated");
|
||||||
|
}
|
||||||
|
super.setBackground(bgColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the specified menu bar from this frame.
|
* Removes the specified menu bar from this frame.
|
||||||
* @param m the menu component to remove.
|
* @param m the menu component to remove.
|
||||||
|
@ -3474,14 +3474,20 @@ public class Window extends Container implements Accessible {
|
|||||||
* level of 0 may or may not disable the mouse event handling on this
|
* level of 0 may or may not disable the mouse event handling on this
|
||||||
* window. This is a platform-dependent behavior.
|
* window. This is a platform-dependent behavior.
|
||||||
* <p>
|
* <p>
|
||||||
* In order for this method to enable the translucency effect, the {@link
|
* The following conditions must be met in order to set the opacity value
|
||||||
* GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)} method must indicate that
|
* less than {@code 1.0f}:
|
||||||
* the {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
|
* <ul>
|
||||||
* translucency is supported.
|
* <li>The {@link GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
|
||||||
|
* translucency must be supported by the underlying system
|
||||||
|
* <li>The window must be undecorated (see {@link Frame#setUndecorated}
|
||||||
|
* and {@link Dialog#setUndecorated})
|
||||||
|
* <li>The window must not be in full-screen mode (see {@link
|
||||||
|
* GraphicsDevice#setFullScreenWindow(Window)})
|
||||||
|
* </ul>
|
||||||
* <p>
|
* <p>
|
||||||
* Also note that the window must not be in the full-screen mode when
|
* If the requested opacity value is less than {@code 1.0f}, and any of the
|
||||||
* setting the opacity value < 1.0f. Otherwise the {@code
|
* above conditions are not met, the window opacity will not change,
|
||||||
* IllegalComponentStateException} is thrown.
|
* and the {@code IllegalComponentStateException} will be thrown.
|
||||||
* <p>
|
* <p>
|
||||||
* The translucency levels of individual pixels may also be effected by the
|
* The translucency levels of individual pixels may also be effected by the
|
||||||
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
|
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
|
||||||
@ -3491,15 +3497,20 @@ public class Window extends Container implements Accessible {
|
|||||||
*
|
*
|
||||||
* @throws IllegalArgumentException if the opacity is out of the range
|
* @throws IllegalArgumentException if the opacity is out of the range
|
||||||
* [0..1]
|
* [0..1]
|
||||||
|
* @throws IllegalComponentStateException if the window is decorated and
|
||||||
|
* the opacity is less than {@code 1.0f}
|
||||||
* @throws IllegalComponentStateException if the window is in full screen
|
* @throws IllegalComponentStateException if the window is in full screen
|
||||||
* mode, and the opacity is less than 1.0f
|
* mode, and the opacity is less than {@code 1.0f}
|
||||||
* @throws UnsupportedOperationException if the {@code
|
* @throws UnsupportedOperationException if the {@code
|
||||||
* GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
|
* GraphicsDevice.WindowTranslucency#TRANSLUCENT TRANSLUCENT}
|
||||||
* translucency kind is not supported and the opacity is less than 1.0f
|
* translucency is not supported and the opacity is less than
|
||||||
|
* {@code 1.0f}
|
||||||
*
|
*
|
||||||
* @see Window#getOpacity
|
* @see Window#getOpacity
|
||||||
* @see Window#setBackground(Color)
|
* @see Window#setBackground(Color)
|
||||||
* @see Window#setShape(Shape)
|
* @see Window#setShape(Shape)
|
||||||
|
* @see Frame#isUndecorated
|
||||||
|
* @see Dialog#isUndecorated
|
||||||
* @see GraphicsDevice.WindowTranslucency
|
* @see GraphicsDevice.WindowTranslucency
|
||||||
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
|
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
|
||||||
*
|
*
|
||||||
@ -3557,24 +3568,26 @@ public class Window extends Container implements Accessible {
|
|||||||
/**
|
/**
|
||||||
* Sets the shape of the window.
|
* Sets the shape of the window.
|
||||||
* <p>
|
* <p>
|
||||||
* Setting a shape enables cutting off some parts of the window, leaving
|
* Setting a shape cuts off some parts of the window. Only the parts that
|
||||||
* visible and clickable only those parts belonging to the given shape
|
* belong to the given {@link Shape} remain visible and clickable. If
|
||||||
* (see {@link Shape}). If the shape argument is null, this methods
|
* the shape argument is {@code null}, this method restores the default
|
||||||
* restores the default shape (making the window rectangular on most
|
* shape, making the window rectangular on most platforms.
|
||||||
* platforms.)
|
|
||||||
* <p>
|
* <p>
|
||||||
* The following conditions must be met in order to set a non-null shape:
|
* The following conditions must be met to set a non-null shape:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
|
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
|
||||||
* PERPIXEL_TRANSPARENT} translucency kind must be supported by the
|
* PERPIXEL_TRANSPARENT} translucency must be supported by the
|
||||||
* underlying system
|
* underlying system
|
||||||
* <i>and</i>
|
* <li>The window must be undecorated (see {@link Frame#setUndecorated}
|
||||||
* <li>The window must not be in the full-screen mode (see
|
* and {@link Dialog#setUndecorated})
|
||||||
* {@link GraphicsDevice#setFullScreenWindow(Window)})
|
* <li>The window must not be in full-screen mode (see {@link
|
||||||
|
* GraphicsDevice#setFullScreenWindow(Window)})
|
||||||
* </ul>
|
* </ul>
|
||||||
* If a certain condition is not met, either the {@code
|
* <p>
|
||||||
* UnsupportedOperationException} or {@code IllegalComponentStateException}
|
* If the requested shape is not {@code null}, and any of the above
|
||||||
* is thrown.
|
* conditions are not met, the shape of this window will not change,
|
||||||
|
* and either the {@code UnsupportedOperationException} or {@code
|
||||||
|
* IllegalComponentStateException} will be thrown.
|
||||||
* <p>
|
* <p>
|
||||||
* The tranlucency levels of individual pixels may also be effected by the
|
* The tranlucency levels of individual pixels may also be effected by the
|
||||||
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
|
* alpha component of their color (see {@link Window#setBackground(Color)}) and the
|
||||||
@ -3584,6 +3597,8 @@ public class Window extends Container implements Accessible {
|
|||||||
* @param shape the shape to set to the window
|
* @param shape the shape to set to the window
|
||||||
*
|
*
|
||||||
* @throws IllegalComponentStateException if the shape is not {@code
|
* @throws IllegalComponentStateException if the shape is not {@code
|
||||||
|
* null} and the window is decorated
|
||||||
|
* @throws IllegalComponentStateException if the shape is not {@code
|
||||||
* null} and the window is in full-screen mode
|
* null} and the window is in full-screen mode
|
||||||
* @throws UnsupportedOperationException if the shape is not {@code
|
* @throws UnsupportedOperationException if the shape is not {@code
|
||||||
* null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
|
* null} and {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSPARENT
|
||||||
@ -3592,6 +3607,8 @@ public class Window extends Container implements Accessible {
|
|||||||
* @see Window#getShape()
|
* @see Window#getShape()
|
||||||
* @see Window#setBackground(Color)
|
* @see Window#setBackground(Color)
|
||||||
* @see Window#setOpacity(float)
|
* @see Window#setOpacity(float)
|
||||||
|
* @see Frame#isUndecorated
|
||||||
|
* @see Dialog#isUndecorated
|
||||||
* @see GraphicsDevice.WindowTranslucency
|
* @see GraphicsDevice.WindowTranslucency
|
||||||
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
|
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
|
||||||
*
|
*
|
||||||
@ -3645,37 +3662,46 @@ public class Window extends Container implements Accessible {
|
|||||||
* GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}
|
* GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT PERPIXEL_TRANSLUCENT}
|
||||||
* tranclucency, the alpha component of the given background color
|
* tranclucency, the alpha component of the given background color
|
||||||
* may effect the mode of operation for this window: it indicates whether
|
* may effect the mode of operation for this window: it indicates whether
|
||||||
* this window must be opaque (alpha == 1.0f) or per-pixel translucent
|
* this window must be opaque (alpha equals {@code 1.0f}) or per-pixel translucent
|
||||||
* (alpha < 1.0f). All the following conditions must be met in order
|
* (alpha is less than {@code 1.0f}). If the given background color is
|
||||||
* to be able to enable the per-pixel transparency mode for this window:
|
* {@code null}, the window is considered completely opaque.
|
||||||
|
* <p>
|
||||||
|
* All the following conditions must be met to enable the per-pixel
|
||||||
|
* transparency mode for this window:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
|
* <li>The {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
|
||||||
* PERPIXEL_TRANSLUCENT} translucency must be supported
|
* PERPIXEL_TRANSLUCENT} translucency must be supported by the graphics
|
||||||
* by the graphics device where this window is located <i>and</i>
|
* device where this window is located
|
||||||
* <li>The window must not be in the full-screen mode (see {@link
|
* <li>The window must be undecorated (see {@link Frame#setUndecorated}
|
||||||
|
* and {@link Dialog#setUndecorated})
|
||||||
|
* <li>The window must not be in full-screen mode (see {@link
|
||||||
* GraphicsDevice#setFullScreenWindow(Window)})
|
* GraphicsDevice#setFullScreenWindow(Window)})
|
||||||
* </ul>
|
* </ul>
|
||||||
* If a certain condition is not met at the time of calling this method,
|
* <p>
|
||||||
* the alpha component of the given background color will not effect the
|
* If the alpha component of the requested background color is less than
|
||||||
* mode of operation for this window.
|
* {@code 1.0f}, and any of the above conditions are not met, the background
|
||||||
|
* color of this window will not change, the alpha component of the given
|
||||||
|
* background color will not affect the mode of operation for this window,
|
||||||
|
* and either the {@code UnsupportedOperationException} or {@code
|
||||||
|
* IllegalComponentStateException} will be thrown.
|
||||||
* <p>
|
* <p>
|
||||||
* When the window is per-pixel translucent, the drawing sub-system
|
* When the window is per-pixel translucent, the drawing sub-system
|
||||||
* respects the alpha value of each individual pixel. If a pixel gets
|
* respects the alpha value of each individual pixel. If a pixel gets
|
||||||
* painted with the alpha color component equal to zero, it becomes
|
* painted with the alpha color component equal to zero, it becomes
|
||||||
* visually transparent, if the alpha of the pixel is equal to 1.0f, the
|
* visually transparent. If the alpha of the pixel is equal to 1.0f, the
|
||||||
* pixel is fully opaque. Interim values of the alpha color component make
|
* pixel is fully opaque. Interim values of the alpha color component make
|
||||||
* the pixel semi-transparent. In this mode the background of the window
|
* the pixel semi-transparent. In this mode, the background of the window
|
||||||
* gets painted with the alpha value of the given background color (meaning
|
* gets painted with the alpha value of the given background color. If the
|
||||||
* that it is not painted at all if the alpha value of the argument of this
|
* alpha value of the argument of this method is equal to {@code 0}, the
|
||||||
* method is equal to zero.)
|
* background is not painted at all.
|
||||||
* <p>
|
* <p>
|
||||||
* The actual level of translucency of a given pixel also depends on window
|
* The actual level of translucency of a given pixel also depends on window
|
||||||
* opacity (see {@link #setOpacity(float)}), as well as the current shape of
|
* opacity (see {@link #setOpacity(float)}), as well as the current shape of
|
||||||
* this window (see {@link #setShape(Shape)}).
|
* this window (see {@link #setShape(Shape)}).
|
||||||
* <p>
|
* <p>
|
||||||
* Note that painting a pixel with the alpha value of 0 may or may not
|
* Note that painting a pixel with the alpha value of {@code 0} may or may
|
||||||
* disable the mouse event handling on this pixel. This is a
|
* not disable the mouse event handling on this pixel. This is a
|
||||||
* platform-dependent behavior. To make sure the mouse clicks do not get
|
* platform-dependent behavior. To make sure the mouse events do not get
|
||||||
* dispatched to a particular pixel, the pixel must be excluded from the
|
* dispatched to a particular pixel, the pixel must be excluded from the
|
||||||
* shape of the window.
|
* shape of the window.
|
||||||
* <p>
|
* <p>
|
||||||
@ -3685,17 +3711,21 @@ public class Window extends Container implements Accessible {
|
|||||||
* @param bgColor the color to become this window's background color.
|
* @param bgColor the color to become this window's background color.
|
||||||
*
|
*
|
||||||
* @throws IllegalComponentStateException if the alpha value of the given
|
* @throws IllegalComponentStateException if the alpha value of the given
|
||||||
* background color is less than 1.0f and the window is in
|
* background color is less than {@code 1.0f} and the window is decorated
|
||||||
|
* @throws IllegalComponentStateException if the alpha value of the given
|
||||||
|
* background color is less than {@code 1.0f} and the window is in
|
||||||
* full-screen mode
|
* full-screen mode
|
||||||
* @throws UnsupportedOperationException if the alpha value of the given
|
* @throws UnsupportedOperationException if the alpha value of the given
|
||||||
* background color is less than 1.0f and
|
* background color is less than {@code 1.0f} and {@link
|
||||||
* {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
|
* GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
|
||||||
* PERPIXEL_TRANSLUCENT} translucency is not supported
|
* PERPIXEL_TRANSLUCENT} translucency is not supported
|
||||||
*
|
*
|
||||||
* @see Window#getBackground
|
* @see Window#getBackground
|
||||||
* @see Window#isOpaque
|
* @see Window#isOpaque
|
||||||
* @see Window#setOpacity(float)
|
* @see Window#setOpacity(float)
|
||||||
* @see Window#setShape(Shape)
|
* @see Window#setShape(Shape)
|
||||||
|
* @see Frame#isUndecorated
|
||||||
|
* @see Dialog#isUndecorated
|
||||||
* @see GraphicsDevice.WindowTranslucency
|
* @see GraphicsDevice.WindowTranslucency
|
||||||
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
|
* @see GraphicsDevice#isWindowTranslucencySupported(GraphicsDevice.WindowTranslucency)
|
||||||
* @see GraphicsConfiguration#isTranslucencyCapable()
|
* @see GraphicsConfiguration#isTranslucencyCapable()
|
||||||
@ -3739,7 +3769,7 @@ public class Window extends Container implements Accessible {
|
|||||||
* <p>
|
* <p>
|
||||||
* The method returns {@code false} if the background color of the window
|
* The method returns {@code false} if the background color of the window
|
||||||
* is not {@code null} and the alpha component of the color is less than
|
* is not {@code null} and the alpha component of the color is less than
|
||||||
* 1.0f. The method returns {@code true} otherwise.
|
* {@code 1.0f}. The method returns {@code true} otherwise.
|
||||||
*
|
*
|
||||||
* @return {@code true} if the window is opaque, {@code false} otherwise
|
* @return {@code true} if the window is opaque, {@code false} otherwise
|
||||||
*
|
*
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -262,7 +262,23 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
/**
|
/**
|
||||||
* The Cham range with the Cham digits.
|
* The Cham range with the Cham digits.
|
||||||
*/
|
*/
|
||||||
CHAM ('\uaa50', '\uaa00', '\uaa60');
|
CHAM ('\uaa50', '\uaa00', '\uaa60'),
|
||||||
|
/**
|
||||||
|
* The Tai Tham Hora range with the Tai Tham Hora digits.
|
||||||
|
*/
|
||||||
|
TAI_THAM_HORA ('\u1a80', '\u1a20', '\u1ab0'),
|
||||||
|
/**
|
||||||
|
* The Tai Tham Tham range with the Tai Tham Tham digits.
|
||||||
|
*/
|
||||||
|
TAI_THAM_THAM ('\u1a90', '\u1a20', '\u1ab0'),
|
||||||
|
/**
|
||||||
|
* The Javanese range with the Javanese digits.
|
||||||
|
*/
|
||||||
|
JAVANESE ('\ua9d0', '\ua980', '\ua9e0'),
|
||||||
|
/**
|
||||||
|
* The Meetei Mayek range with the Meetei Mayek digits.
|
||||||
|
*/
|
||||||
|
MEETEI_MAYEK ('\uabf0', '\uabc0', '\uac00');
|
||||||
|
|
||||||
private static int toRangeIndex(Range script) {
|
private static int toRangeIndex(Range script) {
|
||||||
int index = script.ordinal();
|
int index = script.ordinal();
|
||||||
@ -592,10 +608,16 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x07a6, 0x07b1,
|
0x07a6, 0x07b1,
|
||||||
0x07eb, 0x07f4,
|
0x07eb, 0x07f4,
|
||||||
0x07f6, 0x07fa,
|
0x07f6, 0x07fa,
|
||||||
0x0901, 0x0903,
|
0x0816, 0x081a,
|
||||||
|
0x081b, 0x0824,
|
||||||
|
0x0825, 0x0828,
|
||||||
|
0x0829, 0x0830,
|
||||||
|
0x0859, 0x085e,
|
||||||
|
0x0900, 0x0903,
|
||||||
|
0x093a, 0x093b,
|
||||||
0x093c, 0x093d,
|
0x093c, 0x093d,
|
||||||
0x0941, 0x0949,
|
0x0941, 0x0949,
|
||||||
0x094d, 0x0950,
|
0x094d, 0x094e,
|
||||||
0x0951, 0x0958,
|
0x0951, 0x0958,
|
||||||
0x0962, 0x0964,
|
0x0962, 0x0964,
|
||||||
0x0981, 0x0982,
|
0x0981, 0x0982,
|
||||||
@ -604,7 +626,7 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x09cd, 0x09ce,
|
0x09cd, 0x09ce,
|
||||||
0x09e2, 0x09e6,
|
0x09e2, 0x09e6,
|
||||||
0x09f2, 0x09f4,
|
0x09f2, 0x09f4,
|
||||||
0x0a01, 0x0a03,
|
0x09fb, 0x0a03,
|
||||||
0x0a3c, 0x0a3e,
|
0x0a3c, 0x0a3e,
|
||||||
0x0a41, 0x0a59,
|
0x0a41, 0x0a59,
|
||||||
0x0a70, 0x0a72,
|
0x0a70, 0x0a72,
|
||||||
@ -630,9 +652,8 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x0cbc, 0x0cbd,
|
0x0cbc, 0x0cbd,
|
||||||
0x0ccc, 0x0cd5,
|
0x0ccc, 0x0cd5,
|
||||||
0x0ce2, 0x0ce6,
|
0x0ce2, 0x0ce6,
|
||||||
0x0cf1, 0x0d02,
|
|
||||||
0x0d41, 0x0d46,
|
0x0d41, 0x0d46,
|
||||||
0x0d4d, 0x0d57,
|
0x0d4d, 0x0d4e,
|
||||||
0x0d62, 0x0d66,
|
0x0d62, 0x0d66,
|
||||||
0x0dca, 0x0dcf,
|
0x0dca, 0x0dcf,
|
||||||
0x0dd2, 0x0dd8,
|
0x0dd2, 0x0dd8,
|
||||||
@ -649,7 +670,7 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x0f71, 0x0f7f,
|
0x0f71, 0x0f7f,
|
||||||
0x0f80, 0x0f85,
|
0x0f80, 0x0f85,
|
||||||
0x0f86, 0x0f88,
|
0x0f86, 0x0f88,
|
||||||
0x0f90, 0x0fbe,
|
0x0f8d, 0x0fbe,
|
||||||
0x0fc6, 0x0fc7,
|
0x0fc6, 0x0fc7,
|
||||||
0x102d, 0x1031,
|
0x102d, 0x1031,
|
||||||
0x1032, 0x1038,
|
0x1032, 0x1038,
|
||||||
@ -661,8 +682,10 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x1082, 0x1083,
|
0x1082, 0x1083,
|
||||||
0x1085, 0x1087,
|
0x1085, 0x1087,
|
||||||
0x108d, 0x108e,
|
0x108d, 0x108e,
|
||||||
0x135f, 0x1360,
|
0x109d, 0x109e,
|
||||||
|
0x135d, 0x1360,
|
||||||
0x1390, 0x13a0,
|
0x1390, 0x13a0,
|
||||||
|
0x1400, 0x1401,
|
||||||
0x1680, 0x1681,
|
0x1680, 0x1681,
|
||||||
0x169b, 0x16a0,
|
0x169b, 0x16a0,
|
||||||
0x1712, 0x1720,
|
0x1712, 0x1720,
|
||||||
@ -682,6 +705,11 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x1939, 0x1946,
|
0x1939, 0x1946,
|
||||||
0x19de, 0x1a00,
|
0x19de, 0x1a00,
|
||||||
0x1a17, 0x1a19,
|
0x1a17, 0x1a19,
|
||||||
|
0x1a56, 0x1a57,
|
||||||
|
0x1a58, 0x1a61,
|
||||||
|
0x1a62, 0x1a63,
|
||||||
|
0x1a65, 0x1a6d,
|
||||||
|
0x1a73, 0x1a80,
|
||||||
0x1b00, 0x1b04,
|
0x1b00, 0x1b04,
|
||||||
0x1b34, 0x1b35,
|
0x1b34, 0x1b35,
|
||||||
0x1b36, 0x1b3b,
|
0x1b36, 0x1b3b,
|
||||||
@ -691,8 +719,16 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x1b80, 0x1b82,
|
0x1b80, 0x1b82,
|
||||||
0x1ba2, 0x1ba6,
|
0x1ba2, 0x1ba6,
|
||||||
0x1ba8, 0x1baa,
|
0x1ba8, 0x1baa,
|
||||||
|
0x1be6, 0x1be7,
|
||||||
|
0x1be8, 0x1bea,
|
||||||
|
0x1bed, 0x1bee,
|
||||||
|
0x1bef, 0x1bf2,
|
||||||
0x1c2c, 0x1c34,
|
0x1c2c, 0x1c34,
|
||||||
0x1c36, 0x1c3b,
|
0x1c36, 0x1c3b,
|
||||||
|
0x1cd0, 0x1cd3,
|
||||||
|
0x1cd4, 0x1ce1,
|
||||||
|
0x1ce2, 0x1ce9,
|
||||||
|
0x1ced, 0x1cee,
|
||||||
0x1dc0, 0x1e00,
|
0x1dc0, 0x1e00,
|
||||||
0x1fbd, 0x1fbe,
|
0x1fbd, 0x1fbe,
|
||||||
0x1fbf, 0x1fc2,
|
0x1fbf, 0x1fc2,
|
||||||
@ -716,14 +752,16 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x213a, 0x213c,
|
0x213a, 0x213c,
|
||||||
0x2140, 0x2145,
|
0x2140, 0x2145,
|
||||||
0x214a, 0x214e,
|
0x214a, 0x214e,
|
||||||
0x2153, 0x2160,
|
0x2150, 0x2160,
|
||||||
0x2190, 0x2336,
|
0x2189, 0x2336,
|
||||||
0x237b, 0x2395,
|
0x237b, 0x2395,
|
||||||
0x2396, 0x249c,
|
0x2396, 0x249c,
|
||||||
0x24ea, 0x26ac,
|
0x24ea, 0x26ac,
|
||||||
0x26ad, 0x2800,
|
0x26ad, 0x2800,
|
||||||
0x2900, 0x2c00,
|
0x2900, 0x2c00,
|
||||||
0x2ce5, 0x2d00,
|
0x2ce5, 0x2ceb,
|
||||||
|
0x2cef, 0x2d00,
|
||||||
|
0x2d7f, 0x2d80,
|
||||||
0x2de0, 0x3005,
|
0x2de0, 0x3005,
|
||||||
0x3008, 0x3021,
|
0x3008, 0x3021,
|
||||||
0x302a, 0x3031,
|
0x302a, 0x3031,
|
||||||
@ -742,25 +780,40 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x33de, 0x33e0,
|
0x33de, 0x33e0,
|
||||||
0x33ff, 0x3400,
|
0x33ff, 0x3400,
|
||||||
0x4dc0, 0x4e00,
|
0x4dc0, 0x4e00,
|
||||||
0xa490, 0xa500,
|
0xa490, 0xa4d0,
|
||||||
0xa60d, 0xa610,
|
0xa60d, 0xa610,
|
||||||
0xa66f, 0xa680,
|
0xa66f, 0xa680,
|
||||||
|
0xa6f0, 0xa6f2,
|
||||||
0xa700, 0xa722,
|
0xa700, 0xa722,
|
||||||
0xa788, 0xa789,
|
0xa788, 0xa789,
|
||||||
0xa802, 0xa803,
|
0xa802, 0xa803,
|
||||||
0xa806, 0xa807,
|
0xa806, 0xa807,
|
||||||
0xa80b, 0xa80c,
|
0xa80b, 0xa80c,
|
||||||
0xa825, 0xa827,
|
0xa825, 0xa827,
|
||||||
0xa828, 0xa840,
|
0xa828, 0xa830,
|
||||||
|
0xa838, 0xa840,
|
||||||
0xa874, 0xa880,
|
0xa874, 0xa880,
|
||||||
0xa8c4, 0xa8ce,
|
0xa8c4, 0xa8ce,
|
||||||
|
0xa8e0, 0xa8f2,
|
||||||
0xa926, 0xa92e,
|
0xa926, 0xa92e,
|
||||||
0xa947, 0xa952,
|
0xa947, 0xa952,
|
||||||
|
0xa980, 0xa983,
|
||||||
|
0xa9b3, 0xa9b4,
|
||||||
|
0xa9b6, 0xa9ba,
|
||||||
|
0xa9bc, 0xa9bd,
|
||||||
0xaa29, 0xaa2f,
|
0xaa29, 0xaa2f,
|
||||||
0xaa31, 0xaa33,
|
0xaa31, 0xaa33,
|
||||||
0xaa35, 0xaa40,
|
0xaa35, 0xaa40,
|
||||||
0xaa43, 0xaa44,
|
0xaa43, 0xaa44,
|
||||||
0xaa4c, 0xaa4d,
|
0xaa4c, 0xaa4d,
|
||||||
|
0xaab0, 0xaab1,
|
||||||
|
0xaab2, 0xaab5,
|
||||||
|
0xaab7, 0xaab9,
|
||||||
|
0xaabe, 0xaac0,
|
||||||
|
0xaac1, 0xaac2,
|
||||||
|
0xabe5, 0xabe6,
|
||||||
|
0xabe8, 0xabe9,
|
||||||
|
0xabed, 0xabf0,
|
||||||
0xfb1e, 0xfb1f,
|
0xfb1e, 0xfb1f,
|
||||||
0xfb29, 0xfb2a,
|
0xfb29, 0xfb2a,
|
||||||
0xfd3e, 0xfd50,
|
0xfd3e, 0xfd50,
|
||||||
@ -775,12 +828,28 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
0x1091f, 0x10920,
|
0x1091f, 0x10920,
|
||||||
0x10a01, 0x10a10,
|
0x10a01, 0x10a10,
|
||||||
0x10a38, 0x10a40,
|
0x10a38, 0x10a40,
|
||||||
|
0x10b39, 0x10b40,
|
||||||
|
0x10e60, 0x11000,
|
||||||
|
0x11001, 0x11002,
|
||||||
|
0x11038, 0x11047,
|
||||||
|
0x11052, 0x11066,
|
||||||
|
0x11080, 0x11082,
|
||||||
|
0x110b3, 0x110b7,
|
||||||
|
0x110b9, 0x110bb,
|
||||||
0x1d167, 0x1d16a,
|
0x1d167, 0x1d16a,
|
||||||
0x1d173, 0x1d183,
|
0x1d173, 0x1d183,
|
||||||
0x1d185, 0x1d18c,
|
0x1d185, 0x1d18c,
|
||||||
0x1d1aa, 0x1d1ae,
|
0x1d1aa, 0x1d1ae,
|
||||||
0x1d200, 0x1d360,
|
0x1d200, 0x1d360,
|
||||||
0x1d7ce, 0x20000,
|
0x1d6db, 0x1d6dc,
|
||||||
|
0x1d715, 0x1d716,
|
||||||
|
0x1d74f, 0x1d750,
|
||||||
|
0x1d789, 0x1d78a,
|
||||||
|
0x1d7c3, 0x1d7c4,
|
||||||
|
0x1d7ce, 0x1f110,
|
||||||
|
0x1f300, 0x1f48c,
|
||||||
|
0x1f48d, 0x1f524,
|
||||||
|
0x1f525, 0x20000,
|
||||||
0xe0001, 0xf0000,
|
0xe0001, 0xf0000,
|
||||||
0x10fffe, 0x10ffff // sentinel
|
0x10fffe, 0x10ffff // sentinel
|
||||||
};
|
};
|
||||||
@ -947,6 +1016,14 @@ public final class NumericShaper implements java.io.Serializable {
|
|||||||
&& rangeSet.contains(Range.ARABIC)) {
|
&& rangeSet.contains(Range.ARABIC)) {
|
||||||
rangeSet.remove(Range.ARABIC);
|
rangeSet.remove(Range.ARABIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// As well as the above case, give precedance to TAI_THAM_THAM if both
|
||||||
|
// TAI_THAM_HORA and TAI_THAM_THAM are specified.
|
||||||
|
if (rangeSet.contains(Range.TAI_THAM_THAM)
|
||||||
|
&& rangeSet.contains(Range.TAI_THAM_HORA)) {
|
||||||
|
rangeSet.remove(Range.TAI_THAM_HORA);
|
||||||
|
}
|
||||||
|
|
||||||
rangeArray = rangeSet.toArray(new Range[rangeSet.size()]);
|
rangeArray = rangeSet.toArray(new Range[rangeSet.size()]);
|
||||||
if (rangeArray.length > BSEARCH_THRESHOLD) {
|
if (rangeArray.length > BSEARCH_THRESHOLD) {
|
||||||
// sort rangeArray for binary search
|
// sort rangeArray for binary search
|
||||||
|
@ -29,6 +29,8 @@ import com.sun.beans.WeakCache;
|
|||||||
import com.sun.beans.finder.BeanInfoFinder;
|
import com.sun.beans.finder.BeanInfoFinder;
|
||||||
import com.sun.beans.finder.ClassFinder;
|
import com.sun.beans.finder.ClassFinder;
|
||||||
|
|
||||||
|
import java.awt.Component;
|
||||||
|
|
||||||
import java.lang.ref.Reference;
|
import java.lang.ref.Reference;
|
||||||
import java.lang.ref.SoftReference;
|
import java.lang.ref.SoftReference;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
@ -39,6 +41,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.EventListener;
|
import java.util.EventListener;
|
||||||
|
import java.util.EventObject;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.WeakHashMap;
|
import java.util.WeakHashMap;
|
||||||
@ -1234,7 +1237,23 @@ public class Introspector {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// OK, fabricate a default BeanDescriptor.
|
// OK, fabricate a default BeanDescriptor.
|
||||||
return (new BeanDescriptor(beanClass));
|
return new BeanDescriptor(this.beanClass, findCustomizerClass(this.beanClass));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Class<?> findCustomizerClass(Class<?> type) {
|
||||||
|
String name = type.getName() + "Customizer";
|
||||||
|
try {
|
||||||
|
type = ClassFinder.findClass(name, type.getClassLoader());
|
||||||
|
// Each customizer should inherit java.awt.Component and implement java.beans.Customizer
|
||||||
|
// according to the section 9.3 of JavaBeans specification
|
||||||
|
if (Component.class.isAssignableFrom(type) && Customizer.class.isAssignableFrom(type)) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception exception) {
|
||||||
|
// ignore any exceptions
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isEventHandler(Method m) {
|
private boolean isEventHandler(Method m) {
|
||||||
@ -1244,10 +1263,7 @@ public class Introspector {
|
|||||||
if (argTypes.length != 1) {
|
if (argTypes.length != 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (isSubclass(argTypes[0], java.util.EventObject.class)) {
|
return isSubclass(argTypes[0], EventObject.class);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3498,8 +3498,8 @@ public class ObjectInputStream
|
|||||||
return ((int[]) array).clone();
|
return ((int[]) array).clone();
|
||||||
} else if (array instanceof long[]) {
|
} else if (array instanceof long[]) {
|
||||||
return ((long[]) array).clone();
|
return ((long[]) array).clone();
|
||||||
} else if (array instanceof double[]) {
|
} else if (array instanceof short[]) {
|
||||||
return ((double[]) array).clone();
|
return ((short[]) array).clone();
|
||||||
} else {
|
} else {
|
||||||
throw new AssertionError();
|
throw new AssertionError();
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -209,7 +209,7 @@ class Thread implements Runnable {
|
|||||||
* initialized to indicate thread 'not yet started'
|
* initialized to indicate thread 'not yet started'
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private int threadStatus = 0;
|
private volatile int threadStatus = 0;
|
||||||
|
|
||||||
|
|
||||||
private static synchronized long nextThreadID() {
|
private static synchronized long nextThreadID() {
|
||||||
|
@ -275,18 +275,17 @@ public abstract class Charset
|
|||||||
|
|
||||||
/* -- Static methods -- */
|
/* -- Static methods -- */
|
||||||
|
|
||||||
private static String bugLevel = null;
|
private static volatile String bugLevel = null;
|
||||||
|
|
||||||
static boolean atBugLevel(String bl) { // package-private
|
static boolean atBugLevel(String bl) { // package-private
|
||||||
if (bugLevel == null) {
|
String level = bugLevel;
|
||||||
|
if (level == null) {
|
||||||
if (!sun.misc.VM.isBooted())
|
if (!sun.misc.VM.isBooted())
|
||||||
return false;
|
return false;
|
||||||
bugLevel = AccessController.doPrivileged(
|
bugLevel = level = AccessController.doPrivileged(
|
||||||
new GetPropertyAction("sun.nio.cs.bugLevel"));
|
new GetPropertyAction("sun.nio.cs.bugLevel", ""));
|
||||||
if (bugLevel == null)
|
|
||||||
bugLevel = "";
|
|
||||||
}
|
}
|
||||||
return (bugLevel != null) && bugLevel.equals(bl);
|
return level.equals(bl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,10 +59,10 @@ public class FormattableFlags {
|
|||||||
* <pre>
|
* <pre>
|
||||||
* out.toUpperCase() </pre>
|
* out.toUpperCase() </pre>
|
||||||
*
|
*
|
||||||
* <p> This flag corresponds to <tt>'^'</tt> (<tt>'\u005e'</tt>) in
|
* <p> This flag corresponds to <tt>'S'</tt> (<tt>'\u0053'</tt>) in
|
||||||
* the format specifier.
|
* the format specifier.
|
||||||
*/
|
*/
|
||||||
public static final int UPPERCASE = 1<<1; // '^'
|
public static final int UPPERCASE = 1<<1; // 'S'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requires the output to use an alternate form. The definition of the
|
* Requires the output to use an alternate form. The definition of the
|
||||||
|
@ -25,7 +25,9 @@
|
|||||||
|
|
||||||
package java.util.spi;
|
package java.util.spi;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Currency;
|
import java.util.Currency;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,6 +97,23 @@ public abstract class CurrencyNameProvider extends LocaleServiceProvider {
|
|||||||
throw new NullPointerException();
|
throw new NullPointerException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check whether the currencyCode is valid
|
||||||
|
char[] charray = currencyCode.toCharArray();
|
||||||
|
if (charray.length != 3) {
|
||||||
|
throw new IllegalArgumentException("The currencyCode is not in the form of three upper-case letters.");
|
||||||
|
}
|
||||||
|
for (char c : charray) {
|
||||||
|
if (c < 'A' || c > 'Z') {
|
||||||
|
throw new IllegalArgumentException("The currencyCode is not in the form of three upper-case letters.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check whether the locale is valid
|
||||||
|
List<Locale> avail = Arrays.asList(getAvailableLocales());
|
||||||
|
if (!avail.contains(locale)) {
|
||||||
|
throw new IllegalArgumentException("The locale is not available");
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,9 @@ public abstract class LocaleNameProvider extends LocaleServiceProvider {
|
|||||||
* @see java.util.Locale#getDisplayScript(java.util.Locale)
|
* @see java.util.Locale#getDisplayScript(java.util.Locale)
|
||||||
* @since 1.7
|
* @since 1.7
|
||||||
*/
|
*/
|
||||||
public abstract String getDisplayScript(String scriptCode, Locale locale);
|
public String getDisplayScript(String scriptCode, Locale locale) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a localized name for the given <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
|
* Returns a localized name for the given <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -166,8 +166,9 @@ public class SerialBlob implements Blob, Serializable, Cloneable {
|
|||||||
length = (int)len;
|
length = (int)len;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos < 1 || length - pos < 0 ) {
|
if (pos < 1 || len - pos < 0 ) {
|
||||||
throw new SerialException("Invalid arguments: position cannot be less that 1");
|
throw new SerialException("Invalid arguments: position cannot be "
|
||||||
|
+ "less than 1 or greater than the length of the SerialBlob");
|
||||||
}
|
}
|
||||||
|
|
||||||
pos--; // correct pos to array index
|
pos--; // correct pos to array index
|
||||||
|
@ -1379,6 +1379,10 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
|
|||||||
* If <code>true</code> and the button has a border,
|
* If <code>true</code> and the button has a border,
|
||||||
* the border is painted. The default value for the
|
* the border is painted. The default value for the
|
||||||
* <code>borderPainted</code> property is <code>true</code>.
|
* <code>borderPainted</code> property is <code>true</code>.
|
||||||
|
* <p/>
|
||||||
|
* Some look and feels might not support
|
||||||
|
* the <code>borderPainted</code> property,
|
||||||
|
* in which case they ignore this.
|
||||||
*
|
*
|
||||||
* @param b if true and border property is not <code>null</code>,
|
* @param b if true and border property is not <code>null</code>,
|
||||||
* the border is painted
|
* the border is painted
|
||||||
|
@ -273,7 +273,7 @@ public class BorderFactory
|
|||||||
* @since 1.7
|
* @since 1.7
|
||||||
*/
|
*/
|
||||||
public static Border createSoftBevelBorder(int type, Color highlight, Color shadow) {
|
public static Border createSoftBevelBorder(int type, Color highlight, Color shadow) {
|
||||||
return new BevelBorder(type, highlight, shadow);
|
return new SoftBevelBorder(type, highlight, shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -295,7 +295,7 @@ public class BorderFactory
|
|||||||
* @since 1.7
|
* @since 1.7
|
||||||
*/
|
*/
|
||||||
public static Border createSoftBevelBorder(int type, Color highlightOuter, Color highlightInner, Color shadowOuter, Color shadowInner) {
|
public static Border createSoftBevelBorder(int type, Color highlightOuter, Color highlightInner, Color shadowOuter, Color shadowInner) {
|
||||||
return new BevelBorder(type, highlightOuter, highlightInner, shadowOuter, shadowInner);
|
return new SoftBevelBorder(type, highlightOuter, highlightInner, shadowOuter, shadowInner);
|
||||||
}
|
}
|
||||||
|
|
||||||
//// EtchedBorder ///////////////////////////////////////////////////////////
|
//// EtchedBorder ///////////////////////////////////////////////////////////
|
||||||
|
@ -322,7 +322,7 @@ public final class JLayer<V extends Component>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A non-{@code null] border, or non-zero insets, isn't supported, to prevent the geometry
|
* A non-{@code null} border, or non-zero insets, isn't supported, to prevent the geometry
|
||||||
* of this component from becoming complex enough to inhibit
|
* of this component from becoming complex enough to inhibit
|
||||||
* subclassing of {@code LayerUI} class. To create a {@code JLayer} with a border,
|
* subclassing of {@code LayerUI} class. To create a {@code JLayer} with a border,
|
||||||
* add it to a {@code JPanel} that has a border.
|
* add it to a {@code JPanel} that has a border.
|
||||||
@ -373,8 +373,12 @@ public final class JLayer<V extends Component>
|
|||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public void removeAll() {
|
public void removeAll() {
|
||||||
setView(null);
|
if (view != null) {
|
||||||
setGlassPane(null);
|
setView(null);
|
||||||
|
}
|
||||||
|
if (glassPane != null) {
|
||||||
|
setGlassPane(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1443,6 +1443,10 @@ public class JTabbedPane extends JComponent
|
|||||||
* which can be <code>null</code>, in which case the tab's background color
|
* which can be <code>null</code>, in which case the tab's background color
|
||||||
* will default to the background color of the <code>tabbedpane</code>.
|
* will default to the background color of the <code>tabbedpane</code>.
|
||||||
* An internal exception is raised if there is no tab at that index.
|
* An internal exception is raised if there is no tab at that index.
|
||||||
|
* <p/>
|
||||||
|
* It is up to the look and feel to honor this property, some may
|
||||||
|
* choose to ignore it.
|
||||||
|
*
|
||||||
* @param index the tab index where the background should be set
|
* @param index the tab index where the background should be set
|
||||||
* @param background the color to be displayed in the tab's background
|
* @param background the color to be displayed in the tab's background
|
||||||
* @exception IndexOutOfBoundsException if index is out of range
|
* @exception IndexOutOfBoundsException if index is out of range
|
||||||
@ -1472,6 +1476,9 @@ public class JTabbedPane extends JComponent
|
|||||||
* <code>null</code>, in which case the tab's foreground color
|
* <code>null</code>, in which case the tab's foreground color
|
||||||
* will default to the foreground color of this <code>tabbedpane</code>.
|
* will default to the foreground color of this <code>tabbedpane</code>.
|
||||||
* An internal exception is raised if there is no tab at that index.
|
* An internal exception is raised if there is no tab at that index.
|
||||||
|
* <p/>
|
||||||
|
* It is up to the look and feel to honor this property, some may
|
||||||
|
* choose to ignore it.
|
||||||
*
|
*
|
||||||
* @param index the tab index where the foreground should be set
|
* @param index the tab index where the foreground should be set
|
||||||
* @param foreground the color to be displayed as the tab's foreground
|
* @param foreground the color to be displayed as the tab's foreground
|
||||||
|
@ -165,11 +165,11 @@ public class TitledBorder extends AbstractBorder
|
|||||||
* @param titlePosition the position for the title
|
* @param titlePosition the position for the title
|
||||||
*/
|
*/
|
||||||
public TitledBorder(Border border,
|
public TitledBorder(Border border,
|
||||||
String title,
|
String title,
|
||||||
int titleJustification,
|
int titleJustification,
|
||||||
int titlePosition) {
|
int titlePosition) {
|
||||||
this(border, title, titleJustification,
|
this(border, title, titleJustification,
|
||||||
titlePosition, null, null);
|
titlePosition, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -183,12 +183,12 @@ public class TitledBorder extends AbstractBorder
|
|||||||
* @param titleFont the font for rendering the title
|
* @param titleFont the font for rendering the title
|
||||||
*/
|
*/
|
||||||
public TitledBorder(Border border,
|
public TitledBorder(Border border,
|
||||||
String title,
|
String title,
|
||||||
int titleJustification,
|
int titleJustification,
|
||||||
int titlePosition,
|
int titlePosition,
|
||||||
Font titleFont) {
|
Font titleFont) {
|
||||||
this(border, title, titleJustification,
|
this(border, title, titleJustification,
|
||||||
titlePosition, titleFont, null);
|
titlePosition, titleFont, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -205,11 +205,11 @@ public class TitledBorder extends AbstractBorder
|
|||||||
*/
|
*/
|
||||||
@ConstructorProperties({"border", "title", "titleJustification", "titlePosition", "titleFont", "titleColor"})
|
@ConstructorProperties({"border", "title", "titleJustification", "titlePosition", "titleFont", "titleColor"})
|
||||||
public TitledBorder(Border border,
|
public TitledBorder(Border border,
|
||||||
String title,
|
String title,
|
||||||
int titleJustification,
|
int titleJustification,
|
||||||
int titlePosition,
|
int titlePosition,
|
||||||
Font titleFont,
|
Font titleFont,
|
||||||
Color titleColor) {
|
Color titleColor) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.border = border;
|
this.border = border;
|
||||||
this.titleFont = titleFont;
|
this.titleFont = titleFont;
|
||||||
@ -234,7 +234,7 @@ public class TitledBorder extends AbstractBorder
|
|||||||
* @param height the height of the painted border
|
* @param height the height of the painted border
|
||||||
*/
|
*/
|
||||||
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
|
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
|
||||||
Border border = getBorderUI();
|
Border border = getBorder();
|
||||||
String title = getTitle();
|
String title = getTitle();
|
||||||
if ((title != null) && !title.isEmpty()) {
|
if ((title != null) && !title.isEmpty()) {
|
||||||
int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING;
|
int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING;
|
||||||
@ -347,7 +347,7 @@ public class TitledBorder extends AbstractBorder
|
|||||||
* @param insets the object to be reinitialized
|
* @param insets the object to be reinitialized
|
||||||
*/
|
*/
|
||||||
public Insets getBorderInsets(Component c, Insets insets) {
|
public Insets getBorderInsets(Component c, Insets insets) {
|
||||||
Border border = getBorderUI();
|
Border border = getBorder();
|
||||||
if (border == null) {
|
if (border == null) {
|
||||||
insets.set(0, 0, 0, 0);
|
insets.set(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
@ -402,22 +402,34 @@ public class TitledBorder extends AbstractBorder
|
|||||||
/**
|
/**
|
||||||
* Returns whether or not the border is opaque.
|
* Returns whether or not the border is opaque.
|
||||||
*/
|
*/
|
||||||
public boolean isBorderOpaque() { return false; }
|
public boolean isBorderOpaque() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the title of the titled border.
|
* Returns the title of the titled border.
|
||||||
|
*
|
||||||
|
* @return the title of the titled border
|
||||||
*/
|
*/
|
||||||
public String getTitle() { return title; }
|
public String getTitle() {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the border of the titled border.
|
* Returns the border of the titled border.
|
||||||
|
*
|
||||||
|
* @return the border of the titled border
|
||||||
*/
|
*/
|
||||||
public Border getBorder() {
|
public Border getBorder() {
|
||||||
return border;
|
return border != null
|
||||||
|
? border
|
||||||
|
: UIManager.getBorder("TitledBorder.border");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the title-position of the titled border.
|
* Returns the title-position of the titled border.
|
||||||
|
*
|
||||||
|
* @return the title-position of the titled border
|
||||||
*/
|
*/
|
||||||
public int getTitlePosition() {
|
public int getTitlePosition() {
|
||||||
return titlePosition;
|
return titlePosition;
|
||||||
@ -425,20 +437,28 @@ public class TitledBorder extends AbstractBorder
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the title-justification of the titled border.
|
* Returns the title-justification of the titled border.
|
||||||
|
*
|
||||||
|
* @return the title-justification of the titled border
|
||||||
*/
|
*/
|
||||||
public int getTitleJustification() { return titleJustification; }
|
public int getTitleJustification() {
|
||||||
|
return titleJustification;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the title-font of the titled border.
|
* Returns the title-font of the titled border.
|
||||||
|
*
|
||||||
|
* @return the title-font of the titled border
|
||||||
*/
|
*/
|
||||||
public Font getTitleFont() {
|
public Font getTitleFont() {
|
||||||
return titleFont;
|
return titleFont;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the title-color of the titled border.
|
* Returns the title-color of the titled border.
|
||||||
|
*
|
||||||
|
* @return the title-color of the titled border
|
||||||
*/
|
*/
|
||||||
public Color getTitleColor() {
|
public Color getTitleColor() {
|
||||||
return titleColor;
|
return titleColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,15 +467,19 @@ public class TitledBorder extends AbstractBorder
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the title of the titled border.
|
* Sets the title of the titled border.
|
||||||
* param title the title for the border
|
* @param title the title for the border
|
||||||
*/
|
*/
|
||||||
public void setTitle(String title) { this.title = title; }
|
public void setTitle(String title) {
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the border of the titled border.
|
* Sets the border of the titled border.
|
||||||
* @param border the border
|
* @param border the border
|
||||||
*/
|
*/
|
||||||
public void setBorder(Border border) { this.border = border; }
|
public void setBorder(Border border) {
|
||||||
|
this.border = border;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the title-position of the titled border.
|
* Sets the title-position of the titled border.
|
||||||
@ -482,19 +506,19 @@ public class TitledBorder extends AbstractBorder
|
|||||||
* Sets the title-justification of the titled border.
|
* Sets the title-justification of the titled border.
|
||||||
* @param titleJustification the justification for the border
|
* @param titleJustification the justification for the border
|
||||||
*/
|
*/
|
||||||
public void setTitleJustification(int titleJustification) {
|
public void setTitleJustification(int titleJustification) {
|
||||||
switch (titleJustification) {
|
switch (titleJustification) {
|
||||||
case DEFAULT_JUSTIFICATION:
|
case DEFAULT_JUSTIFICATION:
|
||||||
case LEFT:
|
case LEFT:
|
||||||
case CENTER:
|
case CENTER:
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
case LEADING:
|
case LEADING:
|
||||||
case TRAILING:
|
case TRAILING:
|
||||||
this.titleJustification = titleJustification;
|
this.titleJustification = titleJustification;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException(titleJustification +
|
throw new IllegalArgumentException(titleJustification +
|
||||||
" is not a valid title justification.");
|
" is not a valid title justification.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -518,6 +542,7 @@ public class TitledBorder extends AbstractBorder
|
|||||||
* Returns the minimum dimensions this border requires
|
* Returns the minimum dimensions this border requires
|
||||||
* in order to fully display the border and title.
|
* in order to fully display the border and title.
|
||||||
* @param c the component where this border will be drawn
|
* @param c the component where this border will be drawn
|
||||||
|
* @return the {@code Dimension} object
|
||||||
*/
|
*/
|
||||||
public Dimension getMinimumSize(Component c) {
|
public Dimension getMinimumSize(Component c) {
|
||||||
Insets insets = getBorderInsets(c);
|
Insets insets = getBorderInsets(c);
|
||||||
@ -557,7 +582,7 @@ public class TitledBorder extends AbstractBorder
|
|||||||
if (height < 0) {
|
if (height < 0) {
|
||||||
throw new IllegalArgumentException("Height must be >= 0");
|
throw new IllegalArgumentException("Height must be >= 0");
|
||||||
}
|
}
|
||||||
Border border = getBorderUI();
|
Border border = getBorder();
|
||||||
String title = getTitle();
|
String title = getTitle();
|
||||||
if ((title != null) && !title.isEmpty()) {
|
if ((title != null) && !title.isEmpty()) {
|
||||||
int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING;
|
int edge = (border instanceof TitledBorder) ? 0 : EDGE_SPACING;
|
||||||
@ -616,13 +641,6 @@ public class TitledBorder extends AbstractBorder
|
|||||||
return Component.BaselineResizeBehavior.OTHER;
|
return Component.BaselineResizeBehavior.OTHER;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Border getBorderUI() {
|
|
||||||
Border border = getBorder();
|
|
||||||
return border != null
|
|
||||||
? border
|
|
||||||
: UIManager.getBorder("TitledBorder.border");
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getPosition() {
|
private int getPosition() {
|
||||||
int position = getTitlePosition();
|
int position = getTitlePosition();
|
||||||
if (position != DEFAULT_POSITION) {
|
if (position != DEFAULT_POSITION) {
|
||||||
|
@ -449,8 +449,8 @@ public class LayerUI<V extends Component>
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Configures the {@code JLayer} this {@code LayerUI} is set to.
|
* Configures the {@code JLayer} this {@code LayerUI} is set to.
|
||||||
* The default implementation registers the {@code LayerUI}
|
* The default implementation registers the passed {@code JLayer} component
|
||||||
* as a property change listener for the passed {@code JLayer} component.
|
* as a {@code PropertyChangeListener} for the property changes of this {@code LayerUI}.
|
||||||
*
|
*
|
||||||
* @param c the {@code JLayer} component where this UI delegate is being installed
|
* @param c the {@code JLayer} component where this UI delegate is being installed
|
||||||
*/
|
*/
|
||||||
@ -461,8 +461,8 @@ public class LayerUI<V extends Component>
|
|||||||
/**
|
/**
|
||||||
* Reverses the configuration which was previously set
|
* Reverses the configuration which was previously set
|
||||||
* in the {@link #installUI(JComponent)} method.
|
* in the {@link #installUI(JComponent)} method.
|
||||||
* The default implementation unregisters the property change listener
|
* The default implementation unregisters the passed {@code JLayer} component
|
||||||
* for the passed JLayer component.
|
* as a {@code PropertyChangeListener} for the property changes of this {@code LayerUI}.
|
||||||
*
|
*
|
||||||
* @param c the component from which this UI delegate is being removed.
|
* @param c the component from which this UI delegate is being removed.
|
||||||
*/
|
*/
|
||||||
|
@ -196,6 +196,10 @@ public class BasicMenuUI extends BasicMenuItemUI
|
|||||||
return getHandler();
|
return getHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected MenuKeyListener createMenuKeyListener(JComponent c) {
|
||||||
|
return (MenuKeyListener)getHandler();
|
||||||
|
}
|
||||||
|
|
||||||
public Dimension getMaximumSize(JComponent c) {
|
public Dimension getMaximumSize(JComponent c) {
|
||||||
if (((JMenu)menuItem).isTopLevelMenu() == true) {
|
if (((JMenu)menuItem).isTopLevelMenu() == true) {
|
||||||
Dimension d = c.getPreferredSize();
|
Dimension d = c.getPreferredSize();
|
||||||
@ -397,7 +401,7 @@ public class BasicMenuUI extends BasicMenuItemUI
|
|||||||
public void stateChanged(ChangeEvent e) { }
|
public void stateChanged(ChangeEvent e) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private class Handler extends BasicMenuItemUI.Handler {
|
private class Handler extends BasicMenuItemUI.Handler implements MenuKeyListener {
|
||||||
//
|
//
|
||||||
// PropertyChangeListener
|
// PropertyChangeListener
|
||||||
//
|
//
|
||||||
@ -580,5 +584,48 @@ public class BasicMenuUI extends BasicMenuItemUI
|
|||||||
}
|
}
|
||||||
public void menuDragMouseExited(MenuDragMouseEvent e) {}
|
public void menuDragMouseExited(MenuDragMouseEvent e) {}
|
||||||
public void menuDragMouseReleased(MenuDragMouseEvent e) {}
|
public void menuDragMouseReleased(MenuDragMouseEvent e) {}
|
||||||
|
|
||||||
|
//
|
||||||
|
// MenuKeyListener
|
||||||
|
//
|
||||||
|
/**
|
||||||
|
* Open the Menu
|
||||||
|
*/
|
||||||
|
public void menuKeyTyped(MenuKeyEvent e) {
|
||||||
|
if (!crossMenuMnemonic && BasicPopupMenuUI.getLastPopup() != null) {
|
||||||
|
// when crossMenuMnemonic is not set, we don't open a toplevel
|
||||||
|
// menu if another toplevel menu is already open
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (BasicPopupMenuUI.getPopups().size() != 0) {
|
||||||
|
//Fix 6939261: to return in case not on the main menu
|
||||||
|
//and has a pop-up.
|
||||||
|
//after return code will be handled in BasicPopupMenuUI.java
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char key = Character.toLowerCase((char)menuItem.getMnemonic());
|
||||||
|
MenuElement path[] = e.getPath();
|
||||||
|
if (key == Character.toLowerCase(e.getKeyChar())) {
|
||||||
|
JPopupMenu popupMenu = ((JMenu)menuItem).getPopupMenu();
|
||||||
|
ArrayList newList = new ArrayList(Arrays.asList(path));
|
||||||
|
newList.add(popupMenu);
|
||||||
|
MenuElement subs[] = popupMenu.getSubElements();
|
||||||
|
MenuElement sub =
|
||||||
|
BasicPopupMenuUI.findEnabledChild(subs, -1, true);
|
||||||
|
if(sub != null) {
|
||||||
|
newList.add(sub);
|
||||||
|
}
|
||||||
|
MenuSelectionManager manager = e.getMenuSelectionManager();
|
||||||
|
MenuElement newPath[] = new MenuElement[0];;
|
||||||
|
newPath = (MenuElement[]) newList.toArray(newPath);
|
||||||
|
manager.setSelectedPath(newPath);
|
||||||
|
e.consume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void menuKeyPressed(MenuKeyEvent e) {}
|
||||||
|
public void menuKeyReleased(MenuKeyEvent e) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,17 +81,26 @@ public class MetalScrollPaneUI extends BasicScrollPaneUI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void installListeners(JScrollPane scrollPane) {
|
public void installListeners(JScrollPane scrollPane) {
|
||||||
super.installListeners(scrollPane);
|
super.installListeners(scrollPane);
|
||||||
scrollBarSwapListener = createScrollBarSwapListener();
|
scrollBarSwapListener = createScrollBarSwapListener();
|
||||||
scrollPane.addPropertyChangeListener(scrollBarSwapListener);
|
scrollPane.addPropertyChangeListener(scrollBarSwapListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
protected void uninstallListeners(JComponent c) {
|
||||||
|
super.uninstallListeners(c);
|
||||||
|
c.removePropertyChangeListener(scrollBarSwapListener);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated - Replaced by {@link #uninstallListeners(JComponent)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public void uninstallListeners(JScrollPane scrollPane) {
|
public void uninstallListeners(JScrollPane scrollPane) {
|
||||||
super.uninstallListeners(scrollPane);
|
super.uninstallListeners(scrollPane);
|
||||||
|
|
||||||
scrollPane.removePropertyChangeListener(scrollBarSwapListener);
|
scrollPane.removePropertyChangeListener(scrollBarSwapListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,6 +223,16 @@ public final class AWTAccessor {
|
|||||||
void processEvent(Component comp, AWTEvent e);
|
void processEvent(Component comp, AWTEvent e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* An interface of accessor for the java.awt.Container class.
|
||||||
|
*/
|
||||||
|
public interface ContainerAccessor {
|
||||||
|
/**
|
||||||
|
* Validates the container unconditionally.
|
||||||
|
*/
|
||||||
|
void validateUnconditionally(Container cont);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* An interface of accessor for java.awt.Window class.
|
* An interface of accessor for java.awt.Window class.
|
||||||
*/
|
*/
|
||||||
@ -334,6 +344,10 @@ public final class AWTAccessor {
|
|||||||
* Gets the state of this frame.
|
* Gets the state of this frame.
|
||||||
*/
|
*/
|
||||||
int getExtendedState(Frame frame);
|
int getExtendedState(Frame frame);
|
||||||
|
/*
|
||||||
|
* Gets the maximized bounds of this frame.
|
||||||
|
*/
|
||||||
|
Rectangle getMaximizedBounds(Frame frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -440,53 +454,19 @@ public final class AWTAccessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The java.awt.Component class accessor object.
|
* Accessor instances are initialized in the static initializers of
|
||||||
|
* corresponding AWT classes by using setters defined below.
|
||||||
*/
|
*/
|
||||||
private static ComponentAccessor componentAccessor;
|
private static ComponentAccessor componentAccessor;
|
||||||
|
private static ContainerAccessor containerAccessor;
|
||||||
/*
|
|
||||||
* The java.awt.Window class accessor object.
|
|
||||||
*/
|
|
||||||
private static WindowAccessor windowAccessor;
|
private static WindowAccessor windowAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.AWTEvent class accessor object.
|
|
||||||
*/
|
|
||||||
private static AWTEventAccessor awtEventAccessor;
|
private static AWTEventAccessor awtEventAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.event.InputEvent class accessor object.
|
|
||||||
*/
|
|
||||||
private static InputEventAccessor inputEventAccessor;
|
private static InputEventAccessor inputEventAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.Frame class accessor object.
|
|
||||||
*/
|
|
||||||
private static FrameAccessor frameAccessor;
|
private static FrameAccessor frameAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.KeyboardFocusManager class accessor object.
|
|
||||||
*/
|
|
||||||
private static KeyboardFocusManagerAccessor kfmAccessor;
|
private static KeyboardFocusManagerAccessor kfmAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.MenuComponent class accessor object.
|
|
||||||
*/
|
|
||||||
private static MenuComponentAccessor menuComponentAccessor;
|
private static MenuComponentAccessor menuComponentAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.EventQueue class accessor object.
|
|
||||||
*/
|
|
||||||
private static EventQueueAccessor eventQueueAccessor;
|
private static EventQueueAccessor eventQueueAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.PopupMenu class accessor object.
|
|
||||||
*/
|
|
||||||
private static PopupMenuAccessor popupMenuAccessor;
|
private static PopupMenuAccessor popupMenuAccessor;
|
||||||
|
|
||||||
/*
|
|
||||||
* The java.awt.FileDialog class accessor object.
|
|
||||||
*/
|
|
||||||
private static FileDialogAccessor fileDialogAccessor;
|
private static FileDialogAccessor fileDialogAccessor;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -497,7 +477,7 @@ public final class AWTAccessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Retrieve the accessor object for the java.awt.Window class.
|
* Retrieve the accessor object for the java.awt.Component class.
|
||||||
*/
|
*/
|
||||||
public static ComponentAccessor getComponentAccessor() {
|
public static ComponentAccessor getComponentAccessor() {
|
||||||
if (componentAccessor == null) {
|
if (componentAccessor == null) {
|
||||||
@ -507,6 +487,24 @@ public final class AWTAccessor {
|
|||||||
return componentAccessor;
|
return componentAccessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set an accessor object for the java.awt.Container class.
|
||||||
|
*/
|
||||||
|
public static void setContainerAccessor(ContainerAccessor ca) {
|
||||||
|
containerAccessor = ca;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Retrieve the accessor object for the java.awt.Container class.
|
||||||
|
*/
|
||||||
|
public static ContainerAccessor getContainerAccessor() {
|
||||||
|
if (containerAccessor == null) {
|
||||||
|
unsafe.ensureClassInitialized(Container.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return containerAccessor;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set an accessor object for the java.awt.Window class.
|
* Set an accessor object for the java.awt.Window class.
|
||||||
*/
|
*/
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
package sun.misc;
|
package sun.misc;
|
||||||
|
|
||||||
|
import static java.lang.Thread.State.*;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -332,69 +333,37 @@ public class VM {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns Thread.State for the given threadStatus
|
||||||
|
*/
|
||||||
public static Thread.State toThreadState(int threadStatus) {
|
public static Thread.State toThreadState(int threadStatus) {
|
||||||
// Initialize the threadStateMap
|
if ((threadStatus & JVMTI_THREAD_STATE_RUNNABLE) != 0) {
|
||||||
initThreadStateMap();
|
return RUNNABLE;
|
||||||
|
} else if ((threadStatus & JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER) != 0) {
|
||||||
Thread.State s = threadStateMap.get(threadStatus);
|
return BLOCKED;
|
||||||
if (s == null) {
|
} else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_INDEFINITELY) != 0) {
|
||||||
// default to RUNNABLE if the threadStatus value is unknown
|
return WAITING;
|
||||||
s = Thread.State.RUNNABLE;
|
} else if ((threadStatus & JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT) != 0) {
|
||||||
}
|
return TIMED_WAITING;
|
||||||
return s;
|
} else if ((threadStatus & JVMTI_THREAD_STATE_TERMINATED) != 0) {
|
||||||
}
|
return TERMINATED;
|
||||||
|
} else if ((threadStatus & JVMTI_THREAD_STATE_ALIVE) == 0) {
|
||||||
// a map of threadStatus values to the corresponding Thread.State
|
return NEW;
|
||||||
private static Map<Integer, Thread.State> threadStateMap = null;
|
} else {
|
||||||
private static Map<Integer, String> threadStateNames = null;
|
return RUNNABLE;
|
||||||
|
|
||||||
private synchronized static void initThreadStateMap() {
|
|
||||||
if (threadStateMap != null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Thread.State[] ts = Thread.State.values();
|
|
||||||
|
|
||||||
final int[][] vmThreadStateValues = new int[ts.length][];
|
|
||||||
final String[][] vmThreadStateNames = new String[ts.length][];
|
|
||||||
getThreadStateValues(vmThreadStateValues, vmThreadStateNames);
|
|
||||||
|
|
||||||
threadStateMap = new HashMap<Integer, Thread.State>();
|
|
||||||
threadStateNames = new HashMap<Integer, String>();
|
|
||||||
for (int i = 0; i < ts.length; i++) {
|
|
||||||
String state = ts[i].name();
|
|
||||||
int[] values = null;
|
|
||||||
String[] names = null;
|
|
||||||
for (int j = 0; j < ts.length; j++) {
|
|
||||||
if (vmThreadStateNames[j][0].startsWith(state)) {
|
|
||||||
values = vmThreadStateValues[j];
|
|
||||||
names = vmThreadStateNames[j];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (values == null) {
|
|
||||||
throw new InternalError("No VM thread state mapped to " +
|
|
||||||
state);
|
|
||||||
}
|
|
||||||
if (values.length != names.length) {
|
|
||||||
throw new InternalError("VM thread state values and names " +
|
|
||||||
" mapped to " + state + ": length not matched" );
|
|
||||||
}
|
|
||||||
for (int k = 0; k < values.length; k++) {
|
|
||||||
threadStateMap.put(values[k], ts[i]);
|
|
||||||
threadStateNames.put(values[k], names[k]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fill in vmThreadStateValues with int arrays, each of which contains
|
|
||||||
// the threadStatus values mapping to the Thread.State enum constant.
|
/* The threadStatus field is set by the VM at state transition
|
||||||
// Fill in vmThreadStateNames with String arrays, each of which contains
|
* in the hotspot implementation. Its value is set according to
|
||||||
// the name of each threadStatus value of the format:
|
* the JVM TI specification GetThreadState function.
|
||||||
// <Thread.State.name()>[.<Substate name>]
|
*/
|
||||||
// e.g. WAITING.OBJECT_WAIT
|
private final static int JVMTI_THREAD_STATE_ALIVE = 0x0001;
|
||||||
//
|
private final static int JVMTI_THREAD_STATE_TERMINATED = 0x0002;
|
||||||
private native static void getThreadStateValues(int[][] vmThreadStateValues,
|
private final static int JVMTI_THREAD_STATE_RUNNABLE = 0x0004;
|
||||||
String[][] vmThreadStateNames);
|
private final static int JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER = 0x0400;
|
||||||
|
private final static int JVMTI_THREAD_STATE_WAITING_INDEFINITELY = 0x0010;
|
||||||
|
private final static int JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT = 0x0020;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
initialize();
|
initialize();
|
||||||
|
@ -129,9 +129,22 @@ class Request {
|
|||||||
hdrs = new Headers();
|
hdrs = new Headers();
|
||||||
|
|
||||||
char s[] = new char[10];
|
char s[] = new char[10];
|
||||||
|
int len = 0;
|
||||||
|
|
||||||
int firstc = is.read();
|
int firstc = is.read();
|
||||||
|
|
||||||
|
// check for empty headers
|
||||||
|
if (firstc == CR || firstc == LF) {
|
||||||
|
int c = is.read();
|
||||||
|
if (c == CR || c == LF) {
|
||||||
|
return hdrs;
|
||||||
|
}
|
||||||
|
s[0] = (char)firstc;
|
||||||
|
len = 1;
|
||||||
|
firstc = c;
|
||||||
|
}
|
||||||
|
|
||||||
while (firstc != LF && firstc != CR && firstc >= 0) {
|
while (firstc != LF && firstc != CR && firstc >= 0) {
|
||||||
int len = 0;
|
|
||||||
int keyend = -1;
|
int keyend = -1;
|
||||||
int c;
|
int c;
|
||||||
boolean inKey = firstc > ' ';
|
boolean inKey = firstc > ' ';
|
||||||
@ -191,6 +204,7 @@ class Request {
|
|||||||
else
|
else
|
||||||
v = String.copyValueOf(s, keyend, len - keyend);
|
v = String.copyValueOf(s, keyend, len - keyend);
|
||||||
hdrs.add (k,v);
|
hdrs.add (k,v);
|
||||||
|
len = 0;
|
||||||
}
|
}
|
||||||
return hdrs;
|
return hdrs;
|
||||||
}
|
}
|
||||||
|
@ -74,8 +74,8 @@ class SSLStreams {
|
|||||||
private void configureEngine(HttpsConfigurator cfg, InetSocketAddress addr){
|
private void configureEngine(HttpsConfigurator cfg, InetSocketAddress addr){
|
||||||
if (cfg != null) {
|
if (cfg != null) {
|
||||||
Parameters params = new Parameters (cfg, addr);
|
Parameters params = new Parameters (cfg, addr);
|
||||||
cfg.configure (params);
|
|
||||||
//BEGIN_TIGER_EXCLUDE
|
//BEGIN_TIGER_EXCLUDE
|
||||||
|
cfg.configure (params);
|
||||||
SSLParameters sslParams = params.getSSLParameters();
|
SSLParameters sslParams = params.getSSLParameters();
|
||||||
if (sslParams != null) {
|
if (sslParams != null) {
|
||||||
engine.setSSLParameters (sslParams);
|
engine.setSSLParameters (sslParams);
|
||||||
|
@ -42,7 +42,7 @@ class ServerConfig {
|
|||||||
static final int DEFAULT_CLOCK_TICK = 10000 ; // 10 sec.
|
static final int DEFAULT_CLOCK_TICK = 10000 ; // 10 sec.
|
||||||
|
|
||||||
/* These values must be a reasonable multiple of clockTick */
|
/* These values must be a reasonable multiple of clockTick */
|
||||||
static final long DEFAULT_IDLE_INTERVAL = 300 ; // 5 min
|
static final long DEFAULT_IDLE_INTERVAL = 30 ; // 5 min
|
||||||
static final int DEFAULT_MAX_IDLE_CONNECTIONS = 200 ;
|
static final int DEFAULT_MAX_IDLE_CONNECTIONS = 200 ;
|
||||||
|
|
||||||
static final long DEFAULT_MAX_REQ_TIME = -1; // default: forever
|
static final long DEFAULT_MAX_REQ_TIME = -1; // default: forever
|
||||||
|
@ -144,7 +144,7 @@ class UTF_32Coder {
|
|||||||
|
|
||||||
protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
|
protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
|
||||||
int mark = src.position();
|
int mark = src.position();
|
||||||
if (!doneBOM) {
|
if (!doneBOM && src.hasRemaining()) {
|
||||||
if (dst.remaining() < 4)
|
if (dst.remaining() < 4)
|
||||||
return CoderResult.OVERFLOW;
|
return CoderResult.OVERFLOW;
|
||||||
put(BOM_BIG, dst);
|
put(BOM_BIG, dst);
|
||||||
|
@ -70,13 +70,12 @@ public abstract class UnicodeEncoder extends CharsetEncoder {
|
|||||||
protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
|
protected CoderResult encodeLoop(CharBuffer src, ByteBuffer dst) {
|
||||||
int mark = src.position();
|
int mark = src.position();
|
||||||
|
|
||||||
if (needsMark) {
|
if (needsMark && src.hasRemaining()) {
|
||||||
if (dst.remaining() < 2)
|
if (dst.remaining() < 2)
|
||||||
return CoderResult.OVERFLOW;
|
return CoderResult.OVERFLOW;
|
||||||
put(BYTE_ORDER_MARK, dst);
|
put(BYTE_ORDER_MARK, dst);
|
||||||
needsMark = false;
|
needsMark = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (src.hasRemaining()) {
|
while (src.hasRemaining()) {
|
||||||
char c = src.get();
|
char c = src.get();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -138,13 +138,7 @@ abstract class SeedGenerator {
|
|||||||
instance.getSeedBytes(result);
|
instance.getSeedBytes(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
void getSeedBytes(byte[] result) {
|
abstract void getSeedBytes(byte[] result);
|
||||||
for (int i = 0; i < result.length; i++) {
|
|
||||||
result[i] = getSeedByte();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract byte getSeedByte();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve some system information, hashed.
|
* Retrieve some system information, hashed.
|
||||||
@ -369,6 +363,13 @@ abstract class SeedGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void getSeedBytes(byte[] result) {
|
||||||
|
for (int i = 0; i < result.length; i++) {
|
||||||
|
result[i] = getSeedByte();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
byte getSeedByte() {
|
byte getSeedByte() {
|
||||||
byte b = 0;
|
byte b = 0;
|
||||||
|
|
||||||
@ -455,8 +456,7 @@ abstract class SeedGenerator {
|
|||||||
static class URLSeedGenerator extends SeedGenerator {
|
static class URLSeedGenerator extends SeedGenerator {
|
||||||
|
|
||||||
private String deviceName;
|
private String deviceName;
|
||||||
private BufferedInputStream devRandom;
|
private InputStream devRandom;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The constructor is only called once to construct the one
|
* The constructor is only called once to construct the one
|
||||||
@ -465,7 +465,7 @@ abstract class SeedGenerator {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
URLSeedGenerator(String egdurl) throws IOException {
|
URLSeedGenerator(String egdurl) throws IOException {
|
||||||
if (egdurl == null) {
|
if (egdurl == null) {
|
||||||
throw new IOException("No random source specified");
|
throw new IOException("No random source specified");
|
||||||
}
|
}
|
||||||
deviceName = egdurl;
|
deviceName = egdurl;
|
||||||
@ -478,41 +478,78 @@ abstract class SeedGenerator {
|
|||||||
|
|
||||||
private void init() throws IOException {
|
private void init() throws IOException {
|
||||||
final URL device = new URL(deviceName);
|
final URL device = new URL(deviceName);
|
||||||
devRandom = java.security.AccessController.doPrivileged
|
try {
|
||||||
(new java.security.PrivilegedAction<BufferedInputStream>() {
|
devRandom = java.security.AccessController.doPrivileged
|
||||||
public BufferedInputStream run() {
|
(new java.security.PrivilegedExceptionAction<InputStream>() {
|
||||||
try {
|
public InputStream run() throws IOException {
|
||||||
return new BufferedInputStream(device.openStream());
|
/*
|
||||||
} catch (IOException ioe) {
|
* return a FileInputStream for file URLs and
|
||||||
return null;
|
* avoid buffering. The openStream() call wraps
|
||||||
|
* InputStream in a BufferedInputStream which
|
||||||
|
* can buffer up to 8K bytes. This read is a
|
||||||
|
* performance issue for entropy sources which
|
||||||
|
* can be slow to replenish.
|
||||||
|
*/
|
||||||
|
if (device.getProtocol().equalsIgnoreCase("file")) {
|
||||||
|
File deviceFile = getDeviceFile(device);
|
||||||
|
return new FileInputStream(deviceFile);
|
||||||
|
} else {
|
||||||
|
return device.openStream();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
if (devRandom == null) {
|
throw new IOException("Failed to open " + deviceName, e.getCause());
|
||||||
throw new IOException("failed to open " + device);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte getSeedByte() {
|
/*
|
||||||
byte b[] = new byte[1];
|
* Use a URI to access this File. Previous code used a URL
|
||||||
int stat;
|
* which is less strict on syntax. If we encounter a
|
||||||
|
* URISyntaxException we make best efforts for backwards
|
||||||
|
* compatibility. e.g. space character in deviceName string.
|
||||||
|
*
|
||||||
|
* Method called within PrivilegedExceptionAction block.
|
||||||
|
*/
|
||||||
|
private File getDeviceFile(URL device) throws IOException {
|
||||||
try {
|
try {
|
||||||
stat = devRandom.read(b, 0, b.length);
|
URI deviceURI = device.toURI();
|
||||||
|
if(deviceURI.isOpaque()) {
|
||||||
|
// File constructor does not accept opaque URI
|
||||||
|
URI localDir = new File(System.getProperty("user.dir")).toURI();
|
||||||
|
String uriPath = localDir.toString() +
|
||||||
|
deviceURI.toString().substring(5);
|
||||||
|
return new File(URI.create(uriPath));
|
||||||
|
} else {
|
||||||
|
return new File(deviceURI);
|
||||||
|
}
|
||||||
|
} catch (URISyntaxException use) {
|
||||||
|
/*
|
||||||
|
* Make best effort to access this File.
|
||||||
|
* We can try using the URL path.
|
||||||
|
*/
|
||||||
|
return new File(device.getPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
void getSeedBytes(byte[] result) {
|
||||||
|
int len = result.length;
|
||||||
|
int read = 0;
|
||||||
|
try {
|
||||||
|
while (read < len) {
|
||||||
|
int count = devRandom.read(result, read, len - read);
|
||||||
|
// /dev/random blocks - should never have EOF
|
||||||
|
if (count < 0)
|
||||||
|
throw new InternalError("URLSeedGenerator " + deviceName +
|
||||||
|
" reached end of file");
|
||||||
|
read += count;
|
||||||
|
}
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
throw new InternalError("URLSeedGenerator " + deviceName +
|
throw new InternalError("URLSeedGenerator " + deviceName +
|
||||||
" generated exception: " +
|
" generated exception: " +
|
||||||
ioe.getMessage());
|
ioe.getMessage());
|
||||||
}
|
}
|
||||||
if (stat == b.length) {
|
|
||||||
return b[0];
|
|
||||||
} else if (stat == -1) {
|
|
||||||
throw new InternalError("URLSeedGenerator " + deviceName +
|
|
||||||
" reached end of file");
|
|
||||||
} else {
|
|
||||||
throw new InternalError("URLSeedGenerator " + deviceName +
|
|
||||||
" failed read");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ import javax.security.auth.x500.X500Principal;
|
|||||||
/**
|
/**
|
||||||
* PolicyTool may be used by users and administrators to configure the
|
* PolicyTool may be used by users and administrators to configure the
|
||||||
* overall java security policy (currently stored in the policy file).
|
* overall java security policy (currently stored in the policy file).
|
||||||
* Using PolicyTool administators may add and remove policies from
|
* Using PolicyTool administrators may add and remove policies from
|
||||||
* the policy file. <p>
|
* the policy file. <p>
|
||||||
*
|
*
|
||||||
* @see java.security.Policy
|
* @see java.security.Policy
|
||||||
@ -1343,11 +1343,6 @@ class ToolDialog extends Dialog {
|
|||||||
PolicyTool.rb.getString
|
PolicyTool.rb.getString
|
||||||
("Actions.");
|
("Actions.");
|
||||||
|
|
||||||
/* gridbag index for display OverWriteFile (OW) components */
|
|
||||||
public static final int OW_LABEL = 0;
|
|
||||||
public static final int OW_OK_BUTTON = 1;
|
|
||||||
public static final int OW_CANCEL_BUTTON = 2;
|
|
||||||
|
|
||||||
/* gridbag index for display PolicyEntry (PE) components */
|
/* gridbag index for display PolicyEntry (PE) components */
|
||||||
public static final int PE_CODEBASE_LABEL = 0;
|
public static final int PE_CODEBASE_LABEL = 0;
|
||||||
public static final int PE_CODEBASE_TEXTFIELD = 1;
|
public static final int PE_CODEBASE_TEXTFIELD = 1;
|
||||||
@ -1522,44 +1517,6 @@ class ToolDialog extends Dialog {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* ask user if they want to overwrite an existing file
|
|
||||||
*/
|
|
||||||
void displayOverWriteFileDialog(String filename, int nextEvent) {
|
|
||||||
|
|
||||||
// find where the PolicyTool gui is
|
|
||||||
Point location = tw.getLocationOnScreen();
|
|
||||||
setBounds(location.x + 75, location.y + 100, 400, 150);
|
|
||||||
setLayout(new GridBagLayout());
|
|
||||||
|
|
||||||
// ask the user if they want to over write the existing file
|
|
||||||
MessageFormat form = new MessageFormat(PolicyTool.rb.getString
|
|
||||||
("OK.to.overwrite.existing.file.filename."));
|
|
||||||
Object[] source = {filename};
|
|
||||||
Label label = new Label(form.format(source));
|
|
||||||
tw.addNewComponent(this, label, OW_LABEL,
|
|
||||||
0, 0, 2, 1, 0.0, 0.0, GridBagConstraints.BOTH,
|
|
||||||
tw.TOP_PADDING);
|
|
||||||
|
|
||||||
// OK button
|
|
||||||
Button button = new Button(PolicyTool.rb.getString("OK"));
|
|
||||||
button.addActionListener(new OverWriteFileOKButtonListener
|
|
||||||
(tool, tw, this, filename, nextEvent));
|
|
||||||
tw.addNewComponent(this, button, OW_OK_BUTTON,
|
|
||||||
0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
|
|
||||||
tw.TOP_PADDING);
|
|
||||||
|
|
||||||
// Cancel button
|
|
||||||
// -- if the user hits cancel, do NOT go on to the next event
|
|
||||||
button = new Button(PolicyTool.rb.getString("Cancel"));
|
|
||||||
button.addActionListener(new CancelButtonListener(this));
|
|
||||||
tw.addNewComponent(this, button, OW_CANCEL_BUTTON,
|
|
||||||
1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.VERTICAL,
|
|
||||||
tw.TOP_PADDING);
|
|
||||||
|
|
||||||
setVisible(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pop up a dialog so the user can enter info to add a new PolicyEntry
|
* pop up a dialog so the user can enter info to add a new PolicyEntry
|
||||||
* - if edit is TRUE, then the user is editing an existing entry
|
* - if edit is TRUE, then the user is editing an existing entry
|
||||||
@ -2339,47 +2296,39 @@ class ToolDialog extends Dialog {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// get the entered filename
|
// get the entered filename
|
||||||
String filename = new String(fd.getDirectory() + fd.getFile());
|
File saveAsFile = new File(fd.getDirectory(), fd.getFile());
|
||||||
|
String filename = saveAsFile.getPath();
|
||||||
fd.dispose();
|
fd.dispose();
|
||||||
|
|
||||||
// see if the file already exists
|
try {
|
||||||
File saveAsFile = new File(filename);
|
// save the policy entries to a file
|
||||||
if (saveAsFile.exists()) {
|
tool.savePolicy(filename);
|
||||||
// display a dialog box for the user to enter policy info
|
|
||||||
ToolDialog td = new ToolDialog
|
|
||||||
(PolicyTool.rb.getString("Overwrite.File"), tool, tw, true);
|
|
||||||
td.displayOverWriteFileDialog(filename, nextEvent);
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
// save the policy entries to a file
|
|
||||||
tool.savePolicy(filename);
|
|
||||||
|
|
||||||
// display status
|
// display status
|
||||||
MessageFormat form = new MessageFormat(PolicyTool.rb.getString
|
MessageFormat form = new MessageFormat(PolicyTool.rb.getString
|
||||||
("Policy.successfully.written.to.filename"));
|
("Policy.successfully.written.to.filename"));
|
||||||
Object[] source = {filename};
|
Object[] source = {filename};
|
||||||
tw.displayStatusDialog(null, form.format(source));
|
tw.displayStatusDialog(null, form.format(source));
|
||||||
|
|
||||||
// display the new policy filename
|
// display the new policy filename
|
||||||
TextField newFilename = (TextField)tw.getComponent
|
TextField newFilename = (TextField)tw.getComponent
|
||||||
(tw.MW_FILENAME_TEXTFIELD);
|
(tw.MW_FILENAME_TEXTFIELD);
|
||||||
newFilename.setText(filename);
|
newFilename.setText(filename);
|
||||||
tw.setVisible(true);
|
tw.setVisible(true);
|
||||||
|
|
||||||
// now continue with the originally requested command
|
// now continue with the originally requested command
|
||||||
// (QUIT, NEW, or OPEN)
|
// (QUIT, NEW, or OPEN)
|
||||||
userSaveContinue(tool, tw, this, nextEvent);
|
userSaveContinue(tool, tw, this, nextEvent);
|
||||||
|
|
||||||
} catch (FileNotFoundException fnfe) {
|
} catch (FileNotFoundException fnfe) {
|
||||||
if (filename == null || filename.equals("")) {
|
if (filename == null || filename.equals("")) {
|
||||||
tw.displayErrorDialog(null, new FileNotFoundException
|
tw.displayErrorDialog(null, new FileNotFoundException
|
||||||
(PolicyTool.rb.getString("null.filename")));
|
(PolicyTool.rb.getString("null.filename")));
|
||||||
} else {
|
} else {
|
||||||
tw.displayErrorDialog(null, fnfe);
|
tw.displayErrorDialog(null, fnfe);
|
||||||
}
|
|
||||||
} catch (Exception ee) {
|
|
||||||
tw.displayErrorDialog(null, ee);
|
|
||||||
}
|
}
|
||||||
|
} catch (Exception ee) {
|
||||||
|
tw.displayErrorDialog(null, ee);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2494,7 +2443,7 @@ class ToolDialog extends Dialog {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// get the entered filename
|
// get the entered filename
|
||||||
String policyFile = new String(fd.getDirectory() + fd.getFile());
|
String policyFile = new File(fd.getDirectory(), fd.getFile()).getPath();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// open the policy file
|
// open the policy file
|
||||||
@ -2861,67 +2810,6 @@ class MainWindowListener implements ActionListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Event handler for OverWriteFileOKButton button
|
|
||||||
*/
|
|
||||||
class OverWriteFileOKButtonListener implements ActionListener {
|
|
||||||
|
|
||||||
private PolicyTool tool;
|
|
||||||
private ToolWindow tw;
|
|
||||||
private ToolDialog td;
|
|
||||||
private String filename;
|
|
||||||
private int nextEvent;
|
|
||||||
|
|
||||||
OverWriteFileOKButtonListener(PolicyTool tool, ToolWindow tw,
|
|
||||||
ToolDialog td, String filename, int nextEvent) {
|
|
||||||
this.tool = tool;
|
|
||||||
this.tw = tw;
|
|
||||||
this.td = td;
|
|
||||||
this.filename = filename;
|
|
||||||
this.nextEvent = nextEvent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
|
||||||
try {
|
|
||||||
// save the policy entries to a file
|
|
||||||
tool.savePolicy(filename);
|
|
||||||
|
|
||||||
// display status
|
|
||||||
MessageFormat form = new MessageFormat
|
|
||||||
(PolicyTool.rb.getString
|
|
||||||
("Policy.successfully.written.to.filename"));
|
|
||||||
Object[] source = {filename};
|
|
||||||
tw.displayStatusDialog(null, form.format(source));
|
|
||||||
|
|
||||||
// display the new policy filename
|
|
||||||
TextField newFilename = (TextField)tw.getComponent
|
|
||||||
(tw.MW_FILENAME_TEXTFIELD);
|
|
||||||
newFilename.setText(filename);
|
|
||||||
tw.setVisible(true);
|
|
||||||
|
|
||||||
// now continue with the originally requested command
|
|
||||||
// (QUIT, NEW, or OPEN)
|
|
||||||
td.setVisible(false);
|
|
||||||
td.dispose();
|
|
||||||
td.userSaveContinue(tool, tw, td, nextEvent);
|
|
||||||
|
|
||||||
} catch (FileNotFoundException fnfe) {
|
|
||||||
if (filename == null || filename.equals("")) {
|
|
||||||
tw.displayErrorDialog(null, new FileNotFoundException
|
|
||||||
(PolicyTool.rb.getString("null.filename")));
|
|
||||||
} else {
|
|
||||||
tw.displayErrorDialog(null, fnfe);
|
|
||||||
}
|
|
||||||
td.setVisible(false);
|
|
||||||
td.dispose();
|
|
||||||
} catch (Exception ee) {
|
|
||||||
tw.displayErrorDialog(null, ee);
|
|
||||||
td.setVisible(false);
|
|
||||||
td.dispose();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event handler for AddEntryDoneButton button
|
* Event handler for AddEntryDoneButton button
|
||||||
*
|
*
|
||||||
|
@ -44,6 +44,16 @@ public class ManifestEntryVerifier {
|
|||||||
|
|
||||||
private static final Debug debug = Debug.getInstance("jar");
|
private static final Debug debug = Debug.getInstance("jar");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holder class to lazily load Sun provider. NOTE: if
|
||||||
|
* Providers.getSunProvider returned a cached provider, we could avoid the
|
||||||
|
* need for caching the provider with this holder class; we should try to
|
||||||
|
* revisit this in JDK 8.
|
||||||
|
*/
|
||||||
|
private static class SunProviderHolder {
|
||||||
|
private static final Provider instance = Providers.getSunProvider();
|
||||||
|
}
|
||||||
|
|
||||||
/** the created digest objects */
|
/** the created digest objects */
|
||||||
HashMap<String, MessageDigest> createdDigests;
|
HashMap<String, MessageDigest> createdDigests;
|
||||||
|
|
||||||
@ -125,7 +135,7 @@ public class ManifestEntryVerifier {
|
|||||||
try {
|
try {
|
||||||
|
|
||||||
digest = MessageDigest.getInstance
|
digest = MessageDigest.getInstance
|
||||||
(algorithm, Providers.getSunProvider());
|
(algorithm, SunProviderHolder.instance);
|
||||||
createdDigests.put(algorithm, digest);
|
createdDigests.put(algorithm, digest);
|
||||||
} catch (NoSuchAlgorithmException nsae) {
|
} catch (NoSuchAlgorithmException nsae) {
|
||||||
// ignore
|
// ignore
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -1472,19 +1472,9 @@ public final class NormalizerImpl {
|
|||||||
}
|
}
|
||||||
--remove;
|
--remove;
|
||||||
}
|
}
|
||||||
} else if(value2!=0) {
|
} else if(value2!=0) { // for U+1109A, U+1109C, and U+110AB
|
||||||
/* the composition is longer than the starter,
|
|
||||||
* move the intermediate characters back one */
|
|
||||||
starterIsSupplementary=true;
|
starterIsSupplementary=true;
|
||||||
/* temporarily increment for the loop boundary */
|
args.source[starter+1]=(char)value2;
|
||||||
++starter;
|
|
||||||
q=remove;
|
|
||||||
r=++remove;
|
|
||||||
while(starter<q) {
|
|
||||||
args.source[--r]=args.source[--q];
|
|
||||||
}
|
|
||||||
args.source[starter]=(char)value2;
|
|
||||||
--starter; /* undo the temporary increment */
|
|
||||||
/* } else { both are on the BMP, nothing more to do */
|
/* } else { both are on the BMP, nothing more to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
<title>Nervous Text 1.1</title>
|
<title>Nervous Text 1.1</title>
|
||||||
<hr>
|
<hr>
|
||||||
<applet code="NervousText.class" width=534 height=50>
|
<applet code="NervousText.class" width=534 height=50>
|
||||||
<param name=text value="Java^T^M 2 SDK, Standard Edition 6.0">
|
<param name=text value="Java SE Development Kit (JDK) 7.0">
|
||||||
</applet>
|
</applet>
|
||||||
<hr>
|
<hr>
|
||||||
<a href="NervousText.java">The source.</a>
|
<a href="NervousText.java">The source.</a>
|
||||||
|
@ -75,7 +75,8 @@ public class J2DBench {
|
|||||||
|
|
||||||
static JFrame guiFrame;
|
static JFrame guiFrame;
|
||||||
|
|
||||||
static final SimpleDateFormat sdf = new SimpleDateFormat("MM.dd.yyyy 'at' HH:mm aaa z");
|
static final SimpleDateFormat sdf =
|
||||||
|
new SimpleDateFormat("MM.dd.yyyy 'at' HH:mm aaa z");
|
||||||
|
|
||||||
public static void init() {
|
public static void init() {
|
||||||
progoptroot = new Group("prog", "Program Options");
|
progoptroot = new Group("prog", "Program Options");
|
||||||
@ -176,6 +177,8 @@ public class J2DBench {
|
|||||||
public static void main(String argv[]) {
|
public static void main(String argv[]) {
|
||||||
init();
|
init();
|
||||||
TestEnvironment.init();
|
TestEnvironment.init();
|
||||||
|
Result.init();
|
||||||
|
|
||||||
Destinations.init();
|
Destinations.init();
|
||||||
GraphicsTests.init();
|
GraphicsTests.init();
|
||||||
RenderTests.init();
|
RenderTests.init();
|
||||||
@ -323,7 +326,7 @@ public class J2DBench {
|
|||||||
} else if (type.equalsIgnoreCase("m")) {
|
} else if (type.equalsIgnoreCase("m")) {
|
||||||
multiplyWith = 60;
|
multiplyWith = 60;
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Invalid \"-loop\" option specified.");
|
System.err.println("Invalid \"-loop\" option specified.");
|
||||||
usage(1);
|
usage(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,32 +334,20 @@ public class J2DBench {
|
|||||||
try {
|
try {
|
||||||
val = Integer.parseInt(argv[i].substring(0, argv[i].length() - 1));
|
val = Integer.parseInt(argv[i].substring(0, argv[i].length() - 1));
|
||||||
} catch(Exception e) {
|
} catch(Exception e) {
|
||||||
System.out.println("Invalid \"-loop\" option specified.");
|
System.err.println("Invalid \"-loop\" option specified.");
|
||||||
usage(1);
|
usage(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
requiredLoopTime = val * multiplyWith * 1000;
|
requiredLoopTime = val * multiplyWith * 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (arg.length() > 7 &&
|
} else if (arg.length() > 8 &&
|
||||||
arg.substring(0, 7).equalsIgnoreCase("-report"))
|
arg.substring(0, 8).equalsIgnoreCase("-report:"))
|
||||||
{
|
{
|
||||||
for (int j = 7; j < arg.length(); j++) {
|
String error = Result.parseRateOpt(arg.substring(8));
|
||||||
char c = arg.charAt(j);
|
if (error != null) {
|
||||||
switch (c) {
|
System.err.println("Invalid rate: "+error);
|
||||||
case 'N': Result.unitScale = Result.UNITS_WHOLE; break;
|
usage(1);
|
||||||
case 'M': Result.unitScale = Result.UNITS_MILLIONS; break;
|
|
||||||
case 'K': Result.unitScale = Result.UNITS_THOUSANDS; break;
|
|
||||||
case 'A': Result.unitScale = Result.UNITS_AUTO; break;
|
|
||||||
case 'U': Result.useUnits = true; break;
|
|
||||||
case 'O': Result.useUnits = false; break;
|
|
||||||
case 's': Result.timeScale = Result.SECONDS_WHOLE; break;
|
|
||||||
case 'm': Result.timeScale = Result.SECONDS_MILLIS; break;
|
|
||||||
case 'u': Result.timeScale = Result.SECONDS_MICROS; break;
|
|
||||||
case 'n': Result.timeScale = Result.SECONDS_NANOS; break;
|
|
||||||
case 'a': Result.timeScale = Result.SECONDS_AUTO; break;
|
|
||||||
case '/': Result.invertRate = !Result.invertRate; break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String reason = Group.root.setOption(arg);
|
String reason = Group.root.setOption(arg);
|
||||||
@ -411,7 +402,7 @@ public class J2DBench {
|
|||||||
writer.flush();
|
writer.flush();
|
||||||
} catch(IOException ioe) {
|
} catch(IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
System.out.println("\nERROR : Could not create Loop-Report. Exit");
|
System.err.println("\nERROR : Could not create Loop-Report. Exit");
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -466,7 +457,7 @@ public class J2DBench {
|
|||||||
|
|
||||||
} while(J2DBench.looping);
|
} while(J2DBench.looping);
|
||||||
|
|
||||||
if(J2DBench.looping) {
|
if (J2DBench.looping) {
|
||||||
writer.println("</html>");
|
writer.println("</html>");
|
||||||
writer.flush();
|
writer.flush();
|
||||||
writer.close();
|
writer.close();
|
||||||
|
@ -170,7 +170,7 @@ public abstract class Option extends Node implements Modifier {
|
|||||||
updateGUI();
|
updateGUI();
|
||||||
jcb.addItemListener(new ItemListener() {
|
jcb.addItemListener(new ItemListener() {
|
||||||
public void itemStateChanged(ItemEvent e) {
|
public void itemStateChanged(ItemEvent e) {
|
||||||
if (e.getStateChange() == e.SELECTED) {
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||||
JComboBox jcb = (JComboBox) e.getItemSelectable();
|
JComboBox jcb = (JComboBox) e.getItemSelectable();
|
||||||
value = jcb.getSelectedIndex();
|
value = jcb.getSelectedIndex();
|
||||||
if (J2DBench.verbose.isEnabled()) {
|
if (J2DBench.verbose.isEnabled()) {
|
||||||
@ -261,7 +261,7 @@ public abstract class Option extends Node implements Modifier {
|
|||||||
updateGUI();
|
updateGUI();
|
||||||
jcb.addItemListener(new ItemListener() {
|
jcb.addItemListener(new ItemListener() {
|
||||||
public void itemStateChanged(ItemEvent e) {
|
public void itemStateChanged(ItemEvent e) {
|
||||||
value = (e.getStateChange() == e.SELECTED);
|
value = (e.getStateChange() == ItemEvent.SELECTED);
|
||||||
if (J2DBench.verbose.isEnabled()) {
|
if (J2DBench.verbose.isEnabled()) {
|
||||||
System.out.println(getOptionString());
|
System.out.println(getOptionString());
|
||||||
}
|
}
|
||||||
@ -569,8 +569,6 @@ public abstract class Option extends Node implements Modifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String setValueFromString(String value) {
|
public String setValueFromString(String value) {
|
||||||
int prev = 0;
|
|
||||||
int next = 0;
|
|
||||||
int enabled = 0;
|
int enabled = 0;
|
||||||
StringTokenizer st = new StringTokenizer(value, ",");
|
StringTokenizer st = new StringTokenizer(value, ",");
|
||||||
while (st.hasMoreTokens()) {
|
while (st.hasMoreTokens()) {
|
||||||
@ -588,7 +586,6 @@ public abstract class Option extends Node implements Modifier {
|
|||||||
if (s != null) {
|
if (s != null) {
|
||||||
return "Bad value in list ("+s+")";
|
return "Bad value in list ("+s+")";
|
||||||
}
|
}
|
||||||
prev = next+1;
|
|
||||||
}
|
}
|
||||||
this.enabled = enabled;
|
this.enabled = enabled;
|
||||||
updateGUI();
|
updateGUI();
|
||||||
@ -623,6 +620,175 @@ public abstract class Option extends Node implements Modifier {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class ObjectChoice extends Option {
|
||||||
|
int size;
|
||||||
|
String optionnames[];
|
||||||
|
Object optionvalues[];
|
||||||
|
String abbrevnames[];
|
||||||
|
String descnames[];
|
||||||
|
int defaultselected;
|
||||||
|
int selected;
|
||||||
|
JPanel jp;
|
||||||
|
JComboBox jcombo;
|
||||||
|
|
||||||
|
public ObjectChoice(Group parent, String nodeName, String description,
|
||||||
|
String optionnames[],
|
||||||
|
Object optionvalues[],
|
||||||
|
String abbrevnames[],
|
||||||
|
String descnames[],
|
||||||
|
int defaultselected)
|
||||||
|
{
|
||||||
|
this(parent, nodeName, description,
|
||||||
|
Math.min(Math.min(optionnames.length,
|
||||||
|
optionvalues.length),
|
||||||
|
Math.min(abbrevnames.length,
|
||||||
|
descnames.length)),
|
||||||
|
optionnames, optionvalues,
|
||||||
|
abbrevnames, descnames, defaultselected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObjectChoice(Group parent, String nodeName, String description,
|
||||||
|
int size,
|
||||||
|
String optionnames[],
|
||||||
|
Object optionvalues[],
|
||||||
|
String abbrevnames[],
|
||||||
|
String descnames[],
|
||||||
|
int defaultselected)
|
||||||
|
{
|
||||||
|
super(parent, nodeName, description);
|
||||||
|
this.size = size;
|
||||||
|
this.optionnames = trim(optionnames, size);
|
||||||
|
this.optionvalues = trim(optionvalues, size);
|
||||||
|
this.abbrevnames = trim(abbrevnames, size);
|
||||||
|
this.descnames = trim(descnames, size);
|
||||||
|
this.selected = this.defaultselected = defaultselected;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String[] trim(String list[], int size) {
|
||||||
|
if (list.length == size) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
String newlist[] = new String[size];
|
||||||
|
System.arraycopy(list, 0, newlist, 0, size);
|
||||||
|
return newlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Object[] trim(Object list[], int size) {
|
||||||
|
if (list.length == size) {
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
Object newlist[] = new Object[size];
|
||||||
|
System.arraycopy(list, 0, newlist, 0, size);
|
||||||
|
return newlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void restoreDefault() {
|
||||||
|
if (selected != defaultselected) {
|
||||||
|
selected = defaultselected;
|
||||||
|
updateGUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateGUI() {
|
||||||
|
if (jcombo != null) {
|
||||||
|
jcombo.setSelectedIndex(this.selected);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDefault() {
|
||||||
|
return (selected == defaultselected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Modifier.Iterator getIterator(TestEnvironment env) {
|
||||||
|
return new SwitchIterator(optionvalues, 1 << selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JComponent getJComponent() {
|
||||||
|
if (jp == null) {
|
||||||
|
jp = new JPanel();
|
||||||
|
jp.setLayout(new BorderLayout());
|
||||||
|
jp.add(new JLabel(getDescription()), BorderLayout.WEST);
|
||||||
|
jcombo = new JComboBox(descnames);
|
||||||
|
updateGUI();
|
||||||
|
jcombo.addItemListener(new ItemListener() {
|
||||||
|
public void itemStateChanged(ItemEvent e) {
|
||||||
|
if (e.getStateChange() == ItemEvent.SELECTED) {
|
||||||
|
selected = jcombo.getSelectedIndex();
|
||||||
|
if (J2DBench.verbose.isEnabled()) {
|
||||||
|
System.out.println(getOptionString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
jp.add(jcombo, BorderLayout.EAST);
|
||||||
|
}
|
||||||
|
return jp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getValue() {
|
||||||
|
return optionvalues[selected];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getIntValue() {
|
||||||
|
return ((Integer) optionvalues[selected]).intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getBooleanValue() {
|
||||||
|
return ((Boolean) optionvalues[selected]).booleanValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValString() {
|
||||||
|
return optionnames[selected];
|
||||||
|
}
|
||||||
|
|
||||||
|
int findValueIndex(Object value) {
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
if (optionvalues[i] == value) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValString(Object value) {
|
||||||
|
return optionnames[findValueIndex(value)];
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAbbreviatedModifierDescription(Object value) {
|
||||||
|
return abbrevnames[findValueIndex(value)];
|
||||||
|
}
|
||||||
|
|
||||||
|
public String setValue(int v) {
|
||||||
|
return setValue(new Integer(v));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String setValue(boolean v) {
|
||||||
|
return setValue(new Boolean(v));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String setValue(Object value) {
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
if (optionvalues[i].equals(value)) {
|
||||||
|
this.selected = i;
|
||||||
|
updateGUI();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "Bad value";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String setValueFromString(String value) {
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
if (optionnames[i].equals(value)) {
|
||||||
|
this.selected = i;
|
||||||
|
updateGUI();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "Bad value";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static class BooleanIterator implements Modifier.Iterator {
|
public static class BooleanIterator implements Modifier.Iterator {
|
||||||
private Boolean list[];
|
private Boolean list[];
|
||||||
private int index;
|
private int index;
|
||||||
|
@ -35,23 +35,199 @@ import java.util.Vector;
|
|||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class Result {
|
public class Result {
|
||||||
public static final int UNITS_WHOLE = 0;
|
public static final int RATE_UNKNOWN = 0;
|
||||||
public static final int UNITS_THOUSANDS = 1;
|
|
||||||
public static final int UNITS_MILLIONS = 2;
|
|
||||||
public static final int UNITS_AUTO = 3;
|
|
||||||
|
|
||||||
public static final int SECONDS_WHOLE = 0;
|
public static final int WORK_OPS = 1;
|
||||||
public static final int SECONDS_MILLIS = 1;
|
public static final int WORK_UNITS = 2;
|
||||||
public static final int SECONDS_MICROS = 2;
|
public static final int WORK_THOUSANDS = 4;
|
||||||
public static final int SECONDS_NANOS = 3;
|
public static final int WORK_MILLIONS = 6;
|
||||||
public static final int SECONDS_AUTO = 4;
|
public static final int WORK_AUTO = 8;
|
||||||
|
|
||||||
public static int unitScale = UNITS_WHOLE;
|
public static final int TIME_SECONDS = 10;
|
||||||
public static int timeScale = SECONDS_WHOLE;
|
public static final int TIME_MILLIS = 11;
|
||||||
public static boolean useUnits = true;
|
public static final int TIME_MICROS = 12;
|
||||||
public static boolean invertRate = false;
|
public static final int TIME_NANOS = 13;
|
||||||
|
public static final int TIME_AUTO = 14;
|
||||||
|
|
||||||
|
static Group resultoptroot;
|
||||||
|
static Option.ObjectChoice timeOpt;
|
||||||
|
static Option.ObjectChoice workOpt;
|
||||||
|
static Option.ObjectChoice rateOpt;
|
||||||
|
|
||||||
|
public static void init() {
|
||||||
|
resultoptroot = new Group(TestEnvironment.globaloptroot,
|
||||||
|
"results", "Result Options");
|
||||||
|
|
||||||
|
String workStrings[] = {
|
||||||
|
"units",
|
||||||
|
"kilounits",
|
||||||
|
"megaunits",
|
||||||
|
"autounits",
|
||||||
|
"ops",
|
||||||
|
"kiloops",
|
||||||
|
"megaops",
|
||||||
|
"autoops",
|
||||||
|
};
|
||||||
|
String workDescriptions[] = {
|
||||||
|
"Test Units",
|
||||||
|
"Thousands of Test Units",
|
||||||
|
"Millions of Test Units",
|
||||||
|
"Auto-scaled Test Units",
|
||||||
|
"Operations",
|
||||||
|
"Thousands of Operations",
|
||||||
|
"Millions of Operations",
|
||||||
|
"Auto-scaled Operations",
|
||||||
|
};
|
||||||
|
Integer workObjects[] = {
|
||||||
|
new Integer(WORK_UNITS),
|
||||||
|
new Integer(WORK_THOUSANDS),
|
||||||
|
new Integer(WORK_MILLIONS),
|
||||||
|
new Integer(WORK_AUTO),
|
||||||
|
new Integer(WORK_OPS | WORK_UNITS),
|
||||||
|
new Integer(WORK_OPS | WORK_THOUSANDS),
|
||||||
|
new Integer(WORK_OPS | WORK_MILLIONS),
|
||||||
|
new Integer(WORK_OPS | WORK_AUTO),
|
||||||
|
};
|
||||||
|
workOpt = new Option.ObjectChoice(resultoptroot,
|
||||||
|
"workunits", "Work Units",
|
||||||
|
workStrings, workObjects,
|
||||||
|
workStrings, workDescriptions,
|
||||||
|
0);
|
||||||
|
String timeStrings[] = {
|
||||||
|
"sec",
|
||||||
|
"msec",
|
||||||
|
"usec",
|
||||||
|
"nsec",
|
||||||
|
"autosec",
|
||||||
|
};
|
||||||
|
String timeDescriptions[] = {
|
||||||
|
"Seconds",
|
||||||
|
"Milliseconds",
|
||||||
|
"Microseconds",
|
||||||
|
"Nanoseconds",
|
||||||
|
"Auto-scaled seconds",
|
||||||
|
};
|
||||||
|
Integer timeObjects[] = {
|
||||||
|
new Integer(TIME_SECONDS),
|
||||||
|
new Integer(TIME_MILLIS),
|
||||||
|
new Integer(TIME_MICROS),
|
||||||
|
new Integer(TIME_NANOS),
|
||||||
|
new Integer(TIME_AUTO),
|
||||||
|
};
|
||||||
|
timeOpt = new Option.ObjectChoice(resultoptroot,
|
||||||
|
"timeunits", "Time Units",
|
||||||
|
timeStrings, timeObjects,
|
||||||
|
timeStrings, timeDescriptions,
|
||||||
|
0);
|
||||||
|
String rateStrings[] = {
|
||||||
|
"unitspersec",
|
||||||
|
"secsperunit",
|
||||||
|
};
|
||||||
|
String rateDescriptions[] = {
|
||||||
|
"Work units per Time",
|
||||||
|
"Time units per Work",
|
||||||
|
};
|
||||||
|
Boolean rateObjects[] = {
|
||||||
|
Boolean.FALSE,
|
||||||
|
Boolean.TRUE,
|
||||||
|
};
|
||||||
|
rateOpt = new Option.ObjectChoice(resultoptroot,
|
||||||
|
"ratio", "Rate Ratio",
|
||||||
|
rateStrings, rateObjects,
|
||||||
|
rateStrings, rateDescriptions,
|
||||||
|
0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isTimeUnit(int unit) {
|
||||||
|
return (unit >= TIME_SECONDS && unit <= TIME_AUTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isWorkUnit(int unit) {
|
||||||
|
return (unit >= WORK_OPS && unit <= (WORK_AUTO | WORK_OPS));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String parseRateOpt(String opt) {
|
||||||
|
int timeScale = timeOpt.getIntValue();
|
||||||
|
int workScale = workOpt.getIntValue();
|
||||||
|
boolean invertRate = rateOpt.getBooleanValue();
|
||||||
|
int divindex = opt.indexOf('/');
|
||||||
|
if (divindex < 0) {
|
||||||
|
int unit = parseUnit(opt);
|
||||||
|
if (isTimeUnit(unit)) {
|
||||||
|
timeScale = unit;
|
||||||
|
} else if (isWorkUnit(unit)) {
|
||||||
|
workScale = unit;
|
||||||
|
} else {
|
||||||
|
return "Bad unit: "+opt;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int unit1 = parseUnit(opt.substring(0,divindex));
|
||||||
|
int unit2 = parseUnit(opt.substring(divindex+1));
|
||||||
|
if (isTimeUnit(unit1)) {
|
||||||
|
if (isWorkUnit(unit2)) {
|
||||||
|
timeScale = unit1;
|
||||||
|
workScale = unit2;
|
||||||
|
invertRate = true;
|
||||||
|
} else if (isTimeUnit(unit2)) {
|
||||||
|
return "Both time units: "+opt;
|
||||||
|
} else {
|
||||||
|
return "Bad denominator: "+opt;
|
||||||
|
}
|
||||||
|
} else if (isWorkUnit(unit1)) {
|
||||||
|
if (isWorkUnit(unit2)) {
|
||||||
|
return "Both work units: "+opt;
|
||||||
|
} else if (isTimeUnit(unit2)) {
|
||||||
|
timeScale = unit2;
|
||||||
|
workScale = unit1;
|
||||||
|
invertRate = false;
|
||||||
|
} else {
|
||||||
|
return "Bad denominator: "+opt;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return "Bad numerator: "+opt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
timeOpt.setValue(timeScale);
|
||||||
|
workOpt.setValue(workScale);
|
||||||
|
rateOpt.setValue(invertRate);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static HashMap unitMap;
|
||||||
|
|
||||||
|
static {
|
||||||
|
unitMap = new HashMap();
|
||||||
|
unitMap.put("U", new Integer(WORK_UNITS));
|
||||||
|
unitMap.put("M", new Integer(WORK_MILLIONS));
|
||||||
|
unitMap.put("K", new Integer(WORK_THOUSANDS));
|
||||||
|
unitMap.put("A", new Integer(WORK_AUTO));
|
||||||
|
unitMap.put("MU", new Integer(WORK_MILLIONS));
|
||||||
|
unitMap.put("KU", new Integer(WORK_THOUSANDS));
|
||||||
|
unitMap.put("AU", new Integer(WORK_AUTO));
|
||||||
|
|
||||||
|
unitMap.put("O", new Integer(WORK_UNITS | WORK_OPS));
|
||||||
|
unitMap.put("NO", new Integer(WORK_UNITS | WORK_OPS));
|
||||||
|
unitMap.put("MO", new Integer(WORK_MILLIONS | WORK_OPS));
|
||||||
|
unitMap.put("KO", new Integer(WORK_THOUSANDS | WORK_OPS));
|
||||||
|
unitMap.put("AO", new Integer(WORK_AUTO | WORK_OPS));
|
||||||
|
|
||||||
|
unitMap.put("s", new Integer(TIME_SECONDS));
|
||||||
|
unitMap.put("m", new Integer(TIME_MILLIS));
|
||||||
|
unitMap.put("u", new Integer(TIME_MICROS));
|
||||||
|
unitMap.put("n", new Integer(TIME_NANOS));
|
||||||
|
unitMap.put("a", new Integer(TIME_AUTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int parseUnit(String c) {
|
||||||
|
Integer u = (Integer) unitMap.get(c);
|
||||||
|
if (u != null) {
|
||||||
|
return u.intValue();
|
||||||
|
}
|
||||||
|
return RATE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
String unitname = "unit";
|
String unitname = "unit";
|
||||||
Test test;
|
Test test;
|
||||||
@ -157,69 +333,76 @@ public class Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getAverageString() {
|
public String getAverageString() {
|
||||||
double units = (useUnits ? getTotalUnits() : getTotalReps());
|
int timeScale = timeOpt.getIntValue();
|
||||||
|
int workScale = workOpt.getIntValue();
|
||||||
|
boolean invertRate = rateOpt.getBooleanValue();
|
||||||
double time = getTotalTime();
|
double time = getTotalTime();
|
||||||
|
String timeprefix = "";
|
||||||
|
switch (timeScale) {
|
||||||
|
case TIME_AUTO:
|
||||||
|
case TIME_SECONDS:
|
||||||
|
time /= 1000;
|
||||||
|
break;
|
||||||
|
case TIME_MILLIS:
|
||||||
|
timeprefix = "m";
|
||||||
|
break;
|
||||||
|
case TIME_MICROS:
|
||||||
|
time *= 1000.0;
|
||||||
|
timeprefix = "u";
|
||||||
|
break;
|
||||||
|
case TIME_NANOS:
|
||||||
|
time *= 1000000.0;
|
||||||
|
timeprefix = "n";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
String workprefix = "";
|
||||||
|
boolean isOps = (workScale & WORK_OPS) != 0;
|
||||||
|
String workname = isOps ? "op" : unitname;
|
||||||
|
double work = isOps ? getTotalReps() : getTotalUnits();
|
||||||
|
switch (workScale & (~WORK_OPS)) {
|
||||||
|
case WORK_AUTO:
|
||||||
|
case WORK_UNITS:
|
||||||
|
break;
|
||||||
|
case WORK_THOUSANDS:
|
||||||
|
work /= 1000.0;
|
||||||
|
workprefix = "K";
|
||||||
|
break;
|
||||||
|
case WORK_MILLIONS:
|
||||||
|
work /= 1000000.0;
|
||||||
|
workprefix = "M";
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (invertRate) {
|
if (invertRate) {
|
||||||
double rate = time / units;
|
double rate = time / work;
|
||||||
String prefix = "";
|
if (timeScale == TIME_AUTO) {
|
||||||
switch (timeScale) {
|
|
||||||
case SECONDS_WHOLE:
|
|
||||||
rate /= 1000;
|
|
||||||
break;
|
|
||||||
case SECONDS_MILLIS:
|
|
||||||
prefix = "m";
|
|
||||||
break;
|
|
||||||
case SECONDS_MICROS:
|
|
||||||
rate *= 1000.0;
|
|
||||||
prefix = "u";
|
|
||||||
break;
|
|
||||||
case SECONDS_NANOS:
|
|
||||||
rate *= 1000000.0;
|
|
||||||
prefix = "n";
|
|
||||||
break;
|
|
||||||
case SECONDS_AUTO:
|
|
||||||
rate /= 1000.0;
|
|
||||||
if (rate < 1.0) {
|
if (rate < 1.0) {
|
||||||
rate *= 1000.0;
|
rate *= 1000.0;
|
||||||
prefix = "m";
|
timeprefix = "m";
|
||||||
if (rate < 1.0) {
|
if (rate < 1.0) {
|
||||||
rate *= 1000.0;
|
rate *= 1000.0;
|
||||||
prefix = "u";
|
timeprefix = "u";
|
||||||
if (rate < 1.0) {
|
if (rate < 1.0) {
|
||||||
rate *= 1000.0;
|
rate *= 1000.0;
|
||||||
prefix = "n";
|
timeprefix = "n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return rate+" "+prefix+"secs/"+(useUnits ? unitname : "op");
|
return rate+" "+timeprefix+"secs/"+workprefix+workname;
|
||||||
} else {
|
} else {
|
||||||
double rate = units / (time / 1000.0);
|
double rate = work / time;
|
||||||
String prefix = "";
|
if (workScale == WORK_AUTO) {
|
||||||
switch (unitScale) {
|
|
||||||
case UNITS_WHOLE:
|
|
||||||
break;
|
|
||||||
case UNITS_THOUSANDS:
|
|
||||||
rate /= 1000.0;
|
|
||||||
prefix = "K";
|
|
||||||
break;
|
|
||||||
case UNITS_MILLIONS:
|
|
||||||
rate /= 1000000.0;
|
|
||||||
prefix = "M";
|
|
||||||
break;
|
|
||||||
case UNITS_AUTO:
|
|
||||||
if (rate > 1000.0) {
|
if (rate > 1000.0) {
|
||||||
rate /= 1000.0;
|
rate /= 1000.0;
|
||||||
prefix = "K";
|
workprefix = "K";
|
||||||
if (rate > 1000.0) {
|
if (rate > 1000.0) {
|
||||||
rate /= 1000.0;
|
rate /= 1000.0;
|
||||||
prefix = "M";
|
workprefix = "M";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return rate+" "+prefix+(useUnits ? unitname : "op")+"s/sec";
|
return rate+" "+workprefix+workname+"s/"+timeprefix+"sec";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,6 +61,8 @@ public class J2DAnalyzer {
|
|||||||
"the following result sets are combined into a group");
|
"the following result sets are combined into a group");
|
||||||
out.println(" -NoGroup "+
|
out.println(" -NoGroup "+
|
||||||
"the following result sets stand on their own");
|
"the following result sets stand on their own");
|
||||||
|
out.println(" -ShowUncontested "+
|
||||||
|
"show results even when only result set has a result");
|
||||||
out.println(" -Graph "+
|
out.println(" -Graph "+
|
||||||
"graph the results visually (using lines of *'s)");
|
"graph the results visually (using lines of *'s)");
|
||||||
out.println(" -Best "+
|
out.println(" -Best "+
|
||||||
@ -83,6 +85,7 @@ public class J2DAnalyzer {
|
|||||||
public static void main(String argv[]) {
|
public static void main(String argv[]) {
|
||||||
boolean gavehelp = false;
|
boolean gavehelp = false;
|
||||||
boolean graph = false;
|
boolean graph = false;
|
||||||
|
boolean ignoreuncontested = true;
|
||||||
if (argv.length > 0 && argv[0].equalsIgnoreCase("-html")) {
|
if (argv.length > 0 && argv[0].equalsIgnoreCase("-html")) {
|
||||||
String newargs[] = new String[argv.length-1];
|
String newargs[] = new String[argv.length-1];
|
||||||
System.arraycopy(argv, 1, newargs, 0, newargs.length);
|
System.arraycopy(argv, 1, newargs, 0, newargs.length);
|
||||||
@ -97,6 +100,8 @@ public class J2DAnalyzer {
|
|||||||
results.add(groupHolder);
|
results.add(groupHolder);
|
||||||
} else if (arg.equalsIgnoreCase("-NoGroup")) {
|
} else if (arg.equalsIgnoreCase("-NoGroup")) {
|
||||||
groupHolder = null;
|
groupHolder = null;
|
||||||
|
} else if (arg.equalsIgnoreCase("-ShowUncontested")) {
|
||||||
|
ignoreuncontested = false;
|
||||||
} else if (arg.equalsIgnoreCase("-Graph")) {
|
} else if (arg.equalsIgnoreCase("-Graph")) {
|
||||||
graph = true;
|
graph = true;
|
||||||
} else if (arg.equalsIgnoreCase("-Best")) {
|
} else if (arg.equalsIgnoreCase("-Best")) {
|
||||||
@ -171,18 +176,23 @@ public class J2DAnalyzer {
|
|||||||
String key = keys[k];
|
String key = keys[k];
|
||||||
ResultHolder rh = base.getResultByKey(key);
|
ResultHolder rh = base.getResultByKey(key);
|
||||||
double score = rh.getScore();
|
double score = rh.getScore();
|
||||||
System.out.println(rh.getShortKey()+":");
|
|
||||||
double maxscore = score;
|
double maxscore = score;
|
||||||
if (graph) {
|
int numcontesting = 0;
|
||||||
for (int i = 0; i < numsets; i++) {
|
for (int i = 0; i < numsets; i++) {
|
||||||
ResultSetHolder rsh =
|
ResultSetHolder rsh =
|
||||||
(ResultSetHolder) results.elementAt(i);
|
(ResultSetHolder) results.elementAt(i);
|
||||||
ResultHolder rh2 = rsh.getResultByKey(key);
|
ResultHolder rh2 = rsh.getResultByKey(key);
|
||||||
if (rh2 != null) {
|
if (rh2 != null) {
|
||||||
|
if (graph) {
|
||||||
maxscore = Math.max(maxscore, rh2.getBestScore());
|
maxscore = Math.max(maxscore, rh2.getBestScore());
|
||||||
}
|
}
|
||||||
|
numcontesting++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ignoreuncontested && numcontesting < 2) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
System.out.println(rh.getShortKey()+":");
|
||||||
for (int i = 0; i < numsets; i++) {
|
for (int i = 0; i < numsets; i++) {
|
||||||
ResultSetHolder rsh = (ResultSetHolder) results.elementAt(i);
|
ResultSetHolder rsh = (ResultSetHolder) results.elementAt(i);
|
||||||
System.out.print(rsh.getTitle()+": ");
|
System.out.print(rsh.getTitle()+": ");
|
||||||
|
@ -38,6 +38,8 @@ import java.awt.RenderingHints;
|
|||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
|
import java.awt.geom.Point2D;
|
||||||
|
import java.awt.geom.AffineTransform;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
import j2dbench.Destinations;
|
import j2dbench.Destinations;
|
||||||
@ -74,6 +76,7 @@ public abstract class GraphicsTests extends Test {
|
|||||||
static Option animList;
|
static Option animList;
|
||||||
static Option sizeList;
|
static Option sizeList;
|
||||||
static Option compRules;
|
static Option compRules;
|
||||||
|
static Option transforms;
|
||||||
static Option doExtraAlpha;
|
static Option doExtraAlpha;
|
||||||
static Option doXor;
|
static Option doXor;
|
||||||
static Option doClipping;
|
static Option doClipping;
|
||||||
@ -167,6 +170,29 @@ public abstract class GraphicsTests extends Test {
|
|||||||
j, rulenames, rules, rulenames,
|
j, rulenames, rules, rulenames,
|
||||||
ruledescs, (1 << defrule));
|
ruledescs, (1 << defrule));
|
||||||
((Option.ObjectList) compRules).setNumRows(4);
|
((Option.ObjectList) compRules).setNumRows(4);
|
||||||
|
|
||||||
|
Transform xforms[] = {
|
||||||
|
Identity.instance,
|
||||||
|
FTranslate.instance,
|
||||||
|
Scale2x2.instance,
|
||||||
|
Rotate15.instance,
|
||||||
|
ShearX.instance,
|
||||||
|
ShearY.instance,
|
||||||
|
};
|
||||||
|
String xformnames[] = new String[xforms.length];
|
||||||
|
String xformdescs[] = new String[xforms.length];
|
||||||
|
for (int i = 0; i < xforms.length; i++) {
|
||||||
|
xformnames[i] = xforms[i].getShortName();
|
||||||
|
xformdescs[i] = xforms[i].getDescription();
|
||||||
|
}
|
||||||
|
transforms =
|
||||||
|
new Option.ObjectList(groptroot, "transform",
|
||||||
|
"Affine Transform",
|
||||||
|
xforms.length,
|
||||||
|
xformnames, xforms, xformnames,
|
||||||
|
xformdescs, 0x1);
|
||||||
|
((Option.ObjectList) transforms).setNumRows(3);
|
||||||
|
|
||||||
doExtraAlpha =
|
doExtraAlpha =
|
||||||
new Option.Toggle(groptroot, "extraalpha",
|
new Option.Toggle(groptroot, "extraalpha",
|
||||||
"Render with an \"extra alpha\" of 0.125",
|
"Render with an \"extra alpha\" of 0.125",
|
||||||
@ -200,6 +226,7 @@ public abstract class GraphicsTests extends Test {
|
|||||||
int orgX, orgY;
|
int orgX, orgY;
|
||||||
int initX, initY;
|
int initX, initY;
|
||||||
int maxX, maxY;
|
int maxX, maxY;
|
||||||
|
double pixscale;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GraphicsTests(Group parent, String nodeName, String description) {
|
public GraphicsTests(Group parent, String nodeName, String description) {
|
||||||
@ -211,7 +238,7 @@ public abstract class GraphicsTests extends Test {
|
|||||||
public Object initTest(TestEnvironment env, Result result) {
|
public Object initTest(TestEnvironment env, Result result) {
|
||||||
Context ctx = createContext();
|
Context ctx = createContext();
|
||||||
initContext(env, ctx);
|
initContext(env, ctx);
|
||||||
result.setUnits(pixelsTouched(ctx));
|
result.setUnits((int) (ctx.pixscale * pixelsTouched(ctx)));
|
||||||
result.setUnitName("pixel");
|
result.setUnitName("pixel");
|
||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
@ -232,6 +259,9 @@ public abstract class GraphicsTests extends Test {
|
|||||||
ctx.graphics = env.getGraphics();
|
ctx.graphics = env.getGraphics();
|
||||||
int w = env.getWidth();
|
int w = env.getWidth();
|
||||||
int h = env.getHeight();
|
int h = env.getHeight();
|
||||||
|
ctx.size = env.getIntValue(sizeList);
|
||||||
|
ctx.outdim = getOutputSize(ctx.size, ctx.size);
|
||||||
|
ctx.pixscale = 1.0;
|
||||||
if (hasGraphics2D) {
|
if (hasGraphics2D) {
|
||||||
Graphics2D g2d = (Graphics2D) ctx.graphics;
|
Graphics2D g2d = (Graphics2D) ctx.graphics;
|
||||||
AlphaComposite ac = (AlphaComposite) env.getModifier(compRules);
|
AlphaComposite ac = (AlphaComposite) env.getModifier(compRules);
|
||||||
@ -251,11 +281,14 @@ public abstract class GraphicsTests extends Test {
|
|||||||
p.addPoint(0, 0);
|
p.addPoint(0, 0);
|
||||||
g2d.clip(p);
|
g2d.clip(p);
|
||||||
}
|
}
|
||||||
|
Transform tx = (Transform) env.getModifier(transforms);
|
||||||
|
Dimension envdim = new Dimension(w, h);
|
||||||
|
tx.init(g2d, ctx, envdim);
|
||||||
|
w = envdim.width;
|
||||||
|
h = envdim.height;
|
||||||
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
|
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,
|
||||||
env.getModifier(renderHint));
|
env.getModifier(renderHint));
|
||||||
}
|
}
|
||||||
ctx.size = env.getIntValue(sizeList);
|
|
||||||
ctx.outdim = getOutputSize(ctx.size, ctx.size);
|
|
||||||
switch (env.getIntValue(animList)) {
|
switch (env.getIntValue(animList)) {
|
||||||
case 0:
|
case 0:
|
||||||
ctx.animate = false;
|
ctx.animate = false;
|
||||||
@ -290,4 +323,201 @@ public abstract class GraphicsTests extends Test {
|
|||||||
graphics.dispose();
|
graphics.dispose();
|
||||||
((Context) ctx).graphics = null;
|
((Context) ctx).graphics = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract static class Transform {
|
||||||
|
public abstract String getShortName();
|
||||||
|
public abstract String getDescription();
|
||||||
|
public abstract void init(Graphics2D g2d, Context ctx, Dimension dim);
|
||||||
|
|
||||||
|
public static double scaleForPoint(AffineTransform at,
|
||||||
|
double xorig, double yorig,
|
||||||
|
double x, double y,
|
||||||
|
int w, int h)
|
||||||
|
{
|
||||||
|
Point2D.Double ptd = new Point2D.Double(x, y);
|
||||||
|
at.transform(ptd, ptd);
|
||||||
|
x = ptd.getX();
|
||||||
|
y = ptd.getY();
|
||||||
|
double scale = 1.0;
|
||||||
|
if (x < 0) {
|
||||||
|
scale = Math.min(scale, xorig / (xorig - x));
|
||||||
|
} else if (x > w) {
|
||||||
|
scale = Math.min(scale, (w - xorig) / (x - xorig));
|
||||||
|
}
|
||||||
|
if (y < 0) {
|
||||||
|
scale = Math.min(scale, yorig / (yorig - y));
|
||||||
|
} else if (y > h) {
|
||||||
|
scale = Math.min(scale, (h - yorig) / (y - yorig));
|
||||||
|
}
|
||||||
|
return scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dimension scaleForTransform(AffineTransform at,
|
||||||
|
Dimension dim)
|
||||||
|
{
|
||||||
|
int w = dim.width;
|
||||||
|
int h = dim.height;
|
||||||
|
Point2D.Double ptd = new Point2D.Double(0, 0);
|
||||||
|
at.transform(ptd, ptd);
|
||||||
|
double ox = ptd.getX();
|
||||||
|
double oy = ptd.getY();
|
||||||
|
if (ox < 0 || ox > w || oy < 0 || oy > h) {
|
||||||
|
throw new InternalError("origin outside destination");
|
||||||
|
}
|
||||||
|
double scalex = scaleForPoint(at, ox, oy, w, h, w, h);
|
||||||
|
double scaley = scalex;
|
||||||
|
scalex = Math.min(scaleForPoint(at, ox, oy, w, 0, w, h), scalex);
|
||||||
|
scaley = Math.min(scaleForPoint(at, ox, oy, 0, h, w, h), scaley);
|
||||||
|
if (scalex < 0 || scaley < 0) {
|
||||||
|
throw new InternalError("could not fit dims to transform");
|
||||||
|
}
|
||||||
|
return new Dimension((int) Math.floor(w * scalex),
|
||||||
|
(int) Math.floor(h * scaley));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Identity extends Transform {
|
||||||
|
public static final Identity instance = new Identity();
|
||||||
|
|
||||||
|
private Identity() {}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return "ident";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Identity";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Graphics2D g2d, Context ctx, Dimension dim) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class FTranslate extends Transform {
|
||||||
|
public static final FTranslate instance = new FTranslate();
|
||||||
|
|
||||||
|
private FTranslate() {}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return "ftrans";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "FTranslate 1.5";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Graphics2D g2d, Context ctx, Dimension dim) {
|
||||||
|
int w = dim.width;
|
||||||
|
int h = dim.height;
|
||||||
|
AffineTransform at = new AffineTransform();
|
||||||
|
at.translate(1.5, 1.5);
|
||||||
|
g2d.transform(at);
|
||||||
|
dim.setSize(w-3, h-3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Scale2x2 extends Transform {
|
||||||
|
public static final Scale2x2 instance = new Scale2x2();
|
||||||
|
|
||||||
|
private Scale2x2() {}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return "scale2x2";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Scale 2x by 2x";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Graphics2D g2d, Context ctx, Dimension dim) {
|
||||||
|
int w = dim.width;
|
||||||
|
int h = dim.height;
|
||||||
|
AffineTransform at = new AffineTransform();
|
||||||
|
at.scale(2.0, 2.0);
|
||||||
|
g2d.transform(at);
|
||||||
|
dim.setSize(w/2, h/2);
|
||||||
|
ctx.pixscale = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Rotate15 extends Transform {
|
||||||
|
public static final Rotate15 instance = new Rotate15();
|
||||||
|
|
||||||
|
private Rotate15() {}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return "rot15";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Rotate 15 degrees";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Graphics2D g2d, Context ctx, Dimension dim) {
|
||||||
|
int w = dim.width;
|
||||||
|
int h = dim.height;
|
||||||
|
double theta = Math.toRadians(15);
|
||||||
|
double cos = Math.cos(theta);
|
||||||
|
double sin = Math.sin(theta);
|
||||||
|
double xsize = sin * h + cos * w;
|
||||||
|
double ysize = sin * w + cos * h;
|
||||||
|
double scale = Math.min(w / xsize, h / ysize);
|
||||||
|
xsize *= scale;
|
||||||
|
ysize *= scale;
|
||||||
|
AffineTransform at = new AffineTransform();
|
||||||
|
at.translate((w - xsize) / 2.0, (h - ysize) / 2.0);
|
||||||
|
at.translate(sin * h * scale, 0.0);
|
||||||
|
at.rotate(theta);
|
||||||
|
g2d.transform(at);
|
||||||
|
dim.setSize(scaleForTransform(at, dim));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ShearX extends Transform {
|
||||||
|
public static final ShearX instance = new ShearX();
|
||||||
|
|
||||||
|
private ShearX() {}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return "shearx";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Shear X to the right";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Graphics2D g2d, Context ctx, Dimension dim) {
|
||||||
|
int w = dim.width;
|
||||||
|
int h = dim.height;
|
||||||
|
AffineTransform at = new AffineTransform();
|
||||||
|
at.translate(0.0, (h - (w*h)/(w + h*0.1)) / 2);
|
||||||
|
at.shear(0.1, 0.0);
|
||||||
|
g2d.transform(at);
|
||||||
|
dim.setSize(scaleForTransform(at, dim));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ShearY extends Transform {
|
||||||
|
public static final ShearY instance = new ShearY();
|
||||||
|
|
||||||
|
private ShearY() {}
|
||||||
|
|
||||||
|
public String getShortName() {
|
||||||
|
return "sheary";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Shear Y down";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(Graphics2D g2d, Context ctx, Dimension dim) {
|
||||||
|
int w = dim.width;
|
||||||
|
int h = dim.height;
|
||||||
|
AffineTransform at = new AffineTransform();
|
||||||
|
at.translate((w - (w*h)/(h + w*0.1)) / 2, 0.0);
|
||||||
|
at.shear(0.0, 0.1);
|
||||||
|
g2d.transform(at);
|
||||||
|
dim.setSize(scaleForTransform(at, dim));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ public abstract class TextTests extends Test {
|
|||||||
taaNames, taaHints,
|
taaNames, taaHints,
|
||||||
taaNames, taaNames,
|
taaNames, taaNames,
|
||||||
0x1);
|
0x1);
|
||||||
((Option.ObjectList) taaList).setNumRows(2);
|
((Option.ObjectList) taaList).setNumRows(6);
|
||||||
// add special TextAAOpt for backwards compatibility with
|
// add special TextAAOpt for backwards compatibility with
|
||||||
// older options files
|
// older options files
|
||||||
new TextAAOpt();
|
new TextAAOpt();
|
||||||
@ -707,3 +707,4 @@ public abstract class TextTests extends Test {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,12 +45,7 @@ import static java.nio.file.StandardCopyOption.*;
|
|||||||
/*
|
/*
|
||||||
* ZipFileSystem usage demo
|
* ZipFileSystem usage demo
|
||||||
*
|
*
|
||||||
* java [-cp .../zipfs.jar:./] Demo action ZipfileName [...]
|
* java Demo action ZipfileName [...]
|
||||||
*
|
|
||||||
* To deploy the provider, either copy the zipfs.jar into JDK/JRE
|
|
||||||
* extensions directory or add
|
|
||||||
* <JDK_HOME>/demo/nio/ZipFileSystem/zipfs.jar
|
|
||||||
* into your class path as showed above.
|
|
||||||
*
|
*
|
||||||
* @author Xueming Shen
|
* @author Xueming Shen
|
||||||
*/
|
*/
|
||||||
@ -153,14 +148,11 @@ public class Demo {
|
|||||||
Action action = Action.valueOf(args[0]);
|
Action action = Action.valueOf(args[0]);
|
||||||
Map<String, Object> env = env = new HashMap<>();
|
Map<String, Object> env = env = new HashMap<>();
|
||||||
if (action == Action.create)
|
if (action == Action.create)
|
||||||
env.put("createNew", true);
|
env.put("create", "true");
|
||||||
if (action == Action.tlist || action == Action.twalk)
|
if (action == Action.tlist || action == Action.twalk)
|
||||||
env.put("buildDirTree", true);
|
env.put("buildDirTree", true);
|
||||||
|
FileSystem fs = FileSystems.newFileSystem(Paths.get(args[1]), env, null);
|
||||||
|
|
||||||
FileSystem fs = FileSystems.newFileSystem(
|
|
||||||
URI.create("zip" + Paths.get(args[1]).toUri().toString().substring(4)),
|
|
||||||
env,
|
|
||||||
null);
|
|
||||||
try {
|
try {
|
||||||
FileSystem fs2;
|
FileSystem fs2;
|
||||||
Path path, src, dst;
|
Path path, src, dst;
|
||||||
@ -207,19 +199,13 @@ public class Demo {
|
|||||||
src.copyTo(dst, COPY_ATTRIBUTES);
|
src.copyTo(dst, COPY_ATTRIBUTES);
|
||||||
break;
|
break;
|
||||||
case zzmove:
|
case zzmove:
|
||||||
fs2 = FileSystems.newFileSystem(
|
fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
|
||||||
URI.create("zip" + Paths.get(args[2]).toUri().toString().substring(4)),
|
|
||||||
env,
|
|
||||||
null);
|
|
||||||
//sf1.getPath(args[3]).moveTo(fs2.getPath(args[3]));
|
//sf1.getPath(args[3]).moveTo(fs2.getPath(args[3]));
|
||||||
z2zmove(fs, fs2, args[3]);
|
z2zmove(fs, fs2, args[3]);
|
||||||
fs2.close();
|
fs2.close();
|
||||||
break;
|
break;
|
||||||
case zzcopy:
|
case zzcopy:
|
||||||
fs2 = FileSystems.newFileSystem(
|
fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
|
||||||
URI.create("zip" + Paths.get(args[2]).toUri().toString().substring(4)),
|
|
||||||
env,
|
|
||||||
null);
|
|
||||||
//sf1.getPath(args[3]).copyTo(fs2.getPath(args[3]));
|
//sf1.getPath(args[3]).copyTo(fs2.getPath(args[3]));
|
||||||
z2zcopy(fs, fs2, args[3]);
|
z2zcopy(fs, fs2, args[3]);
|
||||||
fs2.close();
|
fs2.close();
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
ZipFileSystem is a file system provider that treats the contents of a zip or
|
ZipFileSystem is a file system provider that treats the contents of a zip or
|
||||||
JAR file as a java.nio.file.FileSystem.
|
JAR file as a java.nio.file.FileSystem.
|
||||||
|
|
||||||
To deploy the provider you must copy zipfs.jar into your extensions
|
|
||||||
directory or else add <JDK_HOME>/demo/nio/zipfs/zipfs.jar
|
|
||||||
to your class path.
|
|
||||||
|
|
||||||
The factory methods defined by the java.nio.file.FileSystems class can be
|
The factory methods defined by the java.nio.file.FileSystems class can be
|
||||||
used to create a FileSystem, eg:
|
used to create a FileSystem, eg:
|
||||||
|
|
||||||
@ -15,9 +11,9 @@ used to create a FileSystem, eg:
|
|||||||
|
|
||||||
-or
|
-or
|
||||||
|
|
||||||
// locate file system by URI
|
// locate file system by the legacy JAR URL syntax
|
||||||
Map<String,?> env = Collections.emptyMap();
|
Map<String,?> env = Collections.emptyMap();
|
||||||
URI uri = URI.create("zip:///mydir/foo.jar");
|
URI uri = URI.create("jar:file:/mydir/foo.jar");
|
||||||
FileSystem fs = FileSystems.newFileSystem(uri, env);
|
FileSystem fs = FileSystems.newFileSystem(uri, env);
|
||||||
|
|
||||||
Once a FileSystem is created then classes in the java.nio.file package
|
Once a FileSystem is created then classes in the java.nio.file package
|
||||||
@ -26,4 +22,6 @@ can be used to access files in the zip/JAR file, eg:
|
|||||||
Path mf = fs.getPath("/META-INF/MANIFEST.MF");
|
Path mf = fs.getPath("/META-INF/MANIFEST.MF");
|
||||||
InputStream in = mf.newInputStream();
|
InputStream in = mf.newInputStream();
|
||||||
|
|
||||||
|
See Demo.java for more interesting usages.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
com.sun.nio.zipfs.ZipFileSystemProvider
|
com.sun.nio.zipfs.ZipFileSystemProvider
|
||||||
com.sun.nio.zipfs.JarFileSystemProvider
|
|
||||||
|
|
@ -91,11 +91,11 @@ public class ZipFileSystem extends FileSystem {
|
|||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
// configurable env setup
|
// configurable env setup
|
||||||
|
this.createNew = "true".equals(env.get("create"));
|
||||||
|
this.nameEncoding = env.containsKey("encoding") ?
|
||||||
|
(String)env.get("encoding") : "UTF-8";
|
||||||
this.buildDirTree = TRUE.equals(env.get("buildDirTreea"));
|
this.buildDirTree = TRUE.equals(env.get("buildDirTreea"));
|
||||||
this.useTempFile = TRUE.equals(env.get("useTempFile"));
|
this.useTempFile = TRUE.equals(env.get("useTempFile"));
|
||||||
this.createNew = TRUE.equals(env.get("createNew"));
|
|
||||||
this.nameEncoding = env.containsKey("nameEncoding") ?
|
|
||||||
(String)env.get("nameEncoding") : "UTF-8";
|
|
||||||
this.defaultDir = env.containsKey("default.dir") ?
|
this.defaultDir = env.containsKey("default.dir") ?
|
||||||
(String)env.get("default.dir") : "/";
|
(String)env.get("default.dir") : "/";
|
||||||
if (this.defaultDir.charAt(0) != '/')
|
if (this.defaultDir.charAt(0) != '/')
|
||||||
@ -1176,7 +1176,9 @@ public class ZipFileSystem extends FileSystem {
|
|||||||
} else {
|
} else {
|
||||||
os.write(buf, 0, LOCHDR); // write out the loc header
|
os.write(buf, 0, LOCHDR); // write out the loc header
|
||||||
locoff += LOCHDR;
|
locoff += LOCHDR;
|
||||||
size += LOCNAM(buf) + LOCEXT(buf) + LOCSIZ(buf);
|
// use e.csize, LOCSIZ(buf) is zero if FLAG_DATADESCR is on
|
||||||
|
// size += LOCNAM(buf) + LOCEXT(buf) + LOCSIZ(buf);
|
||||||
|
size += LOCNAM(buf) + LOCEXT(buf) + e.csize;
|
||||||
written = LOCHDR + size;
|
written = LOCHDR + size;
|
||||||
}
|
}
|
||||||
int n;
|
int n;
|
@ -63,7 +63,7 @@ public class ZipFileSystemProvider extends FileSystemProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getScheme() {
|
public String getScheme() {
|
||||||
return "zip";
|
return "jar";
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Path uriToPath(URI uri) {
|
protected Path uriToPath(URI uri) {
|
||||||
@ -72,10 +72,14 @@ public class ZipFileSystemProvider extends FileSystemProvider {
|
|||||||
throw new IllegalArgumentException("URI scheme is not '" + getScheme() + "'");
|
throw new IllegalArgumentException("URI scheme is not '" + getScheme() + "'");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return Paths.get(new URI("file", uri.getHost(), uri.getPath(), null))
|
// only support legacy JAR URL syntax jar:{uri}!/{entry} for now
|
||||||
.toAbsolutePath();
|
String spec = uri.getSchemeSpecificPart();
|
||||||
|
int sep = spec.indexOf("!/");
|
||||||
|
if (sep != -1)
|
||||||
|
spec = spec.substring(0, sep);
|
||||||
|
return Paths.get(new URI(spec)).toAbsolutePath();
|
||||||
} catch (URISyntaxException e) {
|
} catch (URISyntaxException e) {
|
||||||
throw new AssertionError(e); //never thrown
|
throw new IllegalArgumentException(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,14 +123,14 @@ public class ZipFileSystemProvider extends FileSystemProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path getPath(URI uri) {
|
public Path getPath(URI uri) {
|
||||||
FileSystem fs = getFileSystem(uri);
|
|
||||||
String fragment = uri.getFragment();
|
String spec = uri.getSchemeSpecificPart();
|
||||||
if (fragment == null) {
|
int sep = spec.indexOf("!/");
|
||||||
|
if (sep == -1)
|
||||||
throw new IllegalArgumentException("URI: "
|
throw new IllegalArgumentException("URI: "
|
||||||
+ uri
|
+ uri
|
||||||
+ " does not contain path fragment ex. zip:///c:/foo.zip#/BAR");
|
+ " does not contain path info ex. jar:file:/c:/foo.zip!/BAR");
|
||||||
}
|
return getFileSystem(uri).getPath(spec.substring(sep + 1));
|
||||||
return fs.getPath(fragment);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
@ -33,9 +33,7 @@ package com.sun.nio.zipfs;
|
|||||||
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.sun.nio.zipfs.ZipFileSystem.Entry;
|
|
||||||
import static com.sun.nio.zipfs.ZipConstants.*;
|
import static com.sun.nio.zipfs.ZipConstants.*;
|
||||||
import static com.sun.nio.zipfs.ZipUtils.*;
|
import static com.sun.nio.zipfs.ZipUtils.*;
|
||||||
|
|
||||||
@ -172,7 +170,7 @@ public class ZipInfo {
|
|||||||
|
|
||||||
static void printExtra(byte[] extra, int off, int len) {
|
static void printExtra(byte[] extra, int off, int len) {
|
||||||
int end = off + len;
|
int end = off + len;
|
||||||
while (off + 4 < end) {
|
while (off + 4 <= end) {
|
||||||
int tag = SH(extra, off);
|
int tag = SH(extra, off);
|
||||||
int sz = SH(extra, off + 2);
|
int sz = SH(extra, off + 2);
|
||||||
print(" [tag=0x%04x, sz=%d, data= ", tag, sz);
|
print(" [tag=0x%04x, sz=%d, data= ", tag, sz);
|
@ -191,13 +191,12 @@ public class ZipPath extends Path {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public URI toUri() {
|
public URI toUri() {
|
||||||
String zfPath = zfs.toString();
|
|
||||||
if (File.separatorChar == '\\') // replace all separators by '/'
|
|
||||||
zfPath = "/" + zfPath.replace("\\", "/");
|
|
||||||
try {
|
try {
|
||||||
return new URI("zip", "",
|
return new URI("jar",
|
||||||
zfPath,
|
zfs.getZipFile().toUri() +
|
||||||
zfs.getString(toAbsolutePath().path));
|
"!" +
|
||||||
|
zfs.getString(toAbsolutePath().path),
|
||||||
|
null);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
throw new AssertionError(ex);
|
throw new AssertionError(ex);
|
||||||
}
|
}
|
703
jdk/src/share/demo/zipfs
Normal file
703
jdk/src/share/demo/zipfs
Normal file
@ -0,0 +1,703 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Oracle nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||||
|
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.*;
|
||||||
|
import java.nio.channels.*;
|
||||||
|
import java.nio.file.*;
|
||||||
|
import java.nio.file.attribute.*;
|
||||||
|
import java.net.*;
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import static java.nio.file.StandardOpenOption.*;
|
||||||
|
import static java.nio.file.StandardCopyOption.*;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ZipFileSystem usage demo
|
||||||
|
*
|
||||||
|
* java Demo action ZipfileName [...]
|
||||||
|
*
|
||||||
|
* @author Xueming Shen
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class Demo {
|
||||||
|
|
||||||
|
static enum Action {
|
||||||
|
rename, // <java Demo rename zipfile src dst>
|
||||||
|
// rename entry src to dst inside zipfile
|
||||||
|
|
||||||
|
movein, // <java Demo movein zipfile src dst>
|
||||||
|
// move an external src file into zipfile
|
||||||
|
// as entry dst
|
||||||
|
|
||||||
|
moveout, // <java Demo moveout zipfile src dst>
|
||||||
|
// move a zipfile entry src out to dst
|
||||||
|
|
||||||
|
copy, // <java Demo copy zipfile src dst>
|
||||||
|
// copy entry src to dst inside zipfile
|
||||||
|
|
||||||
|
copyin, // <java Demo copyin zipfile src dst>
|
||||||
|
// copy an external src file into zipfile
|
||||||
|
// as entry dst
|
||||||
|
|
||||||
|
copyin_attrs, // <java Demo copyin_attrs zipfile src dst>
|
||||||
|
// copy an external src file into zipfile
|
||||||
|
// as entry dst, with attributes (timestamp)
|
||||||
|
|
||||||
|
copyout, // <java Demo copyout zipfile src dst>
|
||||||
|
// copy zipfile entry src" out to file dst
|
||||||
|
|
||||||
|
copyout_attrs, // <java Demo copyout_attrs zipfile src dst>
|
||||||
|
|
||||||
|
zzmove, // <java Demo zzmove zfsrc zfdst path>
|
||||||
|
// move entry path/dir from zfsrc to zfdst
|
||||||
|
|
||||||
|
zzcopy, // <java Demo zzcopy zfsrc zfdst path>
|
||||||
|
// copy path from zipfile zfsrc to zipfile
|
||||||
|
// zfdst
|
||||||
|
|
||||||
|
attrs, // <java Demo attrs zipfile path>
|
||||||
|
// printout the attributes of entry path
|
||||||
|
|
||||||
|
attrsspace, // <java Demo attrsspace zipfile path>
|
||||||
|
// printout the storespace attrs of entry path
|
||||||
|
|
||||||
|
setmtime, // <java Demo setmtime zipfile "MM/dd/yy-HH:mm:ss" path...>
|
||||||
|
// set the lastModifiedTime of entry path
|
||||||
|
|
||||||
|
setatime, // <java Demo setatime zipfile "MM/dd/yy-HH:mm:ss" path...>
|
||||||
|
setctime, // <java Demo setctime zipfile "MM/dd/yy-HH:mm:ss" path...>
|
||||||
|
|
||||||
|
lsdir, // <java Demo lsdir zipfile dir>
|
||||||
|
// list dir's direct child files/dirs
|
||||||
|
|
||||||
|
mkdir, // <java Demo mkdir zipfile dir>
|
||||||
|
|
||||||
|
mkdirs, // <java Demo mkdirs zipfile dir>
|
||||||
|
|
||||||
|
rmdirs, // <java Demo rmdirs zipfile dir>
|
||||||
|
|
||||||
|
list, // <java Demo list zipfile [dir]>
|
||||||
|
// recursively list all entries of dir
|
||||||
|
// via DirectoryStream
|
||||||
|
|
||||||
|
tlist, // <java Demo tlist zipfile [dir]>
|
||||||
|
// list with buildDirTree=true
|
||||||
|
|
||||||
|
vlist, // <java Demo vlist zipfile [dir]>
|
||||||
|
// recursively verbose list all entries of
|
||||||
|
// dir via DirectoryStream
|
||||||
|
|
||||||
|
walk, // <java Demo walk zipfile [dir]>
|
||||||
|
// recursively walk all entries of dir
|
||||||
|
// via Files.walkFileTree
|
||||||
|
|
||||||
|
twalk, // <java Demo twalk zipfile [dir]>
|
||||||
|
// walk with buildDirTree=true
|
||||||
|
|
||||||
|
extract, // <java Demo extract zipfile file [...]>
|
||||||
|
|
||||||
|
update, // <java Demo extract zipfile file [...]>
|
||||||
|
|
||||||
|
delete, // <java Demo delete zipfile file [...]>
|
||||||
|
|
||||||
|
add, // <java Demo add zipfile file [...]>
|
||||||
|
|
||||||
|
create, // <java Demo create zipfile file [...]>
|
||||||
|
// create a new zipfile if it doesn't exit
|
||||||
|
// and then add the file(s) into it.
|
||||||
|
|
||||||
|
attrs2, // <java Demo attrs2 zipfile file [...]>
|
||||||
|
// test different ways to print attrs
|
||||||
|
|
||||||
|
prof,
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Throwable {
|
||||||
|
|
||||||
|
Action action = Action.valueOf(args[0]);
|
||||||
|
Map<String, Object> env = env = new HashMap<>();
|
||||||
|
if (action == Action.create)
|
||||||
|
env.put("create", "true");
|
||||||
|
if (action == Action.tlist || action == Action.twalk)
|
||||||
|
env.put("buildDirTree", true);
|
||||||
|
FileSystem fs = FileSystems.newFileSystem(Paths.get(args[1]), env, null);
|
||||||
|
|
||||||
|
try {
|
||||||
|
FileSystem fs2;
|
||||||
|
Path path, src, dst;
|
||||||
|
boolean isRename = false;
|
||||||
|
switch (action) {
|
||||||
|
case rename:
|
||||||
|
src = fs.getPath(args[2]);
|
||||||
|
dst = fs.getPath(args[3]);
|
||||||
|
src.moveTo(dst);
|
||||||
|
break;
|
||||||
|
case moveout:
|
||||||
|
src = fs.getPath(args[2]);
|
||||||
|
dst = Paths.get(args[3]);
|
||||||
|
src.moveTo(dst);
|
||||||
|
break;
|
||||||
|
case movein:
|
||||||
|
src = Paths.get(args[2]);
|
||||||
|
dst = fs.getPath(args[3]);
|
||||||
|
src.moveTo(dst);
|
||||||
|
break;
|
||||||
|
case copy:
|
||||||
|
src = fs.getPath(args[2]);
|
||||||
|
dst = fs.getPath(args[3]);
|
||||||
|
src.copyTo(dst);
|
||||||
|
break;
|
||||||
|
case copyout:
|
||||||
|
src = fs.getPath(args[2]);
|
||||||
|
dst = Paths.get(args[3]);
|
||||||
|
src.copyTo(dst);
|
||||||
|
break;
|
||||||
|
case copyin:
|
||||||
|
src = Paths.get(args[2]);
|
||||||
|
dst = fs.getPath(args[3]);
|
||||||
|
src.copyTo(dst);
|
||||||
|
break;
|
||||||
|
case copyin_attrs:
|
||||||
|
src = Paths.get(args[2]);
|
||||||
|
dst = fs.getPath(args[3]);
|
||||||
|
src.copyTo(dst, COPY_ATTRIBUTES);
|
||||||
|
break;
|
||||||
|
case copyout_attrs:
|
||||||
|
src = fs.getPath(args[2]);
|
||||||
|
dst = Paths.get(args[3]);
|
||||||
|
src.copyTo(dst, COPY_ATTRIBUTES);
|
||||||
|
break;
|
||||||
|
case zzmove:
|
||||||
|
fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
|
||||||
|
//sf1.getPath(args[3]).moveTo(fs2.getPath(args[3]));
|
||||||
|
z2zmove(fs, fs2, args[3]);
|
||||||
|
fs2.close();
|
||||||
|
break;
|
||||||
|
case zzcopy:
|
||||||
|
fs2 = FileSystems.newFileSystem(Paths.get(args[2]), env, null);
|
||||||
|
//sf1.getPath(args[3]).copyTo(fs2.getPath(args[3]));
|
||||||
|
z2zcopy(fs, fs2, args[3]);
|
||||||
|
fs2.close();
|
||||||
|
break;
|
||||||
|
case attrs:
|
||||||
|
for (int i = 2; i < args.length; i++) {
|
||||||
|
path = fs.getPath(args[i]);
|
||||||
|
System.out.println(path);
|
||||||
|
System.out.println(
|
||||||
|
Attributes.readBasicFileAttributes(path).toString());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case setmtime:
|
||||||
|
DateFormat df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
|
||||||
|
Date newDatetime = df.parse(args[2]);
|
||||||
|
for (int i = 3; i < args.length; i++) {
|
||||||
|
path = fs.getPath(args[i]);
|
||||||
|
path.setAttribute("lastModifiedTime",
|
||||||
|
FileTime.fromMillis(newDatetime.getTime()));
|
||||||
|
System.out.println(
|
||||||
|
Attributes.readBasicFileAttributes(path).toString());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case setctime:
|
||||||
|
df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
|
||||||
|
newDatetime = df.parse(args[2]);
|
||||||
|
for (int i = 3; i < args.length; i++) {
|
||||||
|
path = fs.getPath(args[i]);
|
||||||
|
path.setAttribute("creationTime",
|
||||||
|
FileTime.fromMillis(newDatetime.getTime()));
|
||||||
|
System.out.println(
|
||||||
|
Attributes.readBasicFileAttributes(path).toString());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case setatime:
|
||||||
|
df = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss");
|
||||||
|
newDatetime = df.parse(args[2]);
|
||||||
|
for (int i = 3; i < args.length; i++) {
|
||||||
|
path = fs.getPath(args[i]);
|
||||||
|
path.setAttribute("lastAccessTime",
|
||||||
|
FileTime.fromMillis(newDatetime.getTime()));
|
||||||
|
System.out.println(
|
||||||
|
Attributes.readBasicFileAttributes(path).toString());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case attrsspace:
|
||||||
|
path = fs.getPath("/");
|
||||||
|
FileStore fstore = path.getFileStore();
|
||||||
|
//System.out.println(fstore.getFileStoreAttributeView(FileStoreSpaceAttributeView.class)
|
||||||
|
// .readAttributes());
|
||||||
|
// or
|
||||||
|
System.out.printf("filestore[%s]%n", fstore.name());
|
||||||
|
System.out.printf(" totalSpace: %d%n",
|
||||||
|
(Long)fstore.getAttribute("space:totalSpace"));
|
||||||
|
System.out.printf(" usableSpace: %d%n",
|
||||||
|
(Long)fstore.getAttribute("space:usableSpace"));
|
||||||
|
System.out.printf(" unallocSpace: %d%n",
|
||||||
|
(Long)fstore.getAttribute("space:unallocatedSpace"));
|
||||||
|
break;
|
||||||
|
case list:
|
||||||
|
case tlist:
|
||||||
|
if (args.length < 3)
|
||||||
|
list(fs.getPath("/"), false);
|
||||||
|
else
|
||||||
|
list(fs.getPath(args[2]), false);
|
||||||
|
break;
|
||||||
|
case vlist:
|
||||||
|
if (args.length < 3)
|
||||||
|
list(fs.getPath("/"), true);
|
||||||
|
else
|
||||||
|
list(fs.getPath(args[2]), true);
|
||||||
|
break;
|
||||||
|
case twalk:
|
||||||
|
case walk:
|
||||||
|
walk(fs.getPath((args.length > 2)? args[2] : "/"));
|
||||||
|
break;
|
||||||
|
case extract:
|
||||||
|
if (args.length == 2) {
|
||||||
|
extract(fs, "/");
|
||||||
|
} else {
|
||||||
|
for (int i = 2; i < args.length; i++) {
|
||||||
|
extract(fs, args[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case delete:
|
||||||
|
for (int i = 2; i < args.length; i++)
|
||||||
|
fs.getPath(args[i]).delete();
|
||||||
|
break;
|
||||||
|
case create:
|
||||||
|
case add:
|
||||||
|
case update:
|
||||||
|
for (int i = 2; i < args.length; i++) {
|
||||||
|
update(fs, args[i]);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case lsdir:
|
||||||
|
path = fs.getPath(args[2]);
|
||||||
|
final String fStr = (args.length > 3)?args[3]:"";
|
||||||
|
DirectoryStream<Path> ds = path.newDirectoryStream(
|
||||||
|
new DirectoryStream.Filter<Path>() {
|
||||||
|
public boolean accept(Path path) {
|
||||||
|
return path.toString().contains(fStr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for (Path p : ds)
|
||||||
|
System.out.println(p);
|
||||||
|
break;
|
||||||
|
case mkdir:
|
||||||
|
fs.getPath(args[2]).createDirectory();
|
||||||
|
break;
|
||||||
|
case mkdirs:
|
||||||
|
mkdirs(fs.getPath(args[2]));
|
||||||
|
break;
|
||||||
|
case attrs2:
|
||||||
|
for (int i = 2; i < args.length; i++) {
|
||||||
|
path = fs.getPath(args[i]);
|
||||||
|
System.out.printf("%n%s%n", path);
|
||||||
|
System.out.println("-------(1)---------");
|
||||||
|
System.out.println(
|
||||||
|
Attributes.readBasicFileAttributes(path).toString());
|
||||||
|
System.out.println("-------(2)---------");
|
||||||
|
Map<String, ?> map = path.readAttributes("zip:*");
|
||||||
|
for (Map.Entry<String, ?> e : map.entrySet()) {
|
||||||
|
System.out.printf(" %s : %s%n", e.getKey(), e.getValue());
|
||||||
|
}
|
||||||
|
System.out.println("-------(3)---------");
|
||||||
|
map = path.readAttributes("size,lastModifiedTime,isDirectory");
|
||||||
|
for (Map.Entry<String, ?> e : map.entrySet()) {
|
||||||
|
System.out.printf(" %s : %s%n", e.getKey(), e.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case prof:
|
||||||
|
list(fs.getPath("/"), false);
|
||||||
|
while (true) {
|
||||||
|
Thread.sleep(10000);
|
||||||
|
//list(fs.getPath("/"), true);
|
||||||
|
System.out.println("sleeping...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception x) {
|
||||||
|
x.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (fs != null)
|
||||||
|
fs.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] getBytes(String name) {
|
||||||
|
return name.getBytes();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String getString(byte[] name) {
|
||||||
|
return new String(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void walk(Path path) throws IOException
|
||||||
|
{
|
||||||
|
Files.walkFileTree(
|
||||||
|
path,
|
||||||
|
new SimpleFileVisitor<Path>() {
|
||||||
|
private int indent = 0;
|
||||||
|
private void indent() {
|
||||||
|
int n = 0;
|
||||||
|
while (n++ < indent)
|
||||||
|
System.out.printf(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult visitFile(Path file,
|
||||||
|
BasicFileAttributes attrs)
|
||||||
|
{
|
||||||
|
indent();
|
||||||
|
System.out.printf("%s%n", file.getName().toString());
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult preVisitDirectory(Path dir,
|
||||||
|
BasicFileAttributes attrs)
|
||||||
|
{
|
||||||
|
indent();
|
||||||
|
System.out.printf("[%s]%n", dir.toString());
|
||||||
|
indent += 2;
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult postVisitDirectory(Path dir,
|
||||||
|
IOException ioe)
|
||||||
|
{
|
||||||
|
indent -= 2;
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void update(FileSystem fs, String path) throws Throwable{
|
||||||
|
Path src = FileSystems.getDefault().getPath(path);
|
||||||
|
if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) {
|
||||||
|
DirectoryStream<Path> ds = src.newDirectoryStream();
|
||||||
|
for (Path child : ds)
|
||||||
|
update(fs, child.toString());
|
||||||
|
ds.close();
|
||||||
|
} else {
|
||||||
|
Path dst = fs.getPath(path);
|
||||||
|
Path parent = dst.getParent();
|
||||||
|
if (parent != null && parent.notExists())
|
||||||
|
mkdirs(parent);
|
||||||
|
src.copyTo(dst, REPLACE_EXISTING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void extract(FileSystem fs, String path) throws Throwable{
|
||||||
|
Path src = fs.getPath(path);
|
||||||
|
if (Boolean.TRUE.equals(src.getAttribute("isDirectory"))) {
|
||||||
|
DirectoryStream<Path> ds = src.newDirectoryStream();
|
||||||
|
for (Path child : ds)
|
||||||
|
extract(fs, child.toString());
|
||||||
|
ds.close();
|
||||||
|
} else {
|
||||||
|
if (path.startsWith("/"))
|
||||||
|
path = path.substring(1);
|
||||||
|
Path dst = FileSystems.getDefault().getPath(path);
|
||||||
|
Path parent = dst.getParent();
|
||||||
|
if (parent.notExists())
|
||||||
|
mkdirs(parent);
|
||||||
|
src.copyTo(dst, REPLACE_EXISTING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// use DirectoryStream
|
||||||
|
private static void z2zcopy(FileSystem src, FileSystem dst, String path)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
Path srcPath = src.getPath(path);
|
||||||
|
Path dstPath = dst.getPath(path);
|
||||||
|
|
||||||
|
if (Boolean.TRUE.equals(srcPath.getAttribute("isDirectory"))) {
|
||||||
|
if (!dstPath.exists()) {
|
||||||
|
try {
|
||||||
|
mkdirs(dstPath);
|
||||||
|
} catch (FileAlreadyExistsException x) {}
|
||||||
|
}
|
||||||
|
DirectoryStream<Path> ds = srcPath.newDirectoryStream();
|
||||||
|
for (Path child : ds) {
|
||||||
|
z2zcopy(src, dst,
|
||||||
|
path + (path.endsWith("/")?"":"/") + child.getName());
|
||||||
|
}
|
||||||
|
ds.close();
|
||||||
|
} else {
|
||||||
|
//System.out.println("copying..." + path);
|
||||||
|
srcPath.copyTo(dstPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// use TreeWalk to move
|
||||||
|
private static void z2zmove(FileSystem src, FileSystem dst, String path)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
final Path srcPath = src.getPath(path).toAbsolutePath();
|
||||||
|
final Path dstPath = dst.getPath(path).toAbsolutePath();
|
||||||
|
|
||||||
|
Files.walkFileTree(srcPath, new SimpleFileVisitor<Path>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult visitFile(Path file,
|
||||||
|
BasicFileAttributes attrs)
|
||||||
|
{
|
||||||
|
Path dst = srcPath.relativize(file);
|
||||||
|
dst = dstPath.resolve(dst);
|
||||||
|
try {
|
||||||
|
Path parent = dstPath.getParent();
|
||||||
|
if (parent != null && parent.notExists())
|
||||||
|
mkdirs(parent);
|
||||||
|
file.moveTo(dst);
|
||||||
|
} catch (IOException x) {
|
||||||
|
x.printStackTrace();
|
||||||
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult preVisitDirectory(Path dir,
|
||||||
|
BasicFileAttributes attrs)
|
||||||
|
{
|
||||||
|
Path dst = srcPath.relativize(dir);
|
||||||
|
dst = dstPath.resolve(dst);
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (dst.notExists())
|
||||||
|
mkdirs(dst);
|
||||||
|
} catch (IOException x) {
|
||||||
|
x.printStackTrace();
|
||||||
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult postVisitDirectory(Path dir,
|
||||||
|
IOException ioe)
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
dir.delete();
|
||||||
|
} catch (IOException x) {
|
||||||
|
//x.printStackTrace();
|
||||||
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void mkdirs(Path path) throws IOException {
|
||||||
|
path = path.toAbsolutePath();
|
||||||
|
Path parent = path.getParent();
|
||||||
|
if (parent != null) {
|
||||||
|
if (parent.notExists())
|
||||||
|
mkdirs(parent);
|
||||||
|
}
|
||||||
|
path.createDirectory();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void rmdirs(Path path) throws IOException {
|
||||||
|
while (path != null && path.getNameCount() != 0) {
|
||||||
|
path.delete();
|
||||||
|
path = path.getParent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void list(Path path, boolean verbose ) throws IOException {
|
||||||
|
if (!"/".equals(path.toString())) {
|
||||||
|
System.out.printf(" %s%n", path.toString());
|
||||||
|
if (verbose)
|
||||||
|
System.out.println(Attributes.readBasicFileAttributes(path).toString());
|
||||||
|
}
|
||||||
|
if (path.notExists())
|
||||||
|
return;
|
||||||
|
if (Attributes.readBasicFileAttributes(path).isDirectory()) {
|
||||||
|
DirectoryStream<Path> ds = path.newDirectoryStream();
|
||||||
|
for (Path child : ds)
|
||||||
|
list(child, verbose);
|
||||||
|
ds.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check the content of two paths are equal
|
||||||
|
private static void checkEqual(Path src, Path dst) throws IOException
|
||||||
|
{
|
||||||
|
//System.out.printf("checking <%s> vs <%s>...%n",
|
||||||
|
// src.toString(), dst.toString());
|
||||||
|
|
||||||
|
//streams
|
||||||
|
InputStream isSrc = src.newInputStream();
|
||||||
|
InputStream isDst = dst.newInputStream();
|
||||||
|
byte[] bufSrc = new byte[8192];
|
||||||
|
byte[] bufDst = new byte[8192];
|
||||||
|
|
||||||
|
try {
|
||||||
|
int nSrc = 0;
|
||||||
|
while ((nSrc = isSrc.read(bufSrc)) != -1) {
|
||||||
|
int nDst = 0;
|
||||||
|
while (nDst < nSrc) {
|
||||||
|
int n = isDst.read(bufDst, nDst, nSrc - nDst);
|
||||||
|
if (n == -1) {
|
||||||
|
System.out.printf("checking <%s> vs <%s>...%n",
|
||||||
|
src.toString(), dst.toString());
|
||||||
|
throw new RuntimeException("CHECK FAILED!");
|
||||||
|
}
|
||||||
|
nDst += n;
|
||||||
|
}
|
||||||
|
while (--nSrc >= 0) {
|
||||||
|
if (bufSrc[nSrc] != bufDst[nSrc]) {
|
||||||
|
System.out.printf("checking <%s> vs <%s>...%n",
|
||||||
|
src.toString(), dst.toString());
|
||||||
|
throw new RuntimeException("CHECK FAILED!");
|
||||||
|
}
|
||||||
|
nSrc--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
isSrc.close();
|
||||||
|
isDst.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// channels
|
||||||
|
SeekableByteChannel chSrc = src.newByteChannel();
|
||||||
|
SeekableByteChannel chDst = dst.newByteChannel();
|
||||||
|
if (chSrc.size() != chDst.size()) {
|
||||||
|
System.out.printf("src[%s].size=%d, dst[%s].size=%d%n",
|
||||||
|
chSrc.toString(), chSrc.size(),
|
||||||
|
chDst.toString(), chDst.size());
|
||||||
|
throw new RuntimeException("CHECK FAILED!");
|
||||||
|
}
|
||||||
|
ByteBuffer bbSrc = ByteBuffer.allocate(8192);
|
||||||
|
ByteBuffer bbDst = ByteBuffer.allocate(8192);
|
||||||
|
|
||||||
|
try {
|
||||||
|
int nSrc = 0;
|
||||||
|
while ((nSrc = chSrc.read(bbSrc)) != -1) {
|
||||||
|
int nDst = chDst.read(bbDst);
|
||||||
|
if (nSrc != nDst) {
|
||||||
|
System.out.printf("checking <%s> vs <%s>...%n",
|
||||||
|
src.toString(), dst.toString());
|
||||||
|
throw new RuntimeException("CHECK FAILED!");
|
||||||
|
}
|
||||||
|
while (--nSrc >= 0) {
|
||||||
|
if (bbSrc.get(nSrc) != bbDst.get(nSrc)) {
|
||||||
|
System.out.printf("checking <%s> vs <%s>...%n",
|
||||||
|
src.toString(), dst.toString());
|
||||||
|
throw new RuntimeException("CHECK FAILED!");
|
||||||
|
}
|
||||||
|
nSrc--;
|
||||||
|
}
|
||||||
|
bbSrc.flip();
|
||||||
|
bbDst.flip();
|
||||||
|
}
|
||||||
|
} catch (IOException x) {
|
||||||
|
x.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
chSrc.close();
|
||||||
|
chDst.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void fchCopy(Path src, Path dst) throws IOException
|
||||||
|
{
|
||||||
|
Set<OpenOption> read = new HashSet<>();
|
||||||
|
read.add(READ);
|
||||||
|
Set<OpenOption> openwrite = new HashSet<>();
|
||||||
|
openwrite.add(CREATE_NEW);
|
||||||
|
openwrite.add(WRITE);
|
||||||
|
|
||||||
|
FileChannel srcFc = src.getFileSystem()
|
||||||
|
.provider()
|
||||||
|
.newFileChannel(src, read);
|
||||||
|
FileChannel dstFc = dst.getFileSystem()
|
||||||
|
.provider()
|
||||||
|
.newFileChannel(dst, openwrite);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ByteBuffer bb = ByteBuffer.allocate(8192);
|
||||||
|
while (srcFc.read(bb) >= 0) {
|
||||||
|
bb.flip();
|
||||||
|
dstFc.write(bb);
|
||||||
|
bb.clear();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
srcFc.close();
|
||||||
|
dstFc.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void chCopy(Path src, Path dst) throws IOException
|
||||||
|
{
|
||||||
|
Set<OpenOption> read = new HashSet<>();
|
||||||
|
read.add(READ);
|
||||||
|
Set<OpenOption> openwrite = new HashSet<>();
|
||||||
|
openwrite.add(CREATE_NEW);
|
||||||
|
openwrite.add(WRITE);
|
||||||
|
|
||||||
|
SeekableByteChannel srcCh = src.newByteChannel(read);
|
||||||
|
SeekableByteChannel dstCh = dst.newByteChannel(openwrite);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ByteBuffer bb = ByteBuffer.allocate(8192);
|
||||||
|
while (srcCh.read(bb) >= 0) {
|
||||||
|
bb.flip();
|
||||||
|
dstCh.write(bb);
|
||||||
|
bb.clear();
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
srcCh.close();
|
||||||
|
dstCh.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void streamCopy(Path src, Path dst) throws IOException
|
||||||
|
{
|
||||||
|
InputStream isSrc = src.newInputStream();
|
||||||
|
OutputStream osDst = dst.newOutputStream();
|
||||||
|
byte[] buf = new byte[8192];
|
||||||
|
try {
|
||||||
|
int n = 0;
|
||||||
|
while ((n = isSrc.read(buf)) != -1) {
|
||||||
|
osDst.write(buf, 0, n);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
isSrc.close();
|
||||||
|
osDst.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -57,9 +57,12 @@ class GtkFileDialogPeer extends XDialogPeer implements FileDialogPeer {
|
|||||||
|
|
||||||
private native void run(String title, int mode, String dir, String file,
|
private native void run(String title, int mode, String dir, String file,
|
||||||
FilenameFilter filter, boolean isMultipleMode);
|
FilenameFilter filter, boolean isMultipleMode);
|
||||||
|
|
||||||
private native void quit();
|
private native void quit();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public native void toFront();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called exclusively by the native C code.
|
* Called exclusively by the native C code.
|
||||||
*/
|
*/
|
||||||
|
@ -150,6 +150,8 @@ class XFramePeer extends XDecoratedPeer implements FramePeer {
|
|||||||
|
|
||||||
void updateChildrenSizes() {
|
void updateChildrenSizes() {
|
||||||
super.updateChildrenSizes();
|
super.updateChildrenSizes();
|
||||||
|
int height = getMenuBarHeight();
|
||||||
|
|
||||||
// XWindow.reshape calls XBaseWindow.xSetBounds, which acquires
|
// XWindow.reshape calls XBaseWindow.xSetBounds, which acquires
|
||||||
// the AWT lock, so we have to acquire the AWT lock here
|
// the AWT lock, so we have to acquire the AWT lock here
|
||||||
// before getStateLock() to avoid a deadlock with the Toolkit thread
|
// before getStateLock() to avoid a deadlock with the Toolkit thread
|
||||||
@ -159,7 +161,7 @@ class XFramePeer extends XDecoratedPeer implements FramePeer {
|
|||||||
synchronized(getStateLock()) {
|
synchronized(getStateLock()) {
|
||||||
int width = dimensions.getClientSize().width;
|
int width = dimensions.getClientSize().width;
|
||||||
if (menubarPeer != null) {
|
if (menubarPeer != null) {
|
||||||
menubarPeer.reshape(0, 0, width, getMenuBarHeight());
|
menubarPeer.reshape(0, 0, width, height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -43,7 +43,7 @@ public class SctpNet {
|
|||||||
|
|
||||||
/* -- Miscellaneous SCTP utilities -- */
|
/* -- Miscellaneous SCTP utilities -- */
|
||||||
|
|
||||||
static boolean bindxIPv4MappedAddresses() {
|
private static boolean IPv4MappedAddresses() {
|
||||||
if ("SunOS".equals(osName)) {
|
if ("SunOS".equals(osName)) {
|
||||||
/* Solaris supports IPv4Mapped Addresses with bindx */
|
/* Solaris supports IPv4Mapped Addresses with bindx */
|
||||||
return true;
|
return true;
|
||||||
@ -87,7 +87,7 @@ public class SctpNet {
|
|||||||
static void bindx(int fd, InetAddress[] addrs, int port, boolean add)
|
static void bindx(int fd, InetAddress[] addrs, int port, boolean add)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
bindx(fd, addrs, port, addrs.length, add,
|
bindx(fd, addrs, port, addrs.length, add,
|
||||||
bindxIPv4MappedAddresses());
|
IPv4MappedAddresses());
|
||||||
}
|
}
|
||||||
|
|
||||||
static Set<SocketAddress> getLocalAddresses(int fd)
|
static Set<SocketAddress> getLocalAddresses(int fd)
|
||||||
@ -145,11 +145,16 @@ public class SctpNet {
|
|||||||
InetSocketAddress netAddr = (InetSocketAddress)addr;
|
InetSocketAddress netAddr = (InetSocketAddress)addr;
|
||||||
|
|
||||||
if (name.equals(SCTP_PRIMARY_ADDR)) {
|
if (name.equals(SCTP_PRIMARY_ADDR)) {
|
||||||
setPrimAddrOption0(fd, assocId,
|
setPrimAddrOption0(fd,
|
||||||
netAddr.getAddress(), netAddr.getPort());
|
assocId,
|
||||||
|
netAddr.getAddress(),
|
||||||
|
netAddr.getPort());
|
||||||
} else {
|
} else {
|
||||||
setPeerPrimAddrOption0(fd, assocId,
|
setPeerPrimAddrOption0(fd,
|
||||||
netAddr.getAddress(), netAddr.getPort());
|
assocId,
|
||||||
|
netAddr.getAddress(),
|
||||||
|
netAddr.getPort(),
|
||||||
|
IPv4MappedAddresses());
|
||||||
}
|
}
|
||||||
} else if (name.equals(SCTP_DISABLE_FRAGMENTS) ||
|
} else if (name.equals(SCTP_DISABLE_FRAGMENTS) ||
|
||||||
name.equals(SCTP_EXPLICIT_COMPLETE) ||
|
name.equals(SCTP_EXPLICIT_COMPLETE) ||
|
||||||
@ -290,7 +295,7 @@ public class SctpNet {
|
|||||||
int port) throws IOException;
|
int port) throws IOException;
|
||||||
|
|
||||||
static native void setPeerPrimAddrOption0(int fd, int assocId,
|
static native void setPeerPrimAddrOption0(int fd, int assocId,
|
||||||
InetAddress ia, int port) throws IOException;
|
InetAddress ia, int port, boolean preferIPv6) throws IOException;
|
||||||
|
|
||||||
static native SocketAddress getPrimAddrOption0(int fd, int assocId)
|
static native SocketAddress getPrimAddrOption0(int fd, int assocId)
|
||||||
throws IOException;
|
throws IOException;
|
||||||
|
@ -217,15 +217,18 @@ static int ParseLocale(int cat, char ** std_language, char ** std_script,
|
|||||||
/* Normalize the language name */
|
/* Normalize the language name */
|
||||||
if (std_language != NULL) {
|
if (std_language != NULL) {
|
||||||
*std_language = "en";
|
*std_language = "en";
|
||||||
if (language != NULL) {
|
if (language != NULL && mapLookup(language_names, language, std_language) == 0) {
|
||||||
mapLookup(language_names, language, std_language);
|
*std_language = malloc(strlen(language)+1);
|
||||||
|
strcpy(*std_language, language);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Normalize the country name */
|
/* Normalize the country name */
|
||||||
if (std_country != NULL && country != NULL) {
|
if (std_country != NULL && country != NULL) {
|
||||||
*std_country = country;
|
if (mapLookup(country_names, country, std_country) == 0) {
|
||||||
mapLookup(country_names, country, std_country);
|
*std_country = malloc(strlen(country)+1);
|
||||||
|
strcpy(*std_country, country);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Normalize the script and variant name. Note that we only use
|
/* Normalize the script and variant name. Note that we only use
|
||||||
|
@ -87,7 +87,7 @@
|
|||||||
"zh", "zh_CN",
|
"zh", "zh_CN",
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
"bokmal", "nb_NO",
|
"bokmal", "nb_NO",
|
||||||
"bokm\u00e5l", "nb_NO",
|
"bokm\xE5l", "nb_NO",
|
||||||
"catalan", "ca_ES",
|
"catalan", "ca_ES",
|
||||||
"croatian", "hr_HR",
|
"croatian", "hr_HR",
|
||||||
"czech", "cs_CZ",
|
"czech", "cs_CZ",
|
||||||
@ -144,203 +144,16 @@
|
|||||||
static char *language_names[] = {
|
static char *language_names[] = {
|
||||||
"C", "en",
|
"C", "en",
|
||||||
"POSIX", "en",
|
"POSIX", "en",
|
||||||
"aa", "aa",
|
|
||||||
"ab", "ab",
|
|
||||||
"ae", "ae",
|
|
||||||
"af", "af",
|
|
||||||
"ak", "ak",
|
|
||||||
"am", "am",
|
|
||||||
"an", "an",
|
|
||||||
"ar", "ar",
|
|
||||||
"as", "as",
|
|
||||||
"av", "av",
|
|
||||||
"ay", "ay",
|
|
||||||
"az", "az",
|
|
||||||
"ba", "ba",
|
|
||||||
"be", "be",
|
|
||||||
"bg", "bg",
|
|
||||||
"bh", "bh",
|
|
||||||
"bi", "bi",
|
|
||||||
"bm", "bm",
|
|
||||||
"bn", "bn",
|
|
||||||
"bo", "bo",
|
|
||||||
"br", "br",
|
|
||||||
"bs", "bs",
|
|
||||||
"ca", "ca",
|
|
||||||
"ce", "ce",
|
|
||||||
"ch", "ch",
|
|
||||||
"co", "co",
|
|
||||||
"cr", "cr",
|
|
||||||
"cs", "cs",
|
|
||||||
"cz", "cs",
|
"cz", "cs",
|
||||||
"cu", "cu",
|
|
||||||
"cv", "cv",
|
|
||||||
"cy", "cy",
|
|
||||||
"da", "da",
|
|
||||||
"de", "de",
|
|
||||||
"dv", "dv",
|
|
||||||
"dz", "dz",
|
|
||||||
"ee", "ee",
|
|
||||||
"el", "el",
|
|
||||||
"en", "en",
|
|
||||||
"eo", "eo",
|
|
||||||
"es", "es",
|
|
||||||
"et", "et",
|
|
||||||
"eu", "eu",
|
|
||||||
"fa", "fa",
|
|
||||||
"ff", "ff",
|
|
||||||
"fi", "fi",
|
|
||||||
"fj", "fj",
|
|
||||||
"fo", "fo",
|
|
||||||
"fr", "fr",
|
|
||||||
"fy", "fy",
|
|
||||||
"ga", "ga",
|
|
||||||
"gd", "gd",
|
|
||||||
"gl", "gl",
|
|
||||||
"gn", "gn",
|
|
||||||
"gu", "gu",
|
|
||||||
"gv", "gv",
|
|
||||||
"ha", "ha",
|
|
||||||
"he", "iw",
|
"he", "iw",
|
||||||
"hi", "hi",
|
|
||||||
"ho", "ho",
|
|
||||||
"hr", "hr",
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
"hs", "en", // used on Linux, not clear what it stands for
|
"hs", "en", // used on Linux, not clear what it stands for
|
||||||
#endif
|
#endif
|
||||||
"ht", "ht",
|
|
||||||
"hu", "hu",
|
|
||||||
"hy", "hy",
|
|
||||||
"hz", "hz",
|
|
||||||
"ia", "ia",
|
|
||||||
"id", "in",
|
"id", "in",
|
||||||
"ie", "ie",
|
|
||||||
"ig", "ig",
|
|
||||||
"ii", "ii",
|
|
||||||
"ik", "ik",
|
|
||||||
"in", "in",
|
|
||||||
"io", "io",
|
|
||||||
"is", "is",
|
|
||||||
"it", "it",
|
|
||||||
"iu", "iu",
|
|
||||||
"iw", "iw",
|
|
||||||
"ja", "ja",
|
|
||||||
"ji", "yi",
|
|
||||||
"jv", "jv",
|
|
||||||
"ka", "ka",
|
|
||||||
"kg", "kg",
|
|
||||||
"ki", "ki",
|
|
||||||
"kj", "kj",
|
|
||||||
"kk", "kk",
|
|
||||||
"kl", "kl",
|
|
||||||
"km", "km",
|
|
||||||
"kn", "kn",
|
|
||||||
"ko", "ko",
|
|
||||||
"kr", "kr",
|
|
||||||
"ks", "ks",
|
|
||||||
"ku", "ku",
|
|
||||||
"kv", "kv",
|
|
||||||
"kw", "kw",
|
|
||||||
"ky", "ky",
|
|
||||||
"la", "la",
|
|
||||||
"lb", "lb",
|
|
||||||
"lg", "lg",
|
|
||||||
"li", "li",
|
|
||||||
"ln", "ln",
|
|
||||||
"lo", "lo",
|
|
||||||
"lt", "lt",
|
|
||||||
"lu", "lu",
|
|
||||||
"lv", "lv",
|
|
||||||
"mg", "mg",
|
|
||||||
"mh", "mh",
|
|
||||||
"mi", "mi",
|
|
||||||
"mk", "mk",
|
|
||||||
"ml", "ml",
|
|
||||||
"mn", "mn",
|
|
||||||
"mo", "mo",
|
|
||||||
"mr", "mr",
|
|
||||||
"ms", "ms",
|
|
||||||
"mt", "mt",
|
|
||||||
"my", "my",
|
|
||||||
"na", "na",
|
|
||||||
"nb", "nb",
|
|
||||||
"nd", "nd",
|
|
||||||
"ne", "ne",
|
|
||||||
"ng", "ng",
|
|
||||||
"nl", "nl",
|
|
||||||
"nn", "nn",
|
|
||||||
"no", "no",
|
|
||||||
"nr", "nr",
|
|
||||||
"nv", "nv",
|
|
||||||
"ny", "ny",
|
|
||||||
"oc", "oc",
|
|
||||||
"oj", "oj",
|
|
||||||
"om", "om",
|
|
||||||
"or", "or",
|
|
||||||
"os", "os",
|
|
||||||
"pa", "pa",
|
|
||||||
"pi", "pi",
|
|
||||||
"pl", "pl",
|
|
||||||
"ps", "ps",
|
|
||||||
"pt", "pt",
|
|
||||||
"qu", "qu",
|
|
||||||
"rm", "rm",
|
|
||||||
"rn", "rn",
|
|
||||||
"ro", "ro",
|
|
||||||
"ru", "ru",
|
|
||||||
"rw", "rw",
|
|
||||||
"sa", "sa",
|
|
||||||
"sc", "sc",
|
|
||||||
"sd", "sd",
|
|
||||||
"se", "se",
|
|
||||||
"sg", "sg",
|
|
||||||
"sh", "sr", // sh is deprecated
|
"sh", "sr", // sh is deprecated
|
||||||
"si", "si",
|
|
||||||
"sk", "sk",
|
|
||||||
"sl", "sl",
|
|
||||||
"sm", "sm",
|
|
||||||
"sn", "sn",
|
|
||||||
"so", "so",
|
|
||||||
"sq", "sq",
|
|
||||||
"sr", "sr",
|
|
||||||
"ss", "ss",
|
|
||||||
"st", "st",
|
|
||||||
"su", "fi",
|
"su", "fi",
|
||||||
"sv", "sv",
|
|
||||||
"sw", "sw",
|
|
||||||
"ta", "ta",
|
|
||||||
"te", "te",
|
|
||||||
"tg", "tg",
|
|
||||||
"th", "th",
|
|
||||||
"ti", "ti",
|
|
||||||
"tk", "tk",
|
|
||||||
"tl", "tl",
|
|
||||||
"tn", "tn",
|
|
||||||
"to", "to",
|
|
||||||
"tr", "tr",
|
|
||||||
"ts", "ts",
|
|
||||||
"tt", "tt",
|
|
||||||
"tw", "tw",
|
|
||||||
"ty", "ty",
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
"ua", "en", // used on Linux, not clear what it stands for
|
"ua", "en", // used on Linux, not clear what it stands for
|
||||||
#endif
|
|
||||||
"ug", "ug",
|
|
||||||
"uk", "uk",
|
|
||||||
"ur", "ur",
|
|
||||||
"uz", "uz",
|
|
||||||
"ve", "ve",
|
|
||||||
"vi", "vi",
|
|
||||||
"vo", "vo",
|
|
||||||
"wa", "wa",
|
|
||||||
"wo", "wo",
|
|
||||||
"xh", "xh",
|
|
||||||
"yi", "yi",
|
|
||||||
"yo", "yo",
|
|
||||||
"za", "za",
|
|
||||||
"zh", "zh",
|
|
||||||
"zu", "zu",
|
|
||||||
#ifdef __linux__
|
|
||||||
"catalan", "ca",
|
"catalan", "ca",
|
||||||
"croatian", "hr",
|
"croatian", "hr",
|
||||||
"czech", "cs",
|
"czech", "cs",
|
||||||
@ -375,493 +188,6 @@ static char *language_names[] = {
|
|||||||
"japanese", "ja",
|
"japanese", "ja",
|
||||||
"korean", "ko",
|
"korean", "ko",
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ISO 639.2 codes */
|
|
||||||
"aar", "aar",
|
|
||||||
"abk", "abk",
|
|
||||||
"ace", "ace",
|
|
||||||
"ach", "ach",
|
|
||||||
"ada", "ada",
|
|
||||||
"ady", "ady",
|
|
||||||
"afa", "afa",
|
|
||||||
"afh", "afh",
|
|
||||||
"afr", "afr",
|
|
||||||
"ain", "ain",
|
|
||||||
"aka", "aka",
|
|
||||||
"akk", "akk",
|
|
||||||
"alb", "alb",
|
|
||||||
"ale", "ale",
|
|
||||||
"alg", "alg",
|
|
||||||
"alt", "alt",
|
|
||||||
"amh", "amh",
|
|
||||||
"ang", "ang",
|
|
||||||
"anp", "anp",
|
|
||||||
"apa", "apa",
|
|
||||||
"ara", "ara",
|
|
||||||
"arc", "arc",
|
|
||||||
"arg", "arg",
|
|
||||||
"arm", "arm",
|
|
||||||
"arn", "arn",
|
|
||||||
"arp", "arp",
|
|
||||||
"art", "art",
|
|
||||||
"arw", "arw",
|
|
||||||
"asm", "asm",
|
|
||||||
"ast", "ast",
|
|
||||||
"ath", "ath",
|
|
||||||
"aus", "aus",
|
|
||||||
"ava", "ava",
|
|
||||||
"ave", "ave",
|
|
||||||
"awa", "awa",
|
|
||||||
"aym", "aym",
|
|
||||||
"aze", "aze",
|
|
||||||
"bad", "bad",
|
|
||||||
"bai", "bai",
|
|
||||||
"bak", "bak",
|
|
||||||
"bal", "bal",
|
|
||||||
"bam", "bam",
|
|
||||||
"ban", "ban",
|
|
||||||
"baq", "baq",
|
|
||||||
"bas", "bas",
|
|
||||||
"bat", "bat",
|
|
||||||
"bej", "bej",
|
|
||||||
"bel", "bel",
|
|
||||||
"bem", "bem",
|
|
||||||
"ben", "ben",
|
|
||||||
"ber", "ber",
|
|
||||||
"bho", "bho",
|
|
||||||
"bih", "bih",
|
|
||||||
"bik", "bik",
|
|
||||||
"bin", "bin",
|
|
||||||
"bis", "bis",
|
|
||||||
"bla", "bla",
|
|
||||||
"bnt", "bnt",
|
|
||||||
"bos", "bos",
|
|
||||||
"bra", "bra",
|
|
||||||
"bre", "bre",
|
|
||||||
"btk", "btk",
|
|
||||||
"bua", "bua",
|
|
||||||
"bug", "bug",
|
|
||||||
"bul", "bul",
|
|
||||||
"bur", "bur",
|
|
||||||
"byn", "byn",
|
|
||||||
"cad", "cad",
|
|
||||||
"cai", "cai",
|
|
||||||
"car", "car",
|
|
||||||
"cat", "cat",
|
|
||||||
"cau", "cau",
|
|
||||||
"ceb", "ceb",
|
|
||||||
"cel", "cel",
|
|
||||||
"cha", "cha",
|
|
||||||
"chb", "chb",
|
|
||||||
"che", "che",
|
|
||||||
"chg", "chg",
|
|
||||||
"chi", "chi",
|
|
||||||
"chk", "chk",
|
|
||||||
"chm", "chm",
|
|
||||||
"chn", "chn",
|
|
||||||
"cho", "cho",
|
|
||||||
"chp", "chp",
|
|
||||||
"chr", "chr",
|
|
||||||
"chu", "chu",
|
|
||||||
"chv", "chv",
|
|
||||||
"chy", "chy",
|
|
||||||
"cmc", "cmc",
|
|
||||||
"cop", "cop",
|
|
||||||
"cor", "cor",
|
|
||||||
"cos", "cos",
|
|
||||||
"cpe", "cpe",
|
|
||||||
"cpf", "cpf",
|
|
||||||
"cpp", "cpp",
|
|
||||||
"cre", "cre",
|
|
||||||
"crh", "crh",
|
|
||||||
"crp", "crp",
|
|
||||||
"csb", "csb",
|
|
||||||
"cus", "cus",
|
|
||||||
"cze", "cze",
|
|
||||||
"dak", "dak",
|
|
||||||
"dan", "dan",
|
|
||||||
"dar", "dar",
|
|
||||||
"day", "day",
|
|
||||||
"del", "del",
|
|
||||||
"den", "den",
|
|
||||||
"dgr", "dgr",
|
|
||||||
"din", "din",
|
|
||||||
"div", "div",
|
|
||||||
"doi", "doi",
|
|
||||||
"dra", "dra",
|
|
||||||
"dsb", "dsb",
|
|
||||||
"dua", "dua",
|
|
||||||
"dum", "dum",
|
|
||||||
"dut", "dut",
|
|
||||||
"dyu", "dyu",
|
|
||||||
"dzo", "dzo",
|
|
||||||
"efi", "efi",
|
|
||||||
"egy", "egy",
|
|
||||||
"eka", "eka",
|
|
||||||
"elx", "elx",
|
|
||||||
"eng", "eng",
|
|
||||||
"enm", "enm",
|
|
||||||
"epo", "epo",
|
|
||||||
"est", "est",
|
|
||||||
"ewe", "ewe",
|
|
||||||
"ewo", "ewo",
|
|
||||||
"fan", "fan",
|
|
||||||
"fao", "fao",
|
|
||||||
"fat", "fat",
|
|
||||||
"fij", "fij",
|
|
||||||
"fil", "fil",
|
|
||||||
"fin", "fin",
|
|
||||||
"fiu", "fiu",
|
|
||||||
"fon", "fon",
|
|
||||||
"fre", "fre",
|
|
||||||
"frm", "frm",
|
|
||||||
"fro", "fro",
|
|
||||||
"frr", "frr",
|
|
||||||
"frs", "frs",
|
|
||||||
"fry", "fry",
|
|
||||||
"ful", "ful",
|
|
||||||
"fur", "fur",
|
|
||||||
"gaa", "gaa",
|
|
||||||
"gay", "gay",
|
|
||||||
"gba", "gba",
|
|
||||||
"gem", "gem",
|
|
||||||
"geo", "geo",
|
|
||||||
"ger", "ger",
|
|
||||||
"gez", "gez",
|
|
||||||
"gil", "gil",
|
|
||||||
"gla", "gla",
|
|
||||||
"gle", "gle",
|
|
||||||
"glg", "glg",
|
|
||||||
"glv", "glv",
|
|
||||||
"gmh", "gmh",
|
|
||||||
"goh", "goh",
|
|
||||||
"gon", "gon",
|
|
||||||
"gor", "gor",
|
|
||||||
"got", "got",
|
|
||||||
"grb", "grb",
|
|
||||||
"grc", "grc",
|
|
||||||
"gre", "gre",
|
|
||||||
"grn", "grn",
|
|
||||||
"gsw", "gsw",
|
|
||||||
"guj", "guj",
|
|
||||||
"gwi", "gwi",
|
|
||||||
"hai", "hai",
|
|
||||||
"hat", "hat",
|
|
||||||
"hau", "hau",
|
|
||||||
"haw", "haw",
|
|
||||||
"heb", "heb",
|
|
||||||
"her", "her",
|
|
||||||
"hil", "hil",
|
|
||||||
"him", "him",
|
|
||||||
"hin", "hin",
|
|
||||||
"hit", "hit",
|
|
||||||
"hmn", "hmn",
|
|
||||||
"hmo", "hmo",
|
|
||||||
"hrv", "hrv",
|
|
||||||
"hsb", "hsb",
|
|
||||||
"hun", "hun",
|
|
||||||
"hup", "hup",
|
|
||||||
"iba", "iba",
|
|
||||||
"ibo", "ibo",
|
|
||||||
"ice", "ice",
|
|
||||||
"ido", "ido",
|
|
||||||
"iii", "iii",
|
|
||||||
"ijo", "ijo",
|
|
||||||
"iku", "iku",
|
|
||||||
"ile", "ile",
|
|
||||||
"ilo", "ilo",
|
|
||||||
"ina", "ina",
|
|
||||||
"inc", "inc",
|
|
||||||
"ind", "ind",
|
|
||||||
"ine", "ine",
|
|
||||||
"inh", "inh",
|
|
||||||
"ipk", "ipk",
|
|
||||||
"ira", "ira",
|
|
||||||
"iro", "iro",
|
|
||||||
"ita", "ita",
|
|
||||||
"jav", "jav",
|
|
||||||
"jbo", "jbo",
|
|
||||||
"jpn", "jpn",
|
|
||||||
"jpr", "jpr",
|
|
||||||
"jrb", "jrb",
|
|
||||||
"kaa", "kaa",
|
|
||||||
"kab", "kab",
|
|
||||||
"kac", "kac",
|
|
||||||
"kal", "kal",
|
|
||||||
"kam", "kam",
|
|
||||||
"kan", "kan",
|
|
||||||
"kar", "kar",
|
|
||||||
"kas", "kas",
|
|
||||||
"kau", "kau",
|
|
||||||
"kaw", "kaw",
|
|
||||||
"kaz", "kaz",
|
|
||||||
"kbd", "kbd",
|
|
||||||
"kha", "kha",
|
|
||||||
"khi", "khi",
|
|
||||||
"khm", "khm",
|
|
||||||
"kho", "kho",
|
|
||||||
"kik", "kik",
|
|
||||||
"kin", "kin",
|
|
||||||
"kir", "kir",
|
|
||||||
"kmb", "kmb",
|
|
||||||
"kok", "kok",
|
|
||||||
"kom", "kom",
|
|
||||||
"kon", "kon",
|
|
||||||
"kor", "kor",
|
|
||||||
"kos", "kos",
|
|
||||||
"kpe", "kpe",
|
|
||||||
"krc", "krc",
|
|
||||||
"krl", "krl",
|
|
||||||
"kro", "kro",
|
|
||||||
"kru", "kru",
|
|
||||||
"kua", "kua",
|
|
||||||
"kum", "kum",
|
|
||||||
"kur", "kur",
|
|
||||||
"kut", "kut",
|
|
||||||
"lad", "lad",
|
|
||||||
"lah", "lah",
|
|
||||||
"lam", "lam",
|
|
||||||
"lao", "lao",
|
|
||||||
"lat", "lat",
|
|
||||||
"lav", "lav",
|
|
||||||
"lez", "lez",
|
|
||||||
"lim", "lim",
|
|
||||||
"lin", "lin",
|
|
||||||
"lit", "lit",
|
|
||||||
"lol", "lol",
|
|
||||||
"loz", "loz",
|
|
||||||
"ltz", "ltz",
|
|
||||||
"lua", "lua",
|
|
||||||
"lub", "lub",
|
|
||||||
"lug", "lug",
|
|
||||||
"lui", "lui",
|
|
||||||
"lun", "lun",
|
|
||||||
"luo", "luo",
|
|
||||||
"lus", "lus",
|
|
||||||
"mac", "mac",
|
|
||||||
"mad", "mad",
|
|
||||||
"mag", "mag",
|
|
||||||
"mah", "mah",
|
|
||||||
"mai", "mai",
|
|
||||||
"mak", "mak",
|
|
||||||
"mal", "mal",
|
|
||||||
"man", "man",
|
|
||||||
"mao", "mao",
|
|
||||||
"map", "map",
|
|
||||||
"mar", "mar",
|
|
||||||
"mas", "mas",
|
|
||||||
"may", "may",
|
|
||||||
"mdf", "mdf",
|
|
||||||
"mdr", "mdr",
|
|
||||||
"men", "men",
|
|
||||||
"mga", "mga",
|
|
||||||
"mic", "mic",
|
|
||||||
"min", "min",
|
|
||||||
"mis", "mis",
|
|
||||||
"mkh", "mkh",
|
|
||||||
"mlg", "mlg",
|
|
||||||
"mlt", "mlt",
|
|
||||||
"mnc", "mnc",
|
|
||||||
"mni", "mni",
|
|
||||||
"mno", "mno",
|
|
||||||
"moh", "moh",
|
|
||||||
"mon", "mon",
|
|
||||||
"mos", "mos",
|
|
||||||
"mul", "mul",
|
|
||||||
"mun", "mun",
|
|
||||||
"mus", "mus",
|
|
||||||
"mwl", "mwl",
|
|
||||||
"mwr", "mwr",
|
|
||||||
"myn", "myn",
|
|
||||||
"myv", "myv",
|
|
||||||
"nah", "nah",
|
|
||||||
"nai", "nai",
|
|
||||||
"nap", "nap",
|
|
||||||
"nau", "nau",
|
|
||||||
"nav", "nav",
|
|
||||||
"nbl", "nbl",
|
|
||||||
"nde", "nde",
|
|
||||||
"ndo", "ndo",
|
|
||||||
"nds", "nds",
|
|
||||||
"nep", "nep",
|
|
||||||
"new", "new",
|
|
||||||
"nia", "nia",
|
|
||||||
"nic", "nic",
|
|
||||||
"niu", "niu",
|
|
||||||
"nno", "nno",
|
|
||||||
"nob", "nob",
|
|
||||||
"nog", "nog",
|
|
||||||
"non", "non",
|
|
||||||
"nor", "nor",
|
|
||||||
"nqo", "nqo",
|
|
||||||
"nso", "nso",
|
|
||||||
"nub", "nub",
|
|
||||||
"nwc", "nwc",
|
|
||||||
"nya", "nya",
|
|
||||||
"nym", "nym",
|
|
||||||
"nyn", "nyn",
|
|
||||||
"nyo", "nyo",
|
|
||||||
"nzi", "nzi",
|
|
||||||
"oci", "oci",
|
|
||||||
"oji", "oji",
|
|
||||||
"ori", "ori",
|
|
||||||
"orm", "orm",
|
|
||||||
"osa", "osa",
|
|
||||||
"oss", "oss",
|
|
||||||
"ota", "ota",
|
|
||||||
"oto", "oto",
|
|
||||||
"paa", "paa",
|
|
||||||
"pag", "pag",
|
|
||||||
"pal", "pal",
|
|
||||||
"pam", "pam",
|
|
||||||
"pan", "pan",
|
|
||||||
"pap", "pap",
|
|
||||||
"pau", "pau",
|
|
||||||
"peo", "peo",
|
|
||||||
"per", "per",
|
|
||||||
"phi", "phi",
|
|
||||||
"phn", "phn",
|
|
||||||
"pli", "pli",
|
|
||||||
"pol", "pol",
|
|
||||||
"pon", "pon",
|
|
||||||
"por", "por",
|
|
||||||
"pra", "pra",
|
|
||||||
"pro", "pro",
|
|
||||||
"pus", "pus",
|
|
||||||
"que", "que",
|
|
||||||
"raj", "raj",
|
|
||||||
"rap", "rap",
|
|
||||||
"rar", "rar",
|
|
||||||
"roa", "roa",
|
|
||||||
"roh", "roh",
|
|
||||||
"rom", "rom",
|
|
||||||
"rum", "rum",
|
|
||||||
"run", "run",
|
|
||||||
"rup", "rup",
|
|
||||||
"rus", "rus",
|
|
||||||
"sad", "sad",
|
|
||||||
"sag", "sag",
|
|
||||||
"sah", "sah",
|
|
||||||
"sai", "sai",
|
|
||||||
"sal", "sal",
|
|
||||||
"sam", "sam",
|
|
||||||
"san", "san",
|
|
||||||
"sas", "sas",
|
|
||||||
"sat", "sat",
|
|
||||||
"scn", "scn",
|
|
||||||
"sco", "sco",
|
|
||||||
"sel", "sel",
|
|
||||||
"sem", "sem",
|
|
||||||
"sga", "sga",
|
|
||||||
"sgn", "sgn",
|
|
||||||
"shn", "shn",
|
|
||||||
"sid", "sid",
|
|
||||||
"sin", "sin",
|
|
||||||
"sio", "sio",
|
|
||||||
"sit", "sit",
|
|
||||||
"sla", "sla",
|
|
||||||
"slo", "slo",
|
|
||||||
"slv", "slv",
|
|
||||||
"sma", "sma",
|
|
||||||
"sme", "sme",
|
|
||||||
"smi", "smi",
|
|
||||||
"smj", "smj",
|
|
||||||
"smn", "smn",
|
|
||||||
"smo", "smo",
|
|
||||||
"sms", "sms",
|
|
||||||
"sna", "sna",
|
|
||||||
"snd", "snd",
|
|
||||||
"snk", "snk",
|
|
||||||
"sog", "sog",
|
|
||||||
"som", "som",
|
|
||||||
"son", "son",
|
|
||||||
"sot", "sot",
|
|
||||||
"spa", "spa",
|
|
||||||
"srd", "srd",
|
|
||||||
"srn", "srn",
|
|
||||||
"srp", "srp",
|
|
||||||
"srr", "srr",
|
|
||||||
"ssa", "ssa",
|
|
||||||
"ssw", "ssw",
|
|
||||||
"suk", "suk",
|
|
||||||
"sun", "sun",
|
|
||||||
"sus", "sus",
|
|
||||||
"sux", "sux",
|
|
||||||
"swa", "swa",
|
|
||||||
"swe", "swe",
|
|
||||||
"syc", "syc",
|
|
||||||
"syr", "syr",
|
|
||||||
"tah", "tah",
|
|
||||||
"tai", "tai",
|
|
||||||
"tam", "tam",
|
|
||||||
"tat", "tat",
|
|
||||||
"tel", "tel",
|
|
||||||
"tem", "tem",
|
|
||||||
"ter", "ter",
|
|
||||||
"tet", "tet",
|
|
||||||
"tgk", "tgk",
|
|
||||||
"tgl", "tgl",
|
|
||||||
"tha", "tha",
|
|
||||||
"tib", "tib",
|
|
||||||
"tig", "tig",
|
|
||||||
"tir", "tir",
|
|
||||||
"tiv", "tiv",
|
|
||||||
"tkl", "tkl",
|
|
||||||
"tlh", "tlh",
|
|
||||||
"tli", "tli",
|
|
||||||
"tmh", "tmh",
|
|
||||||
"tog", "tog",
|
|
||||||
"ton", "ton",
|
|
||||||
"tpi", "tpi",
|
|
||||||
"tsi", "tsi",
|
|
||||||
"tsn", "tsn",
|
|
||||||
"tso", "tso",
|
|
||||||
"tuk", "tuk",
|
|
||||||
"tum", "tum",
|
|
||||||
"tup", "tup",
|
|
||||||
"tur", "tur",
|
|
||||||
"tut", "tut",
|
|
||||||
"tvl", "tvl",
|
|
||||||
"twi", "twi",
|
|
||||||
"tyv", "tyv",
|
|
||||||
"udm", "udm",
|
|
||||||
"uga", "uga",
|
|
||||||
"uig", "uig",
|
|
||||||
"ukr", "ukr",
|
|
||||||
"umb", "umb",
|
|
||||||
"und", "und",
|
|
||||||
"urd", "urd",
|
|
||||||
"uzb", "uzb",
|
|
||||||
"vai", "vai",
|
|
||||||
"ven", "ven",
|
|
||||||
"vie", "vie",
|
|
||||||
"vol", "vol",
|
|
||||||
"vot", "vot",
|
|
||||||
"wak", "wak",
|
|
||||||
"wal", "wal",
|
|
||||||
"war", "war",
|
|
||||||
"was", "was",
|
|
||||||
"wel", "wel",
|
|
||||||
"wen", "wen",
|
|
||||||
"wln", "wln",
|
|
||||||
"wol", "wol",
|
|
||||||
"xal", "xal",
|
|
||||||
"xho", "xho",
|
|
||||||
"yao", "yao",
|
|
||||||
"yap", "yap",
|
|
||||||
"yid", "yid",
|
|
||||||
"yor", "yor",
|
|
||||||
"ypk", "ypk",
|
|
||||||
"zap", "zap",
|
|
||||||
"zbl", "zbl",
|
|
||||||
"zen", "zen",
|
|
||||||
"zha", "zha",
|
|
||||||
"znd", "znd",
|
|
||||||
"zul", "zul",
|
|
||||||
"zun", "zun",
|
|
||||||
"zxx", "zxx",
|
|
||||||
"zza", "zza",
|
|
||||||
|
|
||||||
"",
|
"",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -882,253 +208,10 @@ static char *script_names[] = {
|
|||||||
* Linux/Solaris country string to ISO3166 string mapping table.
|
* Linux/Solaris country string to ISO3166 string mapping table.
|
||||||
*/
|
*/
|
||||||
static char *country_names[] = {
|
static char *country_names[] = {
|
||||||
"AD", "AD",
|
|
||||||
"AE", "AE",
|
|
||||||
"AF", "AF",
|
|
||||||
"AG", "AG",
|
|
||||||
"AI", "AI",
|
|
||||||
"AL", "AL",
|
|
||||||
"AM", "AM",
|
|
||||||
"AN", "AN",
|
|
||||||
"AO", "AO",
|
|
||||||
"AQ", "AQ",
|
|
||||||
"AR", "AR",
|
|
||||||
"AS", "AS",
|
|
||||||
"AT", "AT",
|
|
||||||
"AU", "AU",
|
|
||||||
"AW", "AW",
|
|
||||||
"AX", "AX",
|
|
||||||
"AZ", "AZ",
|
|
||||||
"BA", "BA",
|
|
||||||
"BB", "BB",
|
|
||||||
"BD", "BD",
|
|
||||||
"BE", "BE",
|
|
||||||
"BF", "BF",
|
|
||||||
"BG", "BG",
|
|
||||||
"BH", "BH",
|
|
||||||
"BI", "BI",
|
|
||||||
"BJ", "BJ",
|
|
||||||
"BM", "BM",
|
|
||||||
"BN", "BN",
|
|
||||||
"BO", "BO",
|
|
||||||
"BR", "BR",
|
|
||||||
"BS", "BS",
|
|
||||||
"BT", "BT",
|
|
||||||
"BV", "BV",
|
|
||||||
"BW", "BW",
|
|
||||||
"BY", "BY",
|
|
||||||
"BZ", "BZ",
|
|
||||||
"CA", "CA",
|
|
||||||
"CC", "CC",
|
|
||||||
"CD", "CD",
|
|
||||||
"CF", "CF",
|
|
||||||
"CG", "CG",
|
|
||||||
"CH", "CH",
|
|
||||||
"CI", "CI",
|
|
||||||
"CK", "CK",
|
|
||||||
"CL", "CL",
|
|
||||||
"CM", "CM",
|
|
||||||
"CN", "CN",
|
|
||||||
"CO", "CO",
|
|
||||||
"CR", "CR",
|
|
||||||
"CS", "CS",
|
|
||||||
"CU", "CU",
|
|
||||||
"CV", "CV",
|
|
||||||
"CX", "CX",
|
|
||||||
"CY", "CY",
|
|
||||||
"CZ", "CZ",
|
|
||||||
"DE", "DE",
|
|
||||||
"DJ", "DJ",
|
|
||||||
"DK", "DK",
|
|
||||||
"DM", "DM",
|
|
||||||
"DO", "DO",
|
|
||||||
"DZ", "DZ",
|
|
||||||
"EC", "EC",
|
|
||||||
"EE", "EE",
|
|
||||||
"EG", "EG",
|
|
||||||
"EH", "EH",
|
|
||||||
"ER", "ER",
|
|
||||||
"ES", "ES",
|
|
||||||
"ET", "ET",
|
|
||||||
"FI", "FI",
|
|
||||||
"FJ", "FJ",
|
|
||||||
"FK", "FK",
|
|
||||||
"FM", "FM",
|
|
||||||
"FO", "FO",
|
|
||||||
"FR", "FR",
|
|
||||||
"GA", "GA",
|
|
||||||
"GB", "GB",
|
|
||||||
"GD", "GD",
|
|
||||||
"GE", "GE",
|
|
||||||
"GF", "GF",
|
|
||||||
"GH", "GH",
|
|
||||||
"GI", "GI",
|
|
||||||
"GL", "GL",
|
|
||||||
"GM", "GM",
|
|
||||||
"GN", "GN",
|
|
||||||
"GP", "GP",
|
|
||||||
"GQ", "GQ",
|
|
||||||
"GR", "GR",
|
|
||||||
"GS", "GS",
|
|
||||||
"GT", "GT",
|
|
||||||
"GU", "GU",
|
|
||||||
"GW", "GW",
|
|
||||||
"GY", "GY",
|
|
||||||
"HK", "HK",
|
|
||||||
"HM", "HM",
|
|
||||||
"HN", "HN",
|
|
||||||
"HR", "HR",
|
|
||||||
"HT", "HT",
|
|
||||||
"HU", "HU",
|
|
||||||
"ID", "ID",
|
|
||||||
"IE", "IE",
|
|
||||||
"IL", "IL",
|
|
||||||
"IN", "IN",
|
|
||||||
"IO", "IO",
|
|
||||||
"IQ", "IQ",
|
|
||||||
"IR", "IR",
|
|
||||||
"IS", "IS",
|
|
||||||
"IT", "IT",
|
|
||||||
"JM", "JM",
|
|
||||||
"JO", "JO",
|
|
||||||
"JP", "JP",
|
|
||||||
"KE", "KE",
|
|
||||||
"KG", "KG",
|
|
||||||
"KH", "KH",
|
|
||||||
"KI", "KI",
|
|
||||||
"KM", "KM",
|
|
||||||
"KN", "KN",
|
|
||||||
"KP", "KP",
|
|
||||||
"KR", "KR",
|
|
||||||
"KW", "KW",
|
|
||||||
"KY", "KY",
|
|
||||||
"KZ", "KZ",
|
|
||||||
"LA", "LA",
|
|
||||||
"LB", "LB",
|
|
||||||
"LC", "LC",
|
|
||||||
"LI", "LI",
|
|
||||||
"LK", "LK",
|
|
||||||
"LR", "LR",
|
|
||||||
"LS", "LS",
|
|
||||||
"LT", "LT",
|
|
||||||
"LU", "LU",
|
|
||||||
"LV", "LV",
|
|
||||||
"LY", "LY",
|
|
||||||
"MA", "MA",
|
|
||||||
"MC", "MC",
|
|
||||||
"MD", "MD",
|
|
||||||
"ME", "ME",
|
|
||||||
"MG", "MG",
|
|
||||||
"MH", "MH",
|
|
||||||
"MK", "MK",
|
|
||||||
"ML", "ML",
|
|
||||||
"MM", "MM",
|
|
||||||
"MN", "MN",
|
|
||||||
"MO", "MO",
|
|
||||||
"MP", "MP",
|
|
||||||
"MQ", "MQ",
|
|
||||||
"MR", "MR",
|
|
||||||
"MS", "MS",
|
|
||||||
"MT", "MT",
|
|
||||||
"MU", "MU",
|
|
||||||
"MV", "MV",
|
|
||||||
"MW", "MW",
|
|
||||||
"MX", "MX",
|
|
||||||
"MY", "MY",
|
|
||||||
"MZ", "MZ",
|
|
||||||
"NA", "NA",
|
|
||||||
"NC", "NC",
|
|
||||||
"NE", "NE",
|
|
||||||
"NF", "NF",
|
|
||||||
"NG", "NG",
|
|
||||||
"NI", "NI",
|
|
||||||
"NL", "NL",
|
|
||||||
"NO", "NO",
|
|
||||||
"NP", "NP",
|
|
||||||
"NR", "NR",
|
|
||||||
"NU", "NU",
|
|
||||||
"NZ", "NZ",
|
|
||||||
"OM", "OM",
|
|
||||||
"PA", "PA",
|
|
||||||
"PE", "PE",
|
|
||||||
"PF", "PF",
|
|
||||||
"PG", "PG",
|
|
||||||
"PH", "PH",
|
|
||||||
"PK", "PK",
|
|
||||||
"PL", "PL",
|
|
||||||
"PM", "PM",
|
|
||||||
"PN", "PN",
|
|
||||||
"PR", "PR",
|
|
||||||
"PS", "PS",
|
|
||||||
"PT", "PT",
|
|
||||||
"PW", "PW",
|
|
||||||
"PY", "PY",
|
|
||||||
"QA", "QA",
|
|
||||||
"RE", "RE",
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
"RN", "US", // used on Linux, not clear what it stands for
|
"RN", "US", // used on Linux, not clear what it stands for
|
||||||
#endif
|
#endif
|
||||||
"RO", "RO",
|
|
||||||
"RS", "RS",
|
|
||||||
"RU", "RU",
|
|
||||||
"RW", "RW",
|
|
||||||
"SA", "SA",
|
|
||||||
"SB", "SB",
|
|
||||||
"SC", "SC",
|
|
||||||
"SD", "SD",
|
|
||||||
"SE", "SE",
|
|
||||||
"SG", "SG",
|
|
||||||
"SH", "SH",
|
|
||||||
"SI", "SI",
|
|
||||||
"SJ", "SJ",
|
|
||||||
"SK", "SK",
|
|
||||||
"SL", "SL",
|
|
||||||
"SM", "SM",
|
|
||||||
"SN", "SN",
|
|
||||||
"SO", "SO",
|
|
||||||
"SR", "SR",
|
|
||||||
"ST", "ST",
|
|
||||||
"SV", "SV",
|
|
||||||
"SY", "SY",
|
|
||||||
"SZ", "SZ",
|
|
||||||
"TC", "TC",
|
|
||||||
"TD", "TD",
|
|
||||||
"TF", "TF",
|
|
||||||
"TG", "TG",
|
|
||||||
"TH", "TH",
|
|
||||||
"TJ", "TJ",
|
|
||||||
"TK", "TK",
|
|
||||||
"TL", "TL",
|
|
||||||
"TM", "TM",
|
|
||||||
"TN", "TN",
|
|
||||||
"TO", "TO",
|
|
||||||
"TR", "TR",
|
|
||||||
"TT", "TT",
|
|
||||||
"TV", "TV",
|
|
||||||
"TW", "TW",
|
|
||||||
"TZ", "TZ",
|
|
||||||
"UA", "UA",
|
|
||||||
"UG", "UG",
|
|
||||||
"UK", "GB",
|
|
||||||
"UM", "UM",
|
|
||||||
"US", "US",
|
|
||||||
"UY", "UY",
|
|
||||||
"UZ", "UZ",
|
|
||||||
"VA", "VA",
|
|
||||||
"VC", "VC",
|
|
||||||
"VE", "VE",
|
|
||||||
"VG", "VG",
|
|
||||||
"VI", "VI",
|
|
||||||
"VN", "VN",
|
|
||||||
"VU", "VU",
|
|
||||||
"WF", "WF",
|
|
||||||
"WS", "WS",
|
|
||||||
"YE", "YE",
|
|
||||||
"YT", "YT",
|
|
||||||
"YU", "CS", // YU has been removed from ISO 3166
|
"YU", "CS", // YU has been removed from ISO 3166
|
||||||
"ZA", "ZA",
|
|
||||||
"ZM", "ZM",
|
|
||||||
"ZW", "ZW",
|
|
||||||
"",
|
"",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -607,6 +607,7 @@ gboolean gtk2_load()
|
|||||||
fp_gtk_tree_view_new = dl_symbol("gtk_tree_view_new");
|
fp_gtk_tree_view_new = dl_symbol("gtk_tree_view_new");
|
||||||
fp_gtk_viewport_new = dl_symbol("gtk_viewport_new");
|
fp_gtk_viewport_new = dl_symbol("gtk_viewport_new");
|
||||||
fp_gtk_window_new = dl_symbol("gtk_window_new");
|
fp_gtk_window_new = dl_symbol("gtk_window_new");
|
||||||
|
fp_gtk_window_present = dl_symbol("gtk_window_present");
|
||||||
fp_gtk_dialog_new = dl_symbol("gtk_dialog_new");
|
fp_gtk_dialog_new = dl_symbol("gtk_dialog_new");
|
||||||
fp_gtk_frame_new = dl_symbol("gtk_frame_new");
|
fp_gtk_frame_new = dl_symbol("gtk_frame_new");
|
||||||
|
|
||||||
|
@ -749,6 +749,7 @@ int (*fp_gdk_pixbuf_get_rowstride)(const GdkPixbuf *pixbuf);
|
|||||||
int (*fp_gdk_pixbuf_get_width)(const GdkPixbuf *pixbuf);
|
int (*fp_gdk_pixbuf_get_width)(const GdkPixbuf *pixbuf);
|
||||||
GdkPixbuf *(*fp_gdk_pixbuf_new_from_file)(const char *filename, GError **error);
|
GdkPixbuf *(*fp_gdk_pixbuf_new_from_file)(const char *filename, GError **error);
|
||||||
void (*fp_gtk_widget_destroy)(GtkWidget *widget);
|
void (*fp_gtk_widget_destroy)(GtkWidget *widget);
|
||||||
|
void (*fp_gtk_window_present)(GtkWindow *window);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -80,6 +80,28 @@ JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_quit
|
|||||||
quit(env, jpeer, FALSE);
|
quit(env, jpeer, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: sun_awt_X11_GtkFileDialogPeer
|
||||||
|
* Method: toFront
|
||||||
|
* Signature: ()V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_toFront
|
||||||
|
(JNIEnv * env, jobject jpeer)
|
||||||
|
{
|
||||||
|
GtkWidget * dialog;
|
||||||
|
|
||||||
|
fp_gdk_threads_enter();
|
||||||
|
|
||||||
|
dialog = (GtkWidget*)jlong_to_ptr(
|
||||||
|
(*env)->GetLongField(env, jpeer, widgetFieldID));
|
||||||
|
|
||||||
|
if (dialog != NULL) {
|
||||||
|
fp_gtk_window_present((GtkWindow*)dialog);
|
||||||
|
}
|
||||||
|
|
||||||
|
fp_gdk_threads_leave();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a GSList to an array of filenames (without the parent folder)
|
* Convert a GSList to an array of filenames (without the parent folder)
|
||||||
*/
|
*/
|
||||||
|
@ -33,6 +33,14 @@ JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_run
|
|||||||
JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_quit
|
JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_quit
|
||||||
(JNIEnv *, jobject);
|
(JNIEnv *, jobject);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Class: sun_awt_X11_GtkFileDialogPeer
|
||||||
|
* Method: toFront
|
||||||
|
* Signature: ()V
|
||||||
|
*/
|
||||||
|
JNIEXPORT void JNICALL Java_sun_awt_X11_GtkFileDialogPeer_toFront
|
||||||
|
(JNIEnv *, jobject);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -617,18 +617,18 @@ JNIEXPORT void JNICALL Java_sun_nio_ch_SctpNet_setPrimAddrOption0
|
|||||||
* Signature: (IILjava/net/InetAddress;I)V
|
* Signature: (IILjava/net/InetAddress;I)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_sun_nio_ch_SctpNet_setPeerPrimAddrOption0
|
JNIEXPORT void JNICALL Java_sun_nio_ch_SctpNet_setPeerPrimAddrOption0
|
||||||
(JNIEnv *env, jclass klass, jint fd, jint assocId, jobject iaObj, jint port) {
|
(JNIEnv *env, jclass klass, jint fd, jint assocId,
|
||||||
|
jobject iaObj, jint port, jboolean preferIPv6) {
|
||||||
struct sctp_setpeerprim prim;
|
struct sctp_setpeerprim prim;
|
||||||
struct sockaddr_storage ss;
|
struct sockaddr* sap = (struct sockaddr*)&prim.sspp_addr;
|
||||||
int ss_len = sizeof(ss);
|
int sap_len;
|
||||||
|
|
||||||
if (NET_InetAddressToSockaddr(env, iaObj, port, (struct sockaddr *)&ss,
|
if (NET_InetAddressToSockaddr(env, iaObj, port, sap,
|
||||||
&ss_len, JNI_TRUE) != 0) {
|
&sap_len, preferIPv6) != 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
prim.sspp_assoc_id = assocId;
|
prim.sspp_assoc_id = assocId;
|
||||||
prim.sspp_addr = ss;
|
|
||||||
|
|
||||||
if (setsockopt(fd, IPPROTO_SCTP, SCTP_SET_PEER_PRIMARY_ADDR, &prim,
|
if (setsockopt(fd, IPPROTO_SCTP, SCTP_SET_PEER_PRIMARY_ADDR, &prim,
|
||||||
sizeof(prim)) < 0) {
|
sizeof(prim)) < 0) {
|
||||||
|
@ -70,7 +70,11 @@ static void EnsureJreInstallation(const char *jrepath);
|
|||||||
*/
|
*/
|
||||||
#undef ENABLE_AWT_PRELOAD
|
#undef ENABLE_AWT_PRELOAD
|
||||||
#ifndef JAVA_ARGS /* turn off AWT preloading for javac, jar, etc */
|
#ifndef JAVA_ARGS /* turn off AWT preloading for javac, jar, etc */
|
||||||
#define ENABLE_AWT_PRELOAD
|
/* CR6999872: fastdebug crashes if awt library is loaded before JVM is
|
||||||
|
* initialized*/
|
||||||
|
#if !defined(DEBUG)
|
||||||
|
#define ENABLE_AWT_PRELOAD
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_AWT_PRELOAD
|
#ifdef ENABLE_AWT_PRELOAD
|
||||||
|
@ -79,10 +79,50 @@ class WFramePeer extends WWindowPeer implements FramePeer {
|
|||||||
if (b == null) {
|
if (b == null) {
|
||||||
clearMaximizedBounds();
|
clearMaximizedBounds();
|
||||||
} else {
|
} else {
|
||||||
setMaximizedBounds(b.x, b.y, b.width, b.height);
|
Rectangle adjBounds = (Rectangle)b.clone();
|
||||||
|
adjustMaximizedBounds(adjBounds);
|
||||||
|
setMaximizedBounds(adjBounds.x, adjBounds.y, adjBounds.width, adjBounds.height);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The incoming bounds describe the maximized size and position of the
|
||||||
|
* window on the monitor that displays the window. But the window manager
|
||||||
|
* expects that the bounds are based on the size and position of the
|
||||||
|
* primary monitor, even if the window ultimately maximizes onto a
|
||||||
|
* secondary monitor. And the window manager adjusts these values to
|
||||||
|
* compensate for differences between the primary monitor and the monitor
|
||||||
|
* that displays the window.
|
||||||
|
* The method translates the incoming bounds to the values acceptable
|
||||||
|
* by the window manager. For more details, please refer to 6699851.
|
||||||
|
*/
|
||||||
|
private void adjustMaximizedBounds(Rectangle b) {
|
||||||
|
GraphicsConfiguration currentDevGC = getGraphicsConfiguration();
|
||||||
|
|
||||||
|
GraphicsDevice primaryDev = GraphicsEnvironment
|
||||||
|
.getLocalGraphicsEnvironment().getDefaultScreenDevice();
|
||||||
|
GraphicsConfiguration primaryDevGC = primaryDev.getDefaultConfiguration();
|
||||||
|
|
||||||
|
if (currentDevGC != null && currentDevGC != primaryDevGC) {
|
||||||
|
Rectangle currentDevBounds = currentDevGC.getBounds();
|
||||||
|
Rectangle primaryDevBounds = primaryDevGC.getBounds();
|
||||||
|
|
||||||
|
b.width -= (currentDevBounds.width - primaryDevBounds.width);
|
||||||
|
b.height -= (currentDevBounds.height - primaryDevBounds.height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateGraphicsData(GraphicsConfiguration gc) {
|
||||||
|
boolean result = super.updateGraphicsData(gc);
|
||||||
|
Rectangle bounds = AWTAccessor.getFrameAccessor().
|
||||||
|
getMaximizedBounds((Frame)target);
|
||||||
|
if (bounds != null) {
|
||||||
|
setMaximizedBounds(bounds);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean isTargetUndecorated() {
|
boolean isTargetUndecorated() {
|
||||||
return ((Frame)target).isUndecorated();
|
return ((Frame)target).isUndecorated();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -53,6 +53,7 @@ class NativeSeedGenerator extends SeedGenerator {
|
|||||||
*/
|
*/
|
||||||
private static native boolean nativeGenerateSeed(byte[] result);
|
private static native boolean nativeGenerateSeed(byte[] result);
|
||||||
|
|
||||||
|
@Override
|
||||||
void getSeedBytes(byte[] result) {
|
void getSeedBytes(byte[] result) {
|
||||||
// fill array as a side effect
|
// fill array as a side effect
|
||||||
if (nativeGenerateSeed(result) == false) {
|
if (nativeGenerateSeed(result) == false) {
|
||||||
@ -62,9 +63,4 @@ class NativeSeedGenerator extends SeedGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte getSeedByte() {
|
|
||||||
byte[] b = new byte[1];
|
|
||||||
getSeedBytes(b);
|
|
||||||
return b[0];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -969,12 +969,15 @@ void D3DInitializer::InitImpl()
|
|||||||
}
|
}
|
||||||
D3DPipelineManager *pMgr = D3DPipelineManager::CreateInstance();
|
D3DPipelineManager *pMgr = D3DPipelineManager::CreateInstance();
|
||||||
if (pMgr != NULL) {
|
if (pMgr != NULL) {
|
||||||
UINT adapterCount = pMgr->adapterCount;
|
// init adapters if we are preloading
|
||||||
|
if (AwtToolkit::GetInstance().GetPreloadThread().OnPreloadThread()) {
|
||||||
|
UINT adapterCount = pMgr->adapterCount;
|
||||||
|
|
||||||
pAdapterIniters = new D3DAdapterInitializer[adapterCount];
|
pAdapterIniters = new D3DAdapterInitializer[adapterCount];
|
||||||
for (UINT i=0; i<adapterCount; i++) {
|
for (UINT i=0; i<adapterCount; i++) {
|
||||||
pAdapterIniters[i].setAdapter(i);
|
pAdapterIniters[i].setAdapter(i);
|
||||||
AwtToolkit::GetInstance().GetPreloadThread().AddAction(&pAdapterIniters[i]);
|
AwtToolkit::GetInstance().GetPreloadThread().AddAction(&pAdapterIniters[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,7 @@ static const UINT MINIMUM_NUMBER_OF_VISIBLE_ITEMS = 8;
|
|||||||
AwtChoice::AwtChoice() {
|
AwtChoice::AwtChoice() {
|
||||||
m_hList = NULL;
|
m_hList = NULL;
|
||||||
m_listDefWindowProc = NULL;
|
m_listDefWindowProc = NULL;
|
||||||
|
m_selectedItem = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
LPCTSTR AwtChoice::GetClassName() {
|
LPCTSTR AwtChoice::GetClassName() {
|
||||||
@ -437,9 +438,10 @@ LRESULT CALLBACK AwtChoice::ListWindowProc(HWND hwnd, UINT message,
|
|||||||
MsgRouting AwtChoice::WmNotify(UINT notifyCode)
|
MsgRouting AwtChoice::WmNotify(UINT notifyCode)
|
||||||
{
|
{
|
||||||
if (notifyCode == CBN_SELCHANGE) {
|
if (notifyCode == CBN_SELCHANGE) {
|
||||||
int itemSelect = (int)SendMessage(CB_GETCURSEL);
|
int selectedItem = (int)SendMessage(CB_GETCURSEL);
|
||||||
if (itemSelect != CB_ERR){
|
if (selectedItem != CB_ERR && m_selectedItem != selectedItem){
|
||||||
DoCallback("handleAction", "(I)V", itemSelect);
|
m_selectedItem = selectedItem;
|
||||||
|
DoCallback("handleAction", "(I)V", selectedItem);
|
||||||
}
|
}
|
||||||
} else if (notifyCode == CBN_DROPDOWN) {
|
} else if (notifyCode == CBN_DROPDOWN) {
|
||||||
|
|
||||||
|
@ -94,6 +94,7 @@ private:
|
|||||||
static BOOL sm_isMouseMoveInList;
|
static BOOL sm_isMouseMoveInList;
|
||||||
HWND m_hList;
|
HWND m_hList;
|
||||||
WNDPROC m_listDefWindowProc;
|
WNDPROC m_listDefWindowProc;
|
||||||
|
int m_selectedItem;
|
||||||
static LRESULT CALLBACK ListWindowProc(HWND hwnd, UINT message,
|
static LRESULT CALLBACK ListWindowProc(HWND hwnd, UINT message,
|
||||||
WPARAM wParam, LPARAM lParam);
|
WPARAM wParam, LPARAM lParam);
|
||||||
};
|
};
|
||||||
|
@ -1904,6 +1904,11 @@ bool AwtToolkit::PreloadThread::InvokeAndTerminate(void(_cdecl *fn)(void *), voi
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AwtToolkit::PreloadThread::OnPreloadThread()
|
||||||
|
{
|
||||||
|
return GetThreadId() == ::GetCurrentThreadId();
|
||||||
|
}
|
||||||
|
|
||||||
/*static*/
|
/*static*/
|
||||||
unsigned WINAPI AwtToolkit::PreloadThread::StaticThreadProc(void *param)
|
unsigned WINAPI AwtToolkit::PreloadThread::StaticThreadProc(void *param)
|
||||||
{
|
{
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user