Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
ed853b07
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
ed853b07
编写于
1月 19, 2011
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
3814c7cc
1b104d1a
变更
87
展开全部
隐藏空白更改
内联
并排
Showing
87 changed file
with
5093 addition
and
1421 deletion
+5093
-1421
.hgtags
.hgtags
+2
-0
make/sun/Makefile
make/sun/Makefile
+9
-1
make/sun/awt/Makefile
make/sun/awt/Makefile
+5
-1
make/sun/awt/make.depend
make/sun/awt/make.depend
+3
-3
make/sun/awt/mapfile-vers
make/sun/awt/mapfile-vers
+2
-0
make/sun/awt/mapfile-vers-linux
make/sun/awt/mapfile-vers-linux
+2
-0
make/tools/src/build/tools/javazic/Zoneinfo.java
make/tools/src/build/tools/javazic/Zoneinfo.java
+1
-0
src/share/classes/java/awt/SplashScreen.java
src/share/classes/java/awt/SplashScreen.java
+51
-25
src/share/classes/java/awt/font/NumericShaper.java
src/share/classes/java/awt/font/NumericShaper.java
+44
-13
src/share/classes/java/awt/image/IndexColorModel.java
src/share/classes/java/awt/image/IndexColorModel.java
+1
-1
src/share/classes/java/awt/image/SampleModel.java
src/share/classes/java/awt/image/SampleModel.java
+1
-1
src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java
.../classes/java/awt/image/SinglePixelPackedSampleModel.java
+10
-24
src/share/classes/java/text/MessageFormat.java
src/share/classes/java/text/MessageFormat.java
+320
-245
src/share/classes/java/text/SimpleDateFormat.java
src/share/classes/java/text/SimpleDateFormat.java
+141
-219
src/share/classes/java/util/Locale.java
src/share/classes/java/util/Locale.java
+7
-2
src/share/classes/javax/print/attribute/standard/DialogTypeSelection.java
...s/javax/print/attribute/standard/DialogTypeSelection.java
+2
-0
src/share/classes/javax/sound/midi/MidiSystem.java
src/share/classes/javax/sound/midi/MidiSystem.java
+1
-1
src/share/classes/javax/swing/DefaultDesktopManager.java
src/share/classes/javax/swing/DefaultDesktopManager.java
+24
-2
src/share/classes/javax/swing/JSlider.java
src/share/classes/javax/swing/JSlider.java
+2
-1
src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java
src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java
+8
-0
src/share/classes/sun/awt/FontConfiguration.java
src/share/classes/sun/awt/FontConfiguration.java
+63
-68
src/share/classes/sun/awt/SunToolkit.java
src/share/classes/sun/awt/SunToolkit.java
+1
-31
src/share/classes/sun/dc/DuctusRenderingEngine.java
src/share/classes/sun/dc/DuctusRenderingEngine.java
+82
-0
src/share/classes/sun/font/FileFontStrike.java
src/share/classes/sun/font/FileFontStrike.java
+11
-10
src/share/classes/sun/font/Font2D.java
src/share/classes/sun/font/Font2D.java
+15
-1
src/share/classes/sun/java2d/SurfaceData.java
src/share/classes/sun/java2d/SurfaceData.java
+61
-28
src/share/classes/sun/java2d/loops/CompositeType.java
src/share/classes/sun/java2d/loops/CompositeType.java
+33
-6
src/share/classes/sun/java2d/loops/MaskFill.java
src/share/classes/sun/java2d/loops/MaskFill.java
+66
-0
src/share/classes/sun/java2d/pipe/AAShapePipe.java
src/share/classes/sun/java2d/pipe/AAShapePipe.java
+65
-3
src/share/classes/sun/java2d/pipe/AlphaColorPipe.java
src/share/classes/sun/java2d/pipe/AlphaColorPipe.java
+20
-1
src/share/classes/sun/java2d/pipe/RenderingEngine.java
src/share/classes/sun/java2d/pipe/RenderingEngine.java
+85
-0
src/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java
...hare/classes/sun/java2d/pisces/PiscesRenderingEngine.java
+63
-0
src/share/native/sun/awt/image/awt_parseImage.c
src/share/native/sun/awt/image/awt_parseImage.c
+12
-1
src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h
...share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h
+9
-18
src/share/native/sun/java2d/loops/DrawParallelogram.c
src/share/native/sun/java2d/loops/DrawParallelogram.c
+5
-42
src/share/native/sun/java2d/loops/FillParallelogram.c
src/share/native/sun/java2d/loops/FillParallelogram.c
+5
-37
src/share/native/sun/java2d/loops/MaskFill.c
src/share/native/sun/java2d/loops/MaskFill.c
+965
-0
src/share/native/sun/java2d/loops/ParallelogramUtils.h
src/share/native/sun/java2d/loops/ParallelogramUtils.h
+83
-0
src/share/native/sun/java2d/pipe/BufferedMaskBlit.c
src/share/native/sun/java2d/pipe/BufferedMaskBlit.c
+3
-2
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c
...m/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c
+32
-30
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiIn.c
...ve/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiIn.c
+33
-1
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c
...com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c
+2
-2
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c
...ative/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c
+7
-49
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.h
.../com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.h
+2
-1
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_Ports.c
...ive/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_Ports.c
+2
-2
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
+4
-2
src/solaris/native/sun/java2d/loops/vis_IntArgbPre_Mask.c
src/solaris/native/sun/java2d/loops/vis_IntArgbPre_Mask.c
+8
-4
src/solaris/native/sun/java2d/loops/vis_SrcMaskFill.c
src/solaris/native/sun/java2d/loops/vis_SrcMaskFill.c
+20
-10
src/solaris/native/sun/xawt/XToolkit.c
src/solaris/native/sun/xawt/XToolkit.c
+7
-3
src/windows/classes/sun/awt/windows/WComponentPeer.java
src/windows/classes/sun/awt/windows/WComponentPeer.java
+21
-0
src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
+44
-1
src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java
.../classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java
+3
-1
src/windows/lib/tzmappings
src/windows/lib/tzmappings
+3
-2
src/windows/native/sun/windows/Devices.h
src/windows/native/sun/windows/Devices.h
+1
-1
src/windows/native/sun/windows/awt.h
src/windows/native/sun/windows/awt.h
+1
-1
src/windows/native/sun/windows/awt_Debug.cpp
src/windows/native/sun/windows/awt_Debug.cpp
+10
-1
src/windows/native/sun/windows/awt_Debug.h
src/windows/native/sun/windows/awt_Debug.h
+4
-1
src/windows/native/sun/windows/awt_DesktopProperties.cpp
src/windows/native/sun/windows/awt_DesktopProperties.cpp
+9
-9
src/windows/native/sun/windows/awt_Dialog.cpp
src/windows/native/sun/windows/awt_Dialog.cpp
+32
-32
src/windows/native/sun/windows/awt_Dialog.h
src/windows/native/sun/windows/awt_Dialog.h
+2
-2
src/windows/native/sun/windows/awt_TextArea.h
src/windows/native/sun/windows/awt_TextArea.h
+27
-30
src/windows/native/sun/windows/awt_Toolkit.h
src/windows/native/sun/windows/awt_Toolkit.h
+1
-1
test/com/sun/awt/Translucency/WindowOpacity.java
test/com/sun/awt/Translucency/WindowOpacity.java
+1
-0
test/java/awt/FontClass/FontPrivilege.java
test/java/awt/FontClass/FontPrivilege.java
+3
-1
test/java/awt/Graphics2D/DrawString/LCDTextSrcEa.java
test/java/awt/Graphics2D/DrawString/LCDTextSrcEa.java
+93
-0
test/java/awt/Graphics2D/RenderClipTest/6766342.tests
test/java/awt/Graphics2D/RenderClipTest/6766342.tests
+3
-0
test/java/awt/Graphics2D/RenderClipTest/RenderClipTest.java
test/java/awt/Graphics2D/RenderClipTest/RenderClipTest.java
+1634
-0
test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html
...t/Insets/WindowWithWarningTest/WindowWithWarningTest.html
+0
-20
test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java
...t/Insets/WindowWithWarningTest/WindowWithWarningTest.java
+0
-315
test/java/awt/PrintJob/Text/StringWidth.java
test/java/awt/PrintJob/Text/StringWidth.java
+0
-1
test/java/awt/image/IncorrectSampleMaskTest.java
test/java/awt/image/IncorrectSampleMaskTest.java
+113
-0
test/java/text/Format/DateFormat/ISO8601ZoneTest.java
test/java/text/Format/DateFormat/ISO8601ZoneTest.java
+59
-44
test/java/text/Format/MessageFormat/Bug7003643.java
test/java/text/Format/MessageFormat/Bug7003643.java
+73
-0
test/java/util/Locale/LocaleTest.java
test/java/util/Locale/LocaleTest.java
+19
-7
test/java/util/PluggableLocale/DateFormatProviderTest.java
test/java/util/PluggableLocale/DateFormatProviderTest.java
+46
-1
test/java/util/PluggableLocale/DateFormatProviderTest.sh
test/java/util/PluggableLocale/DateFormatProviderTest.sh
+2
-2
test/java/util/PluggableLocale/NumberFormatProviderTest.java
test/java/util/PluggableLocale/NumberFormatProviderTest.java
+47
-17
test/java/util/PluggableLocale/NumberFormatProviderTest.sh
test/java/util/PluggableLocale/NumberFormatProviderTest.sh
+2
-2
test/java/util/PluggableLocale/fooprovider.jar
test/java/util/PluggableLocale/fooprovider.jar
+0
-0
test/java/util/PluggableLocale/providersrc/DateFormatProviderImpl.java
...l/PluggableLocale/providersrc/DateFormatProviderImpl.java
+5
-5
test/java/util/PluggableLocale/providersrc/FooDateFormat.java
.../java/util/PluggableLocale/providersrc/FooDateFormat.java
+61
-0
test/java/util/PluggableLocale/providersrc/FooNumberFormat.java
...ava/util/PluggableLocale/providersrc/FooNumberFormat.java
+81
-0
test/java/util/PluggableLocale/providersrc/Makefile
test/java/util/PluggableLocale/providersrc/Makefile
+2
-0
test/java/util/PluggableLocale/providersrc/NumberFormatProviderImpl.java
...PluggableLocale/providersrc/NumberFormatProviderImpl.java
+24
-22
test/javax/swing/JFileChooser/4847375/bug4847375.java
test/javax/swing/JFileChooser/4847375/bug4847375.java
+160
-0
test/javax/swing/JScrollBar/6542335/bug6542335.java
test/javax/swing/JScrollBar/6542335/bug6542335.java
+27
-11
test/javax/swing/JSpinner/6532833/bug6532833.java
test/javax/swing/JSpinner/6532833/bug6532833.java
+80
-0
未找到文件。
.hgtags
浏览文件 @
ed853b07
...
@@ -98,3 +98,5 @@ ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119
...
@@ -98,3 +98,5 @@ ecab7eefb8f2326fd90fb632f47f1b6f81e928f8 jdk7-b119
a661d8587b5d8986aacae086f5df66af9e1a96b1 jdk7-b121
a661d8587b5d8986aacae086f5df66af9e1a96b1 jdk7-b121
ac311eb325bfc763698219252bf3cee9e091f3af jdk7-b122
ac311eb325bfc763698219252bf3cee9e091f3af jdk7-b122
869190935eedee7750d955019ab2a1b80f0a13a8 jdk7-b123
869190935eedee7750d955019ab2a1b80f0a13a8 jdk7-b123
1c72adc9d5f331cb882cf5354ba0dcb118a60b23 jdk7-b124
0a56bdd709d01c1663047e55201d19152ffd3d69 jdk7-b125
make/sun/Makefile
浏览文件 @
ed853b07
...
@@ -42,7 +42,15 @@ ifneq ($(PLATFORM), windows)
...
@@ -42,7 +42,15 @@ ifneq ($(PLATFORM), windows)
ifndef
OPENJDK
ifndef
OPENJDK
ifeq
($(PLATFORM), solaris)
ifeq
($(PLATFORM), solaris)
ifneq
($(ARCH), amd64)
ifneq
($(ARCH), amd64)
DGA_SUBDIR
=
jdga
# Solaris 11 does not have support for new compilation of DGA code.
OS_VERSION
=
$(
shell
uname
-r
)
OS_MAJOR_VERSION
:=
$(
call
MajorVersion,
$(OS_VERSION)
)
OS_MINOR_VERSION
:=
$(
call
MinorVersion,
$(OS_VERSION)
)
ifeq
($(shell $(EXPR) $(OS_MAJOR_VERSION) == 5), 1)
ifeq
($(shell $(EXPR) $(OS_MINOR_VERSION) \<= 10), 1)
DGA_SUBDIR
=
jdga
endif
endif
endif
endif
endif
endif
endif
endif
...
...
make/sun/awt/Makefile
浏览文件 @
ed853b07
...
@@ -175,6 +175,10 @@ endif
...
@@ -175,6 +175,10 @@ endif
include
$(BUILDDIR)/common/Mapfile-vers.gmk
include
$(BUILDDIR)/common/Mapfile-vers.gmk
include
$(BUILDDIR)/common/Library.gmk
include
$(BUILDDIR)/common/Library.gmk
COMPILEFONTCONFIG_FLAGS
=
ifdef
ALT_COMPILEFONTCONFIG_FLAGS
COMPILEFONTCONFIG_FLAGS
+=
$(ALT_COMPILEFONTCONFIG_FLAGS)
endif
build
:
fontconfigs
build
:
fontconfigs
...
@@ -406,7 +410,7 @@ COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar
...
@@ -406,7 +410,7 @@ COMPILEFONTCONFIG_JARFILE = $(BUILDTOOLJARDIR)/compilefontconfig.jar
$(LIBDIR)/%.bfc
:
$(FONTCONFIGS_SRC)/$(FONTCONFIGS_SRC_PREFIX)%.properties
\
$(LIBDIR)/%.bfc
:
$(FONTCONFIGS_SRC)/$(FONTCONFIGS_SRC_PREFIX)%.properties
\
$(COMPILEFONTCONFIG_JARFILE)
$(COMPILEFONTCONFIG_JARFILE)
$
(
prep-target
)
$
(
prep-target
)
$(BOOT_JAVA_CMD)
-jar
$(COMPILEFONTCONFIG_JARFILE)
$<
$@
$(BOOT_JAVA_CMD)
-jar
$(COMPILEFONTCONFIG_JARFILE)
$
(COMPILEFONTCONFIG_FLAGS)
$
<
$@
$
(
install-module-file
)
$
(
install-module-file
)
$(
call
chmod-file, 444
)
$(
call
chmod-file, 444
)
@
$
(
java-vm-cleanup
)
@
$
(
java-vm-cleanup
)
...
...
make/sun/awt/make.depend
浏览文件 @
ed853b07
...
@@ -224,7 +224,7 @@ $(OBJDIR)/DllUtil.obj:: ../../../src/windows/native/sun/windows/DllUtil.h
...
@@ -224,7 +224,7 @@ $(OBJDIR)/DllUtil.obj:: ../../../src/windows/native/sun/windows/DllUtil.h
$(OBJDIR)/DrawLine.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawLine.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/DrawLine.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawLine.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/DrawParallelogram.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawParallelogram.h
$(CLASSHDRDIR)/sun_java2d_loops_FillParallelogram.h ../../../src/share/javavm/export/classfile_constants.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/LoopMacro
s.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/DrawParallelogram.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawParallelogram.h
../../../src/share/javavm/export/classfile_constants.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ParallelogramUtil
s.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/DrawPath.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/DrawPath.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
...
@@ -232,7 +232,7 @@ $(OBJDIR)/DrawPolygons.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDR
...
@@ -232,7 +232,7 @@ $(OBJDIR)/DrawPolygons.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDR
$(OBJDIR)/DrawRect.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawRect.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/DrawRect.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_DrawRect.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/FillParallelogram.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillParallelogram.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/FillParallelogram.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillParallelogram.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/
loops/ParallelogramUtils.h ../../../src/share/native/sun/java2d/
pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/FillPath.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/FillPath.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_FillPath.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/DrawPath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/loops/LineUtils.h ../../../src/share/native/sun/java2d/loops/ProcessPath.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
...
@@ -284,7 +284,7 @@ $(OBJDIR)/IntRgbx.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/sh
...
@@ -284,7 +284,7 @@ $(OBJDIR)/IntRgbx.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h ../../../src/sh
$(OBJDIR)/MaskBlit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/MaskBlit.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskBlit.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/Region.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/awt/utility/rect.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/MaskFill.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/MaskFill.obj:: $(CLASSHDRDIR)/java_awt_AlphaComposite.h $(CLASSHDRDIR)/sun_java2d_loops_MaskFill.h ../../../src/share/javavm/export/jni.h ../../../src/share/native/common/gdefs.h ../../../src/share/native/sun/java2d/loops/AlphaMath.h ../../../src/share/native/sun/java2d/loops/GlyphImageRef.h ../../../src/share/native/sun/java2d/loops/GraphicsPrimitiveMgr.h ../../../src/share/native/sun/java2d/
loops/ParallelogramUtils.h ../../../src/share/native/sun/java2d/
pipe/SpanIterator.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/native/common/gdefs_md.h ../../../src/windows/native/sun/java2d/j2d_md.h
$(OBJDIR)/MouseInfo.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/classfile_constants.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h
$(OBJDIR)/MouseInfo.obj:: $(CLASSHDRDIR)/java_awt_AWTEvent.h $(CLASSHDRDIR)/java_awt_Component.h $(CLASSHDRDIR)/java_awt_Dimension.h $(CLASSHDRDIR)/java_awt_Event.h $(CLASSHDRDIR)/java_awt_event_FocusEvent.h $(CLASSHDRDIR)/java_awt_event_KeyEvent.h $(CLASSHDRDIR)/java_awt_event_MouseEvent.h $(CLASSHDRDIR)/java_awt_event_WindowEvent.h $(CLASSHDRDIR)/java_awt_Font.h $(CLASSHDRDIR)/sun_awt_FontDescriptor.h $(CLASSHDRDIR)/sun_awt_PlatformFont.h $(CLASSHDRDIR)/sun_awt_windows_WComponentPeer.h $(CLASSHDRDIR)/sun_awt_windows_WFontMetrics.h $(CLASSHDRDIR)/sun_awt_windows_WObjectPeer.h $(CLASSHDRDIR)/sun_awt_windows_WToolkit.h ../../../src/share/javavm/export/classfile_constants.h ../../../src/share/javavm/export/jni.h ../../../src/share/javavm/export/jvm.h ../../../src/share/native/common/jlong.h ../../../src/share/native/common/jni_util.h ../../../src/share/native/sun/awt/debug/debug_assert.h ../../../src/share/native/sun/awt/debug/debug_mem.h ../../../src/share/native/sun/awt/debug/debug_trace.h ../../../src/share/native/sun/awt/debug/debug_util.h ../../../src/share/native/sun/awt/image/cvutils/img_globals.h ../../../src/share/native/sun/java2d/SurfaceData.h ../../../src/share/native/sun/java2d/Trace.h ../../../src/windows/javavm/export/jni_md.h ../../../src/windows/javavm/export/jvm_md.h ../../../src/windows/native/common/jlong_md.h ../../../src/windows/native/sun/java2d/windows/GDIWindowSurfaceData.h ../../../src/windows/native/sun/windows/alloc.h ../../../src/windows/native/sun/windows/awt.h ../../../src/windows/native/sun/windows/awtmsg.h ../../../src/windows/native/sun/windows/awt_Brush.h ../../../src/windows/native/sun/windows/awt_Component.h ../../../src/windows/native/sun/windows/awt_Debug.h ../../../src/windows/native/sun/windows/awt_Font.h ../../../src/windows/native/sun/windows/awt_GDIObject.h ../../../src/windows/native/sun/windows/awt_Object.h ../../../src/windows/native/sun/windows/awt_Palette.h ../../../src/windows/native/sun/windows/awt_Pen.h ../../../src/windows/native/sun/windows/awt_Toolkit.h ../../../src/windows/native/sun/windows/awt_Win32GraphicsDevice.h ../../../src/windows/native/sun/windows/colordata.h ../../../src/windows/native/sun/windows/Devices.h ../../../src/windows/native/sun/windows/GDIHashtable.h ../../../src/windows/native/sun/windows/Hashtable.h ../../../src/windows/native/sun/windows/ObjectList.h ../../../src/windows/native/sun/windows/stdhdrs.h
...
...
make/sun/awt/mapfile-vers
浏览文件 @
ed853b07
...
@@ -118,6 +118,8 @@ SUNWprivate_1.1 {
...
@@ -118,6 +118,8 @@ SUNWprivate_1.1 {
Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
Java_sun_java2d_loops_MaskBlit_MaskBlit;
Java_sun_java2d_loops_MaskBlit_MaskBlit;
Java_sun_java2d_loops_MaskFill_MaskFill;
Java_sun_java2d_loops_MaskFill_MaskFill;
Java_sun_java2d_loops_MaskFill_FillAAPgram;
Java_sun_java2d_loops_MaskFill_DrawAAPgram;
Java_sun_java2d_loops_TransformHelper_Transform;
Java_sun_java2d_loops_TransformHelper_Transform;
Java_sun_java2d_pipe_Region_initIDs;
Java_sun_java2d_pipe_Region_initIDs;
Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
...
...
make/sun/awt/mapfile-vers-linux
浏览文件 @
ed853b07
...
@@ -115,6 +115,8 @@ SUNWprivate_1.1 {
...
@@ -115,6 +115,8 @@ SUNWprivate_1.1 {
Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops;
Java_sun_java2d_loops_MaskBlit_MaskBlit;
Java_sun_java2d_loops_MaskBlit_MaskBlit;
Java_sun_java2d_loops_MaskFill_MaskFill;
Java_sun_java2d_loops_MaskFill_MaskFill;
Java_sun_java2d_loops_MaskFill_FillAAPgram;
Java_sun_java2d_loops_MaskFill_DrawAAPgram;
Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
Java_sun_java2d_pipe_BufferedRenderPipe_fillSpans;
Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
Java_sun_java2d_pipe_SpanClipRenderer_initIDs;
sun_awt_image_GifImageDecoder_initIDs;
sun_awt_image_GifImageDecoder_initIDs;
...
...
make/tools/src/build/tools/javazic/Zoneinfo.java
浏览文件 @
ed853b07
...
@@ -222,6 +222,7 @@ class Zoneinfo {
...
@@ -222,6 +222,7 @@ class Zoneinfo {
boolean
continued
=
false
;
boolean
continued
=
false
;
Zone
zone
=
null
;
Zone
zone
=
null
;
String
l
;
String
l
;
lineNum
=
0
;
try
{
try
{
while
((
line
=
in
.
readLine
())
!=
null
)
{
while
((
line
=
in
.
readLine
())
!=
null
)
{
...
...
src/share/classes/java/awt/SplashScreen.java
浏览文件 @
ed853b07
...
@@ -33,27 +33,17 @@ import sun.util.logging.PlatformLogger;
...
@@ -33,27 +33,17 @@ import sun.util.logging.PlatformLogger;
import
sun.awt.image.SunWritableRaster
;
import
sun.awt.image.SunWritableRaster
;
/**
/**
* The splash screen can be
creat
ed at application startup, before the
* The splash screen can be
display
ed at application startup, before the
* Java Virtual Machine (JVM) starts. The splash screen is displayed as an
* Java Virtual Machine (JVM) starts. The splash screen is displayed as an
* undecorated window containing an image. You can use GIF, JPEG,
and
PNG files
* undecorated window containing an image. You can use GIF, JPEG,
or
PNG files
* for the image. Animation
(for GIF) and transparency (for GIF, PNG) are
* for the image. Animation
is supported for the GIF format, while transparency
*
supported. The window is positioned at the center of the screen (the
*
is supported both for GIF and PNG. The window is positioned at the center
*
position on multi-monitor systems is not specified - it is platform and
*
of the screen. The position on multi-monitor systems is not specified. It is
*
implementation dependent).
*
platform and implementation dependent. The splash screen window is closed
*
The window is closed automatically as soon as the first window is displayed by
*
automatically as soon as the first window is displayed by Swing/AWT (may be
*
Swing/AWT (may be
also closed manually using the Java API, see below).
* also closed manually using the Java API, see below).
* <P>
* <P>
* There are two ways to show the native splash screen:
* If your application is packaged in a jar file, you can use the
* <P>
* <UL>
* <LI>If your application is run from the command line or from a shortcut,
* use the "-splash:" Java application launcher option to show a splash screen.
* <BR>
* For example:
* <PRE>
* java -splash:filename.gif Test
* </PRE>
* <LI>If your application is packaged in a jar file, you can use the
* "SplashScreen-Image" option in a manifest file to show a splash screen.
* "SplashScreen-Image" option in a manifest file to show a splash screen.
* Place the image in the jar archive and specify the path in the option.
* Place the image in the jar archive and specify the path in the option.
* The path should not have a leading slash.
* The path should not have a leading slash.
...
@@ -64,18 +54,39 @@ import sun.awt.image.SunWritableRaster;
...
@@ -64,18 +54,39 @@ import sun.awt.image.SunWritableRaster;
* Main-Class: Test
* Main-Class: Test
* SplashScreen-Image: filename.gif
* SplashScreen-Image: filename.gif
* </PRE>
* </PRE>
* <P>
* If the Java implementation provides the command-line interface and you run
* your application by using the command line or a shortcut, use the Java
* application launcher option to show a splash screen. The Oracle reference
* implementation allows you to specify the splash screen image location with
* the {@code -splash:} option.
* <BR>
* For example:
* <PRE>
* java -splash:filename.gif Test
* </PRE>
* The command line interface has higher precedence over the manifest
* The command line interface has higher precedence over the manifest
* setting.
* setting.
* </UL>
* <p>
* The splash screen will be displayed as faithfully as possible to present the
* whole splash screen image given the limitations of the target platform and
* display.
* <p>
* It is implied that the specified image is presented on the screen "as is",
* i.e. preserving the exact color values as specified in the image file. Under
* certain circumstances, though, the presented image may differ, e.g. when
* applying color dithering to present a 32 bits per pixel (bpp) image on a 16
* or 8 bpp screen. The native platform display configuration may also affect
* the colors of the displayed image (e.g. color profiles, etc.)
* <p>
* <p>
* The {@code SplashScreen} class provides the API for controlling the splash
* The {@code SplashScreen} class provides the API for controlling the splash
* screen. This class may be used to close the splash screen, change the splash
* screen. This class may be used to close the splash screen, change the splash
* screen image, get the
image position/size and paint in the splash screen. I
t
* screen image, get the
splash screen native window position/size, and pain
t
*
cannot be used to create the splash screen; you should use the command line or manifest
*
in the splash screen. It cannot be used to create the splash screen. You
*
file op
tion for that.
*
should use the options provided by the Java implementa
tion for that.
* <p>
* <p>
* This class cannot be instantiated. Only a single instance of this class
* This class cannot be instantiated. Only a single instance of this class
* can exist, and it may be obtained using the {@link #getSplashScreen()}
* can exist, and it may be obtained
by
using the {@link #getSplashScreen()}
* static method. In case the splash screen has not been created at
* static method. In case the splash screen has not been created at
* application startup via the command line or manifest file option,
* application startup via the command line or manifest file option,
* the <code>getSplashScreen</code> method returns <code>null</code>.
* the <code>getSplashScreen</code> method returns <code>null</code>.
...
@@ -91,7 +102,7 @@ public final class SplashScreen {
...
@@ -91,7 +102,7 @@ public final class SplashScreen {
/**
/**
* Returns the {@code SplashScreen} object used for
* Returns the {@code SplashScreen} object used for
* Java startup splash screen control.
* Java startup splash screen control
on systems that support display
.
*
*
* @throws UnsupportedOperationException if the splash screen feature is not
* @throws UnsupportedOperationException if the splash screen feature is not
* supported by the current toolkit
* supported by the current toolkit
...
@@ -219,6 +230,9 @@ public final class SplashScreen {
...
@@ -219,6 +230,9 @@ public final class SplashScreen {
* <p>
* <p>
* You cannot control the size or position of the splash screen.
* You cannot control the size or position of the splash screen.
* The splash screen size is adjusted automatically when the image changes.
* The splash screen size is adjusted automatically when the image changes.
* <p>
* The image may contain transparent areas, and thus the reported bounds may
* be larger than the visible splash screen image on the screen.
*
*
* @return a {@code Rectangle} containing the splash screen bounds
* @return a {@code Rectangle} containing the splash screen bounds
* @throws IllegalStateException if the splash screen has already been closed
* @throws IllegalStateException if the splash screen has already been closed
...
@@ -237,6 +251,9 @@ public final class SplashScreen {
...
@@ -237,6 +251,9 @@ public final class SplashScreen {
* <p>
* <p>
* You cannot control the size or position of the splash screen.
* You cannot control the size or position of the splash screen.
* The splash screen size is adjusted automatically when the image changes.
* The splash screen size is adjusted automatically when the image changes.
* <p>
* The image may contain transparent areas, and thus the reported size may
* be larger than the visible splash screen image on the screen.
*
*
* @return a {@link Dimension} object indicating the splash screen size
* @return a {@link Dimension} object indicating the splash screen size
* @throws IllegalStateException if the splash screen has already been closed
* @throws IllegalStateException if the splash screen has already been closed
...
@@ -254,6 +271,10 @@ public final class SplashScreen {
...
@@ -254,6 +271,10 @@ public final class SplashScreen {
* screen window. You should call {@code update()} on the
* screen window. You should call {@code update()} on the
* <code>SplashScreen</code> when you want the splash screen to be
* <code>SplashScreen</code> when you want the splash screen to be
* updated immediately.
* updated immediately.
* <p>
* The pixel (0, 0) in the coordinate space of the graphics context
* corresponds to the origin of the splash screen native window bounds (see
* {@link #getBounds()}).
*
*
* @return graphics context for the splash screen overlay surface
* @return graphics context for the splash screen overlay surface
* @throws IllegalStateException if the splash screen has already been closed
* @throws IllegalStateException if the splash screen has already been closed
...
@@ -334,6 +355,11 @@ public final class SplashScreen {
...
@@ -334,6 +355,11 @@ public final class SplashScreen {
* Determines whether the splash screen is visible. The splash screen may
* Determines whether the splash screen is visible. The splash screen may
* be hidden using {@link #close()}, it is also hidden automatically when
* be hidden using {@link #close()}, it is also hidden automatically when
* the first AWT/Swing window is made visible.
* the first AWT/Swing window is made visible.
* <p>
* Note that the native platform may delay presenting the splash screen
* native window on the screen. The return value of {@code true} for this
* method only guarantees that the conditions to hide the splash screen
* window have not occurred yet.
*
*
* @return true if the splash screen is visible (has not been closed yet),
* @return true if the splash screen is visible (has not been closed yet),
* false otherwise
* false otherwise
...
...
src/share/classes/java/awt/font/NumericShaper.java
浏览文件 @
ed853b07
...
@@ -58,20 +58,20 @@ import java.util.Set;
...
@@ -58,20 +58,20 @@ import java.util.Set;
* It is also possible to perform numeric shaping explicitly using instances
* It is also possible to perform numeric shaping explicitly using instances
* of <code>NumericShaper</code>, as this code snippet demonstrates:<br>
* of <code>NumericShaper</code>, as this code snippet demonstrates:<br>
* <blockquote><pre>
* <blockquote><pre>
*
char[] text = ...;
* char[] text = ...;
*
// shape all EUROPEAN digits (except zero) to ARABIC digits
* // shape all EUROPEAN digits (except zero) to ARABIC digits
*
NumericShaper shaper = NumericShaper.getShaper(NumericShaper.ARABIC);
* NumericShaper shaper = NumericShaper.getShaper(NumericShaper.ARABIC);
*
shaper.shape(text, start, count);
* shaper.shape(text, start, count);
*
*
*
// shape European digits to ARABIC digits if preceding text is Arabic, or
* // shape European digits to ARABIC digits if preceding text is Arabic, or
*
// shape European digits to TAMIL digits if preceding text is Tamil, or
* // shape European digits to TAMIL digits if preceding text is Tamil, or
*
// leave European digits alone if there is no preceding text, or
* // leave European digits alone if there is no preceding text, or
*
// preceding text is neither Arabic nor Tamil
* // preceding text is neither Arabic nor Tamil
*
NumericShaper shaper =
* NumericShaper shaper =
*
NumericShaper.getContextualShaper(NumericShaper.ARABIC |
* NumericShaper.getContextualShaper(NumericShaper.ARABIC |
*
NumericShaper.TAMIL,
* NumericShaper.TAMIL,
*
NumericShaper.EUROPEAN);
* NumericShaper.EUROPEAN);
*
shaper.shape(text, start, count);
* shaper.shape(text, start, count);
* </pre></blockquote>
* </pre></blockquote>
*
*
* <p><b>Bit mask- and enum-based Unicode ranges</b></p>
* <p><b>Bit mask- and enum-based Unicode ranges</b></p>
...
@@ -99,6 +99,37 @@ import java.util.Set;
...
@@ -99,6 +99,37 @@ import java.util.Set;
* values are specified, such as {@code NumericShaper.Range.BALINESE},
* values are specified, such as {@code NumericShaper.Range.BALINESE},
* those ranges are ignored.
* those ranges are ignored.
*
*
* <p><b>Decimal Digits Precedence</b></p>
*
* <p>A Unicode range may have more than one set of decimal digits. If
* multiple decimal digits sets are specified for the same Unicode
* range, one of the sets will take precedence as follows.
*
* <table border=1 cellspacing=3 cellpadding=0 summary="NumericShaper constants precedence.">
* <tr>
* <th class="TableHeadingColor">Unicode Range</th>
* <th class="TableHeadingColor"><code>NumericShaper</code> Constants</th>
* <th class="TableHeadingColor">Precedence</th>
* </tr>
* <tr>
* <td rowspan="2">Arabic</td>
* <td>{@link NumericShaper#ARABIC NumericShaper.ARABIC}<br>
* {@link NumericShaper#EASTERN_ARABIC NumericShaper.EASTERN_ARABIC}</td>
* <td>{@link NumericShaper#EASTERN_ARABIC NumericShaper.EASTERN_ARABIC}</td>
* </tr>
* <tr>
* <td>{@link NumericShaper.Range#ARABIC}<br>
* {@link NumericShaper.Range#EASTERN_ARABIC}</td>
* <td>{@link NumericShaper.Range#EASTERN_ARABIC}</td>
* </tr>
* <tr>
* <td>Tai Tham</td>
* <td>{@link NumericShaper.Range#TAI_THAM_HORA}<br>
* {@link NumericShaper.Range#TAI_THAM_THAM}</td>
* <td>{@link NumericShaper.Range#TAI_THAM_THAM}</td>
* </tr>
* </table>
*
* @since 1.4
* @since 1.4
*/
*/
...
...
src/share/classes/java/awt/image/IndexColorModel.java
浏览文件 @
ed853b07
...
@@ -625,7 +625,7 @@ public class IndexColorModel extends ColorModel {
...
@@ -625,7 +625,7 @@ public class IndexColorModel extends ColorModel {
}
}
nBits
[
0
]
=
nBits
[
1
]
=
nBits
[
2
]
=
8
;
nBits
[
0
]
=
nBits
[
1
]
=
nBits
[
2
]
=
8
;
}
}
return
nBits
;
return
nBits
.
clone
()
;
}
}
/**
/**
...
...
src/share/classes/java/awt/image/SampleModel.java
浏览文件 @
ed853b07
...
@@ -121,7 +121,7 @@ public abstract class SampleModel
...
@@ -121,7 +121,7 @@ public abstract class SampleModel
*/
*/
public
SampleModel
(
int
dataType
,
int
w
,
int
h
,
int
numBands
)
public
SampleModel
(
int
dataType
,
int
w
,
int
h
,
int
numBands
)
{
{
float
size
=
(
float
)
w
*
h
;
long
size
=
(
long
)
w
*
h
;
if
(
w
<=
0
||
h
<=
0
)
{
if
(
w
<=
0
||
h
<=
0
)
{
throw
new
IllegalArgumentException
(
"Width ("
+
w
+
") and height ("
+
throw
new
IllegalArgumentException
(
"Width ("
+
w
+
") and height ("
+
h
+
") must be > 0"
);
h
+
") must be > 0"
);
...
...
src/share/classes/java/awt/image/SinglePixelPackedSampleModel.java
浏览文件 @
ed853b07
...
@@ -92,7 +92,8 @@ public class SinglePixelPackedSampleModel extends SampleModel
...
@@ -92,7 +92,8 @@ public class SinglePixelPackedSampleModel extends SampleModel
* Constructs a SinglePixelPackedSampleModel with bitMasks.length bands.
* Constructs a SinglePixelPackedSampleModel with bitMasks.length bands.
* Each sample is stored in a data array element in the position of
* Each sample is stored in a data array element in the position of
* its corresponding bit mask. Each bit mask must be contiguous and
* its corresponding bit mask. Each bit mask must be contiguous and
* masks must not overlap.
* masks must not overlap. Bit masks exceeding data type capacity are
* truncated.
* @param dataType The data type for storing samples.
* @param dataType The data type for storing samples.
* @param w The width (in pixels) of the region of the
* @param w The width (in pixels) of the region of the
* image data described.
* image data described.
...
@@ -120,7 +121,8 @@ public class SinglePixelPackedSampleModel extends SampleModel
...
@@ -120,7 +121,8 @@ public class SinglePixelPackedSampleModel extends SampleModel
* and a scanline stride equal to scanlineStride data array elements.
* and a scanline stride equal to scanlineStride data array elements.
* Each sample is stored in a data array element in the position of
* Each sample is stored in a data array element in the position of
* its corresponding bit mask. Each bit mask must be contiguous and
* its corresponding bit mask. Each bit mask must be contiguous and
* masks must not overlap.
* masks must not overlap. Bit masks exceeding data type capacity are
* truncated.
* @param dataType The data type for storing samples.
* @param dataType The data type for storing samples.
* @param w The width (in pixels) of the region of
* @param w The width (in pixels) of the region of
* image data described.
* image data described.
...
@@ -153,11 +155,13 @@ public class SinglePixelPackedSampleModel extends SampleModel
...
@@ -153,11 +155,13 @@ public class SinglePixelPackedSampleModel extends SampleModel
this
.
bitOffsets
=
new
int
[
numBands
];
this
.
bitOffsets
=
new
int
[
numBands
];
this
.
bitSizes
=
new
int
[
numBands
];
this
.
bitSizes
=
new
int
[
numBands
];
int
maxMask
=
(
int
)((
1L
<<
DataBuffer
.
getDataTypeSize
(
dataType
))
-
1
);
this
.
maxBitSize
=
0
;
this
.
maxBitSize
=
0
;
for
(
int
i
=
0
;
i
<
numBands
;
i
++)
{
for
(
int
i
=
0
;
i
<
numBands
;
i
++)
{
int
bitOffset
=
0
,
bitSize
=
0
,
mask
;
int
bitOffset
=
0
,
bitSize
=
0
,
mask
;
mask
=
bitMasks
[
i
]
;
this
.
bitMasks
[
i
]
&=
maxMask
;
mask
=
this
.
bitMasks
[
i
];
if
(
mask
!=
0
)
{
if
(
mask
!=
0
)
{
while
((
mask
&
1
)
==
0
)
{
while
((
mask
&
1
)
==
0
)
{
mask
=
mask
>>>
1
;
mask
=
mask
>>>
1
;
...
@@ -243,30 +247,12 @@ public class SinglePixelPackedSampleModel extends SampleModel
...
@@ -243,30 +247,12 @@ public class SinglePixelPackedSampleModel extends SampleModel
/** Returns the number of bits per sample for all bands. */
/** Returns the number of bits per sample for all bands. */
public
int
[]
getSampleSize
()
{
public
int
[]
getSampleSize
()
{
int
mask
;
return
bitSizes
.
clone
();
int
sampleSize
[]
=
new
int
[
numBands
];
for
(
int
i
=
0
;
i
<
numBands
;
i
++)
{
sampleSize
[
i
]
=
0
;
mask
=
bitMasks
[
i
]
>>>
bitOffsets
[
i
];
while
((
mask
&
1
)
!=
0
)
{
sampleSize
[
i
]
++;
mask
=
mask
>>>
1
;
}
}
return
sampleSize
;
}
}
/** Returns the number of bits per sample for the specified band. */
/** Returns the number of bits per sample for the specified band. */
public
int
getSampleSize
(
int
band
)
{
public
int
getSampleSize
(
int
band
)
{
int
sampleSize
=
0
;
return
bitSizes
[
band
];
int
mask
=
bitMasks
[
band
]
>>>
bitOffsets
[
band
];
while
((
mask
&
1
)
!=
0
)
{
sampleSize
++;
mask
=
mask
>>>
1
;
}
return
sampleSize
;
}
}
/** Returns the offset (in data array elements) of pixel (x,y).
/** Returns the offset (in data array elements) of pixel (x,y).
...
...
src/share/classes/java/text/MessageFormat.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
src/share/classes/java/text/SimpleDateFormat.java
浏览文件 @
ed853b07
...
@@ -1662,6 +1662,81 @@ public class SimpleDateFormat extends DateFormat {
...
@@ -1662,6 +1662,81 @@ public class SimpleDateFormat extends DateFormat {
return
0
;
return
0
;
}
}
/**
* Parses numeric forms of time zone offset, such as "hh:mm", and
* sets calb to the parsed value.
*
* @param text the text to be parsed
* @param start the character position to start parsing
* @param sign 1: positive; -1: negative
* @param count 0: 'Z' or "GMT+hh:mm" parsing; 1 - 3: the number of 'X's
* @param colon true - colon required between hh and mm; false - no colon required
* @param calb a CalendarBuilder in which the parsed value is stored
* @return updated parsed position, or its negative value to indicate a parsing error
*/
private
int
subParseNumericZone
(
String
text
,
int
start
,
int
sign
,
int
count
,
boolean
colon
,
CalendarBuilder
calb
)
{
int
index
=
start
;
parse:
try
{
char
c
=
text
.
charAt
(
index
++);
// Parse hh
int
hours
;
if
(!
isDigit
(
c
))
{
break
parse
;
}
hours
=
c
-
'0'
;
c
=
text
.
charAt
(
index
++);
if
(
isDigit
(
c
))
{
hours
=
hours
*
10
+
(
c
-
'0'
);
}
else
{
// If no colon in RFC 822 or 'X' (ISO), two digits are
// required.
if
(
count
>
0
||
!
colon
)
{
break
parse
;
}
--
index
;
}
if
(
hours
>
23
)
{
break
parse
;
}
int
minutes
=
0
;
if
(
count
!=
1
)
{
// Proceed with parsing mm
c
=
text
.
charAt
(
index
++);
if
(
colon
)
{
if
(
c
!=
':'
)
{
break
parse
;
}
c
=
text
.
charAt
(
index
++);
}
if
(!
isDigit
(
c
))
{
break
parse
;
}
minutes
=
c
-
'0'
;
c
=
text
.
charAt
(
index
++);
if
(!
isDigit
(
c
))
{
break
parse
;
}
minutes
=
minutes
*
10
+
(
c
-
'0'
);
if
(
minutes
>
59
)
{
break
parse
;
}
}
minutes
+=
hours
*
60
;
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
minutes
*
MILLIS_PER_MINUTE
*
sign
)
.
set
(
Calendar
.
DST_OFFSET
,
0
);
return
index
;
}
catch
(
IndexOutOfBoundsException
e
)
{
}
return
1
-
index
;
// -(index - 1)
}
private
boolean
isDigit
(
char
c
)
{
return
c
>=
'0'
&&
c
<=
'9'
;
}
/**
/**
* Private member function that converts the parsed date strings into
* Private member function that converts the parsed date strings into
* timeFields. Returns -start (for ParsePosition) if failed.
* timeFields. Returns -start (for ParsePosition) if failed.
...
@@ -1907,248 +1982,95 @@ public class SimpleDateFormat extends DateFormat {
...
@@ -1907,248 +1982,95 @@ public class SimpleDateFormat extends DateFormat {
case
PATTERN_ZONE_NAME:
// 'z'
case
PATTERN_ZONE_NAME:
// 'z'
case
PATTERN_ZONE_VALUE:
// 'Z'
case
PATTERN_ZONE_VALUE:
// 'Z'
// First try to parse generic forms such as GMT-07:00. Do this first
// in case localized TimeZoneNames contains the string "GMT"
// for a zone; in that case, we don't want to match the first three
// characters of GMT+/-hh:mm etc.
{
{
int
sign
=
0
;
int
sign
=
0
;
int
offset
;
try
{
char
c
=
text
.
charAt
(
pos
.
index
);
// For time zones that have no known names, look for strings
if
(
c
==
'+'
)
{
// of the form:
sign
=
1
;
// GMT[+-]hours:minutes or
}
else
if
(
c
==
'-'
)
{
// GMT.
sign
=
-
1
;
if
((
text
.
length
()
-
start
)
>=
GMT
.
length
()
&&
text
.
regionMatches
(
true
,
start
,
GMT
,
0
,
GMT
.
length
()))
{
int
num
;
calb
.
set
(
Calendar
.
DST_OFFSET
,
0
);
pos
.
index
=
start
+
GMT
.
length
();
try
{
// try-catch for "GMT" only time zone string
char
c
=
text
.
charAt
(
pos
.
index
);
if
(
c
==
'+'
)
{
sign
=
1
;
}
else
if
(
c
==
'-'
)
{
sign
=
-
1
;
}
}
catch
(
StringIndexOutOfBoundsException
e
)
{}
if
(
sign
==
0
)
{
/* "GMT" without offset */
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
0
);
return
pos
.
index
;
}
}
if
(
sign
==
0
)
{
// Look for hours.
// Try parsing a custom time zone "GMT+hh:mm" or "GMT".
try
{
if
((
c
==
'G'
||
c
==
'g'
)
char
c
=
text
.
charAt
(++
pos
.
index
);
&&
(
text
.
length
()
-
start
)
>=
GMT
.
length
()
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
&&
text
.
regionMatches
(
true
,
start
,
GMT
,
0
,
GMT
.
length
()))
{
break
parsing
;
pos
.
index
=
start
+
GMT
.
length
();
}
num
=
c
-
'0'
;
if
((
text
.
length
()
-
pos
.
index
)
>
0
)
{
c
=
text
.
charAt
(
pos
.
index
);
if
(
text
.
charAt
(++
pos
.
index
)
!=
':'
)
{
if
(
c
==
'+'
)
{
c
=
text
.
charAt
(
pos
.
index
);
sign
=
1
;
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
}
else
if
(
c
==
'-'
)
{
break
parsing
;
sign
=
-
1
;
}
}
}
num
*=
10
;
num
+=
c
-
'0'
;
pos
.
index
++;
}
if
(
num
>
23
)
{
--
pos
.
index
;
break
parsing
;
}
if
(
text
.
charAt
(
pos
.
index
)
!=
':'
)
{
break
parsing
;
}
// Look for minutes.
if
(
sign
==
0
)
{
/* "GMT" without offset */
offset
=
num
*
60
;
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
0
)
c
=
text
.
charAt
(++
pos
.
index
);
.
set
(
Calendar
.
DST_OFFSET
,
0
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
return
pos
.
index
;
break
parsing
;
}
}
num
=
c
-
'0'
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
num
*=
10
;
num
+=
c
-
'0'
;
if
(
num
>
59
)
{
// Parse the rest as "hh:mm"
break
parsing
;
int
i
=
subParseNumericZone
(
text
,
++
pos
.
index
,
}
sign
,
0
,
true
,
calb
);
}
catch
(
StringIndexOutOfBoundsException
e
)
{
if
(
i
>
0
)
{
break
parsing
;
return
i
;
}
}
offset
+=
num
;
pos
.
index
=
-
i
;
// Fall through for final processing below of 'offset' and 'sign'.
}
else
{
// If the first character is a sign, look for numeric timezones of
// the form [+-]hhmm as specified by RFC 822. Otherwise, check
// for named time zones by looking through the locale data from
// the TimeZoneNames strings.
try
{
char
c
=
text
.
charAt
(
pos
.
index
);
if
(
c
==
'+'
)
{
sign
=
1
;
}
else
if
(
c
==
'-'
)
{
sign
=
-
1
;
}
else
{
}
else
{
// Try parsing the text as a time zone name (abbr).
// Try parsing the text as a time zone
// name or abbreviation.
int
i
=
subParseZoneString
(
text
,
pos
.
index
,
calb
);
int
i
=
subParseZoneString
(
text
,
pos
.
index
,
calb
);
if
(
i
!=
0
)
{
if
(
i
>
0
)
{
return
i
;
return
i
;
}
}
break
parsing
;
pos
.
index
=
-
i
;
}
// Parse the text as an RFC 822 time zone string. This code is
// actually a little more permissive than RFC 822. It will
// try to do its best with numbers that aren't strictly 4
// digits long.
// Look for hh.
int
hours
=
0
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
}
hours
=
c
-
'0'
;
}
else
{
c
=
text
.
charAt
(++
pos
.
index
);
// Parse the rest as "hhmm" (RFC 822)
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
int
i
=
subParseNumericZone
(
text
,
++
pos
.
index
,
break
parsing
;
sign
,
0
,
false
,
calb
);
}
if
(
i
>
0
)
{
hours
*=
10
;
return
i
;
hours
+=
c
-
'0'
;
if
(
hours
>
23
)
{
break
parsing
;
}
// Look for mm.
int
minutes
=
0
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
minutes
=
c
-
'0'
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
minutes
*=
10
;
minutes
+=
c
-
'0'
;
if
(
minutes
>
59
)
{
break
parsing
;
}
}
pos
.
index
=
-
i
;
offset
=
hours
*
60
+
minutes
;
}
catch
(
StringIndexOutOfBoundsException
e
)
{
break
parsing
;
}
}
}
}
catch
(
IndexOutOfBoundsException
e
)
{
// Do the final processing for both of the above cases. We only
// arrive here if the form GMT+/-... or an RFC 822 form was seen.
if
(
sign
!=
0
)
{
offset
*=
MILLIS_PER_MINUTE
*
sign
;
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
offset
).
set
(
Calendar
.
DST_OFFSET
,
0
);
return
++
pos
.
index
;
}
}
}
}
break
parsing
;
break
parsing
;
case
PATTERN_ISO_ZONE:
// 'X'
case
PATTERN_ISO_ZONE:
// 'X'
{
{
int
sign
=
0
;
if
((
text
.
length
()
-
pos
.
index
)
<=
0
)
{
int
offset
=
0
;
break
parsing
;
iso8601:
{
try
{
char
c
=
text
.
charAt
(
pos
.
index
);
if
(
c
==
'Z'
)
{
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
0
).
set
(
Calendar
.
DST_OFFSET
,
0
);
return
++
pos
.
index
;
}
// parse text as "+/-hh[[:]mm]" based on count
if
(
c
==
'+'
)
{
sign
=
1
;
}
else
if
(
c
==
'-'
)
{
sign
=
-
1
;
}
// Look for hh.
int
hours
=
0
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
hours
=
c
-
'0'
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
hours
*=
10
;
hours
+=
c
-
'0'
;
if
(
hours
>
23
)
{
break
parsing
;
}
if
(
count
==
1
)
{
// "X"
offset
=
hours
*
60
;
break
iso8601
;
}
c
=
text
.
charAt
(++
pos
.
index
);
// Skip ':' if "XXX"
if
(
c
==
':'
)
{
if
(
count
==
2
)
{
break
parsing
;
}
c
=
text
.
charAt
(++
pos
.
index
);
}
else
{
if
(
count
==
3
)
{
// missing ':'
break
parsing
;
}
}
// Look for mm.
int
minutes
=
0
;
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
minutes
=
c
-
'0'
;
c
=
text
.
charAt
(++
pos
.
index
);
if
(
c
<
'0'
||
c
>
'9'
)
{
/* must be from '0' to '9'. */
break
parsing
;
}
minutes
*=
10
;
minutes
+=
c
-
'0'
;
if
(
minutes
>
59
)
{
break
parsing
;
}
offset
=
hours
*
60
+
minutes
;
}
catch
(
StringIndexOutOfBoundsException
e
)
{
break
parsing
;
}
}
}
// Do the final processing for both of the above cases. We only
int
sign
=
0
;
// arrive here if the form GMT+/-... or an RFC 822 form was seen.
char
c
=
text
.
charAt
(
pos
.
index
);
if
(
sign
!=
0
)
{
if
(
c
==
'Z'
)
{
offset
*=
MILLIS_PER_MINUTE
*
sign
;
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
0
).
set
(
Calendar
.
DST_OFFSET
,
0
);
calb
.
set
(
Calendar
.
ZONE_OFFSET
,
offset
).
set
(
Calendar
.
DST_OFFSET
,
0
);
return
++
pos
.
index
;
return
++
pos
.
index
;
}
}
// parse text as "+/-hh[[:]mm]" based on count
if
(
c
==
'+'
)
{
sign
=
1
;
}
else
if
(
c
==
'-'
)
{
sign
=
-
1
;
}
else
{
++
pos
.
index
;
break
parsing
;
}
int
i
=
subParseNumericZone
(
text
,
++
pos
.
index
,
sign
,
count
,
count
==
3
,
calb
);
if
(
i
>
0
)
{
return
i
;
}
pos
.
index
=
-
i
;
}
}
break
parsing
;
break
parsing
;
...
...
src/share/classes/java/util/Locale.java
浏览文件 @
ed853b07
...
@@ -1449,10 +1449,15 @@ public final class Locale implements Cloneable, Serializable {
...
@@ -1449,10 +1449,15 @@ public final class Locale implements Cloneable, Serializable {
* three-letter language abbreviation is not available for this locale.
* three-letter language abbreviation is not available for this locale.
*/
*/
public
String
getISO3Language
()
throws
MissingResourceException
{
public
String
getISO3Language
()
throws
MissingResourceException
{
String
language3
=
getISO3Code
(
_baseLocale
.
getLanguage
(),
LocaleISOData
.
isoLanguageTable
);
String
lang
=
_baseLocale
.
getLanguage
();
if
(
lang
.
length
()
==
3
)
{
return
lang
;
}
String
language3
=
getISO3Code
(
lang
,
LocaleISOData
.
isoLanguageTable
);
if
(
language3
==
null
)
{
if
(
language3
==
null
)
{
throw
new
MissingResourceException
(
"Couldn't find 3-letter language code for "
throw
new
MissingResourceException
(
"Couldn't find 3-letter language code for "
+
_baseLocale
.
getLanguage
()
,
"FormatData_"
+
toString
(),
"ShortLanguage"
);
+
lang
,
"FormatData_"
+
toString
(),
"ShortLanguage"
);
}
}
return
language3
;
return
language3
;
}
}
...
...
src/share/classes/javax/print/attribute/standard/DialogTypeSelection.java
浏览文件 @
ed853b07
...
@@ -52,6 +52,8 @@ import javax.print.attribute.PrintRequestAttribute;
...
@@ -52,6 +52,8 @@ import javax.print.attribute.PrintRequestAttribute;
public
final
class
DialogTypeSelection
extends
EnumSyntax
public
final
class
DialogTypeSelection
extends
EnumSyntax
implements
PrintRequestAttribute
{
implements
PrintRequestAttribute
{
private
static
final
long
serialVersionUID
=
7518682952133256029L
;
/**
/**
*
*
*/
*/
...
...
src/share/classes/javax/sound/midi/MidiSystem.java
浏览文件 @
ed853b07
...
@@ -310,7 +310,7 @@ public class MidiSystem {
...
@@ -310,7 +310,7 @@ public class MidiSystem {
}
else
{
}
else
{
transmitter
=
device
.
getTransmitter
();
transmitter
=
device
.
getTransmitter
();
}
}
if
(!(
transmitter
instanceof
MidiDevice
Receiv
er
))
{
if
(!(
transmitter
instanceof
MidiDevice
Transmitt
er
))
{
transmitter
=
new
MidiDeviceTransmitterEnvelope
(
device
,
transmitter
);
transmitter
=
new
MidiDeviceTransmitterEnvelope
(
device
,
transmitter
);
}
}
return
transmitter
;
return
transmitter
;
...
...
src/share/classes/javax/swing/DefaultDesktopManager.java
浏览文件 @
ed853b07
...
@@ -359,7 +359,22 @@ public class DefaultDesktopManager implements DesktopManager, java.io.Serializab
...
@@ -359,7 +359,22 @@ public class DefaultDesktopManager implements DesktopManager, java.io.Serializab
f
.
getWidth
()-
1
,
f
.
getHeight
()-
1
);
f
.
getWidth
()-
1
,
f
.
getHeight
()-
1
);
}
}
g
.
drawRect
(
newX
,
newY
,
f
.
getWidth
()-
1
,
f
.
getHeight
()-
1
);
g
.
drawRect
(
newX
,
newY
,
f
.
getWidth
()-
1
,
f
.
getHeight
()-
1
);
currentLoc
=
new
Point
(
newX
,
newY
);
/* Work around for 6635462: XOR mode may cause a SurfaceLost on first use.
* Swing doesn't expect that its XOR drawRect did
* not complete, so believes that on re-entering at
* the next update location, that there is an XOR rect
* to draw out at "currentLoc". But in fact
* its now got a new clean surface without that rect,
* so drawing it "out" in fact draws it on, leaving garbage.
* So only update/set currentLoc if the draw completed.
*/
sun
.
java2d
.
SurfaceData
sData
=
((
sun
.
java2d
.
SunGraphics2D
)
g
).
getSurfaceData
();
if
(!
sData
.
isSurfaceLost
())
{
currentLoc
=
new
Point
(
newX
,
newY
);
}
;
g
.
dispose
();
g
.
dispose
();
}
}
}
else
if
(
dragMode
==
FASTER_DRAG_MODE
)
{
}
else
if
(
dragMode
==
FASTER_DRAG_MODE
)
{
...
@@ -412,7 +427,14 @@ public class DefaultDesktopManager implements DesktopManager, java.io.Serializab
...
@@ -412,7 +427,14 @@ public class DefaultDesktopManager implements DesktopManager, java.io.Serializab
g
.
drawRect
(
currentBounds
.
x
,
currentBounds
.
y
,
currentBounds
.
width
-
1
,
currentBounds
.
height
-
1
);
g
.
drawRect
(
currentBounds
.
x
,
currentBounds
.
y
,
currentBounds
.
width
-
1
,
currentBounds
.
height
-
1
);
}
}
g
.
drawRect
(
newX
,
newY
,
newWidth
-
1
,
newHeight
-
1
);
g
.
drawRect
(
newX
,
newY
,
newWidth
-
1
,
newHeight
-
1
);
currentBounds
=
new
Rectangle
(
newX
,
newY
,
newWidth
,
newHeight
);
// Work around for 6635462, see comment in dragFrame()
sun
.
java2d
.
SurfaceData
sData
=
((
sun
.
java2d
.
SunGraphics2D
)
g
).
getSurfaceData
();
if
(!
sData
.
isSurfaceLost
())
{
currentBounds
=
new
Rectangle
(
newX
,
newY
,
newWidth
,
newHeight
);
}
g
.
setPaintMode
();
g
.
setPaintMode
();
g
.
dispose
();
g
.
dispose
();
}
}
...
...
src/share/classes/javax/swing/JSlider.java
浏览文件 @
ed853b07
...
@@ -40,7 +40,8 @@ import java.beans.*;
...
@@ -40,7 +40,8 @@ import java.beans.*;
/**
/**
* A component that lets the user graphically select a value by sliding
* A component that lets the user graphically select a value by sliding
* a knob within a bounded interval.
* a knob within a bounded interval. The knob is always positioned
* at the points that match integer values within the specified interval.
* <p>
* <p>
* The slider can show both
* The slider can show both
* major tick marks, and minor tick marks between the major ones. The number of
* major tick marks, and minor tick marks between the major ones. The number of
...
...
src/share/classes/javax/swing/plaf/basic/BasicSpinnerUI.java
浏览文件 @
ed853b07
...
@@ -908,6 +908,14 @@ public class BasicSpinnerUI extends SpinnerUI
...
@@ -908,6 +908,14 @@ public class BasicSpinnerUI extends SpinnerUI
int
height
=
parent
.
getHeight
();
int
height
=
parent
.
getHeight
();
Insets
insets
=
parent
.
getInsets
();
Insets
insets
=
parent
.
getInsets
();
if
(
nextButton
==
null
&&
previousButton
==
null
)
{
setBounds
(
editor
,
insets
.
left
,
insets
.
top
,
width
-
insets
.
left
-
insets
.
right
,
height
-
insets
.
top
-
insets
.
bottom
);
return
;
}
Dimension
nextD
=
preferredSize
(
nextButton
);
Dimension
nextD
=
preferredSize
(
nextButton
);
Dimension
previousD
=
preferredSize
(
previousButton
);
Dimension
previousD
=
preferredSize
(
previousButton
);
int
buttonsWidth
=
Math
.
max
(
nextD
.
width
,
previousD
.
width
);
int
buttonsWidth
=
Math
.
max
(
nextD
.
width
,
previousD
.
width
);
...
...
src/share/classes/sun/awt/FontConfiguration.java
浏览文件 @
ed853b07
/*
/*
* Copyright (c) 2000, 20
08
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 20
10
, 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
...
@@ -37,10 +37,10 @@ import java.nio.charset.Charset;
...
@@ -37,10 +37,10 @@ import java.nio.charset.Charset;
import
java.nio.charset.CharsetEncoder
;
import
java.nio.charset.CharsetEncoder
;
import
java.security.AccessController
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
import
java.security.PrivilegedAction
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.HashSet
;
import
java.util.Hashtable
;
import
java.util.Hashtable
;
import
java.util.Iterator
;
import
java.util.Locale
;
import
java.util.Locale
;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
import
java.util.Properties
;
import
java.util.Properties
;
...
@@ -329,6 +329,8 @@ public abstract class FontConfiguration {
...
@@ -329,6 +329,8 @@ public abstract class FontConfiguration {
* tables.
* tables.
*/
*/
public
static
void
saveBinary
(
OutputStream
out
)
throws
IOException
{
public
static
void
saveBinary
(
OutputStream
out
)
throws
IOException
{
sanityCheck
();
DataOutputStream
dataOut
=
new
DataOutputStream
(
out
);
DataOutputStream
dataOut
=
new
DataOutputStream
(
out
);
writeShortTable
(
dataOut
,
head
);
writeShortTable
(
dataOut
,
head
);
writeShortTable
(
dataOut
,
table_scriptIDs
);
writeShortTable
(
dataOut
,
table_scriptIDs
);
...
@@ -350,7 +352,6 @@ public abstract class FontConfiguration {
...
@@ -350,7 +352,6 @@ public abstract class FontConfiguration {
if
(
verbose
)
{
if
(
verbose
)
{
dump
();
dump
();
}
}
sanityCheck
();
}
}
//private static boolean loadingProperties;
//private static boolean loadingProperties;
...
@@ -1343,6 +1344,11 @@ public abstract class FontConfiguration {
...
@@ -1343,6 +1344,11 @@ public abstract class FontConfiguration {
private
static
short
[]
table_stringIDs
;
private
static
short
[]
table_stringIDs
;
private
static
char
[]
table_stringTable
;
private
static
char
[]
table_stringTable
;
/**
* Checks consistencies of complied fontconfig data. This method
* is called only at the build-time from
* build.tools.compilefontconfig.CompileFontConfig.
*/
private
static
void
sanityCheck
()
{
private
static
void
sanityCheck
()
{
int
errors
=
0
;
int
errors
=
0
;
...
@@ -1358,12 +1364,20 @@ public abstract class FontConfiguration {
...
@@ -1358,12 +1364,20 @@ public abstract class FontConfiguration {
//componentFontNameID starts from "1"
//componentFontNameID starts from "1"
for
(
int
ii
=
1
;
ii
<
table_filenames
.
length
;
ii
++)
{
for
(
int
ii
=
1
;
ii
<
table_filenames
.
length
;
ii
++)
{
if
(
table_filenames
[
ii
]
==
-
1
)
{
if
(
table_filenames
[
ii
]
==
-
1
)
{
System
.
out
.
println
(
"\n Warning: "
// The corresponding finename entry for a component
+
"<filename."
// font name is mandatory on Windows, but it's
+
getString
(
table_componentFontNameIDs
[
ii
])
// optional on Solaris and Linux.
+
"> entry is missing!!!"
);
if
(
osName
.
contains
(
"Windows"
))
{
if
(!
osName
.
contains
(
"Linux"
))
{
System
.
err
.
println
(
"\n Error: <filename."
+
getString
(
table_componentFontNameIDs
[
ii
])
+
"> entry is missing!!!"
);
errors
++;
errors
++;
}
else
{
if
(
verbose
&&
!
isEmpty
(
table_filenames
))
{
System
.
err
.
println
(
"\n Note: 'filename' entry is undefined for \""
+
getString
(
table_componentFontNameIDs
[
ii
])
+
"\""
);
}
}
}
}
}
}
}
...
@@ -1382,7 +1396,7 @@ public abstract class FontConfiguration {
...
@@ -1382,7 +1396,7 @@ public abstract class FontConfiguration {
int
jj
=
iii
*
NUM_STYLES
+
iij
;
int
jj
=
iii
*
NUM_STYLES
+
iij
;
short
ffid
=
table_scriptFonts
[
fid
+
jj
];
short
ffid
=
table_scriptFonts
[
fid
+
jj
];
if
(
ffid
==
0
)
{
if
(
ffid
==
0
)
{
System
.
out
.
println
(
"\n Error: <"
System
.
err
.
println
(
"\n Error: <"
+
getFontName
(
iii
)
+
"."
+
getFontName
(
iii
)
+
"."
+
getStyleName
(
iij
)
+
"."
+
getStyleName
(
iij
)
+
"."
+
getString
(
table_scriptIDs
[
ii
])
+
getString
(
table_scriptIDs
[
ii
])
...
@@ -1402,7 +1416,7 @@ public abstract class FontConfiguration {
...
@@ -1402,7 +1416,7 @@ public abstract class FontConfiguration {
script
.
contains
(
"symbol"
))
{
script
.
contains
(
"symbol"
))
{
continue
;
continue
;
}
}
System
.
out
.
println
(
"\nError: "
System
.
err
.
println
(
"\nError: "
+
"<awtfontpath."
+
"<awtfontpath."
+
script
+
script
+
"> entry is missing!!!"
);
+
"> entry is missing!!!"
);
...
@@ -1411,11 +1425,19 @@ public abstract class FontConfiguration {
...
@@ -1411,11 +1425,19 @@ public abstract class FontConfiguration {
}
}
}
}
if
(
errors
!=
0
)
{
if
(
errors
!=
0
)
{
System
.
out
.
println
(
"!!THERE ARE "
+
errors
+
" ERROR(S) IN "
System
.
err
.
println
(
"!!THERE ARE "
+
errors
+
" ERROR(S) IN "
+
"THE FONTCONFIG FILE, PLEASE CHECK ITS CONTENT!!\n"
);
+
"THE FONTCONFIG FILE, PLEASE CHECK ITS CONTENT!!\n"
);
System
.
exit
(
1
);
System
.
exit
(
1
);
}
}
private
static
boolean
isEmpty
(
short
[]
a
)
{
for
(
short
s
:
a
)
{
if
(
s
!=
-
1
)
{
return
false
;
}
}
}
return
true
;
}
}
//dump the fontconfig data tables
//dump the fontconfig data tables
...
@@ -1652,20 +1674,16 @@ public abstract class FontConfiguration {
...
@@ -1652,20 +1674,16 @@ public abstract class FontConfiguration {
private
static
void
writeShortTable
(
DataOutputStream
out
,
short
[]
data
)
private
static
void
writeShortTable
(
DataOutputStream
out
,
short
[]
data
)
throws
IOException
{
throws
IOException
{
for
(
int
i
=
0
;
i
<
data
.
length
;
i
++
)
{
for
(
short
val
:
data
)
{
out
.
writeShort
(
data
[
i
]
);
out
.
writeShort
(
val
);
}
}
}
}
private
static
short
[]
toList
(
HashMap
map
)
{
private
static
short
[]
toList
(
HashMap
<
String
,
Short
>
map
)
{
short
[]
list
=
new
short
[
map
.
size
()];
short
[]
list
=
new
short
[
map
.
size
()];
for
(
int
i
=
0
;
i
<
list
.
length
;
i
++)
{
Arrays
.
fill
(
list
,
(
short
)
-
1
);
list
[
i
]
=
-
1
;
for
(
Entry
<
String
,
Short
>
entry
:
map
.
entrySet
())
{
}
list
[
entry
.
getValue
()]
=
getStringID
(
entry
.
getKey
());
Iterator
iterator
=
map
.
entrySet
().
iterator
();
while
(
iterator
.
hasNext
())
{
Entry
<
String
,
Short
>
entry
=
(
Entry
<
String
,
Short
>)
iterator
.
next
();
list
[
entry
.
getValue
().
shortValue
()]
=
getStringID
(
entry
.
getKey
());
}
}
return
list
;
return
list
;
}
}
...
@@ -1763,25 +1781,19 @@ public abstract class FontConfiguration {
...
@@ -1763,25 +1781,19 @@ public abstract class FontConfiguration {
int
len
=
table_scriptIDs
.
length
+
scriptFonts
.
size
()
*
20
;
int
len
=
table_scriptIDs
.
length
+
scriptFonts
.
size
()
*
20
;
table_scriptFonts
=
new
short
[
len
];
table_scriptFonts
=
new
short
[
len
];
Iterator
iterator
=
scriptAllfonts
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
Short
>
entry
:
scriptAllfonts
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
table_scriptFonts
[
entry
.
getKey
().
intValue
()]
=
entry
.
getValue
();
Entry
<
Short
,
Short
>
entry
=
(
Entry
<
Short
,
Short
>)
iterator
.
next
();
table_scriptFonts
[
entry
.
getKey
().
intValue
()]
=
(
short
)
entry
.
getValue
().
shortValue
();
}
}
int
off
=
table_scriptIDs
.
length
;
int
off
=
table_scriptIDs
.
length
;
iterator
=
scriptFonts
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
Short
[]>
entry
:
scriptFonts
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
Entry
<
Short
,
Short
[]>
entry
=
(
Entry
<
Short
,
Short
[]>)
iterator
.
next
();
table_scriptFonts
[
entry
.
getKey
().
intValue
()]
=
(
short
)-
off
;
table_scriptFonts
[
entry
.
getKey
().
intValue
()]
=
(
short
)-
off
;
Short
[]
v
=
entry
.
getValue
();
Short
[]
v
=
entry
.
getValue
();
int
i
=
0
;
for
(
int
i
=
0
;
i
<
20
;
i
++)
{
while
(
i
<
20
)
{
if
(
v
[
i
]
!=
null
)
{
if
(
v
[
i
]
!=
null
)
{
table_scriptFonts
[
off
++]
=
v
[
i
]
.
shortValue
()
;
table_scriptFonts
[
off
++]
=
v
[
i
];
}
else
{
}
else
{
table_scriptFonts
[
off
++]
=
0
;
table_scriptFonts
[
off
++]
=
0
;
}
}
i
++;
}
}
}
}
...
@@ -1792,9 +1804,7 @@ public abstract class FontConfiguration {
...
@@ -1792,9 +1804,7 @@ public abstract class FontConfiguration {
//(3) sequences elcID -> XXXX[1|5] -> scriptID[]
//(3) sequences elcID -> XXXX[1|5] -> scriptID[]
head
[
INDEX_sequences
]
=
(
short
)(
head
[
INDEX_elcIDs
]
+
table_elcIDs
.
length
);
head
[
INDEX_sequences
]
=
(
short
)(
head
[
INDEX_elcIDs
]
+
table_elcIDs
.
length
);
table_sequences
=
new
short
[
elcIDs
.
size
()
*
NUM_FONTS
];
table_sequences
=
new
short
[
elcIDs
.
size
()
*
NUM_FONTS
];
iterator
=
sequences
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
short
[]>
entry
:
sequences
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
Entry
<
Short
,
short
[]>
entry
=
(
Entry
<
Short
,
short
[]>)
iterator
.
next
();
//table_sequences[entry.getKey().intValue()] = (short)-off;
//table_sequences[entry.getKey().intValue()] = (short)-off;
int
k
=
entry
.
getKey
().
intValue
();
int
k
=
entry
.
getKey
().
intValue
();
short
[]
v
=
entry
.
getValue
();
short
[]
v
=
entry
.
getValue
();
...
@@ -1827,31 +1837,24 @@ public abstract class FontConfiguration {
...
@@ -1827,31 +1837,24 @@ public abstract class FontConfiguration {
//(6)componentFontNameID -> filenameID
//(6)componentFontNameID -> filenameID
head
[
INDEX_filenames
]
=
(
short
)(
head
[
INDEX_componentFontNameIDs
]
+
table_componentFontNameIDs
.
length
);
head
[
INDEX_filenames
]
=
(
short
)(
head
[
INDEX_componentFontNameIDs
]
+
table_componentFontNameIDs
.
length
);
table_filenames
=
new
short
[
table_componentFontNameIDs
.
length
];
table_filenames
=
new
short
[
table_componentFontNameIDs
.
length
];
for
(
int
i
=
0
;
i
<
table_filenames
.
length
;
i
++)
{
Arrays
.
fill
(
table_filenames
,
(
short
)
-
1
);
table_filenames
[
i
]
=
-
1
;
}
for
(
Entry
<
Short
,
Short
>
entry
:
filenames
.
entrySet
())
{
iterator
=
filenames
.
entrySet
().
iterator
();
table_filenames
[
entry
.
getKey
()]
=
entry
.
getValue
();
while
(
iterator
.
hasNext
())
{
Entry
<
Short
,
Short
>
entry
=
(
Entry
<
Short
,
Short
>)
iterator
.
next
();
table_filenames
[
entry
.
getKey
().
shortValue
()]
=
entry
.
getValue
().
shortValue
();
}
}
//(7)scriptID-> awtfontpath
//(7)scriptID-> awtfontpath
//the paths are stored as scriptID -> stringID in awtfontpahts
//the paths are stored as scriptID -> stringID in awtfontpahts
head
[
INDEX_awtfontpaths
]
=
(
short
)(
head
[
INDEX_filenames
]
+
table_filenames
.
length
);
head
[
INDEX_awtfontpaths
]
=
(
short
)(
head
[
INDEX_filenames
]
+
table_filenames
.
length
);
table_awtfontpaths
=
new
short
[
table_scriptIDs
.
length
];
table_awtfontpaths
=
new
short
[
table_scriptIDs
.
length
];
iterator
=
awtfontpaths
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
Short
>
entry
:
awtfontpaths
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
table_awtfontpaths
[
entry
.
getKey
()]
=
entry
.
getValue
();
Entry
<
Short
,
Short
>
entry
=
(
Entry
<
Short
,
Short
>)
iterator
.
next
();
table_awtfontpaths
[
entry
.
getKey
().
shortValue
()]
=
entry
.
getValue
().
shortValue
();
}
}
//(8)exclusions
//(8)exclusions
head
[
INDEX_exclusions
]
=
(
short
)(
head
[
INDEX_awtfontpaths
]
+
table_awtfontpaths
.
length
);
head
[
INDEX_exclusions
]
=
(
short
)(
head
[
INDEX_awtfontpaths
]
+
table_awtfontpaths
.
length
);
table_exclusions
=
new
short
[
scriptIDs
.
size
()];
table_exclusions
=
new
short
[
scriptIDs
.
size
()];
iterator
=
exclusions
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
int
[]>
entry
:
exclusions
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
Entry
<
Short
,
int
[]>
entry
=
(
Entry
<
Short
,
int
[]>)
iterator
.
next
();
int
[]
exI
=
entry
.
getValue
();
int
[]
exI
=
entry
.
getValue
();
char
[]
exC
=
new
char
[
exI
.
length
*
2
];
char
[]
exC
=
new
char
[
exI
.
length
*
2
];
int
j
=
0
;
int
j
=
0
;
...
@@ -1859,17 +1862,15 @@ public abstract class FontConfiguration {
...
@@ -1859,17 +1862,15 @@ public abstract class FontConfiguration {
exC
[
j
++]
=
(
char
)
(
exI
[
i
]
>>
16
);
exC
[
j
++]
=
(
char
)
(
exI
[
i
]
>>
16
);
exC
[
j
++]
=
(
char
)
(
exI
[
i
]
&
0xffff
);
exC
[
j
++]
=
(
char
)
(
exI
[
i
]
&
0xffff
);
}
}
table_exclusions
[
entry
.
getKey
()
.
shortValue
()
]
=
getStringID
(
new
String
(
exC
));
table_exclusions
[
entry
.
getKey
()]
=
getStringID
(
new
String
(
exC
));
}
}
//(9)proportionals
//(9)proportionals
head
[
INDEX_proportionals
]
=
(
short
)(
head
[
INDEX_exclusions
]
+
table_exclusions
.
length
);
head
[
INDEX_proportionals
]
=
(
short
)(
head
[
INDEX_exclusions
]
+
table_exclusions
.
length
);
table_proportionals
=
new
short
[
proportionals
.
size
()
*
2
];
table_proportionals
=
new
short
[
proportionals
.
size
()
*
2
];
iterator
=
proportionals
.
entrySet
().
iterator
();
int
j
=
0
;
int
j
=
0
;
while
(
iterator
.
hasNext
())
{
for
(
Entry
<
Short
,
Short
>
entry
:
proportionals
.
entrySet
())
{
Entry
<
Short
,
Short
>
entry
=
(
Entry
<
Short
,
Short
>)
iterator
.
next
();
table_proportionals
[
j
++]
=
entry
.
getKey
();
table_proportionals
[
j
++]
=
entry
.
getKey
().
shortValue
();
table_proportionals
[
j
++]
=
entry
.
getValue
();
table_proportionals
[
j
++]
=
entry
.
getValue
().
shortValue
();
}
}
//(10) see (1) for info, the only difference is "xxx.motif"
//(10) see (1) for info, the only difference is "xxx.motif"
...
@@ -1878,22 +1879,18 @@ public abstract class FontConfiguration {
...
@@ -1878,22 +1879,18 @@ public abstract class FontConfiguration {
len
=
table_scriptIDs
.
length
+
scriptFontsMotif
.
size
()
*
20
;
len
=
table_scriptIDs
.
length
+
scriptFontsMotif
.
size
()
*
20
;
table_scriptFontsMotif
=
new
short
[
len
];
table_scriptFontsMotif
=
new
short
[
len
];
iterator
=
scriptAllfontsMotif
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
Short
>
entry
:
scriptAllfontsMotif
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
Entry
<
Short
,
Short
>
entry
=
(
Entry
<
Short
,
Short
>)
iterator
.
next
();
table_scriptFontsMotif
[
entry
.
getKey
().
intValue
()]
=
table_scriptFontsMotif
[
entry
.
getKey
().
intValue
()]
=
(
short
)
entry
.
getValue
()
.
shortValue
()
;
(
short
)
entry
.
getValue
();
}
}
off
=
table_scriptIDs
.
length
;
off
=
table_scriptIDs
.
length
;
iterator
=
scriptFontsMotif
.
entrySet
().
iterator
();
for
(
Entry
<
Short
,
Short
[]>
entry
:
scriptFontsMotif
.
entrySet
())
{
while
(
iterator
.
hasNext
())
{
Entry
<
Short
,
Short
[]>
entry
=
(
Entry
<
Short
,
Short
[]>)
iterator
.
next
();
table_scriptFontsMotif
[
entry
.
getKey
().
intValue
()]
=
(
short
)-
off
;
table_scriptFontsMotif
[
entry
.
getKey
().
intValue
()]
=
(
short
)-
off
;
Short
[]
v
=
entry
.
getValue
();
Short
[]
v
=
entry
.
getValue
();
int
i
=
0
;
int
i
=
0
;
while
(
i
<
20
)
{
while
(
i
<
20
)
{
if
(
v
[
i
]
!=
null
)
{
if
(
v
[
i
]
!=
null
)
{
table_scriptFontsMotif
[
off
++]
=
v
[
i
]
.
shortValue
()
;
table_scriptFontsMotif
[
off
++]
=
v
[
i
];
}
else
{
}
else
{
table_scriptFontsMotif
[
off
++]
=
0
;
table_scriptFontsMotif
[
off
++]
=
0
;
}
}
...
@@ -1907,12 +1904,10 @@ public abstract class FontConfiguration {
...
@@ -1907,12 +1904,10 @@ public abstract class FontConfiguration {
//(11)short[] alphabeticSuffix
//(11)short[] alphabeticSuffix
head
[
INDEX_alphabeticSuffix
]
=
(
short
)(
head
[
INDEX_scriptFontsMotif
]
+
table_scriptFontsMotif
.
length
);
head
[
INDEX_alphabeticSuffix
]
=
(
short
)(
head
[
INDEX_scriptFontsMotif
]
+
table_scriptFontsMotif
.
length
);
table_alphabeticSuffix
=
new
short
[
alphabeticSuffix
.
size
()
*
2
];
table_alphabeticSuffix
=
new
short
[
alphabeticSuffix
.
size
()
*
2
];
iterator
=
alphabeticSuffix
.
entrySet
().
iterator
();
j
=
0
;
j
=
0
;
while
(
iterator
.
hasNext
())
{
for
(
Entry
<
Short
,
Short
>
entry
:
alphabeticSuffix
.
entrySet
())
{
Entry
<
Short
,
Short
>
entry
=
(
Entry
<
Short
,
Short
>)
iterator
.
next
();
table_alphabeticSuffix
[
j
++]
=
entry
.
getKey
();
table_alphabeticSuffix
[
j
++]
=
entry
.
getKey
().
shortValue
();
table_alphabeticSuffix
[
j
++]
=
entry
.
getValue
();
table_alphabeticSuffix
[
j
++]
=
entry
.
getValue
().
shortValue
();
}
}
//(15)short[] fallbackScriptIDs; just put the ID in head
//(15)short[] fallbackScriptIDs; just put the ID in head
...
...
src/share/classes/sun/awt/SunToolkit.java
浏览文件 @
ed853b07
...
@@ -102,26 +102,6 @@ public abstract class SunToolkit extends Toolkit
...
@@ -102,26 +102,6 @@ public abstract class SunToolkit extends Toolkit
public
final
static
int
MAX_BUTTONS_SUPPORTED
=
20
;
public
final
static
int
MAX_BUTTONS_SUPPORTED
=
20
;
public
SunToolkit
()
{
public
SunToolkit
()
{
/* If awt.threadgroup is set to class name the instance of
* this class is created (should be subclass of ThreadGroup)
* and EventDispatchThread is created inside of it
*
* If loaded class overrides uncaughtException instance
* handles all uncaught exception on EventDispatchThread
*/
ThreadGroup
threadGroup
=
null
;
String
tgName
=
System
.
getProperty
(
"awt.threadgroup"
,
""
);
if
(
tgName
.
length
()
!=
0
)
{
try
{
Constructor
ctor
=
Class
.
forName
(
tgName
).
getConstructor
(
new
Class
[]
{
String
.
class
});
threadGroup
=
(
ThreadGroup
)
ctor
.
newInstance
(
new
Object
[]
{
"AWT-ThreadGroup"
});
}
catch
(
Exception
e
)
{
System
.
err
.
println
(
"Failed loading "
+
tgName
+
": "
+
e
);
}
}
Runnable
initEQ
=
new
Runnable
()
{
Runnable
initEQ
=
new
Runnable
()
{
public
void
run
()
{
public
void
run
()
{
EventQueue
eventQueue
;
EventQueue
eventQueue
;
...
@@ -144,17 +124,7 @@ public abstract class SunToolkit extends Toolkit
...
@@ -144,17 +124,7 @@ public abstract class SunToolkit extends Toolkit
}
}
};
};
if
(
threadGroup
!=
null
)
{
initEQ
.
run
();
Thread
eqInitThread
=
new
Thread
(
threadGroup
,
initEQ
,
"EventQueue-Init"
);
eqInitThread
.
start
();
try
{
eqInitThread
.
join
();
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
}
else
{
initEQ
.
run
();
}
}
}
public
boolean
useBufferPerWindow
()
{
public
boolean
useBufferPerWindow
()
{
...
...
src/share/classes/sun/dc/DuctusRenderingEngine.java
浏览文件 @
ed853b07
...
@@ -635,6 +635,88 @@ public class DuctusRenderingEngine extends RenderingEngine {
...
@@ -635,6 +635,88 @@ public class DuctusRenderingEngine extends RenderingEngine {
return
r
;
return
r
;
}
}
/**
* {@inheritDoc}
*/
@Override
public
AATileGenerator
getAATileGenerator
(
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
,
Region
clip
,
int
bbox
[])
{
// REMIND: Deal with large coordinates!
double
ldx1
,
ldy1
,
ldx2
,
ldy2
;
boolean
innerpgram
=
(
lw1
>
0
&&
lw2
>
0
);
if
(
innerpgram
)
{
ldx1
=
dx1
*
lw1
;
ldy1
=
dy1
*
lw1
;
ldx2
=
dx2
*
lw2
;
ldy2
=
dy2
*
lw2
;
x
-=
(
ldx1
+
ldx2
)
/
2.0
;
y
-=
(
ldy1
+
ldy2
)
/
2.0
;
dx1
+=
ldx1
;
dy1
+=
ldy1
;
dx2
+=
ldx2
;
dy2
+=
ldy2
;
if
(
lw1
>
1
&&
lw2
>
1
)
{
// Inner parallelogram was entirely consumed by stroke...
innerpgram
=
false
;
}
}
else
{
ldx1
=
ldy1
=
ldx2
=
ldy2
=
0
;
}
Rasterizer
r
=
getRasterizer
();
r
.
setUsage
(
Rasterizer
.
EOFILL
);
r
.
beginPath
();
r
.
beginSubpath
((
float
)
x
,
(
float
)
y
);
r
.
appendLine
((
float
)
(
x
+
dx1
),
(
float
)
(
y
+
dy1
));
r
.
appendLine
((
float
)
(
x
+
dx1
+
dx2
),
(
float
)
(
y
+
dy1
+
dy2
));
r
.
appendLine
((
float
)
(
x
+
dx2
),
(
float
)
(
y
+
dy2
));
r
.
closedSubpath
();
if
(
innerpgram
)
{
x
+=
ldx1
+
ldx2
;
y
+=
ldy1
+
ldy2
;
dx1
-=
2.0
*
ldx1
;
dy1
-=
2.0
*
ldy1
;
dx2
-=
2.0
*
ldx2
;
dy2
-=
2.0
*
ldy2
;
r
.
beginSubpath
((
float
)
x
,
(
float
)
y
);
r
.
appendLine
((
float
)
(
x
+
dx1
),
(
float
)
(
y
+
dy1
));
r
.
appendLine
((
float
)
(
x
+
dx1
+
dx2
),
(
float
)
(
y
+
dy1
+
dy2
));
r
.
appendLine
((
float
)
(
x
+
dx2
),
(
float
)
(
y
+
dy2
));
r
.
closedSubpath
();
}
try
{
r
.
endPath
();
r
.
getAlphaBox
(
bbox
);
clip
.
clipBoxToBounds
(
bbox
);
if
(
bbox
[
0
]
>=
bbox
[
2
]
||
bbox
[
1
]
>=
bbox
[
3
])
{
dropRasterizer
(
r
);
return
null
;
}
r
.
setOutputArea
(
bbox
[
0
],
bbox
[
1
],
bbox
[
2
]
-
bbox
[
0
],
bbox
[
3
]
-
bbox
[
1
]);
}
catch
(
PRException
e
)
{
/*
* This exeption is thrown from the native part of the Ductus
* (only in case of a debug build) to indicate that some
* segments of the path have very large coordinates.
* See 4485298 for more info.
*/
System
.
err
.
println
(
"DuctusRenderingEngine.getAATileGenerator: "
+
e
);
}
return
r
;
}
private
void
feedConsumer
(
PathConsumer
consumer
,
PathIterator
pi
)
{
private
void
feedConsumer
(
PathConsumer
consumer
,
PathIterator
pi
)
{
try
{
try
{
consumer
.
beginPath
();
consumer
.
beginPath
();
...
...
src/share/classes/sun/font/FileFontStrike.java
浏览文件 @
ed853b07
...
@@ -58,10 +58,10 @@ public class FileFontStrike extends PhysicalStrike {
...
@@ -58,10 +58,10 @@ public class FileFontStrike extends PhysicalStrike {
private
static
final
int
SEGINTARRAY
=
3
;
private
static
final
int
SEGINTARRAY
=
3
;
private
static
final
int
SEGLONGARRAY
=
4
;
private
static
final
int
SEGLONGARRAY
=
4
;
private
int
glyphCacheFormat
=
UNINITIALISED
;
private
volatile
int
glyphCacheFormat
=
UNINITIALISED
;
/* segmented arrays are blocks of
256
*/
/* segmented arrays are blocks of
32
*/
private
static
final
int
SEGSHIFT
=
8
;
private
static
final
int
SEGSHIFT
=
5
;
private
static
final
int
SEGSIZE
=
1
<<
SEGSHIFT
;
private
static
final
int
SEGSIZE
=
1
<<
SEGSHIFT
;
private
boolean
segmentedCache
;
private
boolean
segmentedCache
;
...
@@ -171,7 +171,7 @@ public class FileFontStrike extends PhysicalStrike {
...
@@ -171,7 +171,7 @@ public class FileFontStrike extends PhysicalStrike {
mapper
=
fileFont
.
getMapper
();
mapper
=
fileFont
.
getMapper
();
int
numGlyphs
=
mapper
.
getNumGlyphs
();
int
numGlyphs
=
mapper
.
getNumGlyphs
();
/* Always segment for fonts with > 2
K
glyphs, but also for smaller
/* Always segment for fonts with > 2
56
glyphs, but also for smaller
* fonts with non-typical sizes and transforms.
* fonts with non-typical sizes and transforms.
* Segmenting for all non-typical pt sizes helps to minimise memory
* Segmenting for all non-typical pt sizes helps to minimise memory
* usage when very many distinct strikes are created.
* usage when very many distinct strikes are created.
...
@@ -522,32 +522,33 @@ public class FileFontStrike extends PhysicalStrike {
...
@@ -522,32 +522,33 @@ public class FileFontStrike extends PhysicalStrike {
}
}
/* Called only from synchronized code or constructor */
/* Called only from synchronized code or constructor */
private
void
initGlyphCache
()
{
private
synchronized
void
initGlyphCache
()
{
int
numGlyphs
=
mapper
.
getNumGlyphs
();
int
numGlyphs
=
mapper
.
getNumGlyphs
();
int
tmpFormat
=
UNINITIALISED
;
if
(
segmentedCache
)
{
if
(
segmentedCache
)
{
int
numSegments
=
(
numGlyphs
+
SEGSIZE
-
1
)/
SEGSIZE
;
int
numSegments
=
(
numGlyphs
+
SEGSIZE
-
1
)/
SEGSIZE
;
if
(
longAddresses
)
{
if
(
longAddresses
)
{
glyphCache
Format
=
SEGLONGARRAY
;
tmp
Format
=
SEGLONGARRAY
;
segLongGlyphImages
=
new
long
[
numSegments
][];
segLongGlyphImages
=
new
long
[
numSegments
][];
this
.
disposer
.
segLongGlyphImages
=
segLongGlyphImages
;
this
.
disposer
.
segLongGlyphImages
=
segLongGlyphImages
;
}
else
{
}
else
{
glyphCache
Format
=
SEGINTARRAY
;
tmp
Format
=
SEGINTARRAY
;
segIntGlyphImages
=
new
int
[
numSegments
][];
segIntGlyphImages
=
new
int
[
numSegments
][];
this
.
disposer
.
segIntGlyphImages
=
segIntGlyphImages
;
this
.
disposer
.
segIntGlyphImages
=
segIntGlyphImages
;
}
}
}
else
{
}
else
{
if
(
longAddresses
)
{
if
(
longAddresses
)
{
glyphCache
Format
=
LONGARRAY
;
tmp
Format
=
LONGARRAY
;
longGlyphImages
=
new
long
[
numGlyphs
];
longGlyphImages
=
new
long
[
numGlyphs
];
this
.
disposer
.
longGlyphImages
=
longGlyphImages
;
this
.
disposer
.
longGlyphImages
=
longGlyphImages
;
}
else
{
}
else
{
glyphCache
Format
=
INTARRAY
;
tmp
Format
=
INTARRAY
;
intGlyphImages
=
new
int
[
numGlyphs
];
intGlyphImages
=
new
int
[
numGlyphs
];
this
.
disposer
.
intGlyphImages
=
intGlyphImages
;
this
.
disposer
.
intGlyphImages
=
intGlyphImages
;
}
}
}
}
glyphCacheFormat
=
tmpFormat
;
}
}
float
getGlyphAdvance
(
int
glyphCode
)
{
float
getGlyphAdvance
(
int
glyphCode
)
{
...
...
src/share/classes/sun/font/Font2D.java
浏览文件 @
ed853b07
...
@@ -343,7 +343,21 @@ public abstract class Font2D {
...
@@ -343,7 +343,21 @@ public abstract class Font2D {
}
}
strike
=
createStrike
(
desc
);
strike
=
createStrike
(
desc
);
//StrikeCache.addStrike();
//StrikeCache.addStrike();
strikeRef
=
StrikeCache
.
getStrikeRef
(
strike
);
/* If we are creating many strikes on this font which
* involve non-quadrant rotations, or more general
* transforms which include shears, then force the use
* of weak references rather than soft references.
* This means that it won't live much beyond the next GC,
* which is what we want for what is likely a transient strike.
*/
int
txType
=
desc
.
glyphTx
.
getType
();
if
(
txType
==
AffineTransform
.
TYPE_GENERAL_TRANSFORM
||
(
txType
&
AffineTransform
.
TYPE_GENERAL_ROTATION
)
!=
0
&&
strikeCache
.
size
()
>
10
)
{
strikeRef
=
StrikeCache
.
getStrikeRef
(
strike
,
true
);
}
else
{
strikeRef
=
StrikeCache
.
getStrikeRef
(
strike
);
}
strikeCache
.
put
(
desc
,
strikeRef
);
strikeCache
.
put
(
desc
,
strikeRef
);
//strike.lastlookupTime = System.currentTimeMillis();
//strike.lastlookupTime = System.currentTimeMillis();
lastFontStrike
=
new
SoftReference
(
strike
);
lastFontStrike
=
new
SoftReference
(
strike
);
...
...
src/share/classes/sun/java2d/SurfaceData.java
浏览文件 @
ed853b07
...
@@ -367,16 +367,17 @@ public abstract class SurfaceData
...
@@ -367,16 +367,17 @@ public abstract class SurfaceData
public
static
final
TextPipe
aaTextRenderer
;
public
static
final
TextPipe
aaTextRenderer
;
public
static
final
TextPipe
lcdTextRenderer
;
public
static
final
TextPipe
lcdTextRenderer
;
protected
static
final
Composite
Pipe
colorPipe
;
protected
static
final
AlphaColor
Pipe
colorPipe
;
protected
static
final
PixelToShapeConverter
colorViaShape
;
protected
static
final
PixelToShapeConverter
colorViaShape
;
protected
static
final
PixelToParallelogramConverter
colorViaPgram
;
protected
static
final
PixelToParallelogramConverter
colorViaPgram
;
protected
static
final
TextPipe
colorText
;
protected
static
final
TextPipe
colorText
;
protected
static
final
CompositePipe
clipColorPipe
;
protected
static
final
CompositePipe
clipColorPipe
;
protected
static
final
TextPipe
clipColorText
;
protected
static
final
TextPipe
clipColorText
;
protected
static
final
AAShapePipe
AAColorShape
;
protected
static
final
AAShapePipe
AAColorShape
;
protected
static
final
PixelToShapeConverter
AAColorViaShape
;
protected
static
final
PixelToParallelogramConverter
AAColorViaShape
;
protected
static
final
PixelToParallelogramConverter
AAColorViaPgram
;
protected
static
final
AAShapePipe
AAClipColorShape
;
protected
static
final
AAShapePipe
AAClipColorShape
;
protected
static
final
PixelTo
Shape
Converter
AAClipColorViaShape
;
protected
static
final
PixelTo
Parallelogram
Converter
AAClipColorViaShape
;
protected
static
final
CompositePipe
paintPipe
;
protected
static
final
CompositePipe
paintPipe
;
protected
static
final
SpanShapeRenderer
paintShape
;
protected
static
final
SpanShapeRenderer
paintShape
;
...
@@ -385,9 +386,9 @@ public abstract class SurfaceData
...
@@ -385,9 +386,9 @@ public abstract class SurfaceData
protected
static
final
CompositePipe
clipPaintPipe
;
protected
static
final
CompositePipe
clipPaintPipe
;
protected
static
final
TextPipe
clipPaintText
;
protected
static
final
TextPipe
clipPaintText
;
protected
static
final
AAShapePipe
AAPaintShape
;
protected
static
final
AAShapePipe
AAPaintShape
;
protected
static
final
PixelTo
Shape
Converter
AAPaintViaShape
;
protected
static
final
PixelTo
Parallelogram
Converter
AAPaintViaShape
;
protected
static
final
AAShapePipe
AAClipPaintShape
;
protected
static
final
AAShapePipe
AAClipPaintShape
;
protected
static
final
PixelTo
Shape
Converter
AAClipPaintViaShape
;
protected
static
final
PixelTo
Parallelogram
Converter
AAClipPaintViaShape
;
protected
static
final
CompositePipe
compPipe
;
protected
static
final
CompositePipe
compPipe
;
protected
static
final
SpanShapeRenderer
compShape
;
protected
static
final
SpanShapeRenderer
compShape
;
...
@@ -396,9 +397,9 @@ public abstract class SurfaceData
...
@@ -396,9 +397,9 @@ public abstract class SurfaceData
protected
static
final
CompositePipe
clipCompPipe
;
protected
static
final
CompositePipe
clipCompPipe
;
protected
static
final
TextPipe
clipCompText
;
protected
static
final
TextPipe
clipCompText
;
protected
static
final
AAShapePipe
AACompShape
;
protected
static
final
AAShapePipe
AACompShape
;
protected
static
final
PixelTo
Shape
Converter
AACompViaShape
;
protected
static
final
PixelTo
Parallelogram
Converter
AACompViaShape
;
protected
static
final
AAShapePipe
AAClipCompShape
;
protected
static
final
AAShapePipe
AAClipCompShape
;
protected
static
final
PixelTo
Shape
Converter
AAClipCompViaShape
;
protected
static
final
PixelTo
Parallelogram
Converter
AAClipCompViaShape
;
protected
static
final
DrawImagePipe
imagepipe
;
protected
static
final
DrawImagePipe
imagepipe
;
...
@@ -427,6 +428,22 @@ public abstract class SurfaceData
...
@@ -427,6 +428,22 @@ public abstract class SurfaceData
}
}
}
}
private
static
PixelToParallelogramConverter
makeConverter
(
AAShapePipe
renderer
,
ParallelogramPipe
pgrampipe
)
{
return
new
PixelToParallelogramConverter
(
renderer
,
pgrampipe
,
1.0
/
8.0
,
0.499
,
false
);
}
private
static
PixelToParallelogramConverter
makeConverter
(
AAShapePipe
renderer
)
{
return
makeConverter
(
renderer
,
renderer
);
}
static
{
static
{
colorPrimitives
=
new
LoopPipe
();
colorPrimitives
=
new
LoopPipe
();
...
@@ -445,9 +462,10 @@ public abstract class SurfaceData
...
@@ -445,9 +462,10 @@ public abstract class SurfaceData
clipColorPipe
=
new
SpanClipRenderer
(
colorPipe
);
clipColorPipe
=
new
SpanClipRenderer
(
colorPipe
);
clipColorText
=
new
TextRenderer
(
clipColorPipe
);
clipColorText
=
new
TextRenderer
(
clipColorPipe
);
AAColorShape
=
new
AAShapePipe
(
colorPipe
);
AAColorShape
=
new
AAShapePipe
(
colorPipe
);
AAColorViaShape
=
new
PixelToShapeConverter
(
AAColorShape
);
AAColorViaShape
=
makeConverter
(
AAColorShape
);
AAColorViaPgram
=
makeConverter
(
AAColorShape
,
colorPipe
);
AAClipColorShape
=
new
AAShapePipe
(
clipColorPipe
);
AAClipColorShape
=
new
AAShapePipe
(
clipColorPipe
);
AAClipColorViaShape
=
new
PixelToShap
eConverter
(
AAClipColorShape
);
AAClipColorViaShape
=
mak
eConverter
(
AAClipColorShape
);
paintPipe
=
new
AlphaPaintPipe
();
paintPipe
=
new
AlphaPaintPipe
();
paintShape
=
new
SpanShapeRenderer
.
Composite
(
paintPipe
);
paintShape
=
new
SpanShapeRenderer
.
Composite
(
paintPipe
);
...
@@ -456,9 +474,9 @@ public abstract class SurfaceData
...
@@ -456,9 +474,9 @@ public abstract class SurfaceData
clipPaintPipe
=
new
SpanClipRenderer
(
paintPipe
);
clipPaintPipe
=
new
SpanClipRenderer
(
paintPipe
);
clipPaintText
=
new
TextRenderer
(
clipPaintPipe
);
clipPaintText
=
new
TextRenderer
(
clipPaintPipe
);
AAPaintShape
=
new
AAShapePipe
(
paintPipe
);
AAPaintShape
=
new
AAShapePipe
(
paintPipe
);
AAPaintViaShape
=
new
PixelToShap
eConverter
(
AAPaintShape
);
AAPaintViaShape
=
mak
eConverter
(
AAPaintShape
);
AAClipPaintShape
=
new
AAShapePipe
(
clipPaintPipe
);
AAClipPaintShape
=
new
AAShapePipe
(
clipPaintPipe
);
AAClipPaintViaShape
=
new
PixelToShap
eConverter
(
AAClipPaintShape
);
AAClipPaintViaShape
=
mak
eConverter
(
AAClipPaintShape
);
compPipe
=
new
GeneralCompositePipe
();
compPipe
=
new
GeneralCompositePipe
();
compShape
=
new
SpanShapeRenderer
.
Composite
(
compPipe
);
compShape
=
new
SpanShapeRenderer
.
Composite
(
compPipe
);
...
@@ -467,9 +485,9 @@ public abstract class SurfaceData
...
@@ -467,9 +485,9 @@ public abstract class SurfaceData
clipCompPipe
=
new
SpanClipRenderer
(
compPipe
);
clipCompPipe
=
new
SpanClipRenderer
(
compPipe
);
clipCompText
=
new
TextRenderer
(
clipCompPipe
);
clipCompText
=
new
TextRenderer
(
clipCompPipe
);
AACompShape
=
new
AAShapePipe
(
compPipe
);
AACompShape
=
new
AAShapePipe
(
compPipe
);
AACompViaShape
=
new
PixelToShap
eConverter
(
AACompShape
);
AACompViaShape
=
mak
eConverter
(
AACompShape
);
AAClipCompShape
=
new
AAShapePipe
(
clipCompPipe
);
AAClipCompShape
=
new
AAShapePipe
(
clipCompPipe
);
AAClipCompViaShape
=
new
PixelToShap
eConverter
(
AAClipCompShape
);
AAClipCompViaShape
=
mak
eConverter
(
AAClipCompShape
);
imagepipe
=
new
DrawImage
();
imagepipe
=
new
DrawImage
();
}
}
...
@@ -591,12 +609,12 @@ public abstract class SurfaceData
...
@@ -591,12 +609,12 @@ public abstract class SurfaceData
if
(
sg2d
.
clipState
==
sg2d
.
CLIP_SHAPE
)
{
if
(
sg2d
.
clipState
==
sg2d
.
CLIP_SHAPE
)
{
sg2d
.
drawpipe
=
AAClipCompViaShape
;
sg2d
.
drawpipe
=
AAClipCompViaShape
;
sg2d
.
fillpipe
=
AAClipCompViaShape
;
sg2d
.
fillpipe
=
AAClipCompViaShape
;
sg2d
.
shapepipe
=
AAClipCompShape
;
sg2d
.
shapepipe
=
AAClipComp
Via
Shape
;
sg2d
.
textpipe
=
clipCompText
;
sg2d
.
textpipe
=
clipCompText
;
}
else
{
}
else
{
sg2d
.
drawpipe
=
AACompViaShape
;
sg2d
.
drawpipe
=
AACompViaShape
;
sg2d
.
fillpipe
=
AACompViaShape
;
sg2d
.
fillpipe
=
AACompViaShape
;
sg2d
.
shapepipe
=
AACompShape
;
sg2d
.
shapepipe
=
AAComp
Via
Shape
;
sg2d
.
textpipe
=
compText
;
sg2d
.
textpipe
=
compText
;
}
}
}
else
{
}
else
{
...
@@ -616,13 +634,17 @@ public abstract class SurfaceData
...
@@ -616,13 +634,17 @@ public abstract class SurfaceData
if
(
sg2d
.
clipState
==
sg2d
.
CLIP_SHAPE
)
{
if
(
sg2d
.
clipState
==
sg2d
.
CLIP_SHAPE
)
{
sg2d
.
drawpipe
=
AAClipColorViaShape
;
sg2d
.
drawpipe
=
AAClipColorViaShape
;
sg2d
.
fillpipe
=
AAClipColorViaShape
;
sg2d
.
fillpipe
=
AAClipColorViaShape
;
sg2d
.
shapepipe
=
AAClipColorShape
;
sg2d
.
shapepipe
=
AAClipColor
Via
Shape
;
sg2d
.
textpipe
=
clipColorText
;
sg2d
.
textpipe
=
clipColorText
;
}
else
{
}
else
{
sg2d
.
drawpipe
=
AAColorViaShape
;
PixelToParallelogramConverter
converter
=
sg2d
.
fillpipe
=
AAColorViaShape
;
(
sg2d
.
alphafill
.
canDoParallelograms
()
sg2d
.
shapepipe
=
AAColorShape
;
?
AAColorViaPgram
if
(
sg2d
.
paintState
>
sg2d
.
PAINT_OPAQUECOLOR
||
:
AAColorViaShape
);
sg2d
.
drawpipe
=
converter
;
sg2d
.
fillpipe
=
converter
;
sg2d
.
shapepipe
=
converter
;
if
(
sg2d
.
paintState
>
sg2d
.
PAINT_ALPHACOLOR
||
sg2d
.
compositeState
>
sg2d
.
COMP_ISCOPY
)
sg2d
.
compositeState
>
sg2d
.
COMP_ISCOPY
)
{
{
sg2d
.
textpipe
=
colorText
;
sg2d
.
textpipe
=
colorText
;
...
@@ -634,12 +656,12 @@ public abstract class SurfaceData
...
@@ -634,12 +656,12 @@ public abstract class SurfaceData
if
(
sg2d
.
clipState
==
sg2d
.
CLIP_SHAPE
)
{
if
(
sg2d
.
clipState
==
sg2d
.
CLIP_SHAPE
)
{
sg2d
.
drawpipe
=
AAClipPaintViaShape
;
sg2d
.
drawpipe
=
AAClipPaintViaShape
;
sg2d
.
fillpipe
=
AAClipPaintViaShape
;
sg2d
.
fillpipe
=
AAClipPaintViaShape
;
sg2d
.
shapepipe
=
AAClipPaintShape
;
sg2d
.
shapepipe
=
AAClipPaint
Via
Shape
;
sg2d
.
textpipe
=
clipPaintText
;
sg2d
.
textpipe
=
clipPaintText
;
}
else
{
}
else
{
sg2d
.
drawpipe
=
AAPaintViaShape
;
sg2d
.
drawpipe
=
AAPaintViaShape
;
sg2d
.
fillpipe
=
AAPaintViaShape
;
sg2d
.
fillpipe
=
AAPaintViaShape
;
sg2d
.
shapepipe
=
AAPaintShape
;
sg2d
.
shapepipe
=
AAPaint
Via
Shape
;
sg2d
.
textpipe
=
paintText
;
sg2d
.
textpipe
=
paintText
;
}
}
}
}
...
@@ -793,6 +815,18 @@ public abstract class SurfaceData
...
@@ -793,6 +815,18 @@ public abstract class SurfaceData
}
}
}
}
private
static
CompositeType
getFillCompositeType
(
SunGraphics2D
sg2d
)
{
CompositeType
compType
=
sg2d
.
imageComp
;
if
(
sg2d
.
compositeState
==
sg2d
.
COMP_ISCOPY
)
{
if
(
compType
==
CompositeType
.
SrcOverNoEa
)
{
compType
=
CompositeType
.
OpaqueSrcOverNoEa
;
}
else
{
compType
=
CompositeType
.
SrcNoEa
;
}
}
return
compType
;
}
/**
/**
* Returns a MaskFill object that can be used on this destination
* Returns a MaskFill object that can be used on this destination
* with the source (paint) and composite types determined by the given
* with the source (paint) and composite types determined by the given
...
@@ -802,9 +836,10 @@ public abstract class SurfaceData
...
@@ -802,9 +836,10 @@ public abstract class SurfaceData
* surface) before returning a specific MaskFill object.
* surface) before returning a specific MaskFill object.
*/
*/
protected
MaskFill
getMaskFill
(
SunGraphics2D
sg2d
)
{
protected
MaskFill
getMaskFill
(
SunGraphics2D
sg2d
)
{
return
MaskFill
.
getFromCache
(
getPaintSurfaceType
(
sg2d
),
SurfaceType
src
=
getPaintSurfaceType
(
sg2d
);
sg2d
.
imageComp
,
CompositeType
comp
=
getFillCompositeType
(
sg2d
);
getSurfaceType
());
SurfaceType
dst
=
getSurfaceType
();
return
MaskFill
.
getFromCache
(
src
,
comp
,
dst
);
}
}
private
static
RenderCache
loopcache
=
new
RenderCache
(
30
);
private
static
RenderCache
loopcache
=
new
RenderCache
(
30
);
...
@@ -816,9 +851,7 @@ public abstract class SurfaceData
...
@@ -816,9 +851,7 @@ public abstract class SurfaceData
*/
*/
public
RenderLoops
getRenderLoops
(
SunGraphics2D
sg2d
)
{
public
RenderLoops
getRenderLoops
(
SunGraphics2D
sg2d
)
{
SurfaceType
src
=
getPaintSurfaceType
(
sg2d
);
SurfaceType
src
=
getPaintSurfaceType
(
sg2d
);
CompositeType
comp
=
(
sg2d
.
compositeState
==
sg2d
.
COMP_ISCOPY
CompositeType
comp
=
getFillCompositeType
(
sg2d
);
?
CompositeType
.
SrcNoEa
:
sg2d
.
imageComp
);
SurfaceType
dst
=
sg2d
.
getSurfaceData
().
getSurfaceType
();
SurfaceType
dst
=
sg2d
.
getSurfaceData
().
getSurfaceType
();
Object
o
=
loopcache
.
get
(
src
,
comp
,
dst
);
Object
o
=
loopcache
.
get
(
src
,
comp
,
dst
);
...
...
src/share/classes/sun/java2d/loops/CompositeType.java
浏览文件 @
ed853b07
...
@@ -27,6 +27,7 @@ package sun.java2d.loops;
...
@@ -27,6 +27,7 @@ package sun.java2d.loops;
import
java.awt.image.BufferedImage
;
import
java.awt.image.BufferedImage
;
import
java.awt.AlphaComposite
;
import
java.awt.AlphaComposite
;
import
java.util.HashMap
;
/**
/**
* A CompositeType object provides a chained description of a type of
* A CompositeType object provides a chained description of a type of
...
@@ -51,6 +52,11 @@ import java.awt.AlphaComposite;
...
@@ -51,6 +52,11 @@ import java.awt.AlphaComposite;
* the indicated algorithm if all of the more specific searches fail.
* the indicated algorithm if all of the more specific searches fail.
*/
*/
public
final
class
CompositeType
{
public
final
class
CompositeType
{
private
static
int
unusedUID
=
1
;
private
static
final
HashMap
<
String
,
Integer
>
compositeUIDMap
=
new
HashMap
<
String
,
Integer
>(
100
);
/*
/*
* CONSTANTS USED BY ALL PRIMITIVES TO DESCRIBE THE COMPOSITING
* CONSTANTS USED BY ALL PRIMITIVES TO DESCRIBE THE COMPOSITING
* ALGORITHMS THEY CAN PERFORM
* ALGORITHMS THEY CAN PERFORM
...
@@ -152,6 +158,22 @@ public final class CompositeType {
...
@@ -152,6 +158,22 @@ public final class CompositeType {
public
static
final
CompositeType
public
static
final
CompositeType
SrcOverNoEa
=
SrcOver
.
deriveSubType
(
DESC_SRC_OVER_NO_EA
);
SrcOverNoEa
=
SrcOver
.
deriveSubType
(
DESC_SRC_OVER_NO_EA
);
/*
* A special CompositeType for the case where we are filling in
* SrcOverNoEa mode with an opaque color. In that case then the
* best loop for us to use would be a SrcNoEa loop, but what if
* there is no such loop? In that case then we would end up
* backing off to a Src loop (which should still be fine) or an
* AnyAlpha loop which would be slower than a SrcOver loop in
* most cases.
* The fix is to use the following chain which looks for loops
* in the following order:
* SrcNoEa, Src, SrcOverNoEa, SrcOver, AnyAlpha
*/
public
static
final
CompositeType
OpaqueSrcOverNoEa
=
SrcOverNoEa
.
deriveSubType
(
DESC_SRC
)
.
deriveSubType
(
DESC_SRC_NO_EA
);
/*
/*
* END OF CompositeType OBJECTS FOR THE VARIOUS CONSTANTS
* END OF CompositeType OBJECTS FOR THE VARIOUS CONSTANTS
*/
*/
...
@@ -210,7 +232,6 @@ public final class CompositeType {
...
@@ -210,7 +232,6 @@ public final class CompositeType {
}
}
}
}
private
static
int
unusedUID
=
1
;
private
int
uniqueID
;
private
int
uniqueID
;
private
String
desc
;
private
String
desc
;
private
CompositeType
next
;
private
CompositeType
next
;
...
@@ -218,14 +239,20 @@ public final class CompositeType {
...
@@ -218,14 +239,20 @@ public final class CompositeType {
private
CompositeType
(
CompositeType
parent
,
String
desc
)
{
private
CompositeType
(
CompositeType
parent
,
String
desc
)
{
next
=
parent
;
next
=
parent
;
this
.
desc
=
desc
;
this
.
desc
=
desc
;
this
.
uniqueID
=
makeUniqueID
();
this
.
uniqueID
=
makeUniqueID
(
desc
);
}
}
private
synchronized
static
final
int
makeUniqueID
()
{
public
synchronized
static
final
int
makeUniqueID
(
String
desc
)
{
if
(
unusedUID
>
255
)
{
Integer
i
=
compositeUIDMap
.
get
(
desc
);
throw
new
InternalError
(
"composite type id overflow"
);
if
(
i
==
null
)
{
if
(
unusedUID
>
255
)
{
throw
new
InternalError
(
"composite type id overflow"
);
}
i
=
unusedUID
++;
compositeUIDMap
.
put
(
desc
,
i
);
}
}
return
unusedUID
++
;
return
i
;
}
}
public
int
getUniqueID
()
{
public
int
getUniqueID
()
{
...
...
src/share/classes/sun/java2d/loops/MaskFill.java
浏览文件 @
ed853b07
...
@@ -50,6 +50,10 @@ import sun.java2d.SurfaceData;
...
@@ -50,6 +50,10 @@ import sun.java2d.SurfaceData;
public
class
MaskFill
extends
GraphicsPrimitive
public
class
MaskFill
extends
GraphicsPrimitive
{
{
public
static
final
String
methodSignature
=
"MaskFill(...)"
.
toString
();
public
static
final
String
methodSignature
=
"MaskFill(...)"
.
toString
();
public
static
final
String
fillPgramSignature
=
"FillAAPgram(...)"
.
toString
();
public
static
final
String
drawPgramSignature
=
"DrawAAPgram(...)"
.
toString
();
public
static
final
int
primTypeID
=
makePrimTypeID
();
public
static
final
int
primTypeID
=
makePrimTypeID
();
...
@@ -92,6 +96,14 @@ public class MaskFill extends GraphicsPrimitive
...
@@ -92,6 +96,14 @@ public class MaskFill extends GraphicsPrimitive
return
fill
;
return
fill
;
}
}
protected
MaskFill
(
String
alternateSignature
,
SurfaceType
srctype
,
CompositeType
comptype
,
SurfaceType
dsttype
)
{
super
(
alternateSignature
,
primTypeID
,
srctype
,
comptype
,
dsttype
);
}
protected
MaskFill
(
SurfaceType
srctype
,
protected
MaskFill
(
SurfaceType
srctype
,
CompositeType
comptype
,
CompositeType
comptype
,
SurfaceType
dsttype
)
SurfaceType
dsttype
)
...
@@ -115,6 +127,23 @@ public class MaskFill extends GraphicsPrimitive
...
@@ -115,6 +127,23 @@ public class MaskFill extends GraphicsPrimitive
int
x
,
int
y
,
int
w
,
int
h
,
int
x
,
int
y
,
int
w
,
int
h
,
byte
[]
mask
,
int
maskoff
,
int
maskscan
);
byte
[]
mask
,
int
maskoff
,
int
maskscan
);
public
native
void
FillAAPgram
(
SunGraphics2D
sg2d
,
SurfaceData
sData
,
Composite
comp
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
);
public
native
void
DrawAAPgram
(
SunGraphics2D
sg2d
,
SurfaceData
sData
,
Composite
comp
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
);
public
boolean
canDoParallelograms
()
{
return
(
getNativePrim
()
!=
0
);
}
static
{
static
{
GraphicsPrimitiveMgr
.
registerGeneral
(
new
MaskFill
(
null
,
null
,
null
));
GraphicsPrimitiveMgr
.
registerGeneral
(
new
MaskFill
(
null
,
null
,
null
));
}
}
...
@@ -182,12 +211,22 @@ public class MaskFill extends GraphicsPrimitive
...
@@ -182,12 +211,22 @@ public class MaskFill extends GraphicsPrimitive
private
static
class
TraceMaskFill
extends
MaskFill
{
private
static
class
TraceMaskFill
extends
MaskFill
{
MaskFill
target
;
MaskFill
target
;
MaskFill
fillPgramTarget
;
MaskFill
drawPgramTarget
;
public
TraceMaskFill
(
MaskFill
target
)
{
public
TraceMaskFill
(
MaskFill
target
)
{
super
(
target
.
getSourceType
(),
super
(
target
.
getSourceType
(),
target
.
getCompositeType
(),
target
.
getCompositeType
(),
target
.
getDestType
());
target
.
getDestType
());
this
.
target
=
target
;
this
.
target
=
target
;
this
.
fillPgramTarget
=
new
MaskFill
(
fillPgramSignature
,
target
.
getSourceType
(),
target
.
getCompositeType
(),
target
.
getDestType
());
this
.
drawPgramTarget
=
new
MaskFill
(
drawPgramSignature
,
target
.
getSourceType
(),
target
.
getCompositeType
(),
target
.
getDestType
());
}
}
public
GraphicsPrimitive
traceWrap
()
{
public
GraphicsPrimitive
traceWrap
()
{
...
@@ -203,5 +242,32 @@ public class MaskFill extends GraphicsPrimitive
...
@@ -203,5 +242,32 @@ public class MaskFill extends GraphicsPrimitive
target
.
MaskFill
(
sg2d
,
sData
,
comp
,
x
,
y
,
w
,
h
,
target
.
MaskFill
(
sg2d
,
sData
,
comp
,
x
,
y
,
w
,
h
,
mask
,
maskoff
,
maskscan
);
mask
,
maskoff
,
maskscan
);
}
}
public
void
FillAAPgram
(
SunGraphics2D
sg2d
,
SurfaceData
sData
,
Composite
comp
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
)
{
tracePrimitive
(
fillPgramTarget
);
target
.
FillAAPgram
(
sg2d
,
sData
,
comp
,
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
);
}
public
void
DrawAAPgram
(
SunGraphics2D
sg2d
,
SurfaceData
sData
,
Composite
comp
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
)
{
tracePrimitive
(
drawPgramTarget
);
target
.
DrawAAPgram
(
sg2d
,
sData
,
comp
,
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
,
lw1
,
lw2
);
}
public
boolean
canDoParallelograms
()
{
return
target
.
canDoParallelograms
();
}
}
}
}
}
src/share/classes/sun/java2d/pipe/AAShapePipe.java
浏览文件 @
ed853b07
...
@@ -28,6 +28,7 @@ package sun.java2d.pipe;
...
@@ -28,6 +28,7 @@ package sun.java2d.pipe;
import
java.awt.BasicStroke
;
import
java.awt.BasicStroke
;
import
java.awt.Rectangle
;
import
java.awt.Rectangle
;
import
java.awt.Shape
;
import
java.awt.Shape
;
import
java.awt.geom.Rectangle2D
;
import
java.awt.geom.PathIterator
;
import
java.awt.geom.PathIterator
;
import
sun.awt.SunHints
;
import
sun.awt.SunHints
;
import
sun.java2d.SunGraphics2D
;
import
sun.java2d.SunGraphics2D
;
...
@@ -39,7 +40,9 @@ import sun.java2d.SunGraphics2D;
...
@@ -39,7 +40,9 @@ import sun.java2d.SunGraphics2D;
* This class sets up the Generator and computes the alpha tiles
* This class sets up the Generator and computes the alpha tiles
* and then passes them on to a CompositePipe object for painting.
* and then passes them on to a CompositePipe object for painting.
*/
*/
public
class
AAShapePipe
implements
ShapeDrawPipe
{
public
class
AAShapePipe
implements
ShapeDrawPipe
,
ParallelogramPipe
{
static
RenderingEngine
renderengine
=
RenderingEngine
.
getInstance
();
static
RenderingEngine
renderengine
=
RenderingEngine
.
getInstance
();
CompositePipe
outpipe
;
CompositePipe
outpipe
;
...
@@ -65,6 +68,59 @@ public class AAShapePipe implements ShapeDrawPipe {
...
@@ -65,6 +68,59 @@ public class AAShapePipe implements ShapeDrawPipe {
renderPath
(
sg
,
s
,
null
);
renderPath
(
sg
,
s
,
null
);
}
}
private
static
Rectangle2D
computeBBox
(
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
)
{
double
lox
,
loy
,
hix
,
hiy
;
lox
=
hix
=
x
;
loy
=
hiy
=
y
;
if
(
dx1
<
0
)
{
lox
+=
dx1
;
}
else
{
hix
+=
dx1
;
}
if
(
dy1
<
0
)
{
loy
+=
dy1
;
}
else
{
hiy
+=
dy1
;
}
if
(
dx2
<
0
)
{
lox
+=
dx2
;
}
else
{
hix
+=
dx2
;
}
if
(
dy2
<
0
)
{
loy
+=
dy2
;
}
else
{
hiy
+=
dy2
;
}
return
new
Rectangle2D
.
Double
(
lox
,
loy
,
hix
-
lox
,
hiy
-
loy
);
}
public
void
fillParallelogram
(
SunGraphics2D
sg
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
)
{
Region
clip
=
sg
.
getCompClip
();
int
abox
[]
=
new
int
[
4
];
AATileGenerator
aatg
=
renderengine
.
getAATileGenerator
(
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
,
0
,
0
,
clip
,
abox
);
if
(
aatg
==
null
)
{
// Nothing to render
return
;
}
renderTiles
(
sg
,
computeBBox
(
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
),
aatg
,
abox
);
}
public
void
drawParallelogram
(
SunGraphics2D
sg
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
)
{
Region
clip
=
sg
.
getCompClip
();
int
abox
[]
=
new
int
[
4
];
AATileGenerator
aatg
=
renderengine
.
getAATileGenerator
(
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
,
0
,
0
,
clip
,
abox
);
if
(
aatg
==
null
)
{
// Nothing to render
return
;
}
// Note that bbox is of the original shape, not the wide path.
// This is appropriate for handing to Paint methods...
renderTiles
(
sg
,
computeBBox
(
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
),
aatg
,
abox
);
}
private
static
byte
[]
theTile
;
private
static
byte
[]
theTile
;
public
synchronized
static
byte
[]
getAlphaTile
(
int
len
)
{
public
synchronized
static
byte
[]
getAlphaTile
(
int
len
)
{
...
@@ -85,8 +141,6 @@ public class AAShapePipe implements ShapeDrawPipe {
...
@@ -85,8 +141,6 @@ public class AAShapePipe implements ShapeDrawPipe {
boolean
adjust
=
(
bs
!=
null
&&
boolean
adjust
=
(
bs
!=
null
&&
sg
.
strokeHint
!=
SunHints
.
INTVAL_STROKE_PURE
);
sg
.
strokeHint
!=
SunHints
.
INTVAL_STROKE_PURE
);
boolean
thin
=
(
sg
.
strokeState
<=
sg
.
STROKE_THINDASHED
);
boolean
thin
=
(
sg
.
strokeState
<=
sg
.
STROKE_THINDASHED
);
Object
context
=
null
;
byte
alpha
[]
=
null
;
Region
clip
=
sg
.
getCompClip
();
Region
clip
=
sg
.
getCompClip
();
int
abox
[]
=
new
int
[
4
];
int
abox
[]
=
new
int
[
4
];
...
@@ -98,6 +152,14 @@ public class AAShapePipe implements ShapeDrawPipe {
...
@@ -98,6 +152,14 @@ public class AAShapePipe implements ShapeDrawPipe {
return
;
return
;
}
}
renderTiles
(
sg
,
s
,
aatg
,
abox
);
}
public
void
renderTiles
(
SunGraphics2D
sg
,
Shape
s
,
AATileGenerator
aatg
,
int
abox
[])
{
Object
context
=
null
;
byte
alpha
[]
=
null
;
try
{
try
{
context
=
outpipe
.
startSequence
(
sg
,
s
,
context
=
outpipe
.
startSequence
(
sg
,
s
,
new
Rectangle
(
abox
[
0
],
abox
[
1
],
new
Rectangle
(
abox
[
0
],
abox
[
1
],
...
...
src/share/classes/sun/java2d/pipe/AlphaColorPipe.java
浏览文件 @
ed853b07
...
@@ -34,7 +34,7 @@ import sun.java2d.SunGraphics2D;
...
@@ -34,7 +34,7 @@ import sun.java2d.SunGraphics2D;
* into a destination that supports direct alpha compositing of a solid
* into a destination that supports direct alpha compositing of a solid
* color, according to one of the rules in the AlphaComposite class.
* color, according to one of the rules in the AlphaComposite class.
*/
*/
public
class
AlphaColorPipe
implements
CompositePipe
{
public
class
AlphaColorPipe
implements
CompositePipe
,
ParallelogramPipe
{
public
AlphaColorPipe
()
{
public
AlphaColorPipe
()
{
}
}
...
@@ -64,4 +64,23 @@ public class AlphaColorPipe implements CompositePipe {
...
@@ -64,4 +64,23 @@ public class AlphaColorPipe implements CompositePipe {
public
void
endSequence
(
Object
context
)
{
public
void
endSequence
(
Object
context
)
{
return
;
return
;
}
}
public
void
fillParallelogram
(
SunGraphics2D
sg
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
)
{
sg
.
alphafill
.
FillAAPgram
(
sg
,
sg
.
getSurfaceData
(),
sg
.
composite
,
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
);
}
public
void
drawParallelogram
(
SunGraphics2D
sg
,
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
)
{
sg
.
alphafill
.
DrawAAPgram
(
sg
,
sg
.
getSurfaceData
(),
sg
.
composite
,
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
,
lw1
,
lw2
);
}
}
}
src/share/classes/sun/java2d/pipe/RenderingEngine.java
浏览文件 @
ed853b07
...
@@ -280,6 +280,72 @@ public abstract class RenderingEngine {
...
@@ -280,6 +280,72 @@ public abstract class RenderingEngine {
boolean
normalize
,
boolean
normalize
,
int
bbox
[]);
int
bbox
[]);
/**
* Construct an antialiased tile generator for the given parallelogram
* store the bounds of the tile iteration in the bbox parameter.
* The parallelogram is specified as a starting point and 2 delta
* vectors that indicate the slopes of the 2 pairs of sides of the
* parallelogram.
* The 4 corners of the parallelogram are defined by the 4 points:
* <ul>
* <li> {@code x}, {@code y}
* <li> {@code x+dx1}, {@code y+dy1}
* <li> {@code x+dx1+dx2}, {@code y+dy1+dy2}
* <li> {@code x+dx2}, {@code y+dy2}
* </ul>
* The {@code lw1} and {@code lw2} parameters provide a specification
* for an optionally stroked parallelogram if they are positive numbers.
* The {@code lw1} parameter is the ratio of the length of the {@code dx1},
* {@code dx2} delta vector to half of the line width in that same
* direction.
* The {@code lw2} parameter provides the same ratio for the other delta
* vector.
* If {@code lw1} and {@code lw2} are both greater than zero, then
* the parallelogram figure is doubled by both expanding and contracting
* each delta vector by its corresponding {@code lw} value.
* If either (@code lw1) or {@code lw2} are also greater than 1, then
* the inner (contracted) parallelogram disappears and the figure is
* simply a single expanded parallelogram.
* The {@code clip} parameter specifies the current clip in effect
* in device coordinates and can be used to prune the data for the
* operation, but the renderer is not required to perform any
* clipping.
* <p>
* Upon returning, this method will fill the {@code bbox} parameter
* with 4 values indicating the bounds of the iteration of the
* tile generator.
* The iteration order of the tiles will be as specified by the
* pseudo-code:
* <pre>
* for (y = bbox[1]; y < bbox[3]; y += tileheight) {
* for (x = bbox[0]; x < bbox[2]; x += tilewidth) {
* }
* }
* </pre>
* If there is no output to be rendered, this method may return
* null.
*
* @param x the X coordinate of the first corner of the parallelogram
* @param y the Y coordinate of the first corner of the parallelogram
* @param dx1 the X coordinate delta of the first leg of the parallelogram
* @param dy1 the Y coordinate delta of the first leg of the parallelogram
* @param dx2 the X coordinate delta of the second leg of the parallelogram
* @param dy2 the Y coordinate delta of the second leg of the parallelogram
* @param lw1 the line width ratio for the first leg of the parallelogram
* @param lw2 the line width ratio for the second leg of the parallelogram
* @param clip the current clip in effect in device coordinates
* @param bbox returns the bounds of the iteration
* @return the {@code AATileGenerator} instance to be consulted
* for tile coverages, or null if there is no output to render
* @since 1.7
*/
public
abstract
AATileGenerator
getAATileGenerator
(
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
,
Region
clip
,
int
bbox
[]);
/**
/**
* Returns the minimum pen width that the antialiasing rasterizer
* Returns the minimum pen width that the antialiasing rasterizer
* can represent without dropouts occuring.
* can represent without dropouts occuring.
...
@@ -393,5 +459,24 @@ public abstract class RenderingEngine {
...
@@ -393,5 +459,24 @@ public abstract class RenderingEngine {
bs
,
thin
,
normalize
,
bs
,
thin
,
normalize
,
bbox
);
bbox
);
}
}
public
AATileGenerator
getAATileGenerator
(
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
,
Region
clip
,
int
bbox
[])
{
System
.
out
.
println
(
name
+
".getAATileGenerator("
+
x
+
", "
+
y
+
", "
+
dx1
+
", "
+
dy1
+
", "
+
dx2
+
", "
+
dy2
+
", "
+
lw1
+
", "
+
lw2
+
", "
+
clip
+
")"
);
return
target
.
getAATileGenerator
(
x
,
y
,
dx1
,
dy1
,
dx2
,
dy2
,
lw1
,
lw2
,
clip
,
bbox
);
}
}
}
}
}
src/share/classes/sun/java2d/pisces/PiscesRenderingEngine.java
浏览文件 @
ed853b07
...
@@ -557,6 +557,69 @@ public class PiscesRenderingEngine extends RenderingEngine {
...
@@ -557,6 +557,69 @@ public class PiscesRenderingEngine extends RenderingEngine {
return
ptg
;
return
ptg
;
}
}
public
AATileGenerator
getAATileGenerator
(
double
x
,
double
y
,
double
dx1
,
double
dy1
,
double
dx2
,
double
dy2
,
double
lw1
,
double
lw2
,
Region
clip
,
int
bbox
[])
{
// REMIND: Deal with large coordinates!
double
ldx1
,
ldy1
,
ldx2
,
ldy2
;
boolean
innerpgram
=
(
lw1
>
0
&&
lw2
>
0
);
if
(
innerpgram
)
{
ldx1
=
dx1
*
lw1
;
ldy1
=
dy1
*
lw1
;
ldx2
=
dx2
*
lw2
;
ldy2
=
dy2
*
lw2
;
x
-=
(
ldx1
+
ldx2
)
/
2.0
;
y
-=
(
ldy1
+
ldy2
)
/
2.0
;
dx1
+=
ldx1
;
dy1
+=
ldy1
;
dx2
+=
ldx2
;
dy2
+=
ldy2
;
if
(
lw1
>
1
&&
lw2
>
1
)
{
// Inner parallelogram was entirely consumed by stroke...
innerpgram
=
false
;
}
}
else
{
ldx1
=
ldy1
=
ldx2
=
ldy2
=
0
;
}
Renderer
r
=
new
Renderer
(
3
,
3
,
clip
.
getLoX
(),
clip
.
getLoY
(),
clip
.
getWidth
(),
clip
.
getHeight
(),
PathIterator
.
WIND_EVEN_ODD
);
r
.
moveTo
((
float
)
x
,
(
float
)
y
);
r
.
lineTo
((
float
)
(
x
+
dx1
),
(
float
)
(
y
+
dy1
));
r
.
lineTo
((
float
)
(
x
+
dx1
+
dx2
),
(
float
)
(
y
+
dy1
+
dy2
));
r
.
lineTo
((
float
)
(
x
+
dx2
),
(
float
)
(
y
+
dy2
));
r
.
closePath
();
if
(
innerpgram
)
{
x
+=
ldx1
+
ldx2
;
y
+=
ldy1
+
ldy2
;
dx1
-=
2.0
*
ldx1
;
dy1
-=
2.0
*
ldy1
;
dx2
-=
2.0
*
ldx2
;
dy2
-=
2.0
*
ldy2
;
r
.
moveTo
((
float
)
x
,
(
float
)
y
);
r
.
lineTo
((
float
)
(
x
+
dx1
),
(
float
)
(
y
+
dy1
));
r
.
lineTo
((
float
)
(
x
+
dx1
+
dx2
),
(
float
)
(
y
+
dy1
+
dy2
));
r
.
lineTo
((
float
)
(
x
+
dx2
),
(
float
)
(
y
+
dy2
));
r
.
closePath
();
}
r
.
pathDone
();
r
.
endRendering
();
PiscesTileGenerator
ptg
=
new
PiscesTileGenerator
(
r
,
r
.
MAX_AA_ALPHA
);
ptg
.
getBbox
(
bbox
);
return
ptg
;
}
/**
/**
* Returns the minimum pen width that the antialiasing rasterizer
* Returns the minimum pen width that the antialiasing rasterizer
* can represent without dropouts occuring.
* can represent without dropouts occuring.
...
...
src/share/native/sun/awt/image/awt_parseImage.c
浏览文件 @
ed853b07
...
@@ -178,7 +178,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -178,7 +178,7 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
jnbits
=
(
*
env
)
->
GetObjectField
(
env
,
rasterP
->
jsampleModel
,
jnbits
=
(
*
env
)
->
GetObjectField
(
env
,
rasterP
->
jsampleModel
,
g_SPPSMnBitsID
);
g_SPPSMnBitsID
);
if
(
jmask
==
NULL
||
joffs
==
NULL
||
jnbits
==
NULL
||
if
(
jmask
==
NULL
||
joffs
==
NULL
||
jnbits
==
NULL
||
rasterP
->
sppsm
.
maxBitSize
<
0
||
rasterP
->
sppsm
.
maxBitSize
>
8
)
rasterP
->
sppsm
.
maxBitSize
<
0
)
{
{
JNU_ThrowInternalError
(
env
,
"Can't grab SPPSM fields"
);
JNU_ThrowInternalError
(
env
,
"Can't grab SPPSM fields"
);
return
-
1
;
return
-
1
;
...
@@ -280,6 +280,17 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
...
@@ -280,6 +280,17 @@ int awt_parseRaster(JNIEnv *env, jobject jraster, RasterS_t *rasterP) {
rasterP
->
chanOffsets
);
rasterP
->
chanOffsets
);
}
}
/* additioanl check for sppsm fields validity: make sure that
* size of raster samples doesn't exceed the data type cpacity.
*/
if
(
rasterP
->
dataType
>
UNKNOWN_DATA_TYPE
&&
/* data type has been recognized */
rasterP
->
sppsm
.
maxBitSize
>
0
&&
/* raster has SPP sample model */
rasterP
->
sppsm
.
maxBitSize
>
(
rasterP
->
dataSize
*
8
))
{
JNU_ThrowInternalError
(
env
,
"Raster samples are too big"
);
return
-
1
;
}
#if 0
#if 0
fprintf(stderr,"---------------------\n");
fprintf(stderr,"---------------------\n");
fprintf(stderr,"Width : %d\n",rasterP->width);
fprintf(stderr,"Width : %d\n",rasterP->width);
...
...
src/share/native/sun/awt/splashscreen/splashscreen_gfx_impl.h
浏览文件 @
ed853b07
...
@@ -88,27 +88,18 @@ ditherColor(rgbquad_t value, ImageFormat * format, int row, int col)
...
@@ -88,27 +88,18 @@ ditherColor(rgbquad_t value, ImageFormat * format, int row, int col)
/* blend (lerp between) two rgb quads
/* blend (lerp between) two rgb quads
src and dst alpha is ignored
src and dst alpha is ignored
the algorithm: src*alpha+dst*(1-alpha)=(src-dst)*alpha+dst, rb and g are done separately
the algorithm: src*alpha+dst*(1-alpha)=(src-dst)*alpha+dst, rb and g are done separately
it's possible to verify that it's almost accurate indeed */
*/
INLINE
rgbquad_t
INLINE
rgbquad_t
blendRGB
(
rgbquad_t
dst
,
rgbquad_t
src
,
rgbquad_t
alpha
)
blendRGB
(
rgbquad_t
dst
,
rgbquad_t
src
,
rgbquad_t
alpha
)
{
{
const
rgbquad_t
dstrb
=
dst
&
0xFF00FF
;
const
rgbquad_t
a
=
alpha
;
const
rgbquad_t
dstg
=
dst
&
0xFF00
;
const
rgbquad_t
a1
=
0xFF
-
alpha
;
const
rgbquad_t
srcrb
=
src
&
0xFF00FF
;
const
rgbquad_t
srcg
=
src
&
0xFF00
;
return
MAKE_QUAD
(
(
rgbquad_t
)((
QUAD_RED
(
src
)
*
a
+
QUAD_RED
(
dst
)
*
a1
)
/
0xFF
),
rgbquad_t
drb
=
srcrb
-
dstrb
;
(
rgbquad_t
)((
QUAD_GREEN
(
src
)
*
a
+
QUAD_GREEN
(
dst
)
*
a1
)
/
0xFF
),
rgbquad_t
dg
=
srcg
-
dstg
;
(
rgbquad_t
)((
QUAD_BLUE
(
src
)
*
a
+
QUAD_BLUE
(
dst
)
*
a1
)
/
0xFF
),
0
);
alpha
+=
1
;
drb
*=
alpha
;
dg
*=
alpha
;
drb
>>=
8
;
dg
>>=
8
;
return
((
drb
+
dstrb
)
&
0xFF00FF
)
|
((
dg
+
dstg
)
&
0xFF00
);
}
}
/* scales rgb quad by alpha. basically similar to what's above. src alpha is retained.
/* scales rgb quad by alpha. basically similar to what's above. src alpha is retained.
...
...
src/share/native/sun/java2d/loops/DrawParallelogram.c
浏览文件 @
ed853b07
...
@@ -26,14 +26,11 @@
...
@@ -26,14 +26,11 @@
#include "math.h"
#include "math.h"
#include "GraphicsPrimitiveMgr.h"
#include "GraphicsPrimitiveMgr.h"
#include "LineUtils.h"
#include "LineUtils.h"
#include "LoopMacros.h"
#include "Trace.h"
#include "Trace.h"
#include "ParallelogramUtils.h"
#include "sun_java2d_loops_FillParallelogram.h"
#include "sun_java2d_loops_DrawParallelogram.h"
#include "sun_java2d_loops_DrawParallelogram.h"
DECLARE_SOLID_DRAWLINE
(
AnyInt
);
#define HANDLE_PGRAM_EDGE(X1, Y1, X2, Y2, \
#define HANDLE_PGRAM_EDGE(X1, Y1, X2, Y2, \
pRasInfo, pixel, pPrim, pFunc, pCompInfo) \
pRasInfo, pixel, pPrim, pFunc, pCompInfo) \
do { \
do { \
...
@@ -46,28 +43,6 @@ DECLARE_SOLID_DRAWLINE(AnyInt);
...
@@ -46,28 +43,6 @@ DECLARE_SOLID_DRAWLINE(AnyInt);
ix1, iy1, ix2, iy2, JNI_TRUE); \
ix1, iy1, ix2, iy2, JNI_TRUE); \
} while (0)
} while (0)
#define PGRAM_MIN_MAX(bmin, bmax, v0, dv1, dv2) \
do { \
double vmin, vmax; \
if (dv1 < 0) { \
vmin = v0+dv1; \
vmax = v0; \
} else { \
vmin = v0; \
vmax = v0+dv1; \
} \
if (dv2 < 0) { \
vmin -= dv2; \
} else { \
vmax += dv2; \
} \
bmin = (jint) floor(vmin + 0.5); \
bmax = (jint) floor(vmax + 0.5); \
} while(0)
#define PGRAM_INIT_X(starty, x, y, slope) \
(DblToLong((x) + (slope) * ((starty)+0.5 - (y))) + LongOneHalf - 1)
typedef
struct
{
typedef
struct
{
jdouble
x0
;
jdouble
x0
;
jdouble
y0
;
jdouble
y0
;
...
@@ -136,20 +111,8 @@ Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram
...
@@ -136,20 +111,8 @@ Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram
* Sort parallelogram by y values, ensure that each delta vector
* Sort parallelogram by y values, ensure that each delta vector
* has a non-negative y delta.
* has a non-negative y delta.
*/
*/
if
(
dy1
<
0
)
{
SORT_PGRAM
(
x0
,
y0
,
dx1
,
dy1
,
dx2
,
dy2
,
x0
+=
dx1
;
y0
+=
dy1
;
v
=
lw1
;
lw1
=
lw2
;
lw2
=
v
;);
dx1
=
-
dx1
;
dy1
=
-
dy1
;
}
if
(
dy2
<
0
)
{
x0
+=
dx2
;
y0
+=
dy2
;
dx2
=
-
dx2
;
dy2
=
-
dy2
;
}
/* Sort delta vectors so dxy1 is left of dxy2. */
if
(
dx1
*
dy2
>
dx2
*
dy1
)
{
double
v
=
dx1
;
dx1
=
dx2
;
dx2
=
v
;
v
=
dy1
;
dy1
=
dy2
;
dy2
=
v
;
v
=
lw1
;
lw1
=
lw2
;
lw2
=
v
;
}
// dx,dy for line width in the "1" and "2" directions.
// dx,dy for line width in the "1" and "2" directions.
ldx1
=
dx1
*
lw1
;
ldx1
=
dx1
*
lw1
;
...
@@ -161,7 +124,7 @@ Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram
...
@@ -161,7 +124,7 @@ Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram
ox0
=
x0
-
(
ldx1
+
ldx2
)
/
2
.
0
;
ox0
=
x0
-
(
ldx1
+
ldx2
)
/
2
.
0
;
oy0
=
y0
-
(
ldy1
+
ldy2
)
/
2
.
0
;
oy0
=
y0
-
(
ldy1
+
ldy2
)
/
2
.
0
;
PGRAM_MIN_MAX
(
ix1
,
ix2
,
ox0
,
dx1
+
ldx1
,
dx2
+
ldx2
);
PGRAM_MIN_MAX
(
ix1
,
ix2
,
ox0
,
dx1
+
ldx1
,
dx2
+
ldx2
,
JNI_FALSE
);
iy1
=
(
jint
)
floor
(
oy0
+
0
.
5
);
iy1
=
(
jint
)
floor
(
oy0
+
0
.
5
);
iy2
=
(
jint
)
floor
(
oy0
+
dy1
+
ldy1
+
dy2
+
ldy2
+
0
.
5
);
iy2
=
(
jint
)
floor
(
oy0
+
dy1
+
ldy1
+
dy2
+
ldy2
+
0
.
5
);
...
@@ -212,7 +175,7 @@ Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram
...
@@ -212,7 +175,7 @@ Java_sun_java2d_loops_DrawParallelogram_DrawParallelogram
// Only need to generate 4 quads if the interior still
// Only need to generate 4 quads if the interior still
// has a hole in it (i.e. if the line width ratios were
// has a hole in it (i.e. if the line width ratios were
// both less than 1.0)
// both less than 1.0)
if
(
lw1
<
1
.
0
f
&&
lw2
<
1
.
0
f
)
{
if
(
lw1
<
1
.
0
&&
lw2
<
1
.
0
)
{
// If the line widths are both less than a pixel wide
// If the line widths are both less than a pixel wide
// then we can use a drawline function instead for even
// then we can use a drawline function instead for even
// more performance.
// more performance.
...
...
src/share/native/sun/java2d/loops/FillParallelogram.c
浏览文件 @
ed853b07
...
@@ -25,31 +25,10 @@
...
@@ -25,31 +25,10 @@
#include "math.h"
#include "math.h"
#include "GraphicsPrimitiveMgr.h"
#include "GraphicsPrimitiveMgr.h"
#include "ParallelogramUtils.h"
#include "sun_java2d_loops_FillParallelogram.h"
#include "sun_java2d_loops_FillParallelogram.h"
#define PGRAM_MIN_MAX(bmin, bmax, v0, dv1, dv2) \
do { \
double vmin, vmax; \
if (dv1 < 0) { \
vmin = v0+dv1; \
vmax = v0; \
} else { \
vmin = v0; \
vmax = v0+dv1; \
} \
if (dv2 < 0) { \
vmin -= dv2; \
} else { \
vmax += dv2; \
} \
bmin = (jint) floor(vmin + 0.5); \
bmax = (jint) floor(vmax + 0.5); \
} while(0)
#define PGRAM_INIT_X(starty, x, y, slope) \
(DblToLong((x) + (slope) * ((starty)+0.5 - (y))) + LongOneHalf - 1)
/*
/*
* Class: sun_java2d_loops_FillParallelogram
* Class: sun_java2d_loops_FillParallelogram
* Method: FillParallelogram
* Method: FillParallelogram
...
@@ -76,22 +55,11 @@ Java_sun_java2d_loops_FillParallelogram_FillParallelogram
...
@@ -76,22 +55,11 @@ Java_sun_java2d_loops_FillParallelogram_FillParallelogram
/*
/*
* Sort parallelogram by y values, ensure that each delta vector
* Sort parallelogram by y values, ensure that each delta vector
* has a non-negative y delta
, and eliminate degenerate parallelograms
.
* has a non-negative y delta.
*/
*/
if
(
dy1
<
0
)
{
SORT_PGRAM
(
x0
,
y0
,
dx1
,
dy1
,
dx2
,
dy2
,
);
x0
+=
dx1
;
y0
+=
dy1
;
dx1
=
-
dx1
;
dy1
=
-
dy1
;
PGRAM_MIN_MAX
(
ix1
,
ix2
,
x0
,
dx1
,
dx2
,
JNI_FALSE
);
}
if
(
dy2
<
0
)
{
x0
+=
dx2
;
y0
+=
dy2
;
dx2
=
-
dx2
;
dy2
=
-
dy2
;
}
/* Sort delta vectors so dxy1 is left of dxy2. */
if
(
dx1
*
dy2
>
dx2
*
dy1
)
{
double
v
=
dx1
;
dx1
=
dx2
;
dx2
=
v
;
v
=
dy1
;
dy1
=
dy2
;
dy2
=
v
;
}
PGRAM_MIN_MAX
(
ix1
,
ix2
,
x0
,
dx1
,
dx2
);
iy1
=
(
jint
)
floor
(
y0
+
0
.
5
);
iy1
=
(
jint
)
floor
(
y0
+
0
.
5
);
iy2
=
(
jint
)
floor
(
y0
+
dy1
+
dy2
+
0
.
5
);
iy2
=
(
jint
)
floor
(
y0
+
dy1
+
dy2
+
0
.
5
);
...
...
src/share/native/sun/java2d/loops/MaskFill.c
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
src/share/native/sun/java2d/loops/ParallelogramUtils.h
0 → 100644
浏览文件 @
ed853b07
/*
* Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#ifndef ParallelogramUtils_h_Included
#define ParallelogramUtils_h_Included
#ifdef __cplusplus
extern
"C"
{
#endif
#define PGRAM_MIN_MAX(bmin, bmax, v0, dv1, dv2, AA) \
do { \
double vmin, vmax; \
if (dv1 < 0) { \
vmin = v0+dv1; \
vmax = v0; \
} else { \
vmin = v0; \
vmax = v0+dv1; \
} \
if (dv2 < 0) { \
vmin += dv2; \
} else { \
vmax += dv2; \
} \
if (AA) { \
bmin = (jint) floor(vmin); \
bmax = (jint) ceil(vmax); \
} else { \
bmin = (jint) floor(vmin + 0.5); \
bmax = (jint) floor(vmax + 0.5); \
} \
} while(0)
#define PGRAM_INIT_X(starty, x, y, slope) \
(DblToLong((x) + (slope) * ((starty)+0.5 - (y))) + LongOneHalf - 1)
/*
* Sort parallelogram by y values, ensure that each delta vector
* has a non-negative y delta.
*/
#define SORT_PGRAM(x0, y0, dx1, dy1, dx2, dy2, OTHER_SWAP_CODE) \
do { \
if (dy1 < 0) { \
x0 += dx1; y0 += dy1; \
dx1 = -dx1; dy1 = -dy1; \
} \
if (dy2 < 0) { \
x0 += dx2; y0 += dy2; \
dx2 = -dx2; dy2 = -dy2; \
} \
/* Sort delta vectors so dxy1 is left of dxy2. */
\
if (dx1 * dy2 > dx2 * dy1) { \
double v; \
v = dx1; dx1 = dx2; dx2 = v; \
v = dy1; dy1 = dy2; dy2 = v; \
OTHER_SWAP_CODE \
} \
} while(0)
#endif
/* ParallelogramUtils_h_Included */
src/share/native/sun/java2d/pipe/BufferedMaskBlit.c
浏览文件 @
ed853b07
...
@@ -119,7 +119,8 @@ Java_sun_java2d_pipe_BufferedMaskBlit_enqueueTile
...
@@ -119,7 +119,8 @@ Java_sun_java2d_pipe_BufferedMaskBlit_enqueueTile
PtrCoord
(
srcInfo
.
rasBase
,
PtrCoord
(
srcInfo
.
rasBase
,
srcInfo
.
bounds
.
x1
,
srcInfo
.
pixelStride
,
srcInfo
.
bounds
.
x1
,
srcInfo
.
pixelStride
,
srcInfo
.
bounds
.
y1
,
srcInfo
.
scanStride
);
srcInfo
.
bounds
.
y1
,
srcInfo
.
scanStride
);
unsigned
char
*
pMask
=
unsigned
char
*
pMask
,
*
pMaskAlloc
;
pMask
=
pMaskAlloc
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
maskArray
,
0
);
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
maskArray
,
0
);
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
J2dRlsTraceLn
(
J2D_TRACE_ERROR
,
J2dRlsTraceLn
(
J2D_TRACE_ERROR
,
...
@@ -274,7 +275,7 @@ Java_sun_java2d_pipe_BufferedMaskBlit_enqueueTile
...
@@ -274,7 +275,7 @@ Java_sun_java2d_pipe_BufferedMaskBlit_enqueueTile
bpos
+=
width
*
height
*
sizeof
(
jint
);
bpos
+=
width
*
height
*
sizeof
(
jint
);
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
maskArray
,
(
*
env
)
->
ReleasePrimitiveArrayCritical
(
env
,
maskArray
,
pMask
,
JNI_ABORT
);
pMask
Alloc
,
JNI_ABORT
);
}
}
SurfaceData_InvokeRelease
(
env
,
srcOps
,
&
srcInfo
);
SurfaceData_InvokeRelease
(
env
,
srcOps
,
&
srcInfo
);
}
}
...
...
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c
浏览文件 @
ed853b07
...
@@ -137,41 +137,43 @@ void getALSAVersion(char* buffer, int len) {
...
@@ -137,41 +137,43 @@ void getALSAVersion(char* buffer, int len) {
file
=
fopen
(
ALSA_VERSION_PROC_FILE
,
"r"
);
file
=
fopen
(
ALSA_VERSION_PROC_FILE
,
"r"
);
ALSAVersionString
[
0
]
=
0
;
ALSAVersionString
[
0
]
=
0
;
if
(
file
)
{
if
(
file
)
{
fgets
(
ALSAVersionString
,
ALSAVersionString_LENGTH
,
file
);
if
(
NULL
!=
fgets
(
ALSAVersionString
,
ALSAVersionString_LENGTH
,
file
))
{
// parse for version number
// parse for version number
totalLen
=
strlen
(
ALSAVersionString
);
totalLen
=
strlen
(
ALSAVersionString
);
inVersionString
=
FALSE
;
inVersionString
=
FALSE
;
len
=
0
;
len
=
0
;
curr
=
0
;
curr
=
0
;
while
(
curr
<
totalLen
)
{
while
(
curr
<
totalLen
)
{
if
(
!
inVersionString
)
{
if
(
!
inVersionString
)
{
// is this char the beginning of a version string ?
// is this char the beginning of a version string ?
if
(
ALSAVersionString
[
curr
]
>=
'0'
if
(
ALSAVersionString
[
curr
]
>=
'0'
&&
ALSAVersionString
[
curr
]
<=
'9'
)
{
&&
ALSAVersionString
[
curr
]
<=
'9'
)
{
inVersionString
=
TRUE
;
inVersionString
=
TRUE
;
}
}
}
}
if
(
inVersionString
)
{
if
(
inVersionString
)
{
// the version string ends with white space
// the version string ends with white space
if
(
ALSAVersionString
[
curr
]
<=
32
)
{
if
(
ALSAVersionString
[
curr
]
<=
32
)
{
break
;
break
;
}
}
if
(
curr
!=
len
)
{
if
(
curr
!=
len
)
{
// copy this char to the beginning of the string
// copy this char to the beginning of the string
ALSAVersionString
[
len
]
=
ALSAVersionString
[
curr
];
ALSAVersionString
[
len
]
=
ALSAVersionString
[
curr
];
}
len
++
;
}
}
len
++
;
curr
++
;
}
}
curr
++
;
// remove trailing dots
}
while
((
len
>
0
)
&&
(
ALSAVersionString
[
len
-
1
]
==
'.'
))
{
// remove trailing dots
len
--
;
while
((
len
>
0
)
&&
(
ALSAVersionString
[
len
-
1
]
==
'.'
))
{
}
len
--
;
// null terminate
ALSAVersionString
[
len
]
=
0
;
}
}
// null terminate
fclose
(
file
);
ALSAVersionString
[
len
]
=
0
;
hasGottenALSAVersion
=
TRUE
;
}
}
hasGottenALSAVersion
=
TRUE
;
}
}
strncpy
(
buffer
,
ALSAVersionString
,
len
);
strncpy
(
buffer
,
ALSAVersionString
,
len
);
}
}
...
...
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiIn.c
浏览文件 @
ed853b07
...
@@ -32,6 +32,9 @@
...
@@ -32,6 +32,9 @@
#include <alsa/asoundlib.h>
#include <alsa/asoundlib.h>
#include "PlatformMidi.h"
#include "PlatformMidi.h"
#include "PLATFORM_API_LinuxOS_ALSA_MidiUtils.h"
#include "PLATFORM_API_LinuxOS_ALSA_MidiUtils.h"
#if defined(i586)
#include <sys/utsname.h>
#endif
/*
/*
* Helper methods
* Helper methods
...
@@ -73,9 +76,38 @@ char* MIDI_IN_GetErrorStr(INT32 err) {
...
@@ -73,9 +76,38 @@ char* MIDI_IN_GetErrorStr(INT32 err) {
return
(
char
*
)
getErrorStr
(
err
);
return
(
char
*
)
getErrorStr
(
err
);
}
}
INT32
MIDI_IN_GetNumDevices
()
{
INT32
MIDI_IN_GetNumDevices
()
{
/* Workaround for 6842956: 32bit app on 64bit linux
* gets assertion failure trying to open midiIn ports.
* Untill the issue is fixed in ALSA
* (https://bugtrack.alsa-project.org/alsa-bug/view.php?id=4807)
* report no midi in devices in the configuration.
*/
#if defined(i586)
static
int
jre32onlinux64
=
-
1
;
if
(
jre32onlinux64
<
0
)
{
jre32onlinux64
=
0
;
/* The workaround may be disabled setting "JAVASOUND_ENABLE_MIDIIN"
* environment variable.
*/
if
(
getenv
(
"JAVASOUND_ENABLE_MIDIIN"
)
==
NULL
)
{
struct
utsname
u
;
jre32onlinux64
=
0
;
if
(
uname
(
&
u
)
==
0
)
{
if
(
strstr
(
u
.
machine
,
"64"
)
!=
NULL
)
{
TRACE0
(
"jre32 on linux64 detected - report no midiIn devices
\n
"
);
jre32onlinux64
=
1
;
}
}
}
}
if
(
jre32onlinux64
)
{
return
0
;
}
#endif
TRACE0
(
"MIDI_IN_GetNumDevices()
\n
"
);
TRACE0
(
"MIDI_IN_GetNumDevices()
\n
"
);
return
getMidiDeviceCount
(
SND_RAWMIDI_STREAM_INPUT
);
return
getMidiDeviceCount
(
SND_RAWMIDI_STREAM_INPUT
);
}
}
...
...
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c
浏览文件 @
ed853b07
/*
/*
* Copyright (c) 2003, 20
07
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
10
, 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
...
@@ -372,7 +372,7 @@ INT32 openMidiDevice(snd_rawmidi_stream_t direction, INT32 deviceIndex,
...
@@ -372,7 +372,7 @@ INT32 openMidiDevice(snd_rawmidi_stream_t direction, INT32 deviceIndex,
snd_rawmidi_t
*
native_handle
;
snd_rawmidi_t
*
native_handle
;
snd_midi_event_t
*
event_parser
=
NULL
;
snd_midi_event_t
*
event_parser
=
NULL
;
int
err
;
int
err
;
UINT32
deviceID
;
UINT32
deviceID
=
0
;
char
devicename
[
100
];
char
devicename
[
100
];
#ifdef ALSA_MIDI_USE_PLUGHW
#ifdef ALSA_MIDI_USE_PLUGHW
int
usePlugHw
=
1
;
int
usePlugHw
=
1
;
...
...
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCM.c
浏览文件 @
ed853b07
/*
/*
* Copyright (c) 2002, 20
07
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 20
10
, 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
...
@@ -127,7 +127,7 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
...
@@ -127,7 +127,7 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
int
ret
;
int
ret
;
int
sampleSizeInBytes
,
significantBits
,
isSigned
,
isBigEndian
,
enc
;
int
sampleSizeInBytes
,
significantBits
,
isSigned
,
isBigEndian
,
enc
;
int
origSampleSizeInBytes
,
origSignificantBits
;
int
origSampleSizeInBytes
,
origSignificantBits
;
int
channels
,
minChannels
,
maxChannels
;
unsigned
int
channels
,
minChannels
,
maxChannels
;
int
rate
,
bitIndex
;
int
rate
,
bitIndex
;
for
(
bitIndex
=
0
;
bitIndex
<=
MAX_BIT_INDEX
;
bitIndex
++
)
handledBits
[
bitIndex
]
=
FALSE
;
for
(
bitIndex
=
0
;
bitIndex
<=
MAX_BIT_INDEX
;
bitIndex
++
)
handledBits
[
bitIndex
]
=
FALSE
;
...
@@ -152,7 +152,6 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
...
@@ -152,7 +152,6 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
}
}
}
}
snd_pcm_hw_params_get_format_mask
(
hwParams
,
formatMask
);
snd_pcm_hw_params_get_format_mask
(
hwParams
,
formatMask
);
#ifdef ALSA_PCM_NEW_HW_PARAMS_API
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
ret
=
snd_pcm_hw_params_get_channels_min
(
hwParams
,
&
minChannels
);
ret
=
snd_pcm_hw_params_get_channels_min
(
hwParams
,
&
minChannels
);
if
(
ret
!=
0
)
{
if
(
ret
!=
0
)
{
...
@@ -165,13 +164,6 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
...
@@ -165,13 +164,6 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
ERROR1
(
"snd_pcm_hw_params_get_channels_max returned error %d
\n
"
,
ret
);
ERROR1
(
"snd_pcm_hw_params_get_channels_max returned error %d
\n
"
,
ret
);
}
}
}
}
#else
minChannels
=
snd_pcm_hw_params_get_channels_min
(
hwParams
);
maxChannels
=
snd_pcm_hw_params_get_channels_max
(
hwParams
);
if
(
minChannels
>
maxChannels
)
{
ERROR2
(
"MinChannels=%d, maxChannels=%d
\n
"
,
minChannels
,
maxChannels
);
}
#endif
// since we queried the hw: device, for many soundcards, it will only
// since we queried the hw: device, for many soundcards, it will only
// report the maximum number of channels (which is the only way to talk
// report the maximum number of channels (which is the only way to talk
...
@@ -222,7 +214,7 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
...
@@ -222,7 +214,7 @@ void DAUDIO_GetFormats(INT32 mixerIndex, INT32 deviceID, int isSource, void* cre
}
else
{
}
else
{
for
(
channels
=
minChannels
;
channels
<=
maxChannels
;
channels
++
)
{
for
(
channels
=
minChannels
;
channels
<=
maxChannels
;
channels
++
)
{
DAUDIO_AddAudioFormat
(
creator
,
significantBits
,
DAUDIO_AddAudioFormat
(
creator
,
significantBits
,
(
channels
<
0
)
?-
1
:
(
sampleSizeInBytes
*
channels
)
,
sampleSizeInBytes
*
channels
,
channels
,
rate
,
channels
,
rate
,
enc
,
isSigned
,
isBigEndian
);
enc
,
isSigned
,
isBigEndian
);
}
}
...
@@ -254,7 +246,7 @@ typedef struct tag_AlsaPcmInfo {
...
@@ -254,7 +246,7 @@ typedef struct tag_AlsaPcmInfo {
snd_pcm_sw_params_t
*
swParams
;
snd_pcm_sw_params_t
*
swParams
;
int
bufferSizeInBytes
;
int
bufferSizeInBytes
;
int
frameSize
;
// storage size in Bytes
int
frameSize
;
// storage size in Bytes
int
periods
;
unsigned
int
periods
;
snd_pcm_uframes_t
periodSize
;
snd_pcm_uframes_t
periodSize
;
#ifdef GET_POSITION_METHOD2
#ifdef GET_POSITION_METHOD2
// to be used exclusively by getBytePosition!
// to be used exclusively by getBytePosition!
...
@@ -305,8 +297,8 @@ int setHWParams(AlsaPcmInfo* info,
...
@@ -305,8 +297,8 @@ int setHWParams(AlsaPcmInfo* info,
int
channels
,
int
channels
,
int
bufferSizeInFrames
,
int
bufferSizeInFrames
,
snd_pcm_format_t
format
)
{
snd_pcm_format_t
format
)
{
unsigned
int
rrate
;
unsigned
int
rrate
,
periodTime
,
periods
;
int
ret
,
dir
,
periods
,
periodTime
;
int
ret
,
dir
;
snd_pcm_uframes_t
alsaBufferSizeInFrames
=
(
snd_pcm_uframes_t
)
bufferSizeInFrames
;
snd_pcm_uframes_t
alsaBufferSizeInFrames
=
(
snd_pcm_uframes_t
)
bufferSizeInFrames
;
/* choose all parameters */
/* choose all parameters */
...
@@ -335,12 +327,8 @@ int setHWParams(AlsaPcmInfo* info,
...
@@ -335,12 +327,8 @@ int setHWParams(AlsaPcmInfo* info,
}
}
/* set the stream rate */
/* set the stream rate */
rrate
=
(
int
)
(
sampleRate
+
0
.
5
f
);
rrate
=
(
int
)
(
sampleRate
+
0
.
5
f
);
#ifdef ALSA_PCM_NEW_HW_PARAMS_API
dir
=
0
;
dir
=
0
;
ret
=
snd_pcm_hw_params_set_rate_near
(
info
->
handle
,
info
->
hwParams
,
&
rrate
,
&
dir
);
ret
=
snd_pcm_hw_params_set_rate_near
(
info
->
handle
,
info
->
hwParams
,
&
rrate
,
&
dir
);
#else
ret
=
snd_pcm_hw_params_set_rate_near
(
info
->
handle
,
info
->
hwParams
,
rrate
,
0
);
#endif
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR2
(
"Rate %dHz not available for playback: %s
\n
"
,
(
int
)
(
sampleRate
+
0
.
5
f
),
snd_strerror
(
ret
));
ERROR2
(
"Rate %dHz not available for playback: %s
\n
"
,
(
int
)
(
sampleRate
+
0
.
5
f
),
snd_strerror
(
ret
));
return
FALSE
;
return
FALSE
;
...
@@ -350,12 +338,7 @@ int setHWParams(AlsaPcmInfo* info,
...
@@ -350,12 +338,7 @@ int setHWParams(AlsaPcmInfo* info,
return
FALSE
;
return
FALSE
;
}
}
/* set the buffer time */
/* set the buffer time */
#ifdef ALSA_PCM_NEW_HW_PARAMS_API
ret
=
snd_pcm_hw_params_set_buffer_size_near
(
info
->
handle
,
info
->
hwParams
,
&
alsaBufferSizeInFrames
);
ret
=
snd_pcm_hw_params_set_buffer_size_near
(
info
->
handle
,
info
->
hwParams
,
&
alsaBufferSizeInFrames
);
#else
ret
=
snd_pcm_hw_params_set_buffer_size_near
(
info
->
handle
,
info
->
hwParams
,
alsaBufferSizeInFrames
);
#endif
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR2
(
"Unable to set buffer size to %d frames: %s
\n
"
,
ERROR2
(
"Unable to set buffer size to %d frames: %s
\n
"
,
(
int
)
alsaBufferSizeInFrames
,
snd_strerror
(
ret
));
(
int
)
alsaBufferSizeInFrames
,
snd_strerror
(
ret
));
...
@@ -366,12 +349,7 @@ int setHWParams(AlsaPcmInfo* info,
...
@@ -366,12 +349,7 @@ int setHWParams(AlsaPcmInfo* info,
if
(
bufferSizeInFrames
>
1024
)
{
if
(
bufferSizeInFrames
>
1024
)
{
dir
=
0
;
dir
=
0
;
periodTime
=
DEFAULT_PERIOD_TIME
;
periodTime
=
DEFAULT_PERIOD_TIME
;
#ifdef ALSA_PCM_NEW_HW_PARAMS_API
ret
=
snd_pcm_hw_params_set_period_time_near
(
info
->
handle
,
info
->
hwParams
,
&
periodTime
,
&
dir
);
ret
=
snd_pcm_hw_params_set_period_time_near
(
info
->
handle
,
info
->
hwParams
,
&
periodTime
,
&
dir
);
#else
periodTime
=
snd_pcm_hw_params_set_period_time_near
(
info
->
handle
,
info
->
hwParams
,
periodTime
,
&
dir
);
ret
=
periodTime
;
#endif
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR2
(
"Unable to set period time to %d: %s
\n
"
,
DEFAULT_PERIOD_TIME
,
snd_strerror
(
ret
));
ERROR2
(
"Unable to set period time to %d: %s
\n
"
,
DEFAULT_PERIOD_TIME
,
snd_strerror
(
ret
));
return
FALSE
;
return
FALSE
;
...
@@ -380,12 +358,7 @@ int setHWParams(AlsaPcmInfo* info,
...
@@ -380,12 +358,7 @@ int setHWParams(AlsaPcmInfo* info,
/* set the period count for very small buffer sizes to 2 */
/* set the period count for very small buffer sizes to 2 */
dir
=
0
;
dir
=
0
;
periods
=
2
;
periods
=
2
;
#ifdef ALSA_PCM_NEW_HW_PARAMS_API
ret
=
snd_pcm_hw_params_set_periods_near
(
info
->
handle
,
info
->
hwParams
,
&
periods
,
&
dir
);
ret
=
snd_pcm_hw_params_set_periods_near
(
info
->
handle
,
info
->
hwParams
,
&
periods
,
&
dir
);
#else
periods
=
snd_pcm_hw_params_set_periods_near
(
info
->
handle
,
info
->
hwParams
,
periods
,
&
dir
);
ret
=
periods
;
#endif
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR2
(
"Unable to set period count to %d: %s
\n
"
,
/*periods*/
2
,
snd_strerror
(
ret
));
ERROR2
(
"Unable to set period count to %d: %s
\n
"
,
/*periods*/
2
,
snd_strerror
(
ret
));
return
FALSE
;
return
FALSE
;
...
@@ -421,12 +394,6 @@ int setSWParams(AlsaPcmInfo* info) {
...
@@ -421,12 +394,6 @@ int setSWParams(AlsaPcmInfo* info) {
ERROR1
(
"Unable to set avail min for playback: %s
\n
"
,
snd_strerror
(
ret
));
ERROR1
(
"Unable to set avail min for playback: %s
\n
"
,
snd_strerror
(
ret
));
return
FALSE
;
return
FALSE
;
}
}
/* align all transfers to 1 sample */
ret
=
snd_pcm_sw_params_set_xfer_align
(
info
->
handle
,
info
->
swParams
,
1
);
if
(
ret
<
0
)
{
ERROR1
(
"Unable to set transfer align: %s
\n
"
,
snd_strerror
(
ret
));
return
FALSE
;
}
/* write the parameters to the playback device */
/* write the parameters to the playback device */
ret
=
snd_pcm_sw_params
(
info
->
handle
,
info
->
swParams
);
ret
=
snd_pcm_sw_params
(
info
->
handle
,
info
->
swParams
);
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
...
@@ -448,7 +415,6 @@ void* DAUDIO_Open(INT32 mixerIndex, INT32 deviceID, int isSource,
...
@@ -448,7 +415,6 @@ void* DAUDIO_Open(INT32 mixerIndex, INT32 deviceID, int isSource,
int
ret
=
0
;
int
ret
=
0
;
AlsaPcmInfo
*
info
=
NULL
;
AlsaPcmInfo
*
info
=
NULL
;
/* snd_pcm_uframes_t is 64 bit on 64-bit systems */
/* snd_pcm_uframes_t is 64 bit on 64-bit systems */
snd_pcm_uframes_t
alsaPeriodSize
=
0
;
snd_pcm_uframes_t
alsaBufferSizeInFrames
=
0
;
snd_pcm_uframes_t
alsaBufferSizeInFrames
=
0
;
...
@@ -484,21 +450,13 @@ void* DAUDIO_Open(INT32 mixerIndex, INT32 deviceID, int isSource,
...
@@ -484,21 +450,13 @@ void* DAUDIO_Open(INT32 mixerIndex, INT32 deviceID, int isSource,
bufferSizeInBytes
/
frameSize
,
bufferSizeInBytes
/
frameSize
,
format
))
{
format
))
{
info
->
frameSize
=
frameSize
;
info
->
frameSize
=
frameSize
;
#ifdef ALSA_PCM_NEW_HW_PARAMS_API
ret
=
snd_pcm_hw_params_get_period_size
(
info
->
hwParams
,
&
info
->
periodSize
,
&
dir
);
ret
=
snd_pcm_hw_params_get_period_size
(
info
->
hwParams
,
&
alsaPeriodSize
,
&
dir
);
info
->
periodSize
=
(
int
)
alsaPeriodSize
;
if
(
ret
<
0
)
{
if
(
ret
<
0
)
{
ERROR1
(
"ERROR: snd_pcm_hw_params_get_period: %s
\n
"
,
snd_strerror
(
ret
));
ERROR1
(
"ERROR: snd_pcm_hw_params_get_period: %s
\n
"
,
snd_strerror
(
ret
));
}
}
snd_pcm_hw_params_get_periods
(
info
->
hwParams
,
&
(
info
->
periods
),
&
dir
);
snd_pcm_hw_params_get_periods
(
info
->
hwParams
,
&
(
info
->
periods
),
&
dir
);
snd_pcm_hw_params_get_buffer_size
(
info
->
hwParams
,
&
alsaBufferSizeInFrames
);
snd_pcm_hw_params_get_buffer_size
(
info
->
hwParams
,
&
alsaBufferSizeInFrames
);
info
->
bufferSizeInBytes
=
(
int
)
alsaBufferSizeInFrames
*
frameSize
;
info
->
bufferSizeInBytes
=
(
int
)
alsaBufferSizeInFrames
*
frameSize
;
#else
info
->
periodSize
=
snd_pcm_hw_params_get_period_size
(
info
->
hwParams
,
&
dir
);
info
->
periods
=
snd_pcm_hw_params_get_periods
(
info
->
hwParams
,
&
dir
);
info
->
bufferSizeInBytes
=
snd_pcm_hw_params_get_buffer_size
(
info
->
hwParams
)
*
frameSize
;
ret
=
0
;
#endif
TRACE3
(
" DAUDIO_Open: period size = %d frames, periods = %d. Buffer size: %d bytes.
\n
"
,
TRACE3
(
" DAUDIO_Open: period size = %d frames, periods = %d. Buffer size: %d bytes.
\n
"
,
(
int
)
info
->
periodSize
,
info
->
periods
,
info
->
bufferSizeInBytes
);
(
int
)
info
->
periodSize
,
info
->
periods
,
info
->
bufferSizeInBytes
);
}
}
...
...
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.h
浏览文件 @
ed853b07
/*
/*
* Copyright (c) 2003, 20
07
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
10
, 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
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
*/
*/
// define this with a later version of ALSA than 0.9.0rc3
// define this with a later version of ALSA than 0.9.0rc3
// (starting from 1.0.0 it became default behaviour)
#define ALSA_PCM_NEW_HW_PARAMS_API
#define ALSA_PCM_NEW_HW_PARAMS_API
#include <alsa/asoundlib.h>
#include <alsa/asoundlib.h>
#include "Utilities.h"
#include "Utilities.h"
...
...
src/solaris/native/com/sun/media/sound/PLATFORM_API_LinuxOS_ALSA_Ports.c
浏览文件 @
ed853b07
/*
/*
* Copyright (c) 2003, 20
07
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 20
10
, 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
...
@@ -380,7 +380,7 @@ void PORT_GetControls(void* id, INT32 portIndex, PortControlCreator* creator) {
...
@@ -380,7 +380,7 @@ void PORT_GetControls(void* id, INT32 portIndex, PortControlCreator* creator) {
void
*
controls
[
10
];
void
*
controls
[
10
];
int
numControls
;
int
numControls
;
char
*
portName
;
char
*
portName
;
int
isPlayback
;
int
isPlayback
=
0
;
int
isMono
;
int
isMono
;
int
isStereo
;
int
isStereo
;
char
*
type
;
char
*
type
;
...
...
src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
浏览文件 @
ed853b07
...
@@ -191,7 +191,7 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer,
...
@@ -191,7 +191,7 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer,
fp_gdk_threads_enter
();
fp_gdk_threads_enter
();
const
char
*
title
=
(
*
env
)
->
GetStringUTFChars
(
env
,
jtitle
,
0
);
const
char
*
title
=
jtitle
==
NULL
?
""
:
(
*
env
)
->
GetStringUTFChars
(
env
,
jtitle
,
0
);
if
(
mode
==
1
)
{
if
(
mode
==
1
)
{
/* Save action */
/* Save action */
...
@@ -212,7 +212,9 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer,
...
@@ -212,7 +212,9 @@ Java_sun_awt_X11_GtkFileDialogPeer_run(JNIEnv * env, jobject jpeer,
}
}
}
}
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jtitle
,
title
);
if
(
jtitle
!=
NULL
)
{
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
jtitle
,
title
);
}
/* Set the directory */
/* Set the directory */
if
(
jdir
!=
NULL
)
{
if
(
jdir
!=
NULL
)
{
...
...
src/solaris/native/sun/java2d/loops/vis_IntArgbPre_Mask.c
浏览文件 @
ed853b07
...
@@ -517,13 +517,15 @@ void ADD_SUFF(IntArgbPreSrcMaskFill)(void *rasBase,
...
@@ -517,13 +517,15 @@ void ADD_SUFF(IntArgbPreSrcMaskFill)(void *rasBase,
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
0
,
0
,
width
,
height
,
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
0
,
0
,
width
,
height
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
#else
#else
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
if
(
cnstA
!=
0xff
)
{
if
(
cnstA
!=
0xff
)
{
fgColor
=
(
cnstA
<<
24
)
|
(
cnstR
<<
16
)
|
(
cnstG
<<
8
)
|
cnstB
;
fgColor
=
(
cnstA
<<
24
)
|
(
cnstR
<<
16
)
|
(
cnstG
<<
8
)
|
cnstB
;
}
}
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
#endif
#endif
return
;
return
;
}
}
...
@@ -582,11 +584,13 @@ void ADD_SUFF(FourByteAbgrPreSrcMaskFill)(void *rasBase,
...
@@ -582,11 +584,13 @@ void ADD_SUFF(FourByteAbgrPreSrcMaskFill)(void *rasBase,
}
}
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
fgColor
=
(
cnstR
<<
24
)
|
(
cnstG
<<
16
)
|
(
cnstB
<<
8
)
|
cnstA
;
fgColor
=
(
cnstR
<<
24
)
|
(
cnstG
<<
16
)
|
(
cnstB
<<
8
)
|
cnstA
;
ADD_SUFF
(
Any4ByteSetRect
)(
pRasInfo
,
ADD_SUFF
(
Any4ByteSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
return
;
return
;
}
}
...
...
src/solaris/native/sun/java2d/loops/vis_SrcMaskFill.c
浏览文件 @
ed853b07
...
@@ -150,10 +150,12 @@ void ADD_SUFF(IntArgbSrcMaskFill)(void *rasBase,
...
@@ -150,10 +150,12 @@ void ADD_SUFF(IntArgbSrcMaskFill)(void *rasBase,
}
}
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
return
;
return
;
}
}
...
@@ -214,15 +216,17 @@ void ADD_SUFF(FourByteAbgrSrcMaskFill)(void *rasBase,
...
@@ -214,15 +216,17 @@ void ADD_SUFF(FourByteAbgrSrcMaskFill)(void *rasBase,
cnstB
=
(
fgColor
)
&
0xff
;
cnstB
=
(
fgColor
)
&
0xff
;
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
if
(
cnstA
==
0
)
{
if
(
cnstA
==
0
)
{
fgColor
=
0
;
fgColor
=
0
;
}
else
{
}
else
{
fgColor
=
(
fgColor
<<
8
)
|
cnstA
;
fgColor
=
(
fgColor
<<
8
)
|
cnstA
;
}
}
ADD_SUFF
(
Any4ByteSetRect
)(
pRasInfo
,
ADD_SUFF
(
Any4ByteSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
return
;
return
;
}
}
...
@@ -390,10 +394,12 @@ void ADD_SUFF(IntRgbSrcMaskFill)(void *rasBase,
...
@@ -390,10 +394,12 @@ void ADD_SUFF(IntRgbSrcMaskFill)(void *rasBase,
if
(
cnstA
==
0
)
fgColor
=
0
;
if
(
cnstA
==
0
)
fgColor
=
0
;
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
return
;
return
;
}
}
...
@@ -458,10 +464,12 @@ void ADD_SUFF(IntBgrSrcMaskFill)(void *rasBase,
...
@@ -458,10 +464,12 @@ void ADD_SUFF(IntBgrSrcMaskFill)(void *rasBase,
}
}
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
ADD_SUFF
(
AnyIntSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
return
;
return
;
}
}
...
@@ -526,10 +534,12 @@ void ADD_SUFF(ThreeByteBgrSrcMaskFill)(void *rasBase,
...
@@ -526,10 +534,12 @@ void ADD_SUFF(ThreeByteBgrSrcMaskFill)(void *rasBase,
}
}
if
(
pMask
==
NULL
)
{
if
(
pMask
==
NULL
)
{
void
*
pBase
=
pRasInfo
->
rasBase
;
pRasInfo
->
rasBase
=
rasBase
;
ADD_SUFF
(
Any3ByteSetRect
)(
pRasInfo
,
ADD_SUFF
(
Any3ByteSetRect
)(
pRasInfo
,
pRasInfo
->
bounds
.
x1
,
pRasInfo
->
bounds
.
y1
,
0
,
0
,
width
,
height
,
pRasInfo
->
bounds
.
x2
,
pRasInfo
->
bounds
.
y2
,
fgColor
,
pPrim
,
pCompInfo
);
fgColor
,
pPrim
,
pCompInfo
);
pRasInfo
->
rasBase
=
pBase
;
return
;
return
;
}
}
...
...
src/solaris/native/sun/xawt/XToolkit.c
浏览文件 @
ed853b07
...
@@ -187,7 +187,9 @@ Java_java_awt_Component_initIDs
...
@@ -187,7 +187,9 @@ Java_java_awt_Component_initIDs
"()Ljava/awt/Point;"
);
"()Ljava/awt/Point;"
);
keyclass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/event/KeyEvent"
);
keyclass
=
(
*
env
)
->
FindClass
(
env
,
"java/awt/event/KeyEvent"
);
DASSERT
(
keyclass
!=
NULL
);
if
(
JNU_IsNull
(
env
,
keyclass
))
{
return
;
}
componentIDs
.
isProxyActive
=
componentIDs
.
isProxyActive
=
(
*
env
)
->
GetFieldID
(
env
,
keyclass
,
"isProxyActive"
,
(
*
env
)
->
GetFieldID
(
env
,
keyclass
,
"isProxyActive"
,
...
@@ -715,8 +717,10 @@ Window get_xawt_root_shell(JNIEnv *env) {
...
@@ -715,8 +717,10 @@ Window get_xawt_root_shell(JNIEnv *env) {
if
(
xawt_root_shell
==
None
){
if
(
xawt_root_shell
==
None
){
if
(
classXRootWindow
==
NULL
){
if
(
classXRootWindow
==
NULL
){
jclass
cls_tmp
=
(
*
env
)
->
FindClass
(
env
,
"sun/awt/X11/XRootWindow"
);
jclass
cls_tmp
=
(
*
env
)
->
FindClass
(
env
,
"sun/awt/X11/XRootWindow"
);
classXRootWindow
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
cls_tmp
);
if
(
!
JNU_IsNull
(
env
,
cls_tmp
))
{
(
*
env
)
->
DeleteLocalRef
(
env
,
cls_tmp
);
classXRootWindow
=
(
jclass
)(
*
env
)
->
NewGlobalRef
(
env
,
cls_tmp
);
(
*
env
)
->
DeleteLocalRef
(
env
,
cls_tmp
);
}
}
}
if
(
classXRootWindow
!=
NULL
)
{
if
(
classXRootWindow
!=
NULL
)
{
methodGetXRootWindow
=
(
*
env
)
->
GetStaticMethodID
(
env
,
classXRootWindow
,
"getXRootWindow"
,
"()J"
);
methodGetXRootWindow
=
(
*
env
)
->
GetStaticMethodID
(
env
,
classXRootWindow
,
"getXRootWindow"
,
"()J"
);
...
...
src/windows/classes/sun/awt/windows/WComponentPeer.java
浏览文件 @
ed853b07
...
@@ -999,6 +999,8 @@ public abstract class WComponentPeer extends WObjectPeer
...
@@ -999,6 +999,8 @@ public abstract class WComponentPeer extends WObjectPeer
public
void
setBoundsOperation
(
int
operation
)
{
public
void
setBoundsOperation
(
int
operation
)
{
}
}
private
volatile
boolean
isAccelCapable
=
true
;
/**
/**
* Returns whether this component is capable of being hw accelerated.
* Returns whether this component is capable of being hw accelerated.
* More specifically, whether rendering to this component or a
* More specifically, whether rendering to this component or a
...
@@ -1009,11 +1011,22 @@ public abstract class WComponentPeer extends WObjectPeer
...
@@ -1009,11 +1011,22 @@ public abstract class WComponentPeer extends WObjectPeer
* {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* {@link GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* PERPIXEL_TRANSLUCENT}.
* PERPIXEL_TRANSLUCENT}.
*
*
* Another condition is if Xor paint mode was detected when rendering
* to an on-screen accelerated surface associated with this peer.
* in this case both on- and off-screen acceleration for this peer is
* disabled.
*
* @return {@code true} if this component is capable of being hw
* @return {@code true} if this component is capable of being hw
* accelerated, {@code false} otherwise
* accelerated, {@code false} otherwise
* @see GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
* @see GraphicsDevice.WindowTranslucency#PERPIXEL_TRANSLUCENT
*/
*/
public
boolean
isAccelCapable
()
{
public
boolean
isAccelCapable
()
{
if
(!
isAccelCapable
||
!
isContainingTopLevelAccelCapable
((
Component
)
target
))
{
return
false
;
}
boolean
isTranslucent
=
boolean
isTranslucent
=
SunToolkit
.
isContainingTopLevelTranslucent
((
Component
)
target
);
SunToolkit
.
isContainingTopLevelTranslucent
((
Component
)
target
);
// D3D/OGL and translucent windows interacted poorly in Windows XP;
// D3D/OGL and translucent windows interacted poorly in Windows XP;
...
@@ -1021,6 +1034,14 @@ public abstract class WComponentPeer extends WObjectPeer
...
@@ -1021,6 +1034,14 @@ public abstract class WComponentPeer extends WObjectPeer
return
!
isTranslucent
||
Win32GraphicsEnvironment
.
isVistaOS
();
return
!
isTranslucent
||
Win32GraphicsEnvironment
.
isVistaOS
();
}
}
/**
* Disables acceleration for this peer.
*/
public
void
disableAcceleration
()
{
isAccelCapable
=
false
;
}
native
void
setRectangularShape
(
int
lox
,
int
loy
,
int
hix
,
int
hiy
,
native
void
setRectangularShape
(
int
lox
,
int
loy
,
int
hix
,
int
hiy
,
Region
region
);
Region
region
);
...
...
src/windows/classes/sun/java2d/d3d/D3DSurfaceData.java
浏览文件 @
ed853b07
...
@@ -437,6 +437,10 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
...
@@ -437,6 +437,10 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
protected
int
getElem
(
final
int
x
,
final
int
y
,
protected
int
getElem
(
final
int
x
,
final
int
y
,
final
SurfaceData
sData
)
final
SurfaceData
sData
)
{
{
if
(
sData
.
isSurfaceLost
())
{
return
0
;
}
int
retPixel
;
int
retPixel
;
D3DRenderQueue
rq
=
D3DRenderQueue
.
getInstance
();
D3DRenderQueue
rq
=
D3DRenderQueue
.
getInstance
();
rq
.
lock
();
rq
.
lock
();
...
@@ -456,6 +460,10 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
...
@@ -456,6 +460,10 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
protected
void
setElem
(
final
int
x
,
final
int
y
,
final
int
pixel
,
protected
void
setElem
(
final
int
x
,
final
int
y
,
final
int
pixel
,
final
SurfaceData
sData
)
final
SurfaceData
sData
)
{
{
if
(
sData
.
isSurfaceLost
())
{
return
;
}
D3DRenderQueue
rq
=
D3DRenderQueue
.
getInstance
();
D3DRenderQueue
rq
=
D3DRenderQueue
.
getInstance
();
rq
.
lock
();
rq
.
lock
();
try
{
try
{
...
@@ -512,15 +520,32 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
...
@@ -512,15 +520,32 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
sg2d
.
surfaceData
.
getTransparency
()
==
Transparency
.
OPAQUE
;
sg2d
.
surfaceData
.
getTransparency
()
==
Transparency
.
OPAQUE
;
}
}
/**
* If acceleration should no longer be used for this surface.
* This implementation flags to the manager that it should no
* longer attempt to re-create a D3DSurface.
*/
void
disableAccelerationForSurface
()
{
if
(
offscreenImage
!=
null
)
{
SurfaceManager
sm
=
SurfaceManager
.
getManager
(
offscreenImage
);
if
(
sm
instanceof
D3DVolatileSurfaceManager
)
{
setSurfaceLost
(
true
);
((
D3DVolatileSurfaceManager
)
sm
).
setAccelerationEnabled
(
false
);
}
}
}
public
void
validatePipe
(
SunGraphics2D
sg2d
)
{
public
void
validatePipe
(
SunGraphics2D
sg2d
)
{
TextPipe
textpipe
;
TextPipe
textpipe
;
boolean
validated
=
false
;
boolean
validated
=
false
;
// REMIND: the D3D pipeline doesn't support XOR!, more
// REMIND: the D3D pipeline doesn't support XOR!, more
// fixes will be needed below
// fixes will be needed below. For now we disable D3D rendering
// for the surface which had any XOR rendering done to.
if
(
sg2d
.
compositeState
>=
sg2d
.
COMP_XOR
)
{
if
(
sg2d
.
compositeState
>=
sg2d
.
COMP_XOR
)
{
super
.
validatePipe
(
sg2d
);
super
.
validatePipe
(
sg2d
);
sg2d
.
imagepipe
=
d3dImagePipe
;
sg2d
.
imagepipe
=
d3dImagePipe
;
disableAccelerationForSurface
();
return
;
return
;
}
}
...
@@ -894,8 +919,26 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
...
@@ -894,8 +919,26 @@ public class D3DSurfaceData extends SurfaceData implements AccelSurface {
return
peer
.
getTarget
();
return
peer
.
getTarget
();
}
}
@Override
void
disableAccelerationForSurface
()
{
// for on-screen surfaces we need to make sure a backup GDI surface is
// is used until a new one is set (which may happen during a resize). We
// don't want the screen update maanger to replace the surface right way
// because it causes repainting issues in Swing, so we invalidate it,
// this will prevent SUM from issuing a replaceSurfaceData call.
setSurfaceLost
(
true
);
invalidate
();
flush
();
peer
.
disableAcceleration
();
ScreenUpdateManager
.
getInstance
().
dropScreenSurface
(
this
);
}
@Override
@Override
void
restoreSurface
()
{
void
restoreSurface
()
{
if
(!
peer
.
isAccelCapable
())
{
throw
new
InvalidPipeException
(
"Onscreen acceleration "
+
"disabled for this surface"
);
}
Window
fsw
=
graphicsDevice
.
getFullScreenWindow
();
Window
fsw
=
graphicsDevice
.
getFullScreenWindow
();
if
(
fsw
!=
null
&&
fsw
!=
peer
.
getTarget
())
{
if
(
fsw
!=
null
&&
fsw
!=
peer
.
getTarget
())
{
throw
new
InvalidPipeException
(
"Can't restore onscreen surface"
+
throw
new
InvalidPipeException
(
"Can't restore onscreen surface"
+
...
...
src/windows/classes/sun/java2d/opengl/WGLVolatileSurfaceManager.java
浏览文件 @
ed853b07
...
@@ -133,7 +133,9 @@ public class WGLVolatileSurfaceManager
...
@@ -133,7 +133,9 @@ public class WGLVolatileSurfaceManager
@Override
@Override
protected
boolean
isConfigValid
(
GraphicsConfiguration
gc
)
{
protected
boolean
isConfigValid
(
GraphicsConfiguration
gc
)
{
return
((
gc
==
null
)
||
(
gc
==
vImg
.
getGraphicsConfig
()));
return
((
gc
==
null
)
||
((
gc
instanceof
WGLGraphicsConfig
)
&&
(
gc
==
vImg
.
getGraphicsConfig
())));
}
}
@Override
@Override
...
...
src/windows/lib/tzmappings
浏览文件 @
ed853b07
...
@@ -188,5 +188,6 @@ UTC-02:920,920::GMT-0200:
...
@@ -188,5 +188,6 @@ UTC-02:920,920::GMT-0200:
UTC-11:921,921::GMT-1100:
UTC-11:921,921::GMT-1100:
Ulaanbaatar Standard Time:922,922::Asia/Ulaanbaatar:
Ulaanbaatar Standard Time:922,922::Asia/Ulaanbaatar:
Venezuela Standard Time:923,923::America/Caracas:
Venezuela Standard Time:923,923::America/Caracas:
Western Brazilian Standard Time:924,924:BR:America/Rio_Branco:
Magadan Standard Time:924,924::Asia/Magadan:
Armenian Standard Time:925,925:AM:Asia/Yerevan:
Western Brazilian Standard Time:925,925:BR:America/Rio_Branco:
Armenian Standard Time:926,926:AM:Asia/Yerevan:
src/windows/native/sun/windows/Devices.h
浏览文件 @
ed853b07
...
@@ -54,7 +54,7 @@ static BOOL UpdateInstance(JNIEnv *env);
...
@@ -54,7 +54,7 @@ static BOOL UpdateInstance(JNIEnv *env);
InstanceAccess
&
operator
=
(
const
InstanceAccess
&
);
InstanceAccess
&
operator
=
(
const
InstanceAccess
&
);
InstanceAccess
*
operator
&
();
InstanceAccess
*
operator
&
();
};
};
friend
InstanceAccess
;
friend
class
InstanceAccess
;
private:
private:
Devices
(
int
numElements
);
Devices
(
int
numElements
);
...
...
src/windows/native/sun/windows/awt.h
浏览文件 @
ed853b07
...
@@ -173,7 +173,7 @@ extern JavaVM *jvm;
...
@@ -173,7 +173,7 @@ extern JavaVM *jvm;
// Platform encoding is Unicode (UTF-16), re-define JNU_ functions
// Platform encoding is Unicode (UTF-16), re-define JNU_ functions
// to proper JNI functions.
// to proper JNI functions.
#define JNU_NewStringPlatform(env, x) env->NewString(reinterpret_cast<jchar*>(x), static_cast<jsize>(_tcslen(x)))
#define JNU_NewStringPlatform(env, x) env->NewString(reinterpret_cast<
const
jchar*>(x), static_cast<jsize>(_tcslen(x)))
#define JNU_GetStringPlatformChars(env, x, y) reinterpret_cast<LPCWSTR>(env->GetStringChars(x, y))
#define JNU_GetStringPlatformChars(env, x, y) reinterpret_cast<LPCWSTR>(env->GetStringChars(x, y))
#define JNU_ReleaseStringPlatformChars(env, x, y) env->ReleaseStringChars(x, reinterpret_cast<const jchar*>(y))
#define JNU_ReleaseStringPlatformChars(env, x, y) env->ReleaseStringChars(x, reinterpret_cast<const jchar*>(y))
...
...
src/windows/native/sun/windows/awt_Debug.cpp
浏览文件 @
ed853b07
...
@@ -47,12 +47,21 @@ void * operator new(size_t size, const char * filename, int linenumber) {
...
@@ -47,12 +47,21 @@ void * operator new(size_t size, const char * filename, int linenumber) {
return
ptr
;
return
ptr
;
}
}
void
*
operator
new
[](
size_t
size
,
const
char
*
filename
,
int
linenumber
)
{
void
*
ptr
=
DMem_AllocateBlock
(
size
,
filename
,
linenumber
);
if
(
ptr
==
NULL
)
{
throw
std
::
bad_alloc
();
}
return
ptr
;
}
#if _MSC_VER >= 1200
#if _MSC_VER >= 1200
void
operator
delete
(
void
*
ptr
,
const
char
*
,
int
)
{
void
operator
delete
(
void
*
ptr
,
const
char
*
,
int
)
{
DASSERTMSG
(
FALSE
,
"This version of 'delete' should never get called!!!"
);
DASSERTMSG
(
FALSE
,
"This version of 'delete' should never get called!!!"
);
}
}
#endif
#endif
void
operator
delete
(
void
*
ptr
)
{
void
operator
delete
(
void
*
ptr
)
throw
()
{
DMem_FreeBlock
(
ptr
);
DMem_FreeBlock
(
ptr
);
}
}
...
...
src/windows/native/sun/windows/awt_Debug.h
浏览文件 @
ed853b07
...
@@ -48,11 +48,14 @@
...
@@ -48,11 +48,14 @@
};
};
extern
void
*
operator
new
(
size_t
size
,
const
char
*
filename
,
int
linenumber
);
extern
void
*
operator
new
(
size_t
size
,
const
char
*
filename
,
int
linenumber
);
extern
void
*
operator
new
[](
size_t
size
,
const
char
*
filename
,
int
linenumber
);
#if _MSC_VER >= 1200
#if _MSC_VER >= 1200
/* VC 6.0 is more strict about enforcing matching placement new & delete */
/* VC 6.0 is more strict about enforcing matching placement new & delete */
extern
void
operator
delete
(
void
*
ptr
,
const
char
*
,
int
);
extern
void
operator
delete
(
void
*
ptr
,
const
char
*
,
int
);
#endif
#endif
extern
void
operator
delete
(
void
*
ptr
);
extern
void
operator
delete
(
void
*
ptr
)
throw
();
extern
void
DumpClipRectangle
(
const
char
*
file
,
int
line
,
int
argc
,
const
char
*
fmt
,
va_list
arglist
);
extern
void
DumpClipRectangle
(
const
char
*
file
,
int
line
,
int
argc
,
const
char
*
fmt
,
va_list
arglist
);
extern
void
DumpUpdateRectangle
(
const
char
*
file
,
int
line
,
int
argc
,
const
char
*
fmt
,
va_list
arglist
);
extern
void
DumpUpdateRectangle
(
const
char
*
file
,
int
line
,
int
argc
,
const
char
*
fmt
,
va_list
arglist
);
...
...
src/windows/native/sun/windows/awt_DesktopProperties.cpp
浏览文件 @
ed853b07
...
@@ -650,7 +650,7 @@ UINT AwtDesktopProperties::GetIntegerParameter(UINT spi) {
...
@@ -650,7 +650,7 @@ UINT AwtDesktopProperties::GetIntegerParameter(UINT spi) {
}
}
void
AwtDesktopProperties
::
SetStringProperty
(
LPCTSTR
propName
,
LPTSTR
value
)
{
void
AwtDesktopProperties
::
SetStringProperty
(
LPCTSTR
propName
,
LPTSTR
value
)
{
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
GetEnv
()
->
CallVoidMethod
(
self
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setStringPropertyID
,
AwtDesktopProperties
::
setStringPropertyID
,
key
,
JNU_NewStringPlatform
(
GetEnv
(),
value
));
key
,
JNU_NewStringPlatform
(
GetEnv
(),
value
));
...
@@ -658,7 +658,7 @@ void AwtDesktopProperties::SetStringProperty(LPCTSTR propName, LPTSTR value) {
...
@@ -658,7 +658,7 @@ void AwtDesktopProperties::SetStringProperty(LPCTSTR propName, LPTSTR value) {
}
}
void
AwtDesktopProperties
::
SetIntegerProperty
(
LPCTSTR
propName
,
int
value
)
{
void
AwtDesktopProperties
::
SetIntegerProperty
(
LPCTSTR
propName
,
int
value
)
{
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
GetEnv
()
->
CallVoidMethod
(
self
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setIntegerPropertyID
,
AwtDesktopProperties
::
setIntegerPropertyID
,
key
,
(
jint
)
value
);
key
,
(
jint
)
value
);
...
@@ -666,7 +666,7 @@ void AwtDesktopProperties::SetIntegerProperty(LPCTSTR propName, int value) {
...
@@ -666,7 +666,7 @@ void AwtDesktopProperties::SetIntegerProperty(LPCTSTR propName, int value) {
}
}
void
AwtDesktopProperties
::
SetBooleanProperty
(
LPCTSTR
propName
,
BOOL
value
)
{
void
AwtDesktopProperties
::
SetBooleanProperty
(
LPCTSTR
propName
,
BOOL
value
)
{
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
GetEnv
()
->
CallVoidMethod
(
self
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setBooleanPropertyID
,
AwtDesktopProperties
::
setBooleanPropertyID
,
key
,
value
?
JNI_TRUE
:
JNI_FALSE
);
key
,
value
?
JNI_TRUE
:
JNI_FALSE
);
...
@@ -674,7 +674,7 @@ void AwtDesktopProperties::SetBooleanProperty(LPCTSTR propName, BOOL value) {
...
@@ -674,7 +674,7 @@ void AwtDesktopProperties::SetBooleanProperty(LPCTSTR propName, BOOL value) {
}
}
void
AwtDesktopProperties
::
SetColorProperty
(
LPCTSTR
propName
,
DWORD
value
)
{
void
AwtDesktopProperties
::
SetColorProperty
(
LPCTSTR
propName
,
DWORD
value
)
{
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
GetEnv
()
->
CallVoidMethod
(
self
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setColorPropertyID
,
AwtDesktopProperties
::
setColorPropertyID
,
key
,
GetRValue
(
value
),
GetGValue
(
value
),
key
,
GetRValue
(
value
),
GetGValue
(
value
),
...
@@ -726,7 +726,7 @@ void AwtDesktopProperties::SetFontProperty(HDC dc, int fontID,
...
@@ -726,7 +726,7 @@ void AwtDesktopProperties::SetFontProperty(HDC dc, int fontID,
style
|=
java_awt_Font_ITALIC
;
style
|=
java_awt_Font_ITALIC
;
}
}
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
GetEnv
()
->
CallVoidMethod
(
self
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setFontPropertyID
,
AwtDesktopProperties
::
setFontPropertyID
,
key
,
fontName
,
style
,
pointSize
);
key
,
fontName
,
style
,
pointSize
);
...
@@ -744,7 +744,7 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon
...
@@ -744,7 +744,7 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon
jint
pointSize
;
jint
pointSize
;
jint
style
;
jint
style
;
fontName
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPWSTR
>
(
font
.
lfFaceName
)
);
fontName
=
JNU_NewStringPlatform
(
GetEnv
(),
font
.
lfFaceName
);
#if 0
#if 0
HDC hdc;
HDC hdc;
...
@@ -767,7 +767,7 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon
...
@@ -767,7 +767,7 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon
style
|=
java_awt_Font_ITALIC
;
style
|=
java_awt_Font_ITALIC
;
}
}
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setFontPropertyID
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setFontPropertyID
,
key
,
fontName
,
style
,
pointSize
);
key
,
fontName
,
style
,
pointSize
);
...
@@ -776,8 +776,8 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon
...
@@ -776,8 +776,8 @@ void AwtDesktopProperties::SetFontProperty(LPCTSTR propName, const LOGFONT & fon
}
}
void
AwtDesktopProperties
::
SetSoundProperty
(
LPCTSTR
propName
,
LPCTSTR
winEventName
)
{
void
AwtDesktopProperties
::
SetSoundProperty
(
LPCTSTR
propName
,
LPCTSTR
winEventName
)
{
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
propName
)
);
jstring
key
=
JNU_NewStringPlatform
(
GetEnv
(),
propName
);
jstring
event
=
JNU_NewStringPlatform
(
GetEnv
(),
const_cast
<
LPTSTR
>
(
winEventName
)
);
jstring
event
=
JNU_NewStringPlatform
(
GetEnv
(),
winEventName
);
GetEnv
()
->
CallVoidMethod
(
self
,
GetEnv
()
->
CallVoidMethod
(
self
,
AwtDesktopProperties
::
setSoundPropertyID
,
AwtDesktopProperties
::
setSoundPropertyID
,
key
,
event
);
key
,
event
);
...
...
src/windows/native/sun/windows/awt_Dialog.cpp
浏览文件 @
ed853b07
...
@@ -230,7 +230,7 @@ LRESULT CALLBACK AwtDialog::ModalFilterProc(int code,
...
@@ -230,7 +230,7 @@ LRESULT CALLBACK AwtDialog::ModalFilterProc(int code,
if
(
::
IsIconic
(
hWnd
))
{
if
(
::
IsIconic
(
hWnd
))
{
::
ShowWindow
(
hWnd
,
SW_RESTORE
);
::
ShowWindow
(
hWnd
,
SW_RESTORE
);
}
}
Popup
AllDialog
s
(
blocker
,
TRUE
,
::
GetForegroundWindow
(),
FALSE
);
Popup
Blocker
s
(
blocker
,
TRUE
,
::
GetForegroundWindow
(),
FALSE
);
// return 1 to prevent the system from allowing the operation
// return 1 to prevent the system from allowing the operation
return
1
;
return
1
;
}
}
...
@@ -256,7 +256,7 @@ LRESULT CALLBACK AwtDialog::MouseHookProc(int nCode,
...
@@ -256,7 +256,7 @@ LRESULT CALLBACK AwtDialog::MouseHookProc(int nCode,
HWND
blocker
=
AwtWindow
::
GetModalBlocker
(
AwtComponent
::
GetTopLevelParentForWindow
(
hWnd
));
HWND
blocker
=
AwtWindow
::
GetModalBlocker
(
AwtComponent
::
GetTopLevelParentForWindow
(
hWnd
));
if
(
::
IsWindow
(
blocker
))
{
if
(
::
IsWindow
(
blocker
))
{
BOOL
onTaskbar
=
!
(
::
WindowFromPoint
(
mhs
->
pt
)
==
hWnd
);
BOOL
onTaskbar
=
!
(
::
WindowFromPoint
(
mhs
->
pt
)
==
hWnd
);
Popup
AllDialogs
(
hWnd
,
FALSE
,
::
GetForegroundWindow
(),
onTaskbar
);
Popup
Blockers
(
blocker
,
FALSE
,
::
GetForegroundWindow
(),
onTaskbar
);
// return a nonzero value to prevent the system from passing
// return a nonzero value to prevent the system from passing
// the message to the target window procedure
// the message to the target window procedure
return
1
;
return
1
;
...
@@ -268,60 +268,60 @@ LRESULT CALLBACK AwtDialog::MouseHookProc(int nCode,
...
@@ -268,60 +268,60 @@ LRESULT CALLBACK AwtDialog::MouseHookProc(int nCode,
}
}
/*
/*
* The function goes through the h
eirarchy of the blocker dialog
s and
* The function goes through the h
ierarchy of the blocker
s and
* popups all the
dialog
s. Note that the function starts from the top
* popups all the
blocker
s. Note that the function starts from the top
* blocker
dialog and goes down to the dialog which is the bottom dialog
.
* blocker
and goes down to the blocker which is the bottom one
.
* Using another traversal
may cause to the flickering issue as a bottom
* Using another traversal
algorithm (bottom->top) may cause to flickering
*
dialog will cover a top dialog for some period of tim
e.
*
as the bottom blocker will cover the top blocker for a whil
e.
*/
*/
void
AwtDialog
::
Popup
AllDialogs
(
HWND
dialog
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
)
void
AwtDialog
::
Popup
Blockers
(
HWND
blocker
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
)
{
{
HWND
blocker
=
AwtWindow
::
GetModalBlocker
(
dialog
);
HWND
nextBlocker
=
AwtWindow
::
GetModalBlocker
(
blocker
);
BOOL
isBlocked
=
::
IsWindow
(
b
locker
);
BOOL
nextBlockerExists
=
::
IsWindow
(
nextB
locker
);
if
(
isBlocked
)
{
if
(
nextBlockerExists
)
{
Popup
AllDialogs
(
b
locker
,
isModalHook
,
prevFGWindow
,
onTaskbar
);
Popup
Blockers
(
nextB
locker
,
isModalHook
,
prevFGWindow
,
onTaskbar
);
}
}
Popup
OneDialog
(
dialog
,
b
locker
,
isModalHook
,
prevFGWindow
,
onTaskbar
);
Popup
Blocker
(
blocker
,
nextB
locker
,
isModalHook
,
prevFGWindow
,
onTaskbar
);
}
}
/*
/*
* The function popups the
dialog, it distinguishes non-blocked dialogs
* The function popups the
blocker, for a non-blocked blocker we need
*
and activates the dialogs (sets as foreground window). If the dialog is
*
to activate the blocker but if a blocker is blocked, then we need
*
blocked, then it changes the Z-order of the dialog
.
*
to change z-order of the blocker placing the blocker under the next blocker
.
*/
*/
void
AwtDialog
::
Popup
OneDialog
(
HWND
dialog
,
HWND
b
locker
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
)
void
AwtDialog
::
Popup
Blocker
(
HWND
blocker
,
HWND
nextB
locker
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
)
{
{
if
(
dialog
==
AwtToolkit
::
GetInstance
().
GetHWnd
())
{
if
(
blocker
==
AwtToolkit
::
GetInstance
().
GetHWnd
())
{
return
;
return
;
}
}
// fix for 6494032
// fix for 6494032
if
(
isModalHook
&&
!::
IsWindowVisible
(
dialog
))
{
if
(
isModalHook
&&
!::
IsWindowVisible
(
blocker
))
{
::
ShowWindow
(
dialog
,
SW_SHOWNA
);
::
ShowWindow
(
blocker
,
SW_SHOWNA
);
}
}
BOOL
isBlocked
=
::
IsWindow
(
b
locker
);
BOOL
nextBlockerExists
=
::
IsWindow
(
nextB
locker
);
UINT
flags
=
SWP_NOACTIVATE
|
SWP_NOMOVE
|
SWP_NOSIZE
;
UINT
flags
=
SWP_NOACTIVATE
|
SWP_NOMOVE
|
SWP_NOSIZE
;
if
(
isBlocked
)
{
if
(
nextBlockerExists
)
{
// Fix for 6829546: if blocker is a top-most window, but window isn't, then
// Fix for 6829546: if blocker is a top-most window, but window isn't, then
// calling ::SetWindowPos(dialog, blocker, ...) makes window top-most as well
// calling ::SetWindowPos(dialog, blocker, ...) makes window top-most as well
BOOL
isBlockerTopmost
=
(
::
GetWindowLong
(
b
locker
,
GWL_EXSTYLE
)
&
WS_EX_TOPMOST
)
!=
0
;
BOOL
topmostNextBlocker
=
(
::
GetWindowLong
(
nextB
locker
,
GWL_EXSTYLE
)
&
WS_EX_TOPMOST
)
!=
0
;
BOOL
isDialogTopmost
=
(
::
GetWindowLong
(
dialog
,
GWL_EXSTYLE
)
&
WS_EX_TOPMOST
)
!=
0
;
BOOL
topmostBlocker
=
(
::
GetWindowLong
(
blocker
,
GWL_EXSTYLE
)
&
WS_EX_TOPMOST
)
!=
0
;
if
(
!
isBlockerTopmost
||
isDialogTopmost
)
{
if
(
!
topmostNextBlocker
||
topmostBlocker
)
{
::
SetWindowPos
(
dialog
,
b
locker
,
0
,
0
,
0
,
0
,
flags
);
::
SetWindowPos
(
blocker
,
nextB
locker
,
0
,
0
,
0
,
0
,
flags
);
}
else
{
}
else
{
::
SetWindowPos
(
dialog
,
HWND_TOP
,
0
,
0
,
0
,
0
,
flags
);
::
SetWindowPos
(
blocker
,
HWND_TOP
,
0
,
0
,
0
,
0
,
flags
);
}
}
}
else
{
}
else
{
::
SetWindowPos
(
dialog
,
HWND_TOP
,
0
,
0
,
0
,
0
,
flags
);
::
SetWindowPos
(
blocker
,
HWND_TOP
,
0
,
0
,
0
,
0
,
flags
);
// no beep/flash if the mouse was clicked in the taskbar menu
// no beep/flash if the mouse was clicked in the taskbar menu
// or the dialog is currently inactive
// or the dialog is currently inactive
if
(
!
isModalHook
&&
!
onTaskbar
&&
(
dialog
==
prevFGWindow
))
{
if
(
!
isModalHook
&&
!
onTaskbar
&&
(
blocker
==
prevFGWindow
))
{
AnimateModalBlocker
(
dialog
);
AnimateModalBlocker
(
blocker
);
}
}
::
BringWindowToTop
(
dialog
);
::
BringWindowToTop
(
blocker
);
::
SetForegroundWindow
(
dialog
);
::
SetForegroundWindow
(
blocker
);
}
}
}
}
...
...
src/windows/native/sun/windows/awt_Dialog.h
浏览文件 @
ed853b07
...
@@ -113,8 +113,8 @@ private:
...
@@ -113,8 +113,8 @@ private:
*/
*/
static
void
ModalPerformActivation
(
HWND
hWnd
);
static
void
ModalPerformActivation
(
HWND
hWnd
);
static
void
Popup
AllDialogs
(
HWND
dialog
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
);
static
void
Popup
Blockers
(
HWND
blocker
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
);
static
void
Popup
OneDialog
(
HWND
dialog
,
HWND
b
locker
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
);
static
void
Popup
Blocker
(
HWND
blocker
,
HWND
nextB
locker
,
BOOL
isModalHook
,
HWND
prevFGWindow
,
BOOL
onTaskbar
);
public:
public:
...
...
src/windows/native/sun/windows/awt_TextArea.h
浏览文件 @
ed853b07
...
@@ -41,9 +41,6 @@
...
@@ -41,9 +41,6 @@
class
AwtTextArea
:
public
AwtTextComponent
{
class
AwtTextArea
:
public
AwtTextComponent
{
// inner classes
class
OleCallback
;
public:
public:
/* java.awt.TextArea fields ids */
/* java.awt.TextArea fields ids */
...
@@ -89,36 +86,11 @@ public:
...
@@ -89,36 +86,11 @@ public:
static
void
_ReplaceText
(
void
*
param
);
static
void
_ReplaceText
(
void
*
param
);
protected:
protected:
INLINE
static
OleCallback
&
GetOleCallback
()
{
return
sm_oleCallback
;
}
void
EditSetSel
(
CHARRANGE
&
cr
);
void
EditGetSel
(
CHARRANGE
&
cr
);
LONG
EditGetCharFromPos
(
POINT
&
pt
);
private:
// RichEdit 1.0 control generates EN_CHANGE notifications not only
// on text changes, but also on any character formatting change.
// This flag is true when the latter case is detected.
BOOL
m_bIgnoreEnChange
;
// RichEdit 1.0 control undoes a character formatting change
// if it is the latest. We don't create our own undo buffer,
// but just prohibit undo in case if the latest operation
// is a formatting change.
BOOL
m_bCanUndo
;
HWND
m_hEditCtrl
;
static
WNDPROC
sm_pDefWindowProc
;
LONG
m_lHDeltaAccum
;
LONG
m_lVDeltaAccum
;
static
OleCallback
sm_oleCallback
;
/*****************************************************************
/*****************************************************************
* Inner class OleCallback declaration.
* Inner class OleCallback declaration.
*/
*/
class
OleCallback
:
public
IRichEditOleCallback
{
class
AwtTextArea
::
OleCallback
:
public
IRichEditOleCallback
{
public:
public:
OleCallback
();
OleCallback
();
...
@@ -143,7 +115,32 @@ protected:
...
@@ -143,7 +115,32 @@ protected:
CHARRANGE
FAR
*
pchrg
,
HMENU
FAR
*
phmenu
);
CHARRANGE
FAR
*
pchrg
,
HMENU
FAR
*
phmenu
);
private:
private:
ULONG
m_refs
;
// Reference count
ULONG
m_refs
;
// Reference count
};
};
//OleCallback class
INLINE
static
OleCallback
&
GetOleCallback
()
{
return
sm_oleCallback
;
}
void
EditSetSel
(
CHARRANGE
&
cr
);
void
EditGetSel
(
CHARRANGE
&
cr
);
LONG
EditGetCharFromPos
(
POINT
&
pt
);
private:
// RichEdit 1.0 control generates EN_CHANGE notifications not only
// on text changes, but also on any character formatting change.
// This flag is true when the latter case is detected.
BOOL
m_bIgnoreEnChange
;
// RichEdit 1.0 control undoes a character formatting change
// if it is the latest. We don't create our own undo buffer,
// but just prohibit undo in case if the latest operation
// is a formatting change.
BOOL
m_bCanUndo
;
HWND
m_hEditCtrl
;
static
WNDPROC
sm_pDefWindowProc
;
LONG
m_lHDeltaAccum
;
LONG
m_lVDeltaAccum
;
static
OleCallback
sm_oleCallback
;
};
};
...
...
src/windows/native/sun/windows/awt_Toolkit.h
浏览文件 @
ed853b07
...
@@ -110,7 +110,7 @@ class CriticalSection {
...
@@ -110,7 +110,7 @@ class CriticalSection {
private:
private:
const
CriticalSection
&
critSec
;
const
CriticalSection
&
critSec
;
};
};
friend
Lock
;
friend
class
Lock
;
private:
private:
CRITICAL_SECTION
rep
;
CRITICAL_SECTION
rep
;
...
...
test/com/sun/awt/Translucency/WindowOpacity.java
浏览文件 @
ed853b07
...
@@ -64,6 +64,7 @@ public class WindowOpacity
...
@@ -64,6 +64,7 @@ public class WindowOpacity
boolean
passed
;
boolean
passed
;
Frame
f
=
new
Frame
(
"Opacity test"
);
Frame
f
=
new
Frame
(
"Opacity test"
);
f
.
setUndecorated
(
true
);
passed
=
false
;
passed
=
false
;
try
{
try
{
...
...
test/java/awt/FontClass/FontPrivilege.java
浏览文件 @
ed853b07
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
* @test
* @test
* @bug 5010310 6319835 6904882 6968373
* @bug 5010310 6319835 6904882 6968373
* @summary test fonts can be created in the presence of a security manager
* @summary test fonts can be created in the presence of a security manager
* @run main
/othervm/secure=java.lang.SecurityManager
FontPrivilege
* @run main FontPrivilege
*/
*/
import
java.awt.Font
;
import
java.awt.Font
;
...
@@ -33,6 +33,8 @@ import java.awt.Font;
...
@@ -33,6 +33,8 @@ import java.awt.Font;
public
class
FontPrivilege
{
public
class
FontPrivilege
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
System
.
setSecurityManager
(
new
SecurityManager
());
new
Font
(
"Helvetica"
,
Font
.
PLAIN
,
12
).
getFamily
();
new
Font
(
"Helvetica"
,
Font
.
PLAIN
,
12
).
getFamily
();
new
Font
(
"foo bar"
,
Font
.
PLAIN
,
12
).
getFamily
();
new
Font
(
"foo bar"
,
Font
.
PLAIN
,
12
).
getFamily
();
}
}
...
...
test/java/awt/Graphics2D/DrawString/LCDTextSrcEa.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/awt/Graphics2D/RenderClipTest/6766342.tests
0 → 100644
浏览文件 @
ed853b07
Filled AA Pure Rect(5, 29.4, 10, 10)
Stroked AA Pure Rect(5, 4.4, 10, 10)
Stroked AA Line(20, 20, -10, 20)
test/java/awt/Graphics2D/RenderClipTest/RenderClipTest.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.html
已删除
100644 → 0
浏览文件 @
3814c7cc
<html>
<!--
@test
@bug 6391770
@summary Content of the Window should be laid out in the area left after WarningWindow was added.
@author Yuri Nesterenko
@run applet WindowWithWarningTest.html
-->
<head>
<title>
WindowWithWarningTest
</title>
</head>
<pre>
This test will run automatically.
</pre>
<body>
<applet
code=
"WindowWithWarningTest.class"
width=
350
height=
300
></applet>
</body>
</html>
test/java/awt/Insets/WindowWithWarningTest/WindowWithWarningTest.java
已删除
100644 → 0
浏览文件 @
3814c7cc
此差异已折叠。
点击以展开。
test/java/awt/PrintJob/Text/StringWidth.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/awt/image/IncorrectSampleMaskTest.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/text/Format/DateFormat/ISO8601ZoneTest.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/text/Format/MessageFormat/Bug7003643.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/Locale/LocaleTest.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/DateFormatProviderTest.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/DateFormatProviderTest.sh
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/NumberFormatProviderTest.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/NumberFormatProviderTest.sh
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/fooprovider.jar
浏览文件 @
ed853b07
无法预览此类型文件
test/java/util/PluggableLocale/providersrc/DateFormatProviderImpl.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java
x/swing/SwingWorker/6480289/bug6480289
.java
→
test/java
/util/PluggableLocale/providersrc/FooDateFormat
.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/providersrc/FooNumberFormat.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/providersrc/Makefile
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/java/util/PluggableLocale/providersrc/NumberFormatProviderImpl.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/javax/swing/JFileChooser/4847375/bug4847375.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/javax/swing/JScrollBar/6542335/bug6542335.java
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
test/javax/swing/JSpinner/6532833/bug6532833.java
0 → 100644
浏览文件 @
ed853b07
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录