~ubuntu-branches/ubuntu/karmic/pango1.0/karmic-security

« back to all changes in this revision

Viewing changes to pango/pango-ot-ruleset.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2009-08-10 21:23:54 UTC
  • mfrom: (1.5.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090810212354-2mq9f0t90khvon6k
Tags: 1.25.1-0ubuntu1
New upstream version

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
#include "pango-ot-private.h"
25
25
#include "pango-impl-utils.h"
26
26
 
27
 
typedef struct _PangoOTRule PangoOTRule;
28
 
 
29
 
struct _PangoOTRule
30
 
{
31
 
  gulong     property_bit;
32
 
  HB_UShort  feature_index;
33
 
  guint      table_type : 1;
34
 
};
35
 
 
36
27
static void pango_ot_ruleset_class_init (GObjectClass   *object_class);
37
28
static void pango_ot_ruleset_init       (PangoOTRuleset *ruleset);
38
29
static void pango_ot_ruleset_finalize   (GObject        *object);
491
482
pango_ot_ruleset_substitute  (const PangoOTRuleset *ruleset,
492
483
                              PangoOTBuffer        *buffer)
493
484
{
494
 
  unsigned int i;
495
 
 
496
 
  HB_GSUB gsub = NULL;
497
 
 
498
485
  g_return_if_fail (PANGO_IS_OT_RULESET (ruleset));
499
486
  g_return_if_fail (ruleset->info != NULL);
500
487
 
501
 
  for (i = 0; i < ruleset->rules->len; i++)
502
 
    {
503
 
      PangoOTRule *rule = &g_array_index (ruleset->rules, PangoOTRule, i);
504
 
 
505
 
      if (rule->table_type != PANGO_OT_TABLE_GSUB)
506
 
        continue;
507
 
 
508
 
      if (!gsub)
509
 
        {
510
 
          gsub = pango_ot_info_get_gsub (ruleset->info);
511
 
 
512
 
          if (gsub)
513
 
            HB_GSUB_Clear_Features (gsub);
514
 
          else
515
 
            return;
516
 
        }
517
 
 
518
 
      HB_GSUB_Add_Feature (gsub, rule->feature_index, rule->property_bit);
519
 
    }
520
 
 
521
 
  HB_GSUB_Apply_String (gsub, buffer->buffer);
 
488
  _pango_ot_info_substitute (ruleset->info,
 
489
                             ruleset,
 
490
                             buffer);
522
491
}
523
492
 
524
493
/**
535
504
pango_ot_ruleset_position (const PangoOTRuleset *ruleset,
536
505
                           PangoOTBuffer        *buffer)
537
506
{
538
 
  unsigned int i;
539
 
 
540
 
  HB_GPOS gpos = NULL;
541
 
 
542
507
  g_return_if_fail (PANGO_IS_OT_RULESET (ruleset));
543
508
  g_return_if_fail (ruleset->info != NULL);
544
509
 
545
 
  for (i = 0; i < ruleset->rules->len; i++)
546
 
    {
547
 
      PangoOTRule *rule = &g_array_index (ruleset->rules, PangoOTRule, i);
548
 
 
549
 
      if (rule->table_type != PANGO_OT_TABLE_GPOS)
550
 
        continue;
551
 
 
552
 
      if (!gpos)
553
 
        {
554
 
          gpos = pango_ot_info_get_gpos (ruleset->info);
555
 
 
556
 
          if (gpos)
557
 
            HB_GPOS_Clear_Features (gpos);
558
 
          else
559
 
            return;
560
 
        }
561
 
 
562
 
      HB_GPOS_Add_Feature (gpos, rule->feature_index, rule->property_bit);
563
 
    }
564
 
 
565
 
  if (HB_GPOS_Apply_String (ruleset->info->face, gpos, 0, buffer->buffer,
566
 
                            FALSE /* enable device-dependant values */,
567
 
                            buffer->rtl) == HB_Err_Ok)
568
 
    buffer->applied_gpos = TRUE;
 
510
  _pango_ot_info_position   (ruleset->info,
 
511
                             ruleset,
 
512
                             buffer);
569
513
}
570
514
 
 
515
 
571
516
/* ruleset descriptions */
572
517
 
573
518
/**