[hdmx] Touch up
This commit is contained in:
parent
e8ef0e627c
commit
b710176ce2
|
@ -44,7 +44,8 @@ struct DeviceRecord
|
||||||
static unsigned int get_size (unsigned count)
|
static unsigned int get_size (unsigned count)
|
||||||
{ return hb_ceil_to_4 (min_size + count * HBUINT8::static_size); }
|
{ return hb_ceil_to_4 (min_size + count * HBUINT8::static_size); }
|
||||||
|
|
||||||
template<typename Iterator>
|
template<typename Iterator,
|
||||||
|
hb_requires (hb_is_iterator (Iterator))>
|
||||||
bool serialize (hb_serialize_context_t *c, unsigned pixelSize, Iterator it)
|
bool serialize (hb_serialize_context_t *c, unsigned pixelSize, Iterator it)
|
||||||
{
|
{
|
||||||
TRACE_SERIALIZE (this);
|
TRACE_SERIALIZE (this);
|
||||||
|
@ -94,7 +95,8 @@ struct hdmx
|
||||||
return StructAtOffset<DeviceRecord> (&this->firstDeviceRecord, i * sizeDeviceRecord);
|
return StructAtOffset<DeviceRecord> (&this->firstDeviceRecord, i * sizeDeviceRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Iterator>
|
template<typename Iterator,
|
||||||
|
hb_requires (hb_is_iterator (Iterator))>
|
||||||
bool serialize (hb_serialize_context_t *c, unsigned version, Iterator it)
|
bool serialize (hb_serialize_context_t *c, unsigned version, Iterator it)
|
||||||
{
|
{
|
||||||
TRACE_SERIALIZE (this);
|
TRACE_SERIALIZE (this);
|
||||||
|
@ -103,14 +105,13 @@ struct hdmx
|
||||||
|
|
||||||
this->version = version;
|
this->version = version;
|
||||||
this->numRecords = it.len ();
|
this->numRecords = it.len ();
|
||||||
this->sizeDeviceRecord =
|
this->sizeDeviceRecord = DeviceRecord::get_size (it ? (*it).second.len () : 0);
|
||||||
it ? DeviceRecord::get_size ((*it).second.len ()) : DeviceRecord::get_size (0);
|
|
||||||
|
|
||||||
using pair_t = decltype (*it);
|
|
||||||
+ it
|
+ it
|
||||||
| hb_apply ([&] (const pair_t& _) {
|
| hb_apply ([&] (const hb_item_type<Iterator>& _) {
|
||||||
c->start_embed<DeviceRecord> ()->serialize (c, _.first, _.second);
|
c->start_embed<DeviceRecord> ()->serialize (c, _.first, _.second);
|
||||||
});
|
})
|
||||||
|
;
|
||||||
|
|
||||||
return_trace (c->successful);
|
return_trace (c->successful);
|
||||||
}
|
}
|
||||||
|
@ -125,21 +126,24 @@ struct hdmx
|
||||||
|
|
||||||
auto it =
|
auto it =
|
||||||
+ hb_iota ((unsigned) numRecords)
|
+ hb_iota ((unsigned) numRecords)
|
||||||
| hb_map ([&] (unsigned _) {
|
| hb_map ([&] (unsigned _)
|
||||||
|
{
|
||||||
const DeviceRecord *device_record =
|
const DeviceRecord *device_record =
|
||||||
&StructAtOffset<DeviceRecord> (&firstDeviceRecord,
|
&StructAtOffset<DeviceRecord> (&firstDeviceRecord,
|
||||||
_ * sizeDeviceRecord);
|
_ * sizeDeviceRecord);
|
||||||
auto row =
|
auto row =
|
||||||
+ hb_iota (c->plan->num_output_glyphs ())
|
+ hb_iota (c->plan->num_output_glyphs ())
|
||||||
| hb_map (c->plan->reverse_glyph_map)
|
| hb_map (c->plan->reverse_glyph_map)
|
||||||
| hb_map ([=] (hb_codepoint_t _) {
|
| hb_map ([=] (hb_codepoint_t _)
|
||||||
|
{
|
||||||
if (c->plan->is_empty_glyph (_))
|
if (c->plan->is_empty_glyph (_))
|
||||||
return Null(HBUINT8);
|
return Null(HBUINT8);
|
||||||
return device_record->widthsZ.as_array (get_num_glyphs ()) [_];
|
return device_record->widthsZ.as_array (get_num_glyphs ()) [_];
|
||||||
})
|
})
|
||||||
;
|
;
|
||||||
return hb_pair ((unsigned) device_record->pixelSize, +row);
|
return hb_pair ((unsigned) device_record->pixelSize, +row);
|
||||||
});
|
})
|
||||||
|
;
|
||||||
|
|
||||||
hdmx_prime->serialize (c->serializer, version, it);
|
hdmx_prime->serialize (c->serializer, version, it);
|
||||||
return_trace (true);
|
return_trace (true);
|
||||||
|
|
Loading…
Reference in New Issue