Add hb_segment_properties_overlay()
New API: + hb_segment_properties_overlay()
This commit is contained in:
parent
165a6073fa
commit
6a66992842
|
@ -103,6 +103,7 @@ hb_buffer_serialize_format_to_string
|
||||||
hb_buffer_serialize_list_formats
|
hb_buffer_serialize_list_formats
|
||||||
hb_segment_properties_equal
|
hb_segment_properties_equal
|
||||||
hb_segment_properties_hash
|
hb_segment_properties_hash
|
||||||
|
hb_segment_properties_overlay
|
||||||
hb_buffer_diff
|
hb_buffer_diff
|
||||||
hb_buffer_set_message_func
|
hb_buffer_set_message_func
|
||||||
hb_buffer_t
|
hb_buffer_t
|
||||||
|
|
|
@ -86,7 +86,46 @@ hb_segment_properties_hash (const hb_segment_properties_t *p)
|
||||||
(intptr_t) (p->language);
|
(intptr_t) (p->language);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hb_segment_properties_overlay:
|
||||||
|
* @p: #hb_segment_properties_t to fill in.
|
||||||
|
* @src: #hb_segment_properties_t to fill in from.
|
||||||
|
*
|
||||||
|
* Fills in missing fields of @p from @src in a considered manner.
|
||||||
|
*
|
||||||
|
* First, if @p does not have direction set, direction is copied from @src.
|
||||||
|
*
|
||||||
|
* Next, if @p and @src have the same direction (which can be unset), if @p
|
||||||
|
* does not have script set, script is copied from @src.
|
||||||
|
*
|
||||||
|
* Finally, if @p and @src have the same direction and script (which either
|
||||||
|
* can be unset), if @p does not have language set, language is copied from
|
||||||
|
* @src.
|
||||||
|
*
|
||||||
|
* Since: REPLACEME
|
||||||
|
**/
|
||||||
|
HB_EXTERN void
|
||||||
|
hb_segment_properties_overlay (hb_segment_properties_t *p,
|
||||||
|
const hb_segment_properties_t *src)
|
||||||
|
{
|
||||||
|
if (unlikely (!p || !src))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!p->direction)
|
||||||
|
p->direction = src->direction;
|
||||||
|
|
||||||
|
if (p->direction != src->direction)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!p->script)
|
||||||
|
p->script = src->script;
|
||||||
|
|
||||||
|
if (p->script != src->script)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!p->language)
|
||||||
|
p->language = src->language;
|
||||||
|
}
|
||||||
|
|
||||||
/* Here is how the buffer works internally:
|
/* Here is how the buffer works internally:
|
||||||
*
|
*
|
||||||
|
|
|
@ -170,6 +170,9 @@ hb_segment_properties_equal (const hb_segment_properties_t *a,
|
||||||
HB_EXTERN unsigned int
|
HB_EXTERN unsigned int
|
||||||
hb_segment_properties_hash (const hb_segment_properties_t *p);
|
hb_segment_properties_hash (const hb_segment_properties_t *p);
|
||||||
|
|
||||||
|
HB_EXTERN void
|
||||||
|
hb_segment_properties_overlay (hb_segment_properties_t *p,
|
||||||
|
const hb_segment_properties_t *src);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue