Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
e5ad279e
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e5ad279e
编写于
8月 23, 2013
作者:
B
bae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8021394: Better color profiles
Reviewed-by: prr, vadim, mschoene
上级
2f63ffc9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
40 deletion
+26
-40
src/share/native/sun/java2d/cmm/lcms/cmsintrp.c
src/share/native/sun/java2d/cmm/lcms/cmsintrp.c
+26
-40
未找到文件。
src/share/native/sun/java2d/cmm/lcms/cmsintrp.c
浏览文件 @
e5ad279e
...
...
@@ -215,6 +215,11 @@ void LinLerp1D(register const cmsUInt16Number Value[],
Output
[
0
]
=
LinearInterp
(
rest
,
y0
,
y1
);
}
// To prevent out of bounds indexing
cmsINLINE
cmsFloat32Number
fclamp
(
cmsFloat32Number
v
)
{
return
v
<
0
.
0
f
?
0
.
0
f
:
(
v
>
1
.
0
f
?
1
.
0
f
:
v
);
}
// Floating-point version of 1D interpolation
static
...
...
@@ -227,13 +232,15 @@ void LinLerp1Dfloat(const cmsFloat32Number Value[],
int
cell0
,
cell1
;
const
cmsFloat32Number
*
LutTable
=
(
cmsFloat32Number
*
)
p
->
Table
;
val2
=
fclamp
(
Value
[
0
]);
// if last value...
if
(
Value
[
0
]
==
1
.
0
)
{
if
(
val2
==
1
.
0
)
{
Output
[
0
]
=
LutTable
[
p
->
Domain
[
0
]];
return
;
}
val2
=
p
->
Domain
[
0
]
*
Value
[
0
];
val2
*=
p
->
Domain
[
0
];
cell0
=
(
int
)
floor
(
val2
);
cell1
=
(
int
)
ceil
(
val2
);
...
...
@@ -292,13 +299,15 @@ void Eval1InputFloat(const cmsFloat32Number Value[],
cmsUInt32Number
OutChan
;
const
cmsFloat32Number
*
LutTable
=
(
cmsFloat32Number
*
)
p
->
Table
;
val2
=
fclamp
(
Value
[
0
]);
// if last value...
if
(
Value
[
0
]
==
1
.
0
)
{
if
(
val2
==
1
.
0
)
{
Output
[
0
]
=
LutTable
[
p
->
Domain
[
0
]];
return
;
}
val2
=
p
->
Domain
[
0
]
*
Value
[
0
];
val2
*=
p
->
Domain
[
0
];
cell0
=
(
int
)
floor
(
val2
);
cell1
=
(
int
)
ceil
(
val2
);
...
...
@@ -339,8 +348,8 @@ void BilinearInterpFloat(const cmsFloat32Number Input[],
dxy
;
TotalOut
=
p
->
nOutputs
;
px
=
Input
[
0
]
*
p
->
Domain
[
0
];
py
=
Input
[
1
]
*
p
->
Domain
[
1
];
px
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
py
=
fclamp
(
Input
[
1
])
*
p
->
Domain
[
1
];
x0
=
(
int
)
_cmsQuickFloor
(
px
);
fx
=
px
-
(
cmsFloat32Number
)
x0
;
y0
=
(
int
)
_cmsQuickFloor
(
py
);
fy
=
py
-
(
cmsFloat32Number
)
y0
;
...
...
@@ -454,20 +463,9 @@ void TrilinearInterpFloat(const cmsFloat32Number Input[],
TotalOut
=
p
->
nOutputs
;
// We need some clipping here
px
=
Input
[
0
];
py
=
Input
[
1
];
pz
=
Input
[
2
];
if
(
px
<
0
)
px
=
0
;
if
(
px
>
1
)
px
=
1
;
if
(
py
<
0
)
py
=
0
;
if
(
py
>
1
)
py
=
1
;
if
(
pz
<
0
)
pz
=
0
;
if
(
pz
>
1
)
pz
=
1
;
px
*=
p
->
Domain
[
0
];
py
*=
p
->
Domain
[
1
];
pz
*=
p
->
Domain
[
2
];
px
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
py
=
fclamp
(
Input
[
1
])
*
p
->
Domain
[
1
];
pz
=
fclamp
(
Input
[
2
])
*
p
->
Domain
[
2
];
x0
=
(
int
)
_cmsQuickFloor
(
px
);
fx
=
px
-
(
cmsFloat32Number
)
x0
;
y0
=
(
int
)
_cmsQuickFloor
(
py
);
fy
=
py
-
(
cmsFloat32Number
)
y0
;
...
...
@@ -609,20 +607,9 @@ void TetrahedralInterpFloat(const cmsFloat32Number Input[],
TotalOut
=
p
->
nOutputs
;
// We need some clipping here
px
=
Input
[
0
];
py
=
Input
[
1
];
pz
=
Input
[
2
];
if
(
px
<
0
)
px
=
0
;
if
(
px
>
1
)
px
=
1
;
if
(
py
<
0
)
py
=
0
;
if
(
py
>
1
)
py
=
1
;
if
(
pz
<
0
)
pz
=
0
;
if
(
pz
>
1
)
pz
=
1
;
px
*=
p
->
Domain
[
0
];
py
*=
p
->
Domain
[
1
];
pz
*=
p
->
Domain
[
2
];
px
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
py
=
fclamp
(
Input
[
1
])
*
p
->
Domain
[
1
];
pz
=
fclamp
(
Input
[
2
])
*
p
->
Domain
[
2
];
x0
=
(
int
)
_cmsQuickFloor
(
px
);
rx
=
(
px
-
(
cmsFloat32Number
)
x0
);
y0
=
(
int
)
_cmsQuickFloor
(
py
);
ry
=
(
py
-
(
cmsFloat32Number
)
y0
);
...
...
@@ -1039,8 +1026,7 @@ void Eval4InputsFloat(const cmsFloat32Number Input[],
cmsFloat32Number
Tmp1
[
MAX_STAGE_CHANNELS
],
Tmp2
[
MAX_STAGE_CHANNELS
];
cmsInterpParams
p1
;
pk
=
Input
[
0
]
*
p
->
Domain
[
0
];
pk
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
k0
=
_cmsQuickFloor
(
pk
);
rest
=
pk
-
(
cmsFloat32Number
)
k0
;
...
...
@@ -1127,7 +1113,7 @@ void Eval5InputsFloat(const cmsFloat32Number Input[],
cmsFloat32Number
Tmp1
[
MAX_STAGE_CHANNELS
],
Tmp2
[
MAX_STAGE_CHANNELS
];
cmsInterpParams
p1
;
pk
=
Input
[
0
]
*
p
->
Domain
[
0
];
pk
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
k0
=
_cmsQuickFloor
(
pk
);
rest
=
pk
-
(
cmsFloat32Number
)
k0
;
...
...
@@ -1214,7 +1200,7 @@ void Eval6InputsFloat(const cmsFloat32Number Input[],
cmsFloat32Number
Tmp1
[
MAX_STAGE_CHANNELS
],
Tmp2
[
MAX_STAGE_CHANNELS
];
cmsInterpParams
p1
;
pk
=
Input
[
0
]
*
p
->
Domain
[
0
];
pk
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
k0
=
_cmsQuickFloor
(
pk
);
rest
=
pk
-
(
cmsFloat32Number
)
k0
;
...
...
@@ -1299,7 +1285,7 @@ void Eval7InputsFloat(const cmsFloat32Number Input[],
cmsFloat32Number
Tmp1
[
MAX_STAGE_CHANNELS
],
Tmp2
[
MAX_STAGE_CHANNELS
];
cmsInterpParams
p1
;
pk
=
Input
[
0
]
*
p
->
Domain
[
0
];
pk
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
k0
=
_cmsQuickFloor
(
pk
);
rest
=
pk
-
(
cmsFloat32Number
)
k0
;
...
...
@@ -1384,7 +1370,7 @@ void Eval8InputsFloat(const cmsFloat32Number Input[],
cmsFloat32Number
Tmp1
[
MAX_STAGE_CHANNELS
],
Tmp2
[
MAX_STAGE_CHANNELS
];
cmsInterpParams
p1
;
pk
=
Input
[
0
]
*
p
->
Domain
[
0
];
pk
=
fclamp
(
Input
[
0
])
*
p
->
Domain
[
0
];
k0
=
_cmsQuickFloor
(
pk
);
rest
=
pk
-
(
cmsFloat32Number
)
k0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录