Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
fb441757
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看板
提交
fb441757
编写于
12月 28, 2012
作者:
L
lana
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
9f20346b
aec343a0
变更
13
显示空白变更内容
内联
并排
Showing
13 changed file
with
1086 addition
and
24 deletion
+1086
-24
src/share/classes/sun/java2d/cmm/lcms/LCMS.java
src/share/classes/sun/java2d/cmm/lcms/LCMS.java
+3
-1
src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java
src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java
+2
-1
src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java
src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java
+12
-5
src/share/demo/java2d/J2DBench/build.xml
src/share/demo/java2d/J2DBench/build.xml
+1
-1
src/share/demo/java2d/J2DBench/src/j2dbench/J2DBench.java
src/share/demo/java2d/J2DBench/src/j2dbench/J2DBench.java
+2
-0
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/CMMTests.java
...demo/java2d/J2DBench/src/j2dbench/tests/cmm/CMMTests.java
+153
-0
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConversionTests.java
...J2DBench/src/j2dbench/tests/cmm/ColorConversionTests.java
+59
-0
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConvertOpTests.java
.../J2DBench/src/j2dbench/tests/cmm/ColorConvertOpTests.java
+383
-0
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/DataConversionTests.java
.../J2DBench/src/j2dbench/tests/cmm/DataConversionTests.java
+198
-0
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ProfileTests.java
.../java2d/J2DBench/src/j2dbench/tests/cmm/ProfileTests.java
+132
-0
src/share/native/sun/java2d/cmm/lcms/LCMS.c
src/share/native/sun/java2d/cmm/lcms/LCMS.c
+14
-13
src/windows/native/sun/windows/awt_Debug.cpp
src/windows/native/sun/windows/awt_Debug.cpp
+25
-3
test/sun/java2d/cmm/ColorConvertOp/GrayTest.java
test/sun/java2d/cmm/ColorConvertOp/GrayTest.java
+102
-0
未找到文件。
src/share/classes/sun/java2d/cmm/lcms/LCMS.java
浏览文件 @
fb441757
...
...
@@ -53,7 +53,9 @@ public class LCMS implements PCMM {
public
static
native
long
getProfileID
(
ICC_Profile
profile
);
public
static
native
long
createNativeTransform
(
long
[]
profileIDs
,
int
renderType
,
int
inFormatter
,
int
outFormatter
,
long
[]
profileIDs
,
int
renderType
,
int
inFormatter
,
boolean
isInIntPacked
,
int
outFormatter
,
boolean
isOutIntPacked
,
Object
disposerRef
);
/**
...
...
src/share/classes/sun/java2d/cmm/lcms/LCMSImageLayout.java
浏览文件 @
fb441757
...
...
@@ -196,7 +196,8 @@ class LCMSImageLayout {
case
BufferedImage
.
TYPE_4BYTE_ABGR
:
byteRaster
=
(
ByteComponentRaster
)
image
.
getRaster
();
nextRowOffset
=
byteRaster
.
getScanlineStride
();
offset
=
byteRaster
.
getDataOffset
(
0
);
int
firstBand
=
image
.
getSampleModel
().
getNumBands
()
-
1
;
offset
=
byteRaster
.
getDataOffset
(
firstBand
);
dataArray
=
byteRaster
.
getDataStorage
();
dataType
=
DT_BYTE
;
break
;
...
...
src/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java
浏览文件 @
fb441757
...
...
@@ -55,8 +55,10 @@ import sun.java2d.cmm.lcms.*;
public
class
LCMSTransform
implements
ColorTransform
{
long
ID
;
private
int
inFormatter
;
private
int
outFormatter
;
private
int
inFormatter
=
0
;
private
boolean
isInIntPacked
=
false
;
private
int
outFormatter
=
0
;
private
boolean
isOutIntPacked
=
false
;
ICC_Profile
[]
profiles
;
long
[]
profileIDs
;
...
...
@@ -135,18 +137,23 @@ public class LCMSTransform implements ColorTransform {
LCMSImageLayout
out
)
{
// update native transfrom if needed
if
(
ID
==
0L
||
inFormatter
!=
in
.
pixelType
||
outFormatter
!=
out
.
pixelType
)
{
inFormatter
!=
in
.
pixelType
||
isInIntPacked
!=
in
.
isIntPacked
||
outFormatter
!=
out
.
pixelType
||
isOutIntPacked
!=
out
.
isIntPacked
)
{
if
(
ID
!=
0L
)
{
// Disposer will destroy forgotten transform
disposerReferent
=
new
Object
();
}
inFormatter
=
in
.
pixelType
;
isInIntPacked
=
in
.
isIntPacked
;
outFormatter
=
out
.
pixelType
;
isOutIntPacked
=
out
.
isIntPacked
;
ID
=
LCMS
.
createNativeTransform
(
profileIDs
,
renderType
,
inFormatter
,
outFormatter
,
inFormatter
,
isInIntPacked
,
outFormatter
,
isOutIntPacked
,
disposerReferent
);
}
...
...
src/share/demo/java2d/J2DBench/build.xml
浏览文件 @
fb441757
...
...
@@ -49,7 +49,7 @@
<target
name=
"compile"
depends=
"init"
description=
"compile the source "
>
<!-- Compile the java code from ${src} into ${build} -->
<javac
debug=
"f
alse"
source=
"1.2"
target=
"1.2
"
srcdir=
"${src}"
destdir=
"${build}"
/>
<javac
debug=
"f
lase"
source=
"1.5"
target=
"1.5
"
srcdir=
"${src}"
destdir=
"${build}"
/>
</target>
<target
name=
"run"
depends=
"dist"
...
...
src/share/demo/java2d/J2DBench/src/j2dbench/J2DBench.java
浏览文件 @
fb441757
...
...
@@ -69,6 +69,7 @@ import j2dbench.tests.MiscTests;
import
j2dbench.tests.RenderTests
;
import
j2dbench.tests.PixelTests
;
import
j2dbench.tests.iio.IIOTests
;
import
j2dbench.tests.cmm.CMMTests
;
import
j2dbench.tests.text.TextConstructionTests
;
import
j2dbench.tests.text.TextMeasureTests
;
import
j2dbench.tests.text.TextRenderTests
;
...
...
@@ -199,6 +200,7 @@ public class J2DBench {
TextMeasureTests
.
init
();
TextConstructionTests
.
init
();
IIOTests
.
init
();
CMMTests
.
init
();
boolean
gui
=
true
;
boolean
showresults
=
true
;
...
...
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/CMMTests.java
0 → 100644
浏览文件 @
fb441757
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation and proper error handling, might not be present in
* this sample code.
*/
package
j2dbench.tests.cmm
;
import
j2dbench.Group
;
import
j2dbench.Option
;
import
j2dbench.Result
;
import
j2dbench.Test
;
import
j2dbench.TestEnvironment
;
import
java.awt.color.ColorSpace
;
import
java.awt.color.ICC_ColorSpace
;
import
java.awt.color.ICC_Profile
;
import
java.io.IOException
;
import
java.io.InputStream
;
public
class
CMMTests
extends
Test
{
protected
static
Group
cmmRoot
;
protected
static
Group
cmmOptRoot
;
protected
static
Option
csList
;
protected
static
Option
usePlatfromProfiles
;
public
static
void
init
()
{
cmmRoot
=
new
Group
(
"cmm"
,
"Color Management Benchmarks"
);
cmmRoot
.
setTabbed
();
cmmOptRoot
=
new
Group
(
cmmRoot
,
"opts"
,
"General Options"
);
/*
usePlatfromProfiles =
new Option.Enable(cmmOptRoot, "csPlatfrom",
"Use Platfrom Profiles", false);
*/
int
[]
colorspaces
=
new
int
[]
{
ColorSpace
.
CS_sRGB
,
ColorSpace
.
CS_GRAY
,
ColorSpace
.
CS_LINEAR_RGB
,
ColorSpace
.
CS_CIEXYZ
};
String
[]
csNames
=
new
String
[]{
"CS_sRGB"
,
"CS_GRAY"
,
"CS_LINEAR_RGB"
,
"CS_CIEXYZ"
};
csList
=
new
Option
.
IntList
(
cmmOptRoot
,
"profiles"
,
"Color Profiles"
,
colorspaces
,
csNames
,
csNames
,
0x8
);
ColorConversionTests
.
init
();
ProfileTests
.
init
();
}
protected
static
ColorSpace
getColorSpace
(
TestEnvironment
env
)
{
ColorSpace
cs
;
Boolean
usePlatfrom
=
true
;
//(Boolean)env.getModifier(usePlatfromProfiles);
int
cs_code
=
env
.
getIntValue
(
csList
);
if
(
usePlatfrom
)
{
cs
=
ColorSpace
.
getInstance
(
cs_code
);
}
else
{
String
resource
=
"profiles/"
;
switch
(
cs_code
)
{
case
ColorSpace
.
CS_CIEXYZ
:
resource
+=
"CIEXYZ.pf"
;
break
;
case
ColorSpace
.
CS_GRAY
:
resource
+=
"GRAY.pf"
;
break
;
case
ColorSpace
.
CS_LINEAR_RGB
:
resource
+=
"LINEAR_RGB.pf"
;
break
;
case
ColorSpace
.
CS_PYCC
:
resource
+=
"PYCC.pf"
;
break
;
case
ColorSpace
.
CS_sRGB
:
resource
+=
"sRGB.pf"
;
break
;
default
:
throw
new
RuntimeException
(
"Unknown color space: "
+
cs_code
);
}
try
{
InputStream
is
=
CMMTests
.
class
.
getResourceAsStream
(
resource
);
ICC_Profile
p
=
ICC_Profile
.
getInstance
(
is
);
cs
=
new
ICC_ColorSpace
(
p
);
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
"Unable load profile from resource "
+
resource
,
e
);
}
}
return
cs
;
}
protected
CMMTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
super
(
parent
,
nodeName
,
description
);
addDependencies
(
cmmOptRoot
,
true
);
}
@Override
public
Object
initTest
(
TestEnvironment
te
,
Result
result
)
{
throw
new
UnsupportedOperationException
(
"Not supported yet."
);
}
@Override
public
void
runTest
(
Object
o
,
int
i
)
{
throw
new
UnsupportedOperationException
(
"Not supported yet."
);
}
@Override
public
void
cleanupTest
(
TestEnvironment
te
,
Object
o
)
{
throw
new
UnsupportedOperationException
(
"Not supported yet."
);
}
}
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConversionTests.java
0 → 100644
浏览文件 @
fb441757
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation and proper error handling, might not be present in
* this sample code.
*/
package
j2dbench.tests.cmm
;
import
j2dbench.Group
;
public
class
ColorConversionTests
extends
CMMTests
{
protected
static
Group
colorConvRoot
;
public
static
void
init
()
{
colorConvRoot
=
new
Group
(
cmmRoot
,
"colorconv"
,
"Color Conversion Benchmarks"
);
colorConvRoot
.
setTabbed
();
DataConversionTests
.
init
();
ColorConvertOpTests
.
init
();
}
protected
ColorConversionTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
super
(
parent
,
nodeName
,
description
);
}
}
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ColorConvertOpTests.java
0 → 100644
浏览文件 @
fb441757
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation and proper error handling, might not be present in
* this sample code.
*/
package
j2dbench.tests.cmm
;
import
j2dbench.Group
;
import
j2dbench.Option
;
import
j2dbench.Result
;
import
j2dbench.TestEnvironment
;
import
j2dbench.tests.iio.IIOTests
;
import
java.awt.AlphaComposite
;
import
java.awt.Color
;
import
java.awt.Graphics2D
;
import
java.awt.Image
;
import
java.awt.color.ColorSpace
;
import
java.awt.image.BufferedImage
;
import
java.awt.image.ColorConvertOp
;
import
java.awt.image.Raster
;
import
java.awt.image.WritableRaster
;
import
javax.imageio.ImageIO
;
public
class
ColorConvertOpTests
extends
ColorConversionTests
{
private
static
enum
ImageContent
{
BLANK
(
"bank"
,
"Blank (opaque black)"
),
RANDOM
(
"random"
,
"Random"
),
VECTOR
(
"vector"
,
"Vector Art"
),
PHOTO
(
"photo"
,
"Photograph"
);
public
final
String
name
;
public
final
String
descr
;
private
ImageContent
(
String
name
,
String
descr
)
{
this
.
name
=
name
;
this
.
descr
=
descr
;
}
}
private
static
enum
ImageType
{
INT_ARGB
(
BufferedImage
.
TYPE_INT_ARGB
,
"INT_ARGB"
,
"TYPE_INT_ARGB"
),
INT_RGB
(
BufferedImage
.
TYPE_INT_RGB
,
"INT_RGB"
,
"TYPE_INT_RGB"
),
INT_BGR
(
BufferedImage
.
TYPE_INT_BGR
,
"INT_BGR"
,
"TYPE_INT_BGR"
),
BYTE_3BYTE_BGR
(
BufferedImage
.
TYPE_3BYTE_BGR
,
"3BYTE_BGR"
,
"TYPE_3BYTE_BGR"
),
BYTE_4BYTE_ABGR
(
BufferedImage
.
TYPE_4BYTE_ABGR
,
"4BYTE_BGR"
,
"TYPE_4BYTE_BGR"
),
COMPATIBLE_DST
(
0
,
"Compatible"
,
"Compatible destination"
);
private
ImageType
(
int
type
,
String
abbr
,
String
descr
)
{
this
.
type
=
type
;
this
.
abbrev
=
abbr
;
this
.
descr
=
descr
;
}
public
final
int
type
;
public
final
String
abbrev
;
public
final
String
descr
;
}
private
static
enum
ListType
{
SRC
(
"srcType"
,
"Source Images"
),
DST
(
"dstType"
,
"Destination Images"
);
private
ListType
(
String
name
,
String
description
)
{
this
.
name
=
name
;
this
.
description
=
description
;
}
public
final
String
name
;
public
final
String
description
;
}
public
static
Option
createImageTypeList
(
ListType
listType
)
{
ImageType
[]
allTypes
=
ImageType
.
values
();
int
num
=
allTypes
.
length
;
if
(
listType
==
ListType
.
SRC
)
{
num
-=
1
;
// exclude compatible destination
}
ImageType
[]
t
=
new
ImageType
[
num
];
String
[]
names
=
new
String
[
num
];
String
[]
abbrev
=
new
String
[
num
];
String
[]
descr
=
new
String
[
num
];
for
(
int
i
=
0
;
i
<
num
;
i
++)
{
t
[
i
]
=
allTypes
[
i
];
names
[
i
]
=
t
[
i
].
toString
();
abbrev
[
i
]
=
t
[
i
].
abbrev
;
descr
[
i
]
=
t
[
i
].
descr
;
}
Option
list
=
new
Option
.
ObjectList
(
opOptionsRoot
,
listType
.
name
,
listType
.
description
,
names
,
t
,
abbrev
,
descr
,
1
);
return
list
;
}
protected
static
Group
opConvRoot
;
protected
static
Group
opOptionsRoot
;
protected
static
Option
sizeList
;
protected
static
Option
contentList
;
protected
static
Option
sourceType
;
protected
static
Option
destinationType
;
public
static
void
init
()
{
opConvRoot
=
new
Group
(
colorConvRoot
,
"ccop"
,
"ColorConvertOp Tests"
);
opOptionsRoot
=
new
Group
(
opConvRoot
,
"ccopOptions"
,
"Options"
);
// size list
int
[]
sizes
=
new
int
[]
{
1
,
20
,
250
,
1000
,
4000
};
String
[]
sizeStrs
=
new
String
[]
{
"1x1"
,
"20x20"
,
"250x250"
,
"1000x1000"
,
"4000x4000"
};
String
[]
sizeDescs
=
new
String
[]
{
"Tiny Images (1x1)"
,
"Small Images (20x20)"
,
"Medium Images (250x250)"
,
"Large Images (1000x1000)"
,
"Huge Images (4000x4000)"
,
};
sizeList
=
new
Option
.
IntList
(
opOptionsRoot
,
"size"
,
"Image Size"
,
sizes
,
sizeStrs
,
sizeDescs
,
0x4
);
((
Option
.
ObjectList
)
sizeList
).
setNumRows
(
5
);
// image content
ImageContent
[]
c
=
ImageContent
.
values
();
String
[]
contentStrs
=
new
String
[
c
.
length
];
String
[]
contentDescs
=
new
String
[
c
.
length
];
for
(
int
i
=
0
;
i
<
c
.
length
;
i
++)
{
contentStrs
[
i
]
=
c
[
i
].
name
;
contentDescs
[
i
]
=
c
[
i
].
descr
;
};
contentList
=
new
Option
.
ObjectList
(
opOptionsRoot
,
"content"
,
"Image Content"
,
contentStrs
,
c
,
contentStrs
,
contentDescs
,
0x8
);
sourceType
=
createImageTypeList
(
ListType
.
SRC
);
destinationType
=
createImageTypeList
(
ListType
.
DST
);
new
ConvertImageTest
();
new
ConvertRasterTest
();
new
DrawImageTest
();
}
public
ColorConvertOpTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
super
(
parent
,
nodeName
,
description
);
addDependencies
(
opOptionsRoot
,
true
);
}
public
Object
initTest
(
TestEnvironment
env
,
Result
res
)
{
return
new
Context
(
env
,
res
);
}
public
void
cleanupTest
(
TestEnvironment
env
,
Object
o
)
{
Context
ctx
=
(
Context
)
o
;
ctx
.
cs
=
null
;
ctx
.
op_img
=
null
;
ctx
.
op_rst
=
null
;
ctx
.
dst
=
null
;
ctx
.
src
=
null
;
ctx
.
graphics
=
null
;
}
private
static
class
Context
{
ColorSpace
cs
;
Graphics2D
graphics
;
ColorConvertOp
op_img
;
ColorConvertOp
op_rst
;
BufferedImage
src
;
BufferedImage
dst
;
WritableRaster
rsrc
;
WritableRaster
rdst
;
public
Context
(
TestEnvironment
env
,
Result
res
)
{
graphics
=
(
Graphics2D
)
env
.
getGraphics
();
cs
=
getColorSpace
(
env
);
// TODO: provide rendering hints
op_img
=
new
ColorConvertOp
(
cs
,
null
);
ColorSpace
sRGB
=
ColorSpace
.
getInstance
(
ColorSpace
.
CS_sRGB
);
op_rst
=
new
ColorConvertOp
(
sRGB
,
cs
,
null
);
int
size
=
env
.
getIntValue
(
sizeList
);
ImageContent
content
=
(
ImageContent
)
env
.
getModifier
(
contentList
);
ImageType
srcType
=
(
ImageType
)
env
.
getModifier
(
sourceType
);
src
=
createBufferedImage
(
size
,
size
,
content
,
srcType
.
type
);
rsrc
=
src
.
getRaster
();
ImageType
dstType
=
(
ImageType
)
env
.
getModifier
(
destinationType
);
if
(
dstType
==
ImageType
.
COMPATIBLE_DST
)
{
dst
=
op_img
.
createCompatibleDestImage
(
src
,
null
);
}
else
{
dst
=
createBufferedImage
(
size
,
size
,
content
,
dstType
.
type
);
}
// raster always has to be comatible
rdst
=
op_rst
.
createCompatibleDestRaster
(
rsrc
);
}
}
private
static
class
ConvertImageTest
extends
ColorConvertOpTests
{
public
ConvertImageTest
()
{
super
(
opConvRoot
,
"op_img"
,
"op.filetr(BufferedImage)"
);
}
public
void
runTest
(
Object
octx
,
int
numReps
)
{
final
Context
ctx
=
(
Context
)
octx
;
final
ColorConvertOp
op
=
ctx
.
op_img
;
final
BufferedImage
src
=
ctx
.
src
;
BufferedImage
dst
=
ctx
.
dst
;
do
{
try
{
dst
=
op
.
filter
(
src
,
dst
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
private
static
class
ConvertRasterTest
extends
ColorConvertOpTests
{
public
ConvertRasterTest
()
{
super
(
opConvRoot
,
"op_rst"
,
"op.filetr(Raster)"
);
}
public
void
runTest
(
Object
octx
,
int
numReps
)
{
final
Context
ctx
=
(
Context
)
octx
;
final
ColorConvertOp
op
=
ctx
.
op_rst
;
final
Raster
src
=
ctx
.
rsrc
;
WritableRaster
dst
=
ctx
.
rdst
;
do
{
try
{
dst
=
op
.
filter
(
src
,
dst
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
private
static
class
DrawImageTest
extends
ColorConvertOpTests
{
public
DrawImageTest
()
{
super
(
opConvRoot
,
"op_draw"
,
"drawImage(ColorConvertOp)"
);
}
public
void
runTest
(
Object
octx
,
int
numReps
)
{
final
Context
ctx
=
(
Context
)
octx
;
final
ColorConvertOp
op
=
ctx
.
op_img
;
final
Graphics2D
g
=
ctx
.
graphics
;
final
BufferedImage
src
=
ctx
.
src
;
do
{
g
.
drawImage
(
src
,
op
,
0
,
0
);
}
while
(--
numReps
>=
0
);
}
}
/**************************************************************************
****** Helper routines
*************************************************************************/
protected
static
BufferedImage
createBufferedImage
(
int
width
,
int
height
,
ImageContent
contentType
,
int
type
)
{
BufferedImage
image
;
image
=
new
BufferedImage
(
width
,
height
,
type
);
boolean
hasAlpha
=
image
.
getColorModel
().
hasAlpha
();
switch
(
contentType
)
{
case
RANDOM:
for
(
int
y
=
0
;
y
<
height
;
y
++)
{
for
(
int
x
=
0
;
x
<
width
;
x
++)
{
int
rgb
=
(
int
)(
Math
.
random
()
*
0xffffff
);
if
(
hasAlpha
)
{
rgb
|=
0x7f000000
;
}
image
.
setRGB
(
x
,
y
,
rgb
);
}
}
break
;
case
VECTOR:
{
Graphics2D
g
=
image
.
createGraphics
();
if
(
hasAlpha
)
{
// fill background with a translucent color
g
.
setComposite
(
AlphaComposite
.
getInstance
(
AlphaComposite
.
SRC
,
0.5f
));
}
g
.
setColor
(
Color
.
blue
);
g
.
fillRect
(
0
,
0
,
width
,
height
);
g
.
setComposite
(
AlphaComposite
.
Src
);
g
.
setColor
(
Color
.
yellow
);
g
.
fillOval
(
2
,
2
,
width
-
4
,
height
-
4
);
g
.
setColor
(
Color
.
red
);
g
.
fillOval
(
4
,
4
,
width
-
8
,
height
-
8
);
g
.
setColor
(
Color
.
green
);
g
.
fillRect
(
8
,
8
,
width
-
16
,
height
-
16
);
g
.
setColor
(
Color
.
white
);
g
.
drawLine
(
0
,
0
,
width
,
height
);
g
.
drawLine
(
0
,
height
,
width
,
0
);
g
.
dispose
();
break
;
}
case
PHOTO:
{
Image
photo
=
null
;
try
{
photo
=
ImageIO
.
read
(
IIOTests
.
class
.
getResourceAsStream
(
"images/photo.jpg"
));
}
catch
(
Exception
e
)
{
System
.
err
.
println
(
"error loading photo"
);
e
.
printStackTrace
();
}
Graphics2D
g
=
image
.
createGraphics
();
if
(
hasAlpha
)
{
g
.
setComposite
(
AlphaComposite
.
getInstance
(
AlphaComposite
.
SRC
,
0.5f
));
}
g
.
drawImage
(
photo
,
0
,
0
,
width
,
height
,
null
);
g
.
dispose
();
break
;
}
default
:
break
;
}
return
image
;
}
}
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/DataConversionTests.java
0 → 100644
浏览文件 @
fb441757
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation and proper error handling, might not be present in
* this sample code.
*/
package
j2dbench.tests.cmm
;
import
j2dbench.Group
;
import
j2dbench.Result
;
import
j2dbench.TestEnvironment
;
import
java.awt.color.ColorSpace
;
public
class
DataConversionTests
extends
ColorConversionTests
{
protected
static
Group
dataConvRoot
;
public
static
void
init
()
{
dataConvRoot
=
new
Group
(
colorConvRoot
,
"data"
,
"Data Conversoion Tests"
);
new
FromRGBTest
();
new
ToRGBTest
();
new
FromCIEXYZTest
();
new
ToCIEXYZTest
();
}
public
DataConversionTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
super
(
parent
,
nodeName
,
description
);
}
protected
static
class
Context
{
ColorSpace
cs
;
int
numComponents
;
float
[]
val
;
float
[]
rgb
;
float
[]
cie
;
TestEnvironment
env
;
Result
res
;
public
Context
(
TestEnvironment
env
,
Result
result
,
ColorSpace
cs
)
{
this
.
cs
=
cs
;
this
.
env
=
env
;
this
.
res
=
result
;
numComponents
=
cs
.
getNumComponents
();
val
=
new
float
[
numComponents
];
for
(
int
i
=
0
;
i
<
numComponents
;
i
++)
{
float
min
=
cs
.
getMinValue
(
i
);
float
max
=
cs
.
getMaxValue
(
i
);
val
[
i
]
=
0.5f
*
(
max
-
min
);
}
rgb
=
new
float
[]{
0.5f
,
0.5f
,
0.5f
};
cie
=
new
float
[]{
0.5f
,
0.5f
,
0.5f
};
}
}
@Override
public
Object
initTest
(
TestEnvironment
env
,
Result
result
)
{
ColorSpace
cs
=
getColorSpace
(
env
);
return
new
Context
(
env
,
result
,
cs
);
}
@Override
public
void
cleanupTest
(
TestEnvironment
te
,
Object
o
)
{
}
private
static
class
FromRGBTest
extends
DataConversionTests
{
public
FromRGBTest
()
{
super
(
dataConvRoot
,
"fromRGB"
,
"ColorSpace.fromRGB()"
);
}
public
void
runTest
(
Object
ctx
,
int
numReps
)
{
final
Context
ictx
=
(
Context
)
ctx
;
final
ColorSpace
cs
=
ictx
.
cs
;
final
float
[]
rgb
=
ictx
.
rgb
;
do
{
try
{
cs
.
fromRGB
(
rgb
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
private
static
class
FromCIEXYZTest
extends
DataConversionTests
{
public
FromCIEXYZTest
()
{
super
(
dataConvRoot
,
"fromCIEXYZ"
,
"ColorSpace.fromCIEXYZ()"
);
}
public
void
runTest
(
Object
ctx
,
int
numReps
)
{
final
Context
ictx
=
(
Context
)
ctx
;
final
ColorSpace
cs
=
ictx
.
cs
;
final
float
[]
val
=
ictx
.
cie
;
do
{
try
{
cs
.
fromCIEXYZ
(
val
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
private
static
class
ToCIEXYZTest
extends
DataConversionTests
{
public
ToCIEXYZTest
()
{
super
(
dataConvRoot
,
"toCIEXYZ"
,
"ColorSpace.toCIEXYZ()"
);
}
public
void
runTest
(
Object
ctx
,
int
numReps
)
{
final
Context
ictx
=
(
Context
)
ctx
;
final
ColorSpace
cs
=
ictx
.
cs
;
final
float
[]
val
=
ictx
.
val
;
do
{
try
{
cs
.
toCIEXYZ
(
val
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
private
static
class
ToRGBTest
extends
DataConversionTests
{
public
ToRGBTest
()
{
super
(
dataConvRoot
,
"toRGB"
,
"ColorSpace.toRGB()"
);
}
public
void
runTest
(
Object
ctx
,
int
numReps
)
{
final
Context
ictx
=
(
Context
)
ctx
;
final
ColorSpace
cs
=
ictx
.
cs
;
final
float
[]
val
=
ictx
.
val
;
do
{
try
{
cs
.
toRGB
(
val
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
}
src/share/demo/java2d/J2DBench/src/j2dbench/tests/cmm/ProfileTests.java
0 → 100644
浏览文件 @
fb441757
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This source code is provided to illustrate the usage of a given feature
* or technique and has been deliberately simplified. Additional steps
* required for a production-quality application, such as security checks,
* input validation and proper error handling, might not be present in
* this sample code.
*/
package
j2dbench.tests.cmm
;
import
j2dbench.Group
;
import
j2dbench.Result
;
import
j2dbench.TestEnvironment
;
import
java.awt.color.ColorSpace
;
import
java.awt.color.ICC_ColorSpace
;
import
java.awt.color.ICC_Profile
;
public
class
ProfileTests
extends
CMMTests
{
protected
static
Group
profileRoot
;
public
static
void
init
()
{
profileRoot
=
new
Group
(
cmmRoot
,
"profiles"
,
"Profile Handling Benchmarks"
);
new
ReadHeaderTest
();
new
GetNumComponentsTest
();
}
protected
ProfileTests
(
Group
parent
,
String
nodeName
,
String
description
)
{
super
(
parent
,
nodeName
,
description
);
}
protected
static
class
Context
{
ICC_Profile
profile
;
TestEnvironment
env
;
Result
res
;
public
Context
(
ICC_Profile
profile
,
TestEnvironment
env
,
Result
res
)
{
this
.
profile
=
profile
;
this
.
env
=
env
;
this
.
res
=
res
;
}
}
@Override
public
Object
initTest
(
TestEnvironment
env
,
Result
res
)
{
ICC_ColorSpace
cs
=
(
ICC_ColorSpace
)
getColorSpace
(
env
);
return
new
Context
(
cs
.
getProfile
(),
env
,
res
);
}
@Override
public
void
cleanupTest
(
TestEnvironment
env
,
Object
o
)
{
}
private
static
class
ReadHeaderTest
extends
ProfileTests
{
public
ReadHeaderTest
()
{
super
(
profileRoot
,
"getHeader"
,
"getData(icSigHead)"
);
}
@Override
public
void
runTest
(
Object
ctx
,
int
numReps
)
{
final
Context
ictx
=
(
Context
)
ctx
;
final
ICC_Profile
profile
=
ictx
.
profile
;
byte
[]
data
=
null
;
do
{
try
{
data
=
profile
.
getData
(
ICC_Profile
.
icSigHead
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
private
static
class
GetNumComponentsTest
extends
ProfileTests
{
public
GetNumComponentsTest
()
{
super
(
profileRoot
,
"getNumComponents"
,
"getNumComponents"
);
}
@Override
public
void
runTest
(
Object
ctx
,
int
numReps
)
{
final
Context
ictx
=
(
Context
)
ctx
;
final
ICC_Profile
profile
=
ictx
.
profile
;
do
{
try
{
int
num
=
profile
.
getNumComponents
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
while
(--
numReps
>=
0
);
}
}
}
src/share/native/sun/java2d/cmm/lcms/LCMS.c
浏览文件 @
fb441757
...
...
@@ -159,7 +159,8 @@ void LCMS_freeTransform(JNIEnv *env, jlong ID)
*/
JNIEXPORT
jlong
JNICALL
Java_sun_java2d_cmm_lcms_LCMS_createNativeTransform
(
JNIEnv
*
env
,
jclass
cls
,
jlongArray
profileIDs
,
jint
renderType
,
jint
inFormatter
,
jint
outFormatter
,
jobject
disposerRef
)
jint
inFormatter
,
jboolean
isInIntPacked
,
jint
outFormatter
,
jboolean
isOutIntPacked
,
jobject
disposerRef
)
{
cmsHPROFILE
_iccArray
[
DF_ICC_BUF_SIZE
];
cmsHPROFILE
*
iccArray
=
&
_iccArray
[
0
];
...
...
@@ -170,6 +171,16 @@ JNIEXPORT jlong JNICALL Java_sun_java2d_cmm_lcms_LCMS_createNativeTransform
size
=
(
*
env
)
->
GetArrayLength
(
env
,
profileIDs
);
ids
=
(
*
env
)
->
GetPrimitiveArrayCritical
(
env
,
profileIDs
,
0
);
#ifdef _LITTLE_ENDIAN
/* Reversing data packed into int for LE archs */
if
(
isInIntPacked
)
{
inFormatter
^=
DOSWAP_SH
(
1
);
}
if
(
isOutIntPacked
)
{
outFormatter
^=
DOSWAP_SH
(
1
);
}
#endif
if
(
DF_ICC_BUF_SIZE
<
size
*
2
)
{
iccArray
=
(
cmsHPROFILE
*
)
malloc
(
size
*
2
*
sizeof
(
cmsHPROFILE
));
...
...
@@ -567,7 +578,7 @@ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_colorConvert
(
JNIEnv
*
env
,
jclass
obj
,
jobject
trans
,
jobject
src
,
jobject
dst
)
{
storeID_t
sTrans
;
int
inFmt
,
outFmt
,
srcDType
,
dstDType
;
int
srcDType
,
dstDType
;
int
srcOffset
,
srcNextRowOffset
,
dstOffset
,
dstNextRowOffset
;
int
width
,
height
,
i
;
void
*
inputBuffer
;
...
...
@@ -576,23 +587,13 @@ JNIEXPORT void JNICALL Java_sun_java2d_cmm_lcms_LCMS_colorConvert
char
*
outputRow
;
jobject
srcData
,
dstData
;
inFmt
=
(
*
env
)
->
GetIntField
(
env
,
src
,
IL_pixelType_fID
);
outFmt
=
(
*
env
)
->
GetIntField
(
env
,
dst
,
IL_pixelType_fID
);
srcOffset
=
(
*
env
)
->
GetIntField
(
env
,
src
,
IL_offset_fID
);
srcNextRowOffset
=
(
*
env
)
->
GetIntField
(
env
,
src
,
IL_nextRowOffset_fID
);
dstOffset
=
(
*
env
)
->
GetIntField
(
env
,
dst
,
IL_offset_fID
);
dstNextRowOffset
=
(
*
env
)
->
GetIntField
(
env
,
dst
,
IL_nextRowOffset_fID
);
width
=
(
*
env
)
->
GetIntField
(
env
,
src
,
IL_width_fID
);
height
=
(
*
env
)
->
GetIntField
(
env
,
src
,
IL_height_fID
);
#ifdef _LITTLE_ENDIAN
/* Reversing data packed into int for LE archs */
if
((
*
env
)
->
GetBooleanField
(
env
,
src
,
IL_isIntPacked_fID
)
==
JNI_TRUE
)
{
inFmt
^=
DOSWAP_SH
(
1
);
}
if
((
*
env
)
->
GetBooleanField
(
env
,
dst
,
IL_isIntPacked_fID
)
==
JNI_TRUE
)
{
outFmt
^=
DOSWAP_SH
(
1
);
}
#endif
sTrans
.
j
=
(
*
env
)
->
GetLongField
(
env
,
trans
,
Trans_ID_fID
);
if
(
sTrans
.
xf
==
NULL
)
{
...
...
src/windows/native/sun/windows/awt_Debug.cpp
浏览文件 @
fb441757
...
...
@@ -147,6 +147,24 @@ AwtDebugSupport::~AwtDebugSupport() {
DTrace_Shutdown
();
}
static
jboolean
isHeadless
()
{
jmethodID
headlessFn
;
JNIEnv
*
env
=
(
JNIEnv
*
)
JNU_GetEnv
(
jvm
,
JNI_VERSION_1_2
);
jclass
graphicsEnvClass
=
env
->
FindClass
(
"java/awt/GraphicsEnvironment"
);
if
(
graphicsEnvClass
!=
NULL
)
{
headlessFn
=
env
->
GetStaticMethodID
(
graphicsEnvClass
,
"isHeadless"
,
"()Z"
);
if
(
headlessFn
!=
NULL
)
{
return
env
->
CallStaticBooleanMethod
(
graphicsEnvClass
,
headlessFn
);
}
}
return
true
;
}
void
AwtDebugSupport
::
AssertCallback
(
const
char
*
expr
,
const
char
*
file
,
int
line
)
{
static
const
int
ASSERT_MSG_SIZE
=
1024
;
static
const
char
*
AssertFmt
=
...
...
@@ -158,7 +176,8 @@ void AwtDebugSupport::AssertCallback(const char * expr, const char * file, int l
static
char
assertMsg
[
ASSERT_MSG_SIZE
+
1
];
DWORD
lastError
=
GetLastError
();
LPSTR
msgBuffer
=
NULL
;
int
ret
;
int
ret
=
IDNO
;
static
jboolean
headless
=
isHeadless
();
FormatMessageA
(
FORMAT_MESSAGE_ALLOCATE_BUFFER
|
FORMAT_MESSAGE_FROM_SYSTEM
|
...
...
@@ -183,8 +202,11 @@ void AwtDebugSupport::AssertCallback(const char * expr, const char * file, int l
fprintf
(
stderr
,
"*********************
\n
"
);
fprintf
(
stderr
,
"%s
\n
"
,
assertMsg
);
fprintf
(
stderr
,
"*********************
\n
"
);
if
(
!
headless
)
{
ret
=
MessageBoxA
(
NULL
,
assertMsg
,
"AWT Assertion Failure"
,
MB_YESNO
|
MB_ICONSTOP
|
MB_TASKMODAL
);
}
// if clicked Yes, break into the debugger
if
(
ret
==
IDYES
)
{
...
...
test/sun/java2d/cmm/ColorConvertOp/GrayTest.java
0 → 100644
浏览文件 @
fb441757
/*
* Copyright (c) 2012, 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.
*/
/**
* @test
* @bug 7124245
* @summary Test verifies that color conversion does not distort
* colors in destination image of standard type.
*
* @run main GrayTest
*/
import
java.awt.Color
;
import
java.awt.Graphics2D
;
import
java.awt.color.ColorSpace
;
import
java.awt.image.BufferedImage
;
import
java.awt.image.ColorConvertOp
;
public
class
GrayTest
{
public
static
void
main
(
String
[]
args
)
{
GrayTest
t
=
new
GrayTest
();
t
.
doTest
(
BufferedImage
.
TYPE_INT_RGB
);
t
.
doTest
(
BufferedImage
.
TYPE_INT_BGR
);
t
.
doTest
(
BufferedImage
.
TYPE_INT_ARGB
);
t
.
doTest
(
BufferedImage
.
TYPE_3BYTE_BGR
);
t
.
doTest
(
BufferedImage
.
TYPE_4BYTE_ABGR
);
System
.
out
.
println
(
"Test passed."
);
}
private
static
final
int
w
=
3
;
private
static
final
int
h
=
3
;
private
BufferedImage
src
;
private
BufferedImage
dst
;
private
ColorConvertOp
op
;
public
GrayTest
()
{
ColorSpace
cs
=
ColorSpace
.
getInstance
(
ColorSpace
.
CS_GRAY
);
op
=
new
ColorConvertOp
(
cs
,
null
);
}
private
void
render
(
Graphics2D
g
)
{
g
.
setColor
(
Color
.
red
);
g
.
fillRect
(
0
,
0
,
w
,
h
);
}
private
BufferedImage
initImage
(
int
type
)
{
BufferedImage
img
=
new
BufferedImage
(
w
,
h
,
type
);
Graphics2D
g
=
img
.
createGraphics
();
render
(
g
);
g
.
dispose
();
return
img
;
}
public
void
doTest
(
int
type
)
{
System
.
out
.
println
(
"Test for type: "
+
type
);
src
=
initImage
(
type
);
dst
=
initImage
(
type
);
dst
=
op
.
filter
(
src
,
dst
);
int
pixel
=
dst
.
getRGB
(
1
,
1
);
int
r
=
0xff
&
(
pixel
>>
16
);
int
g
=
0xff
&
(
pixel
>>
8
);
int
b
=
0xff
&
(
pixel
);
System
.
out
.
printf
(
"dst: r:%02x, g: %02x, %02x\n"
,
r
,
g
,
b
);
if
(
r
!=
g
||
r
!=
b
)
{
String
msg
=
String
.
format
(
"Invalid pixel: %08x"
,
pixel
);
throw
new
RuntimeException
(
msg
);
}
System
.
out
.
println
(
"Done."
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录