Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Harfbuzz
提交
11fbb548
T
Third Party Harfbuzz
项目概览
OpenHarmony
/
Third Party Harfbuzz
1 年多 前同步成功
通知
0
Star
18
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Harfbuzz
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
11fbb548
编写于
8月 01, 2009
作者:
B
Behdad Esfahbod
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[HB] Port buffert to new object API
上级
0cc7bc59
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
104 addition
and
38 deletion
+104
-38
src/hb-buffer-private.h
src/hb-buffer-private.h
+21
-3
src/hb-buffer.c
src/hb-buffer.c
+50
-15
src/hb-buffer.h
src/hb-buffer.h
+33
-20
未找到文件。
src/hb-buffer-private.h
浏览文件 @
11fbb548
...
...
@@ -35,15 +35,33 @@ HB_BEGIN_DECLS
#define HB_BUFFER_GLYPH_PROPERTIES_UNKNOWN 0xFFFF
struct
_hb_buffer_t
{
hb_reference_count_t
ref_count
;
unsigned
int
allocated
;
unsigned
int
in_length
;
unsigned
int
out_length
;
unsigned
int
in_pos
;
unsigned
int
out_pos
;
hb_glyph_info_t
*
in_string
;
hb_glyph_info_t
*
out_string
;
hb_glyph_info_t
*
alt_string
;
hb_glyph_position_t
*
positions
;
hb_direction_t
direction
;
unsigned
int
max_lig_id
;
};
HB_INTERNAL
void
_hb_buffer_swap
(
hb_buffer_t
*
buffer
);
HB_INTERNAL
void
_hb_buffer_clear_output
(
hb_buffer_t
*
buffer
);
HB_INTERNAL
void
_hb_buffer_clear_positions
(
hb_buffer_t
*
buffer
);
HB_INTERNAL
void
_hb_buffer_add_output_glyphs
(
hb_buffer_t
*
buffer
,
unsigned
int
num_in
,
...
...
src/hb-buffer.c
浏览文件 @
11fbb548
...
...
@@ -29,6 +29,10 @@
#include <string.h>
static
hb_buffer_t
_hb_buffer_nil
=
{
HB_REFERENCE_COUNT_INVALID
/* ref_count */
};
/* Here is how the buffer works internally:
*
* There are two string pointers: in_string and out_string. They
...
...
@@ -69,33 +73,40 @@ hb_buffer_ensure_separate (hb_buffer_t *buffer, unsigned int size)
/* Public API */
hb_buffer_t
*
hb_buffer_
new
(
unsigned
int
allocation
_size
)
hb_buffer_
create
(
unsigned
int
pre_alloc
_size
)
{
hb_buffer_t
*
buffer
;
buffer
=
calloc
(
1
,
sizeof
(
hb_buffer_t
));
if
(
HB_UNLIKELY
(
!
buffer
))
return
NULL
;
if
(
!
HB_OBJECT_DO_CREATE
(
buffer
))
return
&
_hb_buffer_nil
;
buffer
->
allocated
=
0
;
buffer
->
in_string
=
NULL
;
buffer
->
alt_string
=
NULL
;
buffer
->
positions
=
NULL
;
if
(
pre_alloc_size
)
hb_buffer_ensure
(
buffer
,
pre_alloc_size
);
hb_buffer_clear
(
buffer
);
return
buffer
;
}
if
(
allocation_size
)
hb_buffer_ensure
(
buffer
,
allocation_size
);
hb_buffer_t
*
hb_buffer_reference
(
hb_buffer_t
*
buffer
)
{
HB_OBJECT_DO_REFERENCE
(
buffer
);
}
return
buffer
;
unsigned
int
hb_buffer_get_reference_count
(
hb_buffer_t
*
buffer
)
{
HB_OBJECT_DO_GET_REFERENCE_COUNT
(
buffer
);
}
void
hb_buffer_
free
(
hb_buffer_t
*
buffer
)
hb_buffer_
destroy
(
hb_buffer_t
*
buffer
)
{
HB_OBJECT_DO_DESTROY
(
buffer
);
free
(
buffer
->
in_string
);
free
(
buffer
->
alt_string
);
free
(
buffer
->
positions
);
free
(
buffer
);
}
...
...
@@ -185,8 +196,8 @@ _hb_buffer_clear_output (hb_buffer_t *buffer)
buffer
->
out_string
=
buffer
->
in_string
;
}
HB_INTERNAL
void
_
hb_buffer_clear_positions
(
hb_buffer_t
*
buffer
)
void
hb_buffer_clear_positions
(
hb_buffer_t
*
buffer
)
{
_hb_buffer_clear_output
(
buffer
);
...
...
@@ -340,3 +351,27 @@ _hb_buffer_allocate_lig_id (hb_buffer_t *buffer)
{
return
++
buffer
->
max_lig_id
;
}
unsigned
int
hb_buffer_get_len
(
hb_buffer_t
*
buffer
)
{
return
buffer
->
in_length
;
}
/* Return value valid as long as buffer not modified */
hb_glyph_info_t
*
hb_buffer_get_glyph_infos
(
hb_buffer_t
*
buffer
)
{
return
buffer
->
in_string
;
}
/* Return value valid as long as buffer not modified */
hb_glyph_position_t
*
hb_buffer_get_glyph_positions
(
hb_buffer_t
*
buffer
)
{
if
(
buffer
->
in_length
&&
!
buffer
->
positions
)
hb_buffer_clear_positions
(
buffer
);
return
buffer
->
positions
;
}
src/hb-buffer.h
浏览文件 @
11fbb548
...
...
@@ -32,6 +32,8 @@
HB_BEGIN_DECLS
typedef
struct
_hb_buffer_t
hb_buffer_t
;
typedef
enum
_hb_direction_t
{
HB_DIRECTION_LTR
,
HB_DIRECTION_RTL
,
...
...
@@ -39,7 +41,7 @@ typedef enum _hb_direction_t {
HB_DIRECTION_BTT
}
hb_direction_t
;
/* XXX
Hide structs?
*/
/* XXX
these structs need review before we can commit to them
*/
typedef
struct
_hb_glyph_info_t
{
hb_codepoint_t
gindex
;
...
...
@@ -67,45 +69,56 @@ typedef struct _hb_glyph_position_t {
}
hb_glyph_position_t
;
typedef
struct
_hb_buffer_t
{
unsigned
int
allocated
;
hb_buffer_t
*
hb_buffer_create
(
unsigned
int
pre_alloc_size
)
;
unsigned
int
in_length
;
unsigned
int
out_length
;
unsigned
int
in_pos
;
unsigned
int
out_pos
;
hb_buffer_t
*
hb_buffer_reference
(
hb_buffer_t
*
buffer
);
hb_glyph_info_t
*
in_string
;
hb_glyph_info_t
*
out_string
;
hb_glyph_info_t
*
alt_string
;
hb_glyph_position_t
*
positions
;
unsigned
int
hb_buffer_get_reference_count
(
hb_buffer_t
*
buffer
);
hb_direction_t
direction
;
unsigned
int
max_lig_id
;
}
hb_buffer_t
;
void
hb_buffer_destroy
(
hb_buffer_t
*
buffer
);
hb_buffer_t
*
hb_buffer_new
(
unsigned
int
allocation_size
);
void
hb_buffer_free
(
hb_buffer_t
*
buffer
);
hb_buffer_set_direction
(
hb_buffer_t
*
buffer
,
hb_direction_t
direction
);
hb_direction_t
hb_buffer_get_direction
(
hb_buffer_t
*
buffer
);
void
hb_buffer_clear
(
hb_buffer_t
*
buffer
);
void
hb_buffer_clear_positions
(
hb_buffer_t
*
buffer
);
void
hb_buffer_ensure
(
hb_buffer_t
*
buffer
,
unsigned
int
size
);
void
hb_buffer_add_glyph
(
hb_buffer_t
*
buffer
,
hb_codepoint_t
glyph_index
,
unsigned
int
properties
,
unsigned
int
cluster
);
void
hb_buffer_set_direction
(
hb_buffer_t
*
buffer
,
hb_direction_t
direction
);
/* Return value valid as long as buffer not modified */
unsigned
int
hb_buffer_get_len
(
hb_buffer_t
*
buffer
);
/* Return value valid as long as buffer not modified */
hb_glyph_info_t
*
hb_buffer_get_glyph_infos
(
hb_buffer_t
*
buffer
);
/* Return value valid as long as buffer not modified */
hb_glyph_position_t
*
hb_buffer_get_glyph_positions
(
hb_buffer_t
*
buffer
);
HB_END_DECLS
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录