Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
70cdc0e4
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看板
提交
70cdc0e4
编写于
12月 10, 2014
作者:
A
alexsch
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8065627: Animated GIFs fail to display on a HiDPI display
Reviewed-by: serb, azvegint
上级
882537f3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
122 addition
and
2 deletion
+122
-2
src/share/classes/sun/awt/image/MultiResolutionToolkitImage.java
...re/classes/sun/awt/image/MultiResolutionToolkitImage.java
+2
-2
test/java/awt/image/MultiResolutionImage/MultiResolutionImageObserverTest.java
...ultiResolutionImage/MultiResolutionImageObserverTest.java
+120
-0
未找到文件。
src/share/classes/sun/awt/image/MultiResolutionToolkitImage.java
浏览文件 @
70cdc0e4
...
...
@@ -80,7 +80,7 @@ public class MultiResolutionToolkitImage extends ToolkitImage implements MultiRe
}
synchronized
(
ObserverCache
.
INSTANCE
)
{
ImageObserver
o
=
(
ImageObserver
)
ObserverCache
.
INSTANCE
.
get
(
image
);
ImageObserver
o
=
(
ImageObserver
)
ObserverCache
.
INSTANCE
.
get
(
observer
);
if
(
o
==
null
)
{
...
...
@@ -109,7 +109,7 @@ public class MultiResolutionToolkitImage extends ToolkitImage implements MultiRe
image
,
flags
,
x
,
y
,
width
,
height
);
};
ObserverCache
.
INSTANCE
.
put
(
image
,
o
);
ObserverCache
.
INSTANCE
.
put
(
observer
,
o
);
}
return
o
;
}
...
...
test/java/awt/image/MultiResolutionImage/MultiResolutionImageObserverTest.java
0 → 100644
浏览文件 @
70cdc0e4
/*
* Copyright (c) 2014, 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.
*
* 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.
*/
import
java.awt.Color
;
import
java.awt.Graphics
;
import
java.awt.Graphics2D
;
import
java.awt.Image
;
import
java.awt.Toolkit
;
import
java.awt.image.BufferedImage
;
import
java.awt.image.ImageObserver
;
import
static
java
.
awt
.
image
.
ImageObserver
.*;
import
java.io.File
;
import
javax.imageio.ImageIO
;
/*
* @test
* @bug 8065627
* @summary Animated GIFs fail to display on a HiDPI display
* @author Alexander Scherbatiy
* @run main MultiResolutionImageObserverTest
*/
public
class
MultiResolutionImageObserverTest
{
private
static
final
int
TIMEOUT
=
500
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
generateImages
();
Toolkit
toolkit
=
Toolkit
.
getDefaultToolkit
();
Image
image
=
Toolkit
.
getDefaultToolkit
().
getImage
(
IMAGE_NAME_1X
);
LoadImageObserver
sizeObserver
=
new
LoadImageObserver
(
WIDTH
|
HEIGHT
);
toolkit
.
prepareImage
(
image
,
-
1
,
-
1
,
sizeObserver
);
waitForImageLoading
(
sizeObserver
,
"The first observer is not called"
);
LoadImageObserver
bitsObserver
=
new
LoadImageObserver
(
SOMEBITS
|
FRAMEBITS
|
ALLBITS
);
BufferedImage
buffImage
=
new
BufferedImage
(
100
,
100
,
BufferedImage
.
TYPE_INT_RGB
);
Graphics2D
g2d
=
(
Graphics2D
)
buffImage
.
createGraphics
();
g2d
.
scale
(
2
,
2
);
g2d
.
drawImage
(
image
,
0
,
0
,
bitsObserver
);
waitForImageLoading
(
bitsObserver
,
"The second observer is not called!"
);
g2d
.
dispose
();
}
private
static
void
waitForImageLoading
(
LoadImageObserver
observer
,
String
errorMessage
)
throws
Exception
{
long
endTime
=
System
.
currentTimeMillis
()
+
TIMEOUT
;
while
(!
observer
.
loaded
&&
System
.
currentTimeMillis
()
<
endTime
)
{
Thread
.
sleep
(
TIMEOUT
/
10
);
}
if
(!
observer
.
loaded
)
{
throw
new
RuntimeException
(
errorMessage
);
}
}
private
static
final
String
IMAGE_NAME_1X
=
"image.png"
;
private
static
final
String
IMAGE_NAME_2X
=
"image@2x.png"
;
private
static
void
generateImages
()
throws
Exception
{
generateImage
(
1
);
generateImage
(
2
);
}
private
static
void
generateImage
(
int
scale
)
throws
Exception
{
BufferedImage
image
=
new
BufferedImage
(
scale
*
200
,
scale
*
300
,
BufferedImage
.
TYPE_INT_RGB
);
Graphics
g
=
image
.
createGraphics
();
g
.
setColor
(
scale
==
1
?
Color
.
GREEN
:
Color
.
BLUE
);
g
.
fillRect
(
0
,
0
,
scale
*
200
,
scale
*
300
);
File
file
=
new
File
(
scale
==
1
?
IMAGE_NAME_1X
:
IMAGE_NAME_2X
);
ImageIO
.
write
(
image
,
"png"
,
file
);
g
.
dispose
();
}
private
static
class
LoadImageObserver
implements
ImageObserver
{
private
final
int
infoflags
;
private
boolean
loaded
;
public
LoadImageObserver
(
int
flags
)
{
this
.
infoflags
=
flags
;
}
@Override
public
boolean
imageUpdate
(
Image
img
,
int
flags
,
int
x
,
int
y
,
int
width
,
int
height
)
{
if
((
flags
&
infoflags
)
!=
0
)
{
loaded
=
true
;
}
return
!
loaded
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录