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

Side by Side Diff: third_party/harfbuzz-ng/src/hb-ot-layout-common-private.hh

Issue 70193010: Update harfbuzz-ng to 0.9.24 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright © 2007,2008,2009 Red Hat, Inc. 2 * Copyright © 2007,2008,2009 Red Hat, Inc.
3 * Copyright © 2010,2012 Google, Inc. 3 * Copyright © 2010,2012 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 21 matching lines...) Expand all
32 #include "hb-ot-layout-private.hh" 32 #include "hb-ot-layout-private.hh"
33 #include "hb-open-type-private.hh" 33 #include "hb-open-type-private.hh"
34 #include "hb-set-private.hh" 34 #include "hb-set-private.hh"
35 35
36 36
37 namespace OT { 37 namespace OT {
38 38
39 39
40 #define NOT_COVERED ((unsigned int) -1) 40 #define NOT_COVERED ((unsigned int) -1)
41 #define MAX_NESTING_LEVEL 8 41 #define MAX_NESTING_LEVEL 8
42 #define MAX_CONTEXT_LENGTH 64
42 43
43 44
44 45
45 /* 46 /*
46 * 47 *
47 * OpenType Layout Common Table Formats 48 * OpenType Layout Common Table Formats
48 * 49 *
49 */ 50 */
50 51
51 52
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 case 2: u.format2.add_coverage (glyphs); break; 865 case 2: u.format2.add_coverage (glyphs); break;
865 default: break; 866 default: break;
866 } 867 }
867 } 868 }
868 869
869 struct Iter { 870 struct Iter {
870 Iter (void) : format (0) {}; 871 Iter (void) : format (0) {};
871 inline void init (const Coverage &c_) { 872 inline void init (const Coverage &c_) {
872 format = c_.u.format; 873 format = c_.u.format;
873 switch (format) { 874 switch (format) {
874 case 1: return u.format1.init (c_.u.format1); 875 case 1: u.format1.init (c_.u.format1); return;
875 case 2: return u.format2.init (c_.u.format2); 876 case 2: u.format2.init (c_.u.format2); return;
876 default:return; 877 default: return;
877 } 878 }
878 } 879 }
879 inline bool more (void) { 880 inline bool more (void) {
880 switch (format) { 881 switch (format) {
881 case 1: return u.format1.more (); 882 case 1: return u.format1.more ();
882 case 2: return u.format2.more (); 883 case 2: return u.format2.more ();
883 default:return true; 884 default:return false;
884 } 885 }
885 } 886 }
886 inline void next (void) { 887 inline void next (void) {
887 switch (format) { 888 switch (format) {
888 case 1: u.format1.next (); break; 889 case 1: u.format1.next (); break;
889 case 2: u.format2.next (); break; 890 case 2: u.format2.next (); break;
890 default: break; 891 default: break;
891 } 892 }
892 } 893 }
893 inline uint16_t get_glyph (void) { 894 inline uint16_t get_glyph (void) {
894 switch (format) { 895 switch (format) {
895 case 1: return u.format1.get_glyph (); 896 case 1: return u.format1.get_glyph ();
896 case 2: return u.format2.get_glyph (); 897 case 2: return u.format2.get_glyph ();
897 default:return true; 898 default:return 0;
898 } 899 }
899 } 900 }
900 inline uint16_t get_coverage (void) { 901 inline uint16_t get_coverage (void) {
901 switch (format) { 902 switch (format) {
902 case 1: return u.format1.get_coverage (); 903 case 1: return u.format1.get_coverage ();
903 case 2: return u.format2.get_coverage (); 904 case 2: return u.format2.get_coverage ();
904 default:return true; 905 default:return -1;
905 } 906 }
906 } 907 }
907 908
908 private: 909 private:
909 unsigned int format; 910 unsigned int format;
910 union { 911 union {
911 CoverageFormat1::Iter format1; 912 CoverageFormat1::Iter format1;
912 CoverageFormat2::Iter format2; 913 CoverageFormat2::Iter format2;
913 } u; 914 } u;
914 }; 915 };
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 template <typename set_t> 949 template <typename set_t>
949 inline void add_class (set_t *glyphs, unsigned int klass) const { 950 inline void add_class (set_t *glyphs, unsigned int klass) const {
950 unsigned int count = classValue.len; 951 unsigned int count = classValue.len;
951 for (unsigned int i = 0; i < count; i++) 952 for (unsigned int i = 0; i < count; i++)
952 if (classValue[i] == klass) 953 if (classValue[i] == klass)
953 glyphs->add (startGlyph + i); 954 glyphs->add (startGlyph + i);
954 } 955 }
955 956
956 inline bool intersects_class (const hb_set_t *glyphs, unsigned int klass) cons t { 957 inline bool intersects_class (const hb_set_t *glyphs, unsigned int klass) cons t {
957 unsigned int count = classValue.len; 958 unsigned int count = classValue.len;
959 if (klass == 0)
960 {
961 /* Match if there's any glyph that is not listed! */
962 hb_codepoint_t g = -1;
963 if (!hb_set_next (glyphs, &g))
964 return false;
965 if (g < startGlyph)
966 return true;
967 g = startGlyph + count - 1;
968 if (hb_set_next (glyphs, &g))
969 return true;
970 /* Fall through. */
971 }
958 for (unsigned int i = 0; i < count; i++) 972 for (unsigned int i = 0; i < count; i++)
959 if (classValue[i] == klass && glyphs->has (startGlyph + i)) 973 if (classValue[i] == klass && glyphs->has (startGlyph + i))
960 return true; 974 return true;
961 return false; 975 return false;
962 } 976 }
963 977
964 protected: 978 protected:
965 USHORT classFormat; /* Format identifier--format = 1 */ 979 USHORT classFormat; /* Format identifier--format = 1 */
966 GlyphID startGlyph; /* First GlyphID of the classValueArray */ 980 GlyphID startGlyph; /* First GlyphID of the classValueArray */
967 ArrayOf<USHORT> 981 ArrayOf<USHORT>
(...skipping 23 matching lines...) Expand all
991 template <typename set_t> 1005 template <typename set_t>
992 inline void add_class (set_t *glyphs, unsigned int klass) const { 1006 inline void add_class (set_t *glyphs, unsigned int klass) const {
993 unsigned int count = rangeRecord.len; 1007 unsigned int count = rangeRecord.len;
994 for (unsigned int i = 0; i < count; i++) 1008 for (unsigned int i = 0; i < count; i++)
995 if (rangeRecord[i].value == klass) 1009 if (rangeRecord[i].value == klass)
996 rangeRecord[i].add_coverage (glyphs); 1010 rangeRecord[i].add_coverage (glyphs);
997 } 1011 }
998 1012
999 inline bool intersects_class (const hb_set_t *glyphs, unsigned int klass) cons t { 1013 inline bool intersects_class (const hb_set_t *glyphs, unsigned int klass) cons t {
1000 unsigned int count = rangeRecord.len; 1014 unsigned int count = rangeRecord.len;
1015 if (klass == 0)
1016 {
1017 /* Match if there's any glyph that is not listed! */
1018 hb_codepoint_t g = (hb_codepoint_t) -1;
1019 for (unsigned int i = 0; i < count; i++)
1020 {
1021 if (!hb_set_next (glyphs, &g))
1022 break;
1023 if (g < rangeRecord[i].start)
1024 return true;
1025 g = rangeRecord[i].end;
1026 }
1027 if (g != (hb_codepoint_t) -1 && hb_set_next (glyphs, &g))
1028 return true;
1029 /* Fall through. */
1030 }
1001 for (unsigned int i = 0; i < count; i++) 1031 for (unsigned int i = 0; i < count; i++)
1002 if (rangeRecord[i].value == klass && rangeRecord[i].intersects (glyphs)) 1032 if (rangeRecord[i].value == klass && rangeRecord[i].intersects (glyphs))
1003 return true; 1033 return true;
1004 return false; 1034 return false;
1005 } 1035 }
1006 1036
1007 protected: 1037 protected:
1008 USHORT classFormat; /* Format identifier--format = 2 */ 1038 USHORT classFormat; /* Format identifier--format = 2 */
1009 SortedArrayOf<RangeRecord> 1039 SortedArrayOf<RangeRecord>
1010 rangeRecord; /* Array of glyph ranges--ordered by 1040 rangeRecord; /* Array of glyph ranges--ordered by
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1075 { return get_delta (font->y_ppem, font->y_scale); } 1105 { return get_delta (font->y_ppem, font->y_scale); }
1076 1106
1077 inline int get_delta (unsigned int ppem, int scale) const 1107 inline int get_delta (unsigned int ppem, int scale) const
1078 { 1108 {
1079 if (!ppem) return 0; 1109 if (!ppem) return 0;
1080 1110
1081 int pixels = get_delta_pixels (ppem); 1111 int pixels = get_delta_pixels (ppem);
1082 1112
1083 if (!pixels) return 0; 1113 if (!pixels) return 0;
1084 1114
1085 return pixels * (int64_t) scale / ppem; 1115 return (int) (pixels * (int64_t) scale / ppem);
1086 } 1116 }
1087 1117
1088 1118
1089 inline int get_delta_pixels (unsigned int ppem_size) const 1119 inline int get_delta_pixels (unsigned int ppem_size) const
1090 { 1120 {
1091 unsigned int f = deltaFormat; 1121 unsigned int f = deltaFormat;
1092 if (unlikely (f < 1 || f > 3)) 1122 if (unlikely (f < 1 || f > 3))
1093 return 0; 1123 return 0;
1094 1124
1095 if (ppem_size < startSize || ppem_size > endSize) 1125 if (ppem_size < startSize || ppem_size > endSize)
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 USHORT deltaValue[VAR]; /* Array of compressed data */ 1162 USHORT deltaValue[VAR]; /* Array of compressed data */
1133 public: 1163 public:
1134 DEFINE_SIZE_ARRAY (6, deltaValue); 1164 DEFINE_SIZE_ARRAY (6, deltaValue);
1135 }; 1165 };
1136 1166
1137 1167
1138 } /* namespace OT */ 1168 } /* namespace OT */
1139 1169
1140 1170
1141 #endif /* HB_OT_LAYOUT_COMMON_PRIVATE_HH */ 1171 #endif /* HB_OT_LAYOUT_COMMON_PRIVATE_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-gdef-table.hh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698