[HB] A step closer to working ChainContext
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 18 May 2009 06:14:37 +0000 (02:14 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:11 +0000 (14:40 -0500)
src/hb-ot-layout-gsubgpos-private.h

index e82941e..0a7281d 100644 (file)
@@ -156,12 +156,14 @@ struct Rule {
 
   private:
   inline bool apply (LOOKUP_ARGS_DEF, ContextLookupContext &context) const {
-    const LookupRecord *record = (const LookupRecord *) ((const char *) input + sizeof (input[0]) * (inputCount ? inputCount - 1 : 0));
+    const LookupRecord *lookupRecord = (const LookupRecord *)
+                                      ((const char *) input +
+                                       sizeof (input[0]) * (inputCount ? inputCount - 1 : 0));
     return context_lookup (LOOKUP_ARGS,
                           inputCount,
                           input,
                           lookupCount,
-                          record,
+                          lookupRecord,
                           context);
   }
 
@@ -274,7 +276,9 @@ struct ContextFormat3 {
   private:
 
   inline bool apply_coverage (LOOKUP_ARGS_DEF, apply_lookup_func_t apply_func) const {
-    const LookupRecord *record = (const LookupRecord *) ((const char *) coverage + sizeof (coverage[0]) * glyphCount);
+    const LookupRecord *lookupRecord = (const LookupRecord *)
+                                      ((const char *) coverage +
+                                       sizeof (coverage[0]) * glyphCount);
     struct ContextLookupContext context = {
       {match_coverage, apply_func},
       (char *) this
@@ -283,7 +287,7 @@ struct ContextFormat3 {
                           glyphCount,
                           (const USHORT *) (coverage + 1),
                           lookupCount,
-                          record,
+                          lookupRecord,
                           context);
   }
 
@@ -346,14 +350,20 @@ struct ChainRule {
 
   private:
   inline bool apply (LOOKUP_ARGS_DEF, ChainContextLookupContext &context) const {
-    return false;
-//    const LookupRecord *record = (const LookupRecord *) ((const char *) input + sizeof (input[0]) * (inputCount ? inputCount - 1 : 0));
+    const HeadlessArrayOf<USHORT> &input = * (const HeadlessArrayOf<USHORT> *)
+                                            ((const char *) &backtrack + backtrack.get_size ());
+    const ArrayOf<USHORT> &lookahead = * (const ArrayOf<USHORT> *)
+                                        ((const char *) &input + input.get_size ());
+    const LookupRecord &lookupRecord = * (const LookupRecord *)
+                                        ((const char *) &lookahead + lookahead.get_size ());
+//    XXXXXXXXXXXXXXXXXX
 //    return context_lookup (LOOKUP_ARGS,
 //                        inputCount,
 //                        input,
 //                        lookupCount,
 //                        record,
 //                        context);
+    return false;
   }
 
 
@@ -482,12 +492,18 @@ struct ChainContextFormat3 {
   private:
 
   inline bool apply_coverage (LOOKUP_ARGS_DEF, apply_lookup_func_t apply_func) const {
-//    const LookupRecord *record = (const LookupRecord *) ((const char *) coverage + sizeof (coverage[0]) * glyphCount);
+    const OffsetArrayOf<Coverage> &input = * (const OffsetArrayOf<Coverage> *)
+                                            ((const char *) &backtrack + backtrack.get_size ());
+    const OffsetArrayOf<Coverage> &lookahead = * (const OffsetArrayOf<Coverage> *)
+                                        ((const char *) &input + input.get_size ());
+    const LookupRecord &lookupRecord = * (const LookupRecord *)
+                                        ((const char *) &lookahead + lookahead.get_size ());
     struct ChainContextLookupContext context = {
       {match_coverage, apply_func},
       {(char *) this, (char *) this, (char *) this}
     };
     /*
+     XXXXXXXXXXXXXXXXXXXXX
     return context_lookup (LOOKUP_ARGS,
                           glyphCount,
                           (const USHORT *) (coverage + 1),
@@ -511,15 +527,15 @@ struct ChainContextFormat3 {
   private:
   USHORT       format;                 /* Format identifier--format = 3 */
   OffsetArrayOf<Coverage>
-               backtrackCoverage;      /* Array of coverage tables
+               backtrack;              /* Array of coverage tables
                                         * in backtracking sequence, in  glyph
                                         * sequence order */
   OffsetArrayOf<Coverage>
-               inputCoverageX  ;       /* Array of coverage
+               inputX          ;       /* Array of coverage
                                         * tables in input sequence, in glyph
                                         * sequence order */
   OffsetArrayOf<Coverage>
-               lookaheadCoverageX;     /* Array of coverage tables
+               lookaheadX;             /* Array of coverage tables
                                         * in lookahead sequence, in glyph
                                         * sequence order */
   ArrayOf<LookupRecord>