Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright © 2007,2008,2009,2010 Red Hat, Inc. 2 * Copyright © 2007,2008,2009,2010 Red Hat, Inc.
3 * Copyright © 2010,2012,2013 Google, Inc. 3 * Copyright © 2010,2012,2013 Google, Inc.
4 * 4 *
5 * This is part of HarfBuzz, a text shaping library. 5 * This is part of HarfBuzz, a text shaping library.
6 * 6 *
7 * Permission is hereby granted, without written agreement and without 7 * Permission is hereby granted, without written agreement and without
8 * license or royalty fees, to use, copy, modify, and distribute this 8 * license or royalty fees, to use, copy, modify, and distribute this
9 * software and its documentation for any purpose, provided that the 9 * software and its documentation for any purpose, provided that the
10 * above copyright notice and the following two paragraphs appear in 10 * above copyright notice and the following two paragraphs appear in
(...skipping 584 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 inline bool apply (hb_apply_context_t *c, 595 inline bool apply (hb_apply_context_t *c,
596 const ValueFormat *valueFormats, 596 const ValueFormat *valueFormats,
597 unsigned int pos) const 597 unsigned int pos) const
598 { 598 {
599 TRACE_APPLY (this); 599 TRACE_APPLY (this);
600 hb_buffer_t *buffer = c->buffer; 600 hb_buffer_t *buffer = c->buffer;
601 unsigned int len1 = valueFormats[0].get_len (); 601 unsigned int len1 = valueFormats[0].get_len ();
602 unsigned int len2 = valueFormats[1].get_len (); 602 unsigned int len2 = valueFormats[1].get_len ();
603 unsigned int record_size = USHORT::static_size * (1 + len1 + len2); 603 unsigned int record_size = USHORT::static_size * (1 + len1 + len2);
604 604
605 const PairValueRecord *record = CastP<PairValueRecord> (arrayZ); 605 const PairValueRecord *record_array = CastP<PairValueRecord> (arrayZ);
606 unsigned int count = len; 606 unsigned int count = len;
607 for (unsigned int i = 0; i < count; i++) 607
608 /* Hand-coded bsearch. */
609 if (unlikely (!count))
610 return TRACE_RETURN (false);
611 hb_codepoint_t x = buffer->info[pos].codepoint;
612 int min = 0, max = (int) count - 1;
613 while (min <= max)
608 { 614 {
609 /* TODO bsearch */ 615 int mid = (min + max) / 2;
610 if (buffer->info[pos].codepoint == record->secondGlyph) 616 const PairValueRecord *record = &StructAtOffset<PairValueRecord> (record_a rray, record_size * mid);
617 hb_codepoint_t mid_x = record->secondGlyph;
618 if (x < mid_x)
619 max = mid - 1;
620 else if (x > mid_x)
621 min = mid + 1;
622 else
611 { 623 {
612 valueFormats[0].apply_value (c->font, c->direction, this, 624 valueFormats[0].apply_value (c->font, c->direction, this,
613 &record->values[0], buffer->cur_pos()); 625 &record->values[0], buffer->cur_pos());
614 valueFormats[1].apply_value (c->font, c->direction, this, 626 valueFormats[1].apply_value (c->font, c->direction, this,
615 &record->values[len1], buffer->pos[pos]); 627 &record->values[len1], buffer->pos[pos]);
616 if (len2) 628 if (len2)
617 pos++; 629 pos++;
618 buffer->idx = pos; 630 buffer->idx = pos;
619 return TRACE_RETURN (true); 631 return TRACE_RETURN (true);
620 } 632 }
621 record = &StructAtOffset<PairValueRecord> (record, record_size);
622 } 633 }
623 634
624 return TRACE_RETURN (false); 635 return TRACE_RETURN (false);
625 } 636 }
626 637
627 struct sanitize_closure_t { 638 struct sanitize_closure_t {
628 void *base; 639 void *base;
629 ValueFormat *valueFormats; 640 ValueFormat *valueFormats;
630 unsigned int len1; /* valueFormats[0].get_len() */ 641 unsigned int len1; /* valueFormats[0].get_len() */
631 unsigned int stride; /* 1 + len1 + len2 */ 642 unsigned int stride; /* 1 + len1 + len2 */
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after
1628 1639
1629 1640
1630 #undef attach_lookback 1641 #undef attach_lookback
1631 #undef cursive_chain 1642 #undef cursive_chain
1632 1643
1633 1644
1634 } /* namespace OT */ 1645 } /* namespace OT */
1635 1646
1636 1647
1637 #endif /* HB_OT_LAYOUT_GPOS_TABLE_HH */ 1648 #endif /* HB_OT_LAYOUT_GPOS_TABLE_HH */
OLDNEW
« no previous file with comments | « third_party/harfbuzz-ng/src/hb-ot-layout.cc ('k') | third_party/harfbuzz-ng/src/hb-ot-layout-private.hh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698