From b2413c6722f9464d456a07edff59278a5dee3903 Mon Sep 17 00:00:00 2001 From: "peterl%netscape.com" Date: Thu, 10 Sep 1998 01:16:25 +0000 Subject: [PATCH] sync css declaration to xif with new api git-svn-id: svn://10.0.0.236/trunk@9701 18797224-902f-48f8-a5cc-f745e15eee43 --- .../html/document/src/nsMarkupDocument.cpp | 66 +++++++++---------- .../html/document/src/nsMarkupDocument.cpp | 66 +++++++++---------- 2 files changed, 60 insertions(+), 72 deletions(-) diff --git a/mozilla/content/html/document/src/nsMarkupDocument.cpp b/mozilla/content/html/document/src/nsMarkupDocument.cpp index 653a883d7b6..92bfe3f1acf 100644 --- a/mozilla/content/html/document/src/nsMarkupDocument.cpp +++ b/mozilla/content/html/document/src/nsMarkupDocument.cpp @@ -100,46 +100,40 @@ void nsMarkupDocument::CSSSelectorToXIF(nsXIFConverter& aConverter, nsCSSSelecto */ void nsMarkupDocument::CSSDeclarationToXIF(nsXIFConverter& aConverter, nsICSSDeclaration& aDeclaration) { - PRInt32 propId; - nsCSSValue value; - nsString name; - nsString str; - - + nsAutoString list; + nsAutoString decl; aConverter.BeginCSSDeclarationList(); - for (propId = 0; propId < PROP_MAX; propId++) - { - switch(propId) - { - case PROP_BACKGROUND: - case PROP_BORDER: - case PROP_CLIP: - case PROP_FONT: - case PROP_LIST_STYLE: - case PROP_MARGIN: - case PROP_PADDING: - case PROP_BACKGROUND_POSITION: - case PROP_BORDER_TOP: - case PROP_BORDER_RIGHT: - case PROP_BORDER_BOTTOM: - case PROP_BORDER_LEFT: - case PROP_BORDER_COLOR: - case PROP_BORDER_STYLE: - case PROP_BORDER_WIDTH: - break; + aDeclaration.ToString(list); - default: - aDeclaration.GetValue(propId,value); - if (value.GetUnit() != eHTMLUnit_Null) - { - aConverter.BeginCSSDeclaration(); - name = nsCSSProps::kNameTable[propId].name; - value.ToCSSString(str,propId); - aConverter.AddCSSDeclaration(name,str); - aConverter.EndCSSDeclaration(); - } + PRInt32 start = 0; + PRInt32 semiColon = list.Find(';'); + + while (-1 < semiColon) { + decl.Truncate(); + list.Mid(decl, start, semiColon - start); + + if (0 == decl.Compare("/*", PR_FALSE, 2)) { + // XXX need to append comment } + else { + PRInt32 colon = decl.Find(':'); + nsAutoString property; + nsAutoString value; + + aConverter.BeginCSSDeclaration(); + if (-1 < colon) { + decl.Left(property, colon); + property.StripWhitespace(); + decl.Right(value, (decl.Length() - colon) - 2); + aConverter.AddCSSDeclaration(property, value); + } + + aConverter.EndCSSDeclaration(); + } + + start = ++semiColon; + semiColon = list.Find(';', start); } aConverter.EndCSSDeclarationList(); } diff --git a/mozilla/layout/html/document/src/nsMarkupDocument.cpp b/mozilla/layout/html/document/src/nsMarkupDocument.cpp index 653a883d7b6..92bfe3f1acf 100644 --- a/mozilla/layout/html/document/src/nsMarkupDocument.cpp +++ b/mozilla/layout/html/document/src/nsMarkupDocument.cpp @@ -100,46 +100,40 @@ void nsMarkupDocument::CSSSelectorToXIF(nsXIFConverter& aConverter, nsCSSSelecto */ void nsMarkupDocument::CSSDeclarationToXIF(nsXIFConverter& aConverter, nsICSSDeclaration& aDeclaration) { - PRInt32 propId; - nsCSSValue value; - nsString name; - nsString str; - - + nsAutoString list; + nsAutoString decl; aConverter.BeginCSSDeclarationList(); - for (propId = 0; propId < PROP_MAX; propId++) - { - switch(propId) - { - case PROP_BACKGROUND: - case PROP_BORDER: - case PROP_CLIP: - case PROP_FONT: - case PROP_LIST_STYLE: - case PROP_MARGIN: - case PROP_PADDING: - case PROP_BACKGROUND_POSITION: - case PROP_BORDER_TOP: - case PROP_BORDER_RIGHT: - case PROP_BORDER_BOTTOM: - case PROP_BORDER_LEFT: - case PROP_BORDER_COLOR: - case PROP_BORDER_STYLE: - case PROP_BORDER_WIDTH: - break; + aDeclaration.ToString(list); - default: - aDeclaration.GetValue(propId,value); - if (value.GetUnit() != eHTMLUnit_Null) - { - aConverter.BeginCSSDeclaration(); - name = nsCSSProps::kNameTable[propId].name; - value.ToCSSString(str,propId); - aConverter.AddCSSDeclaration(name,str); - aConverter.EndCSSDeclaration(); - } + PRInt32 start = 0; + PRInt32 semiColon = list.Find(';'); + + while (-1 < semiColon) { + decl.Truncate(); + list.Mid(decl, start, semiColon - start); + + if (0 == decl.Compare("/*", PR_FALSE, 2)) { + // XXX need to append comment } + else { + PRInt32 colon = decl.Find(':'); + nsAutoString property; + nsAutoString value; + + aConverter.BeginCSSDeclaration(); + if (-1 < colon) { + decl.Left(property, colon); + property.StripWhitespace(); + decl.Right(value, (decl.Length() - colon) - 2); + aConverter.AddCSSDeclaration(property, value); + } + + aConverter.EndCSSDeclaration(); + } + + start = ++semiColon; + semiColon = list.Find(';', start); } aConverter.EndCSSDeclarationList(); }