version 1.361, 2006/05/23 07:43:46
|
version 1.362, 2006/06/09 15:16:08
|
Line 4457 static char *ParseACSSBackgroundRepeat (
|
Line 4457 static char *ParseACSSBackgroundRepeat (
|
/* check if it's an important rule */ |
/* check if it's an important rule */ |
if (DoApply) |
if (DoApply) |
/* install the new presentation */ |
/* install the new presentation */ |
TtaSetStylePresentation (PRPictureMode, element, tsch, ctxt, repeat); |
TtaSetStylePresentation (PRBackgroundRepeat, element, tsch, ctxt, repeat); |
return (cssRule); |
return (cssRule); |
} |
} |
|
|
Line 4497 static char *ParseACSSBackgroundAttachme
|
Line 4497 static char *ParseACSSBackgroundAttachme
|
{ |
{ |
cssRule = SkipWord (cssRule); |
cssRule = SkipWord (cssRule); |
} |
} |
|
else if (!strncasecmp (cssRule, "inherit", 7)) |
|
{ |
|
cssRule = SkipWord (cssRule); |
|
} |
return (cssRule); |
return (cssRule); |
} |
} |
|
|
Line 4515 static char *ParseCSSBackgroundAttachmen
|
Line 4519 static char *ParseCSSBackgroundAttachmen
|
cssRule = ParseACSSBackgroundAttachment (element, tsch, ctxt, |
cssRule = ParseACSSBackgroundAttachment (element, tsch, ctxt, |
cssRule, css, isHTML); |
cssRule, css, isHTML); |
if (ptr == cssRule) |
if (ptr == cssRule) |
{ |
cssRule = SkipValue ("Invalid background-attachement value", cssRule); |
cssRule = SkipValue ("Invalid background-attachement value", cssRule); |
|
} |
|
return cssRule; |
return cssRule; |
} |
} |
|
|
Line 4528 static char *ParseCSSBackgroundAttachmen
|
Line 4530 static char *ParseCSSBackgroundAttachmen
|
static char *ParseACSSBackgroundPosition (Element element, PSchema tsch, |
static char *ParseACSSBackgroundPosition (Element element, PSchema tsch, |
PresentationContext ctxt, |
PresentationContext ctxt, |
char *cssRule, CSSInfoPtr css, |
char *cssRule, CSSInfoPtr css, |
ThotBool isHTML) |
ThotBool isHTML, ThotBool *across) |
{ |
{ |
ThotBool ok; |
PresentationValue val; |
|
char *ptr; |
|
|
cssRule = SkipBlanksAndComments (cssRule); |
cssRule = SkipBlanksAndComments (cssRule); |
ok = TRUE; |
ptr = cssRule; |
|
val.typed_data.value = 0; |
|
val.typed_data.real = FALSE; |
|
val.typed_data.unit = UNIT_INVALID; |
if (!strncasecmp (cssRule, "left", 4)) |
if (!strncasecmp (cssRule, "left", 4)) |
cssRule = SkipWord (cssRule); |
{ |
|
val.typed_data.value = 0; |
|
val.typed_data.unit = UNIT_PERCENT; |
|
cssRule += 4; |
|
*across = TRUE; |
|
} |
else if (!strncasecmp (cssRule, "right", 5)) |
else if (!strncasecmp (cssRule, "right", 5)) |
cssRule = SkipWord (cssRule); |
{ |
|
val.typed_data.value = 100; |
|
val.typed_data.unit = UNIT_PERCENT; |
|
cssRule += 5; |
|
*across = TRUE; |
|
} |
else if (!strncasecmp (cssRule, "center", 6)) |
else if (!strncasecmp (cssRule, "center", 6)) |
cssRule = SkipWord (cssRule); |
{ |
|
val.typed_data.value = 50; |
|
val.typed_data.unit = UNIT_PERCENT; |
|
cssRule += 6; |
|
} |
else if (!strncasecmp (cssRule, "top", 3)) |
else if (!strncasecmp (cssRule, "top", 3)) |
cssRule = SkipWord (cssRule); |
{ |
|
val.typed_data.value = 0; |
|
val.typed_data.unit = UNIT_PERCENT; |
|
cssRule += 3; |
|
*across = FALSE; |
|
} |
else if (!strncasecmp (cssRule, "bottom", 6)) |
else if (!strncasecmp (cssRule, "bottom", 6)) |
cssRule = SkipWord (cssRule); |
|
else if (isdigit (*cssRule) || *cssRule == '.' || *cssRule == '-') |
|
{ |
{ |
while (*cssRule != EOS && *cssRule != SPACE && |
val.typed_data.value = 100; |
*cssRule != ',' && *cssRule != ';') |
val.typed_data.unit = UNIT_PERCENT; |
cssRule++; |
cssRule += 6; |
|
*across = FALSE; |
|
} |
|
else if (!strncasecmp (cssRule, "inherit", 7)) |
|
{ |
|
val.typed_data.unit = VALUE_INHERIT; |
|
cssRule += 7; |
} |
} |
else |
else |
ok = FALSE; |
/* <length> or <percentage> */ |
|
{ |
|
cssRule = ParseCSSUnit (cssRule, &val); |
|
if (val.typed_data.unit == UNIT_BOX && val.typed_data.value == 0) |
|
/* 0 with no unit. Accept */ |
|
val.typed_data.unit = UNIT_PERCENT; |
|
} |
|
|
cssRule = SkipBlanksAndComments (cssRule); |
if (val.typed_data.unit != UNIT_INVALID && |
|
val.typed_data.unit != UNIT_BOX) |
|
{ |
|
if (DoApply) |
|
/* install the new presentation */ |
|
{ |
|
if (val.typed_data.unit == VALUE_INHERIT) |
|
/* "inherit" applies to both dimensions */ |
|
{ |
|
TtaSetStylePresentation (PRBackgroundHorizPos, element, tsch, |
|
ctxt, val); |
|
TtaSetStylePresentation (PRBackgroundVertPos, element, tsch, |
|
ctxt, val); |
|
} |
|
else if (*across) |
|
TtaSetStylePresentation (PRBackgroundHorizPos, element, tsch, |
|
ctxt, val); |
|
else |
|
TtaSetStylePresentation (PRBackgroundVertPos, element, tsch, |
|
ctxt, val); |
|
} |
|
} |
return (cssRule); |
return (cssRule); |
} |
} |
|
|
Line 4567 static char *ParseCSSBackgroundPosition
|
Line 4623 static char *ParseCSSBackgroundPosition
|
ThotBool isHTML) |
ThotBool isHTML) |
{ |
{ |
char *ptr; |
char *ptr; |
|
ThotBool across; |
|
|
ptr = cssRule; |
ptr = cssRule; |
cssRule = ParseACSSBackgroundPosition (element, tsch, ctxt, |
across = TRUE; |
cssRule, css, isHTML); |
cssRule = ParseACSSBackgroundPosition (element, tsch, ctxt, cssRule, css, |
|
isHTML, &across); |
if (ptr == cssRule) |
if (ptr == cssRule) |
cssRule = SkipValue ("Invalid background-position value", cssRule); |
cssRule = SkipValue ("Invalid background-position value", cssRule); |
else if (*cssRule != ';' && *cssRule != EOS) |
else |
{ |
{ |
/* possible second value */ |
cssRule = SkipBlanksAndComments (cssRule); |
ptr = cssRule; |
if (*cssRule != ';' && *cssRule != '!' && *cssRule != EOS) |
cssRule = ParseACSSBackgroundPosition (element, tsch, ctxt, |
{ |
cssRule, css, isHTML); |
/* possible second value */ |
if (ptr == cssRule) |
ptr = cssRule; |
cssRule = SkipValue ("Invalid background-position value", cssRule); |
across = !across; |
|
cssRule = ParseACSSBackgroundPosition (element, tsch, ctxt, cssRule, |
|
css, isHTML, &across); |
|
if (ptr == cssRule) |
|
cssRule = SkipValue ("Invalid background-position value", cssRule); |
|
} |
} |
} |
return (cssRule); |
return (cssRule); |
} |
} |
Line 4594 static char *ParseCSSBackground (Element
|
Line 4657 static char *ParseCSSBackground (Element
|
{ |
{ |
char *ptr; |
char *ptr; |
int skippedNL; |
int skippedNL; |
ThotBool img, repeat, position, attach, color; |
ThotBool img, repeat, position, attach, color, across; |
|
|
cssRule = SkipBlanksAndComments (cssRule); |
cssRule = SkipBlanksAndComments (cssRule); |
img = repeat = position = attach = color = FALSE; |
img = repeat = position = attach = color = FALSE; |
|
across = TRUE; |
while (*cssRule != ';' && *cssRule != '}' && *cssRule != EOS && *cssRule != ',') |
while (*cssRule != ';' && *cssRule != '}' && *cssRule != EOS && *cssRule != ',') |
{ |
{ |
/* perhaps a Background Image */ |
/* perhaps a Background Image */ |
Line 4635 static char *ParseCSSBackground (Element
|
Line 4699 static char *ParseCSSBackground (Element
|
!strncasecmp (cssRule, "bottom", 6) || |
!strncasecmp (cssRule, "bottom", 6) || |
isdigit (*cssRule) || *cssRule == '.' || *cssRule == '-') |
isdigit (*cssRule) || *cssRule == '.' || *cssRule == '-') |
{ |
{ |
cssRule = ParseACSSBackgroundPosition (element, tsch, ctxt, |
cssRule = ParseACSSBackgroundPosition (element, tsch, ctxt, cssRule, |
cssRule, css, isHTML); |
css, isHTML, &across); |
|
across = !across; |
position = repeat = TRUE; |
position = repeat = TRUE; |
} |
} |
/* perhaps a Background Color */ |
/* perhaps a Background Color */ |
Line 4670 static char *ParseCSSBackground (Element
|
Line 4735 static char *ParseCSSBackground (Element
|
"repeat", css, isHTML); |
"repeat", css, isHTML); |
if (img && !position) |
if (img && !position) |
ParseACSSBackgroundPosition (element, tsch, ctxt, |
ParseACSSBackgroundPosition (element, tsch, ctxt, |
"0% 0%", css, isHTML); |
"0% 0%", css, isHTML, &across); |
if (img && !attach) |
if (img && !attach) |
ParseACSSBackgroundAttachment (element, tsch, ctxt, |
ParseACSSBackgroundAttachment (element, tsch, ctxt, |
"scroll", css, isHTML); |
"scroll", css, isHTML); |