Diff for /Amaya/amaya/styleparser.c between versions 1.280 and 1.281

version 1.280, 2004/09/08 11:02:52 version 1.281, 2004/09/23 14:13:46
Line 1363  static char *ParseCSSDisplay (Element el Line 1363  static char *ParseCSSDisplay (Element el
     pval.typed_data.value = ListItem;      pval.typed_data.value = ListItem;
   else if (!strncasecmp (cssRule, "run-in", 6))    else if (!strncasecmp (cssRule, "run-in", 6))
     pval.typed_data.value = RunIn;      pval.typed_data.value = RunIn;
   else if (!strncasecmp (cssRule, "compact", 7))    else if (!strncasecmp (cssRule, "inline-block", 12))
     pval.typed_data.value = Compact;      pval.typed_data.value = InlineBlock;
   else if (!strncasecmp (cssRule, "marker", 6))  
     pval.typed_data.value = Marker;  
   else    else
     {      {
       if (strncasecmp (cssRule, "table-row-group", 15) &&        if (strncasecmp (cssRule, "table-row-group", 15) &&
Line 1380  static char *ParseCSSDisplay (Element el Line 1378  static char *ParseCSSDisplay (Element el
           strncasecmp (cssRule, "table", 5) &&            strncasecmp (cssRule, "table", 5) &&
           strncasecmp (cssRule, "inherit", 7))            strncasecmp (cssRule, "inherit", 7))
         cssRule = SkipValue ("Invalid display value", cssRule);          cssRule = SkipValue ("Invalid display value", cssRule);
       cssRule = SkipWord (cssRule);        else
           cssRule = SkipWord (cssRule);
       return (cssRule);        return (cssRule);
     }      }
   
Line 1413  static char *ParseCSSListStyleType (Elem Line 1412  static char *ParseCSSListStyleType (Elem
                                     PresentationContext context, char *cssRule,                                      PresentationContext context, char *cssRule,
                                     CSSInfoPtr css, ThotBool isHTML)                                      CSSInfoPtr css, ThotBool isHTML)
 {  {
   cssRule = SkipValue (NULL, cssRule);    PresentationValue   pval;
   
     pval.typed_data.unit = UNIT_REL;
     pval.typed_data.real = FALSE;
     cssRule = SkipBlanksAndComments (cssRule);
     if (!strncasecmp (cssRule, "disc", 4))
       pval.typed_data.value = Disc;
     else if (!strncasecmp (cssRule, "circle", 6))
       pval.typed_data.value = Circle;
     else if (!strncasecmp (cssRule, "square", 6))
       pval.typed_data.value = Square;
     else if (!strncasecmp (cssRule, "decimal", 7))
       pval.typed_data.value = Decimal;
     else if (!strncasecmp (cssRule, "decimal-leading-zero", 20))
       pval.typed_data.value = DecimalLeadingZero;
     else if (!strncasecmp (cssRule, "lower-roman", 11))
       pval.typed_data.value = LowerRoman;
     else if (!strncasecmp (cssRule, "upper-roman", 11))
       pval.typed_data.value = UpperRoman;
     else if (!strncasecmp (cssRule, "lower-greek", 11))
       pval.typed_data.value = LowerGreek;
     else if (!strncasecmp (cssRule, "lower-latin", 11))
       pval.typed_data.value = LowerLatin;
     else if (!strncasecmp (cssRule, "lower-alpha", 11))
       pval.typed_data.value = LowerLatin;
     else if (!strncasecmp (cssRule, "upper-latin", 11))
       pval.typed_data.value = UpperLatin;
     else if (!strncasecmp (cssRule, "upper-alpha", 11))
       pval.typed_data.value = UpperLatin;
     else if (!strncasecmp (cssRule, "armenian", 8))
       pval.typed_data.value = Decimal;
     else if (!strncasecmp (cssRule, "georgian", 8))
       pval.typed_data.value = Decimal;
     else if (!strncasecmp (cssRule, "none", 4))
       pval.typed_data.value = ListStyleTypeNone;
     else if (!strncasecmp (cssRule, "inherit", 7))
       /* not supported */
       {
         cssRule = SkipWord (cssRule);
         return (cssRule);
       }
     else
       {
         cssRule = SkipValue ("Invalid list-style-type value", cssRule);
         return (cssRule);
       }
   
     if (DoApply)
       {
         cssRule = CheckImportantRule (cssRule, context);
         TtaSetStylePresentation (PRListStyleType, element, tsch, context, pval);
       } 
     cssRule = SkipWord (cssRule);
   return (cssRule);    return (cssRule);
 }  }
   
 /*----------------------------------------------------------------------  /*----------------------------------------------------------------------
     ParseCSSUrl: parse an URL
     ----------------------------------------------------------------------*/
   static char *ParseCSSUrl (char *cssRule, char **url)
   {
     char                       saved;
     char                      *base, *ptr;
   
     cssRule = SkipBlanksAndComments (cssRule);
     saved = *cssRule;
     if (*cssRule == '(')
       {
         cssRule++;
         cssRule = SkipBlanksAndComments (cssRule);
         /*** Escaped quotes are not handled. See function SkipQuotedString */
         if (*cssRule == '"')
           {
             cssRule++;
             base = cssRule;
             while (*cssRule != EOS && *cssRule != '"')
               cssRule++;
           }
         else if (*cssRule == '\'')
           {
             cssRule++;
             base = cssRule;
             while (*cssRule != EOS && *cssRule != '\'')
               cssRule++;
           }
         else
           {
             base = cssRule;
             while (*cssRule != EOS && *cssRule != ')')
               cssRule++;
           }
         /* keep the current position */
         ptr = cssRule;
         if (saved == ')')
           {
             /* remove extra spaces */
             if (cssRule[-1] == SPACE)
               {
                 *cssRule = SPACE;
                 cssRule--;
                 while (cssRule[-1] == SPACE)
                   cssRule--;
               }
           }
         saved = *cssRule;
         *cssRule = EOS;
         *url = TtaStrdup (base);
         *cssRule = saved;
         if (saved == '"' || saved == '\'')
           /* we need to skip the quote character and possible spaces */
           {
             cssRule++;
             cssRule = SkipBlanksAndComments (cssRule);
           }
         else
           cssRule = ptr;
       }
     cssRule++;
     return cssRule;
   }
   
   /*----------------------------------------------------------------------
    ParseCSSListStyleImage: parse a CSS list-style-image     ParseCSSListStyleImage: parse a CSS list-style-image
    attribute string.                                               attribute string.                                          
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 static char *ParseCSSListStyleImage (Element element, PSchema tsch,  static char *ParseCSSListStyleImage (Element element, PSchema tsch,
                                      PresentationContext context, char *cssRule,                                       PresentationContext ctxt,
                                      CSSInfoPtr css, ThotBool isHTML)                                       char *cssRule, CSSInfoPtr css,
                                        ThotBool isHTML)
 {  {
   cssRule = SkipValue (NULL, cssRule);    char                      *url;
   
     url = NULL;
     cssRule = SkipBlanksAndComments (cssRule);
     if (!strncasecmp (cssRule, "none", 4))
       {
         cssRule += 4;
         cssRule = CheckImportantRule (cssRule, ctxt);
         /* @@@@@@@@@@@@@ */
       }
     else if (!strncasecmp (cssRule, "url", 3))
       {  
         cssRule += 3;
         cssRule = ParseCSSUrl (cssRule, &url);
         /* @@@@@@@@@@@@@ */
       }
     else if (!strncasecmp (cssRule, "inherit", 7))
       /* not implemented */
       cssRule = SkipWord (cssRule);
     else
       cssRule = SkipValue ("Invalid list-style-image value", cssRule);
   
   return (cssRule);    return (cssRule);
 }  }
   
Line 1438  static char *ParseCSSListStylePosition ( Line 1576  static char *ParseCSSListStylePosition (
                                         char *cssRule, CSSInfoPtr css,                                          char *cssRule, CSSInfoPtr css,
                                         ThotBool isHTML)                                          ThotBool isHTML)
 {  {
   cssRule = SkipValue (NULL, cssRule);    PresentationValue   pval;
   
     pval.typed_data.unit = UNIT_REL;
     pval.typed_data.real = FALSE;
     cssRule = SkipBlanksAndComments (cssRule);
     if (!strncasecmp (cssRule, "inside", 6))
       pval.typed_data.value = Inside;
     else if (!strncasecmp (cssRule, "outside", 7))
       pval.typed_data.value = Outside;
     else
       {
         if (!strncasecmp (cssRule, "inherit", 7))
           /* not implemented */
           cssRule = SkipWord (cssRule);
         else
           cssRule = SkipValue ("Invalid list-style-position value", cssRule);
         return (cssRule);
       }
     if (DoApply)
       {
         cssRule = CheckImportantRule (cssRule, context);
         TtaSetStylePresentation (PRListStylePosition, element, tsch, context,
                                  pval);
       }
   
     cssRule = SkipWord (cssRule);
   return (cssRule);    return (cssRule);
 }  }
   
 /*----------------------------------------------------------------------  /*----------------------------------------------------------------------
    ParseCSSListStyle: parse a CSS list-style                 ParseCSSListStyle: parse a CSS list-style value string.                                          
    attribute string.                                            
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 static char *ParseCSSListStyle (Element element, PSchema tsch,  static char *ParseCSSListStyle (Element element, PSchema tsch,
                                 PresentationContext context, char *cssRule,                                  PresentationContext ctxt, char *cssRule,
                                 CSSInfoPtr css, ThotBool isHTML)                                  CSSInfoPtr css, ThotBool isHTML)
 {  {
   cssRule = SkipValue (NULL, cssRule);    char     *ptr;
     int   skippedNL;
   
     cssRule = SkipBlanksAndComments (cssRule);
     while (*cssRule != ';' && *cssRule != EOS && *cssRule != ',')
       {
         /* perhaps a list-style-image */
         if (!strncasecmp (cssRule, "url", 3))
           cssRule = ParseCSSListStyleImage (element, tsch, ctxt, cssRule, css,
                                             isHTML);
         /* perhaps a list-style-position */
         else if (!strncasecmp (cssRule, "inside", 6) ||
                  !strncasecmp (cssRule, "outside", 7))
           cssRule = ParseCSSListStylePosition (element, tsch, ctxt, cssRule,
                                                css, isHTML);
         /* perhaps a list-style-type */
         else if (!strncasecmp (cssRule, "disc", 4) ||
                  !strncasecmp (cssRule, "circle", 6) ||
                  !strncasecmp (cssRule, "square", 6) ||
                  !strncasecmp (cssRule, "decimal", 7) ||
                  !strncasecmp (cssRule, "decimal-leading-zero", 20) ||
                  !strncasecmp (cssRule, "lower-roman", 11) ||
                  !strncasecmp (cssRule, "upper-roman", 11) ||
                  !strncasecmp (cssRule, "lower-greek", 11) ||
                  !strncasecmp (cssRule, "lower-latin", 11) ||
                  !strncasecmp (cssRule, "lower-alpha", 11) ||
                  !strncasecmp (cssRule, "upper-latin", 11) ||
                  !strncasecmp (cssRule, "upper-alpha", 11) ||
                  !strncasecmp (cssRule, "armenian", 8) ||
                  !strncasecmp (cssRule, "georgian", 8) ||
                  !strncasecmp (cssRule, "none", 4) ||
                  !strncasecmp (cssRule, "inherit", 7))
           cssRule = ParseCSSListStyleType (element, tsch, ctxt, cssRule, css,
                                            isHTML);
         else
           {
             NewLineSkipped = skippedNL;
             /* rule not found */
             cssRule = SkipProperty (cssRule, FALSE);
           }
         cssRule = SkipBlanksAndComments (cssRule);
       }
   return (cssRule);    return (cssRule);
 }  }
   
Line 3151  static char *ParseCSSBackgroundColor (El Line 3354  static char *ParseCSSBackgroundColor (El
 }  }
   
 /*----------------------------------------------------------------------  /*----------------------------------------------------------------------
   ParseCSSUrl: parse an URL  
   ----------------------------------------------------------------------*/  
 static char *ParseCSSUrl (char *cssRule, char **url)  
 {  
   char                       saved;  
   char                      *base, *ptr;  
   
   cssRule = SkipBlanksAndComments (cssRule);  
   saved = *cssRule;  
   if (*cssRule == '(')  
     {  
       cssRule++;  
       cssRule = SkipBlanksAndComments (cssRule);  
       /*** Escaped quotes are not handled. See function SkipQuotedString */  
       if (*cssRule == '"')  
         {  
           cssRule++;  
           base = cssRule;  
           while (*cssRule != EOS && *cssRule != '"')  
             cssRule++;  
         }  
       else if (*cssRule == '\'')  
         {  
           cssRule++;  
           base = cssRule;  
           while (*cssRule != EOS && *cssRule != '\'')  
             cssRule++;  
         }  
       else  
         {  
           base = cssRule;  
           while (*cssRule != EOS && *cssRule != ')')  
             cssRule++;  
         }  
       /* keep the current position */  
       ptr = cssRule;  
       if (saved == ')')  
         {  
           /* remove extra spaces */  
           if (cssRule[-1] == SPACE)  
             {  
               *cssRule = SPACE;  
               cssRule--;  
               while (cssRule[-1] == SPACE)  
                 cssRule--;  
             }  
         }  
       saved = *cssRule;  
       *cssRule = EOS;  
       *url = TtaStrdup (base);  
       *cssRule = saved;  
       if (saved == '"' || saved == '\'')  
         /* we need to skip the quote character and possible spaces */  
         {  
           cssRule++;  
           cssRule = SkipBlanksAndComments (cssRule);  
         }  
       else  
         cssRule = ptr;  
     }  
   cssRule++;  
   return cssRule;  
 }  
   
 /*----------------------------------------------------------------------  
   ParseSVGStroke: parse a SVG stroke property    ParseSVGStroke: parse a SVG stroke property
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 static char *ParseSVGStroke (Element element, PSchema tsch,  static char *ParseSVGStroke (Element element, PSchema tsch,

Removed from v.1.280  
changed lines
  Added in v.1.281


Webmaster