public virtual void MediaExpressionTestTest03() { MediaExpression orientation = new MediaExpression("orientation", "landscape"); MediaExpression resolution = new MediaExpression("resolution", "150dpi"); MediaExpression grid = new MediaExpression("grid", "0"); MediaExpression colorIndex = new MediaExpression("max-color-index", "15000"); MediaExpression monochrome = new MediaExpression("monochrome", "0"); MediaExpression scan = new MediaExpression("scan", "interlace"); MediaExpression color = new MediaExpression("color", "15000"); MediaExpression minAspectRatio = new MediaExpression("max-aspect-ratio", "8/5"); MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); deviceDescription.SetOrientation("landscape"); deviceDescription.SetResolution(150); deviceDescription.SetGrid(false); deviceDescription.SetColorIndex(15000); deviceDescription.SetMonochrome(0); deviceDescription.SetScan("interlace"); deviceDescription.SetBitsPerComponent(15000); deviceDescription.SetWidth(32); deviceDescription.SetHeight(20); NUnit.Framework.Assert.IsTrue(resolution.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(orientation.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(grid.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(colorIndex.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(monochrome.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(scan.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(color.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(minAspectRatio.Matches(deviceDescription)); }
public virtual void Test06() { String htmlFileName = sourceFolder + "html06.html"; String cssFileName = sourceFolder + "css06.css"; IXmlParser htmlParser = new JsoupHtmlParser(); IDocumentNode document = htmlParser.Parse(new FileStream(htmlFileName, FileMode.Open, FileAccess.Read), "UTF-8" ); CssStyleSheet css = CssStyleSheetParser.Parse(new FileStream(cssFileName, FileMode.Open, FileAccess.Read)); IElementNode element = new JsoupElementNode(((JsoupDocumentNode)document).GetDocument().GetElementsByTag("p" ).First()); MediaDeviceDescription deviceDescription1 = new MediaDeviceDescription(MediaType.PRINT).SetBitsPerComponent (2); MediaDeviceDescription deviceDescription2 = new MediaDeviceDescription(MediaType.HANDHELD).SetBitsPerComponent (2); MediaDeviceDescription deviceDescription3 = new MediaDeviceDescription(MediaType.SCREEN).SetBitsPerComponent (1); IList <CssDeclaration> declarations1 = css.GetCssDeclarations(element, deviceDescription1); IList <CssDeclaration> declarations2 = css.GetCssDeclarations(element, deviceDescription2); IList <CssDeclaration> declarations3 = css.GetCssDeclarations(element, deviceDescription3); NUnit.Framework.Assert.IsTrue(Enumerable.SequenceEqual(declarations1, declarations2)); NUnit.Framework.Assert.AreEqual(0, declarations3.Count); NUnit.Framework.Assert.AreEqual(1, declarations1.Count); NUnit.Framework.Assert.AreEqual("color: red", declarations1[0].ToString()); }
public virtual void MediaExpressionTestTest06() { MediaExpression minColorIndex = new MediaExpression("min-color-index", null); MediaExpression minColor = new MediaExpression("min-color", null); MediaExpression colorIndex = new MediaExpression("color-index", "1500"); MediaExpression minMonochrome = new MediaExpression("min-monochrome", "0"); MediaExpression resolution = new MediaExpression("resolution", "150dpi"); MediaExpression defaultExpression = new MediaExpression("none", "none"); MediaExpression aspectRatio = new MediaExpression("aspect-ratio", "8/8"); MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); deviceDescription.SetColorIndex(15000); deviceDescription.SetBitsPerComponent(8); deviceDescription.SetMonochrome(0); deviceDescription.SetWidth(1.99999999f); deviceDescription.SetHeight(2.00000000f); deviceDescription.SetColorIndex(15000); NUnit.Framework.Assert.IsTrue(aspectRatio.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(minMonochrome.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(minColorIndex.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(minColor.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(resolution.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(defaultExpression.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(colorIndex.Matches(deviceDescription)); }
public virtual void GetCssRuleSetsTest() { MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); String html = "<a id=\"123\" class=\"baz = 'bar'\" style = media= all and (min-width: 600px) />"; IDocumentNode node = new JsoupHtmlParser().Parse(html); IList <CssRuleSet> ruleSets = new CssMediaRule("only all and (min-width: 600px) and (min-height: 600px)").GetCssRuleSets (node, deviceDescription); NUnit.Framework.Assert.IsNotNull(ruleSets); }
public virtual void MatchMediaDeviceTest() { MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); deviceDescription.SetHeight(450); deviceDescription.SetWidth(600); CssMediaRule rule = new CssMediaRule("@media all and (min-width: 600px) and (min-height: 600px)"); NUnit.Framework.Assert.IsTrue(rule.MatchMediaDevice(deviceDescription)); }
public virtual void MatchTest() { MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); MediaQuery query = MediaQueryParser.ParseMediaQuery("not all and (min-width: 600px)"); IList <MediaQuery> queries = MediaQueryParser.ParseMediaQueries("not all and (min-width: 600px), not all and (min-width: 500px)" ); NUnit.Framework.Assert.IsTrue(query.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(queries[0].Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(queries[1].Matches(deviceDescription)); }
/// <summary>Tries to match a media device.</summary> /// <param name="deviceDescription">the device description</param> /// <returns>true, if successful</returns> public virtual bool MatchMediaDevice(MediaDeviceDescription deviceDescription) { foreach (MediaQuery mediaQuery in mediaQueries) { if (mediaQuery.Matches(deviceDescription)) { return(true); } } return(false); }
public virtual void MediaExpressionTestTest02() { MediaExpression maxWidth = new MediaExpression("max-width", "600px"); MediaExpression maxHeight = new MediaExpression("max-height", "600px"); MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); deviceDescription.SetWidth(450); deviceDescription.SetHeight(450); NUnit.Framework.Assert.IsTrue(maxHeight.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(maxWidth.Matches(deviceDescription)); }
public virtual void Test04() { String htmlFileName = sourceFolder + "html04.html"; String cssFileName = sourceFolder + "css04.css"; IXmlParser htmlParser = new JsoupHtmlParser(); IDocumentNode document = htmlParser.Parse(new FileStream(htmlFileName, FileMode.Open, FileAccess.Read), "UTF-8" ); CssStyleSheet css = CssStyleSheetParser.Parse(new FileStream(cssFileName, FileMode.Open, FileAccess.Read)); MediaDeviceDescription deviceDescription = new MediaDeviceDescription(MediaType.PRINT).SetColorIndex(256); IElementNode element = new JsoupElementNode(((JsoupDocumentNode)document).GetDocument().GetElementsByTag("p" ).First()); IList <CssDeclaration> declarations = css.GetCssDeclarations(element, deviceDescription); NUnit.Framework.Assert.AreEqual(2, declarations.Count); NUnit.Framework.Assert.AreEqual("color: red", declarations[0].ToString()); NUnit.Framework.Assert.AreEqual("font-size: 20em", declarations[1].ToString()); }
/* (non-Javadoc) * @see com.itextpdf.styledxmlparser.css.CssNestedAtRule#getCssRuleSets(com.itextpdf.styledxmlparser.html.node.INode, com.itextpdf.styledxmlparser.css.media.MediaDeviceDescription) */ public override IList <CssRuleSet> GetCssRuleSets(INode element, MediaDeviceDescription deviceDescription) { IList <CssRuleSet> result = new List <CssRuleSet>(); foreach (MediaQuery mediaQuery in mediaQueries) { if (mediaQuery.Matches(deviceDescription)) { foreach (CssStatement childStatement in body) { result.AddAll(childStatement.GetCssRuleSets(element, deviceDescription)); } break; } } return(result); }
public virtual void MediaExpressionTestTest04() { MediaExpression minColorIndex = new MediaExpression("min-color-index", "15000"); MediaExpression minResolution = new MediaExpression("min-resolution", "150dpi"); MediaExpression minColor = new MediaExpression("min-color", "8"); MediaExpression minAspectRatio = new MediaExpression("min-aspect-ratio", "8/5"); MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); deviceDescription.SetColorIndex(15000); deviceDescription.SetBitsPerComponent(8); deviceDescription.SetResolution(150); deviceDescription.SetWidth(32); deviceDescription.SetHeight(20); NUnit.Framework.Assert.IsTrue(minAspectRatio.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(minColorIndex.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(minColor.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(minResolution.Matches(deviceDescription)); }
public virtual void Test05() { String htmlFileName = sourceFolder + "html05.html"; String cssFileName = sourceFolder + "css05.css"; IXmlParser htmlParser = new JsoupHtmlParser(); IDocumentNode document = htmlParser.Parse(new FileStream(htmlFileName, FileMode.Open, FileAccess.Read), "UTF-8" ); CssStyleSheet css = CssStyleSheetParser.Parse(new FileStream(cssFileName, FileMode.Open, FileAccess.Read)); IElementNode element = new JsoupElementNode(((JsoupDocumentNode)document).GetDocument().GetElementsByTag("p" ).First()); MediaDeviceDescription deviceDescription1 = new MediaDeviceDescription(MediaType.PRINT).SetWidth(300).SetHeight (301); MediaDeviceDescription deviceDescription2 = new MediaDeviceDescription(MediaType.SCREEN).SetWidth(400).SetHeight (400); IList <CssDeclaration> declarations1 = css.GetCssDeclarations(element, deviceDescription1); IList <CssDeclaration> declarations2 = css.GetCssDeclarations(element, deviceDescription2); NUnit.Framework.Assert.AreEqual(0, declarations1.Count); NUnit.Framework.Assert.AreEqual(1, declarations2.Count); NUnit.Framework.Assert.AreEqual("color: red", declarations2[0].ToString()); }
/// <summary>Tries to match a device description with the media query.</summary> /// <param name="deviceDescription">the device description</param> /// <returns>true, if successful</returns> public virtual bool Matches(MediaDeviceDescription deviceDescription) { bool typeMatches = type == null || MediaType.ALL.Equals(type) || Object.Equals(type, deviceDescription.GetType ()); bool matchesExpressions = true; foreach (MediaExpression expression in expressions) { if (!expression.Matches(deviceDescription)) { matchesExpressions = false; break; } } bool expressionResult = typeMatches && matchesExpressions; if (not) { expressionResult = !expressionResult; } return(expressionResult); }
public virtual void Test02() { String htmlFileName = sourceFolder + "html02.html"; String cssFileName = sourceFolder + "css02.css"; IXmlParser htmlParser = new JsoupHtmlParser(); IDocumentNode document = htmlParser.Parse(new FileStream(htmlFileName, FileMode.Open, FileAccess.Read), "UTF-8" ); CssStyleSheet css = CssStyleSheetParser.Parse(new FileStream(cssFileName, FileMode.Open, FileAccess.Read)); IElementNode element = new JsoupElementNode(((JsoupDocumentNode)document).GetDocument().GetElementsByTag("p" ).First()); MediaDeviceDescription deviceDescription1 = new MediaDeviceDescription(MediaType.PRINT); deviceDescription1.SetWidth(525); MediaDeviceDescription deviceDescription2 = new MediaDeviceDescription(MediaType.HANDHELD); deviceDescription2.SetOrientation("landscape"); IList <CssDeclaration> declarations1 = css.GetCssDeclarations(element, deviceDescription1); IList <CssDeclaration> declarations2 = css.GetCssDeclarations(element, deviceDescription2); NUnit.Framework.Assert.IsTrue(Enumerable.SequenceEqual(declarations1, declarations2)); NUnit.Framework.Assert.AreEqual(1, declarations1.Count); NUnit.Framework.Assert.AreEqual("font-weight: bold", declarations1[0].ToString()); }
public virtual void MediaExpressionTestTest05() { MediaExpression maxColorIndex = new MediaExpression("max-color-index", null); MediaExpression maxColor = new MediaExpression("max-color", null); MediaExpression maxWidth = new MediaExpression("width", "600ex"); MediaExpression maxHeight = new MediaExpression("height", "600ex"); MediaExpression maxMonochrome = new MediaExpression("max-monochrome", "0"); MediaExpression maxResolution = new MediaExpression("max-resolution", "150dpi"); MediaDeviceDescription deviceDescription = new MediaDeviceDescription("all"); deviceDescription.SetHeight(450); deviceDescription.SetWidth(450); deviceDescription.SetColorIndex(15000); deviceDescription.SetBitsPerComponent(8); deviceDescription.SetMonochrome(0); deviceDescription.SetResolution(150); NUnit.Framework.Assert.IsTrue(maxMonochrome.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(maxHeight.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(maxWidth.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(maxColorIndex.Matches(deviceDescription)); NUnit.Framework.Assert.IsFalse(maxColor.Matches(deviceDescription)); NUnit.Framework.Assert.IsTrue(maxResolution.Matches(deviceDescription)); }
/// <summary> /// Tries to match a /// <see cref="MediaDeviceDescription"/>. /// </summary> /// <param name="deviceDescription">the device description</param> /// <returns>true, if successful</returns> public virtual bool Matches(MediaDeviceDescription deviceDescription) { switch (feature) { case MediaFeature.COLOR: { int?val = CssUtils.ParseInteger(value); if (minPrefix) { return(val != null && deviceDescription.GetBitsPerComponent() >= val); } else { if (maxPrefix) { return(val != null && deviceDescription.GetBitsPerComponent() <= val); } else { return(val == null?deviceDescription.GetBitsPerComponent() != 0 : val == deviceDescription.GetBitsPerComponent ()); } } goto case MediaFeature.COLOR_INDEX; } case MediaFeature.COLOR_INDEX: { int?val = CssUtils.ParseInteger(value); if (minPrefix) { return(val != null && deviceDescription.GetColorIndex() >= val); } else { if (maxPrefix) { return(val != null && deviceDescription.GetColorIndex() <= val); } else { return(val == null?deviceDescription.GetColorIndex() != 0 : val == deviceDescription.GetColorIndex()); } } goto case MediaFeature.ASPECT_RATIO; } case MediaFeature.ASPECT_RATIO: { int[] aspectRatio = CssUtils.ParseAspectRatio(value); if (minPrefix) { return(aspectRatio != null && aspectRatio[0] * deviceDescription.GetHeight() >= aspectRatio[1] * deviceDescription .GetWidth()); } else { if (maxPrefix) { return(aspectRatio != null && aspectRatio[0] * deviceDescription.GetHeight() <= aspectRatio[1] * deviceDescription .GetWidth()); } else { return(aspectRatio != null && CssUtils.CompareFloats(aspectRatio[0] * deviceDescription.GetHeight(), aspectRatio [1] * deviceDescription.GetWidth())); } } goto case MediaFeature.GRID; } case MediaFeature.GRID: { int?val = CssUtils.ParseInteger(value); return(val != null && val == 0 && !deviceDescription.IsGrid() || deviceDescription.IsGrid()); } case MediaFeature.SCAN: { return(Object.Equals(value, deviceDescription.GetScan())); } case MediaFeature.ORIENTATION: { return(Object.Equals(value, deviceDescription.GetOrientation())); } case MediaFeature.MONOCHROME: { int?val = CssUtils.ParseInteger(value); if (minPrefix) { return(val != null && deviceDescription.GetMonochrome() >= val); } else { if (maxPrefix) { return(val != null && deviceDescription.GetMonochrome() <= val); } else { return(val == null?deviceDescription.GetMonochrome() > 0 : val == deviceDescription.GetMonochrome()); } } goto case MediaFeature.HEIGHT; } case MediaFeature.HEIGHT: { float val = ParseAbsoluteLength(value); if (minPrefix) { return(deviceDescription.GetHeight() >= val); } else { if (maxPrefix) { return(deviceDescription.GetHeight() <= val); } else { return(deviceDescription.GetHeight() > 0); } } goto case MediaFeature.WIDTH; } case MediaFeature.WIDTH: { float val = ParseAbsoluteLength(value); if (minPrefix) { return(deviceDescription.GetWidth() >= val); } else { if (maxPrefix) { return(deviceDescription.GetWidth() <= val); } else { return(deviceDescription.GetWidth() > 0); } } goto case MediaFeature.RESOLUTION; } case MediaFeature.RESOLUTION: { float val = CssUtils.ParseResolution(value); if (minPrefix) { return(deviceDescription.GetResolution() >= val); } else { if (maxPrefix) { return(deviceDescription.GetResolution() <= val); } else { return(deviceDescription.GetResolution() > 0); } } goto default; } default: { return(false); } } }