Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
itdan3344
stb
提交
e9151589
S
stb
项目概览
itdan3344
/
stb
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
stb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e9151589
编写于
11月 25, 2014
作者:
S
Sean Barrett
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
duh, best-fit should tiebreak using waste, not prioritize waste (which makes bizarre towers)
上级
2c56e11c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
23 addition
and
9 deletion
+23
-9
stb_rect_pack.h
stb_rect_pack.h
+23
-9
未找到文件。
stb_rect_pack.h
浏览文件 @
e9151589
// stb_rect_pack.h - v0.0
1
- public domain - rectangle packing
// stb_rect_pack.h - v0.0
2
- public domain - rectangle packing
// Sean Barrett 2014
// Sean Barrett 2014
//
//
// Useful for e.g. packing rectangular textures into an atlas.
// Useful for e.g. packing rectangular textures into an atlas.
...
@@ -311,9 +311,9 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
...
@@ -311,9 +311,9 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
}
}
}
else
{
}
else
{
// best-fit
// best-fit
if
(
waste
<
best_waste
)
{
if
(
y
+
height
<=
c
->
height
)
{
// can only use it if it first vertically
// can only use it if it first vertically
if
(
y
+
height
<=
c
->
height
)
{
if
(
y
<
best_y
||
(
y
==
best_y
&&
waste
<
best_waste
)
)
{
best_y
=
y
;
best_y
=
y
;
best_waste
=
waste
;
best_waste
=
waste
;
best
=
prev
;
best
=
prev
;
...
@@ -361,12 +361,15 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
...
@@ -361,12 +361,15 @@ static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, int widt
}
}
assert
(
node
->
next
->
x
>
xpos
&&
node
->
x
<=
xpos
);
assert
(
node
->
next
->
x
>
xpos
&&
node
->
x
<=
xpos
);
y
=
stbrp__skyline_find_min_y
(
c
,
node
,
xpos
,
width
,
&
waste
);
y
=
stbrp__skyline_find_min_y
(
c
,
node
,
xpos
,
width
,
&
waste
);
if
(
waste
<=
best_waste
&&
y
+
height
<
c
->
height
)
{
if
(
y
+
height
<
c
->
height
)
{
if
(
waste
<
best_waste
||
y
<
best_y
||
(
y
==
best_y
&&
xpos
<
best_x
))
{
if
(
y
<=
best_y
)
{
best_x
=
xpos
;
if
(
y
<
best_y
||
waste
<
best_waste
||
(
waste
==
best_waste
&&
xpos
<
best_x
))
{
best_y
=
y
;
best_x
=
xpos
;
best_waste
=
waste
;
assert
(
y
<=
best_y
);
best
=
prev
;
best_y
=
y
;
best_waste
=
waste
;
best
=
prev
;
}
}
}
}
}
tail
=
tail
->
next
;
tail
=
tail
->
next
;
...
@@ -472,6 +475,17 @@ static int rect_height_compare(const void *a, const void *b)
...
@@ -472,6 +475,17 @@ static int rect_height_compare(const void *a, const void *b)
return
(
p
->
w
>
q
->
w
)
?
-
1
:
(
p
->
w
<
q
->
w
);
return
(
p
->
w
>
q
->
w
)
?
-
1
:
(
p
->
w
<
q
->
w
);
}
}
static
int
rect_width_compare
(
const
void
*
a
,
const
void
*
b
)
{
stbrp_rect
*
p
=
(
stbrp_rect
*
)
a
;
stbrp_rect
*
q
=
(
stbrp_rect
*
)
b
;
if
(
p
->
w
>
q
->
w
)
return
-
1
;
if
(
p
->
w
<
q
->
w
)
return
1
;
return
(
p
->
h
>
q
->
h
)
?
-
1
:
(
p
->
h
<
q
->
h
);
}
static
int
rect_original_order
(
const
void
*
a
,
const
void
*
b
)
static
int
rect_original_order
(
const
void
*
a
,
const
void
*
b
)
{
{
stbrp_rect
*
p
=
(
stbrp_rect
*
)
a
;
stbrp_rect
*
p
=
(
stbrp_rect
*
)
a
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录