Diff for /Amaya/amaya/styleparser.c between versions 1.244 and 1.245

version 1.244, 2003/11/05 10:40:37 version 1.245, 2003/11/06 15:46:17
Line 2933  static char *ParseCSSBackgroundColor (El Line 2933  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,
Line 2940  static char *ParseSVGStroke (Element ele Line 3005  static char *ParseSVGStroke (Element ele
                              CSSInfoPtr css, ThotBool isHTML)                               CSSInfoPtr css, ThotBool isHTML)
 {  {
   PresentationValue     best;    PresentationValue     best;
     char                  *url;
   
   best.typed_data.unit = UNIT_INVALID;    best.typed_data.unit = UNIT_INVALID;
   best.typed_data.real = FALSE;    best.typed_data.real = FALSE;
Line 2955  static char *ParseSVGStroke (Element ele Line 3021  static char *ParseSVGStroke (Element ele
         }          }
       cssRule = SkipWord (cssRule);        cssRule = SkipWord (cssRule);
     }      }
     else if (!strncasecmp (cssRule, "currentColor", 12))
       {
         /* **** do something here to inherit color */;
       }
     else if (!strncasecmp (cssRule, "url", 3))
       {  
         cssRule += 3;
         cssRule = ParseCSSUrl (cssRule, &url);
         /* **** do something with the url ***** */;
         TtaFreeMemory (url);
         /* **** caution: another color value may follow the uri (in case
            the uri could ne be dereferenced) *** */
       }
   else    else
     {      {
       cssRule = ParseCSSColor (cssRule, &best);        cssRule = ParseCSSColor (cssRule, &best);
Line 2977  static char *ParseSVGFill (Element eleme Line 3056  static char *ParseSVGFill (Element eleme
                            CSSInfoPtr css, ThotBool isHTML)                             CSSInfoPtr css, ThotBool isHTML)
 {  {
   PresentationValue     best;    PresentationValue     best;
     char                  *url;
   
   best.typed_data.unit = UNIT_INVALID;    best.typed_data.unit = UNIT_INVALID;
   best.typed_data.real = FALSE;    best.typed_data.real = FALSE;
Line 2992  static char *ParseSVGFill (Element eleme Line 3072  static char *ParseSVGFill (Element eleme
         }          }
       cssRule = SkipWord (cssRule);        cssRule = SkipWord (cssRule);
     }      }
     else if (!strncasecmp (cssRule, "currentColor", 12))
       {
         /* **** do something here to inherit color */;
       }
     else if (!strncasecmp (cssRule, "url", 3))
       {  
         cssRule += 3;
         cssRule = ParseCSSUrl (cssRule, &url);
         /* **** do something with the url ***** */;
         TtaFreeMemory (url);
         /* **** caution: another color value may follow the uri (in case
            the uri could ne be dereferenced) *** */
       }
   else    else
     {      {
       cssRule = ParseCSSColor (cssRule, &best);        cssRule = ParseCSSColor (cssRule, &best);
Line 3178  void ParseCSSBackgroundImageCallback (Do Line 3271  void ParseCSSBackgroundImageCallback (Do
 }  }
   
 /*----------------------------------------------------------------------  /*----------------------------------------------------------------------
   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;  
 }  
   
 /*----------------------------------------------------------------------  
    GetCSSBackgroundURL searches a CSS BackgroundImage url within     GetCSSBackgroundURL searches a CSS BackgroundImage url within
    the cssRule.     the cssRule.
    Returns NULL or a new allocated url string.     Returns NULL or a new allocated url string.

Removed from v.1.244  
changed lines
  Added in v.1.245


Webmaster