Best Python code snippet using playwright-python
graphics-gradients-tests.js
Source:graphics-gradients-tests.js
1YUI.add('graphics-gradients-tests', function(Y) {2 var suite = new Y.Test.Suite('graphics-gradients-tests example test suite'),3 _getClassName = Y.ClassNameManager.getClassName,4 SHAPE,5 RECT,6 CIRCLE,7 ENGINE = "vml",8 DOCUMENT = Y.config.doc,9 canvas = DOCUMENT && DOCUMENT.createElement("canvas"),10 graphicTests,11 svgTests,12 canvasTests,13 vmlTests,14 PATHNODE = "shape",15 TORGB = Y.Color.toRGB,16 TOHEX = Y.Color.toHex,17 toRGBA = function(val, alpha) {18 alpha = Y.Lang.isNumber(alpha) ? alpha : 1;19 if (!Y.Color.re_RGB.test(val)) {20 val = TOHEX(val);21 }22 if(Y.Color.re_hex.exec(val)) {23 val = 'rgba(' + [24 parseInt(RegExp.$1, 16),25 parseInt(RegExp.$2, 16),26 parseInt(RegExp.$3, 16)27 ].join(',') + ',' + alpha + ')';28 }29 return val;30 },31 IMPLEMENTATION;32 if(DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"))33 {34 ENGINE = "svg";35 }36 else if(canvas && canvas.getContext && canvas.getContext("2d"))37 {38 ENGINE = "canvas";39 }40 SHAPE = "." + _getClassName(ENGINE + "Shape");41 RECT = "." + _getClassName(ENGINE + "Rect");42 CIRCLE = "." + _getClassName(ENGINE + "Circle");43 IMPLEMENTATION = {44 svg: {45 getStroke: function()46 {47 var node = this._node,48 color = node.getAttribute("stroke"),49 weight = node.getAttribute("stroke-width"),50 opacity = node.getAttribute("stroke-opacity");51 color = toRGBA(TOHEX(color), opacity);52 return {53 color: color,54 weight: weight55 }56 },57 58 getFill: function()59 {60 var node = this._node,61 fillNode,62 stopNodes,63 len,64 i = 0,65 stops,66 stop,67 stopNode,68 offset,69 gradientIndex,70 tagName,71 type,72 color = node.getAttribute("fill"),73 opacity = node.getAttribute("fill-opacity"),74 fill = {};75 if(color.indexOf("url") > -1)76 {77 color = color.slice(color.indexOf("#"), color.lastIndexOf(")"));78 fillNode = Y.one(color);79 if(fillNode)80 {81 tagName = fillNode.get("tagName");82 if(tagName)83 {84 gradientIndex = tagName.indexOf("Gradient");85 if(gradientIndex > -1)86 {87 type = tagName.slice(tagName.indexOf(":") + 1, gradientIndex);88 if(type == "linear")89 {90 //add rotation logic91 }92 else if(type == "radial")93 {94 //add cx,cy,fx,fy,r logic95 }96 }97 fill.type = type;98 }99 stopNodes = fillNode.get("children");100 stopNodes = stopNodes ? stopNodes.filter("stop") : null;101 if(stopNodes)102 { 103 len = stopNodes.size();104 stops = [];105 for(; i < len; i = i + 1)106 {107 stopNode = stopNodes.item(i);108 stop = {};109 if(stopNode.hasAttribute("stop-color"))110 {111 stop.color = TOHEX(stopNode.getAttribute("stop-color")).toLowerCase();112 }113 if(stopNode.hasAttribute("offset"))114 {115 offset = stopNode.getAttribute("offset");116 if(offset.indexOf("%") > -1)117 {118 offset = parseFloat(offset)/100;119 }120 else121 {122 offset = 1;123 }124 stop.offset = offset;125 }126 if(stopNode.hasAttribute("stop-opacity"))127 {128 stop.opacity = stopNode.getAttribute("stop-opacity");129 }130 stops.push(stop);131 }132 fill.stops = stops;133 }134 }135 }136 else137 {138 color = toRGBA(TOHEX(color), opacity);139 fill.color = color;140 fill.type = "solid";141 }142 return fill;143 },144 getDimensions: function(shape)145 {146 var w,147 h,148 node = this._node;149 switch(shape)150 {151 case "circle" :152 w = node.getAttribute("r") * 2;153 h = w;154 break;155 case "ellipse" :156 w = parseFloat(node.getAttribute("rx")) * 2;157 h = parseFloat(node.getAttribute("ry")) * 2;158 break;159 default :160 w = node.getAttribute("width");161 h = node.getAttribute("height");162 break;163 }164 return {165 width: w,166 height: h167 }168 }169 },170 vml: {171 getStroke: function()172 {173 var node = Y.one(this._node),174 nodelist = node.get("children"),175 strokeNode,176 color,177 weight,178 opacity;179 if(nodelist)180 {181 strokeNode = nodelist.filter('stroke');182 if(strokeNode.size() > 0)183 {184 strokeNode = strokeNode.shift().getDOMNode();185 }186 }187 color = node.get("strokecolor");188 weight = node.get("strokeweight");189 opacity = strokeNode ? strokeNode.opacity : 1;190 if(!Y.Lang.isNumber(opacity))191 {192 opacity = 1;193 }194 if(color.value)195 {196 color = color.value;197 }198 color = toRGBA(TOHEX(color), parseFloat(opacity));199 weight = Math.round(weight * (96/72));200 return {201 color: color,202 weight: weight203 }204 },205 206 getFill: function()207 {208 var node = this._node,209 nodelist = Y.one(node).get("children"),210 type,211 fillNode,212 color,213 offset,214 stops,215 stopAttrs,216 stopStrings,217 opacity,218 i = 0,219 len,220 fill = {};221 if(nodelist)222 {223 fillNode = nodelist.filter("fill");224 if(fillNode.size() > 0)225 {226 fillNode = fillNode.shift().getDOMNode();227 }228 type = fillNode.type || "solid";229 if(type == "gradient")230 {231 type = "linear";232 }233 else if(type == "gradientRadial")234 {235 type = "radial";236 }237 }238 else239 {240 type = "solid";241 }242 switch(type)243 {244 case "solid" :245 color = node.get("fillcolor");246 opacity = fillNode ? fillNode.opacity : 1;247 if(color.value)248 {249 color = color.value;250 }251 color = toRGBA(TOHEX(color), parseFloat(opacity)); 252 fill.color = color;253 break;254 case "linear" :255 stopStrings = fillNode.colors;256 if(stopStrings)257 {258 stops = [];259 if(stopStrings.value)260 {261 stopStrings = stopStrings.value;262 }263 stopStrings = stopStrings.split(";");264 len = stops.length;265 for(; i < len; i = i + 1)266 {267 stopAttrs = stopStrings[i].split(" ");268 offset = stopAttrs[0];269 if(offset.indexOf("f") > -1)270 {271 offset = 100 * parseFloat(offset)/65535272 offset = Math.round(offset)/100;273 }274 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );275 }276 fill.stops = stops;277 }278 break;279 case "radial" :280 stopStrings = fillNode.colors;281 if(stopStrings)282 {283 stops = [];284 if(stopStrings.value)285 {286 stopStrings = stopStrings.value;287 }288 stopStrings = stopStrings.split(";");289 len = stops.length;290 for(; i < len; i = i + 1)291 {292 stopAttrs = stopStrings[i].split(" ");293 offset = stopAttrs[0];294 if(offset.indexOf("f") > -1)295 {296 offset = 100 * parseFloat(offset)/65535297 offset = Math.round(offset)/100;298 }299 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );300 }301 fill.stops = stops;302 }303 break;304 }305 fill.type = type;306 return fill;307 },308 getDimensions: function(shape)309 {310 var node = this._node,311 w = parseFloat(node.getComputedStyle("width")),312 h = parseFloat(node.getComputedStyle("height"));313 return {314 width: w,315 height: h316 };317 }318 },319 canvas: {320 getStroke: function()321 {322 var context = this._node.getDOMNode().getContext("2d"),323 color = context.strokeStyle,324 weight = context.lineWidth;325 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)326 {327 color = color.toLowerCase();328 color = color.replace(/, /g, ",");329 }330 else331 {332 color = toRGBA(TOHEX(color));333 }334 return {335 color: color,336 weight: weight337 }338 },339 getFill: function()340 {341 var context = this._node.getDOMNode().getContext("2d"),342 color = context.fillStyle;343 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)344 {345 color = color.toLowerCase();346 color = color.replace(/, /g, ",");347 }348 else349 {350 color = toRGBA(TOHEX(color));351 }352 return {353 color: color354 }355 },356 getDimensions: function(shape)357 {358 var node = this._node,359 w = parseFloat(node.get("width")),360 h = parseFloat(node.get("height")),361 wt = this.getStroke().weight || 0;362 if(wt) {363 wt = wt * 2;364 w = w - wt;365 h = h - wt;366 }367 return {368 width: w,369 height: h370 };371 }372 }373 };374 function ShapeNode(){}375 ShapeNode.prototype = IMPLEMENTATION[ENGINE];376 ShapeNode.one = function(node)377 {378 var instance = ShapeNode._instance;379 if(!instance)380 {381 instance = new Y.ShapeNode();382 ShapeNode._instance = instance;383 }384 instance._node = node;385 return instance;386 };387 Y.ShapeNode = ShapeNode;388 suite.add(new Y.Test.Case({389 name: "Graphics Gradient Tests",390 testGraphicsLoaded : function()391 {392 var shapes = Y.all(SHAPE);393 Y.Assert.areEqual(2, shapes.size(), "There should be 2 shapes.");394 },395 testRect: function()396 {397 var rect = Y.all(RECT).shift(),398 rectWidth = 685,399 rectHeight = 400,400 rectDimensions = Y.ShapeNode.one(rect).getDimensions("rect"),401 defaultStops = [402 {color: "#ff6666", opacity: 1, offset: 0},403 {color: "#00ffff", opacity: 1, offset: 0.5},404 {color: "#000000", opacity: 1, offset: 1}405 ],406 defaultStop,407 i = 0,408 len = defaultStops.length,409 fill,410 stops,411 key,412 stop;413 Y.Assert.areEqual(rectWidth, rectDimensions.width, "The width of the rectangle should be " + rectWidth + ".");414 Y.Assert.areEqual(rectHeight, rectDimensions.height, "The height of the rectangle should be " + rectHeight + ".");415 if(ENGINE != "canvas")416 {417 fill = Y.ShapeNode.one(rect).getFill();418 stops = fill.stops;419 for(; i < len; i = i + 1)420 {421 stop = stops[i];422 defaultStop = defaultStops[i];423 for(key in stop)424 {425 if(stop.hasOwnProperty(key))426 {427 Y.Assert.areEqual(defaultStop[key], stop[key], "The " + key + " value should be " + defaultStop[key] + ".");428 }429 }430 }431 }432 },433 testCircle: function()434 {435 var circle = Y.all(CIRCLE).shift(),436 circleWidth = 100,437 circleHeight = 100,438 circleDimensions = Y.ShapeNode.one(circle).getDimensions("circle"),439 defaultStops = [440 {color: "#ff6666", offset: 0, opacity: 1},441 {color: "#00ffff", offset: 0.4, opacity: 1},442 {color: "#000000", offset: 0.7, opacity: 1}443 ],444 defaultStop,445 i = 0,446 len = defaultStops.length,447 fill,448 stops,449 key,450 stop;451 Y.Assert.areEqual(circleWidth, circleDimensions.width, "The width of the circle should be " + circleWidth + ".");452 Y.Assert.areEqual(circleHeight, circleDimensions.height, "The height of the circle should be " + circleHeight + ".");453 if(ENGINE != "canvas")454 {455 fill = Y.ShapeNode.one(circle).getFill();456 stops = fill.stops;457 for(; i < len; i = i + 1)458 {459 stop = stops[i];460 defaultStop = defaultStops[i];461 if(stop && defaultStops)462 {463 for(key in stop)464 {465 if(stop.hasOwnProperty(key))466 {467 Y.Assert.areEqual(defaultStop[key], stop[key], "The " + key + " value should be " + defaultStop[key] + ".");468 }469 }470 }471 }472 }473 }474 }));475 Y.Test.Runner.add(suite);...
graphics-customshape-tests.js
Source:graphics-customshape-tests.js
1YUI.add('graphics-customshape-tests', function(Y) {2 var suite = new Y.Test.Suite('graphics-customshape-tests example test suite'),3 _getClassName = Y.ClassNameManager.getClassName,4 SHAPE,5 ENGINE = "vml",6 ROUNDEDRECT,7 DOCUMENT = Y.config.doc,8 canvas = DOCUMENT && DOCUMENT.createElement("canvas"),9 graphicTests,10 svgTests,11 canvasTests,12 vmlTests,13 TORGB = Y.Color.toRGB,14 TOHEX = Y.Color.toHex,15 toRGBA = function(val, alpha) {16 alpha = Y.Lang.isNumber(alpha) ? alpha : 1;17 if (!Y.Color.re_RGB.test(val)) {18 val = TOHEX(val);19 }20 if(Y.Color.re_hex.exec(val)) {21 val = 'rgba(' + [22 parseInt(RegExp.$1, 16),23 parseInt(RegExp.$2, 16),24 parseInt(RegExp.$3, 16)25 ].join(',') + ',' + alpha + ')';26 }27 return val;28 },29 IMPLEMENTATION;30 if(DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"))31 {32 ENGINE = "svg";33 }34 else if(canvas && canvas.getContext && canvas.getContext("2d"))35 {36 ENGINE = "canvas";37 }38 SHAPE = "." + _getClassName(ENGINE + "Shape");39 ROUNDEDRECT = "." + _getClassName("roundedRect");40 IMPLEMENTATION = {41 svg: {42 getStroke: function()43 {44 var node = this._node,45 color = node.getAttribute("stroke"),46 weight = node.getAttribute("stroke-width"),47 opacity = node.getAttribute("stroke-opacity");48 color = toRGBA(TOHEX(color), opacity);49 return {50 color: color,51 weight: weight52 }53 },54 55 getFill: function()56 {57 var node = this._node,58 fillNode,59 stopNodes,60 len,61 i = 0,62 stops,63 stop,64 stopNode,65 offset,66 gradientIndex,67 tagName,68 type,69 color = node.getAttribute("fill"),70 opacity = node.getAttribute("fill-opacity"),71 fill = {};72 if(color.indexOf("url") > -1)73 {74 color = color.slice(color.indexOf("#"), color.lastIndexOf(")"));75 fillNode = Y.one(color);76 if(fillNode)77 {78 tagName = fillNode.get("tagName");79 if(tagName)80 {81 gradientIndex = tagName.indexOf("Gradient");82 if(gradientIndex > -1)83 {84 type = tagName.slice(tagName.indexOf(":") + 1, gradientIndex);85 if(type == "linear")86 {87 //add rotation logic88 }89 else if(type == "radial")90 {91 //add cx,cy,fx,fy,r logic92 }93 }94 fill.type = type;95 }96 stopNodes = fillNode.get("children");97 stopNodes = stopNodes ? stopNodes.filter("stop") : null;98 if(stopNodes)99 { 100 len = stopNodes.size();101 stops = [];102 for(; i < len; i = i + 1)103 {104 stopNode = stopNodes.item(i);105 stop = {};106 if(stopNode.hasAttribute("stop-color"))107 {108 stop.color = TOHEX(stopNode.getAttribute("stop-color")).toLowerCase();109 }110 if(stopNode.hasAttribute("offset"))111 {112 offset = stopNode.getAttribute("offset");113 if(offset.indexOf("%") > -1)114 {115 offset = parseFloat(offset)/100;116 }117 else118 {119 offset = 1;120 }121 stop.offset = offset;122 }123 if(stopNode.hasAttribute("stop-opacity"))124 {125 stop.opacity = stopNode.getAttribute("stop-opacity");126 }127 stops.push(stop);128 }129 fill.stops = stops;130 }131 }132 }133 else134 {135 color = toRGBA(TOHEX(color), opacity);136 fill.color = color;137 fill.type = "solid";138 }139 return fill;140 },141 getDimensions: function(shape)142 {143 var w,144 h,145 node = this._node;146 switch(shape)147 {148 case "circle" :149 w = node.getAttribute("r") * 2;150 h = w;151 break;152 case "ellipse" :153 w = parseFloat(node.getAttribute("rx")) * 2;154 h = parseFloat(node.getAttribute("ry")) * 2;155 break;156 default :157 w = node.get("width");158 h = node.get("height");159 break;160 }161 return {162 width: w,163 height: h164 }165 }166 },167 vml: {168 getStroke: function()169 {170 var node = Y.one(this._node),171 nodelist = node.get("children"),172 strokeNode,173 color,174 weight,175 opacity;176 if(nodelist)177 {178 strokeNode = nodelist.filter('stroke');179 if(strokeNode.size() > 0)180 {181 strokeNode = strokeNode.shift().getDOMNode();182 }183 }184 color = node.get("strokecolor");185 weight = node.get("strokeweight");186 opacity = strokeNode ? strokeNode.opacity : 1;187 if(!Y.Lang.isNumber(opacity))188 {189 opacity = 1;190 }191 if(color.value)192 {193 color = color.value;194 }195 color = toRGBA(TOHEX(color), parseFloat(opacity));196 weight = Math.round(weight * (96/72));197 return {198 color: color,199 weight: weight200 }201 },202 getFill: function()203 {204 var node = this._node,205 nodelist = Y.one(node).get("children"),206 type,207 fillNode,208 color,209 offset,210 stops,211 stopAttrs,212 stopStrings,213 opacity,214 i = 0,215 len,216 fill = {};217 if(nodelist)218 {219 fillNode = nodelist.filter("fill");220 if(fillNode.size() > 0)221 {222 fillNode = fillNode.shift().getDOMNode();223 }224 type = fillNode.type || "solid";225 if(type == "gradient")226 {227 type = "linear";228 }229 else if(type == "gradientRadial")230 {231 type = "radial";232 }233 }234 else235 {236 type = "solid";237 }238 switch(type)239 {240 case "solid" :241 color = node.get("fillcolor");242 opacity = fillNode ? fillNode.opacity : 1;243 if(color.value)244 {245 color = color.value;246 }247 color = toRGBA(TOHEX(color), parseFloat(opacity)); 248 fill.color = color;249 break;250 case "linear" :251 stopStrings = fillNode.colors;252 if(stopStrings)253 {254 stops = [];255 if(stopStrings.value)256 {257 stopStrings = stopStrings.value;258 }259 stopStrings = stopStrings.split(";");260 len = stops.length;261 for(; i < len; i = i + 1)262 {263 stopAttrs = stopStrings[i].split(" ");264 offset = stopAttrs[0];265 if(offset.indexOf("f") > -1)266 {267 offset = 100 * parseFloat(offset)/65535268 offset = Math.round(offset)/100;269 }270 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );271 }272 fill.stops = stops;273 }274 break;275 case "radial" :276 stopStrings = fillNode.colors;277 if(stopStrings)278 {279 stops = [];280 if(stopStrings.value)281 {282 stopStrings = stopStrings.value;283 }284 stopStrings = stopStrings.split(";");285 len = stops.length;286 for(; i < len; i = i + 1)287 {288 stopAttrs = stopStrings[i].split(" ");289 offset = stopAttrs[0];290 if(offset.indexOf("f") > -1)291 {292 offset = 100 * parseFloat(offset)/65535293 offset = Math.round(offset)/100;294 }295 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );296 }297 fill.stops = stops;298 }299 break;300 }301 fill.type = type;302 return fill;303 },304 getDimensions: function(shape)305 {306 var node = this._node,307 w = parseFloat(node.getComputedStyle("width")),308 h = parseFloat(node.getComputedStyle("height"));309 return {310 width: w,311 height: h312 };313 }314 },315 canvas: {316 getStroke: function()317 {318 var context = this._node.getDOMNode().getContext("2d"),319 color = context.strokeStyle,320 weight = context.lineWidth;321 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)322 {323 color = color.toLowerCase();324 color = color.replace(/, /g, ",");325 }326 else327 {328 color = toRGBA(TOHEX(color));329 }330 return {331 color: color,332 weight: weight333 }334 },335 getFill: function()336 {337 var context = this._node.getDOMNode().getContext("2d"),338 color = context.fillStyle;339 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)340 {341 color = color.toLowerCase();342 color = color.replace(/, /g, ",");343 }344 else345 {346 color = toRGBA(TOHEX(color));347 }348 return {349 color: color350 }351 },352 getDimensions: function(shape)353 {354 var node = this._node,355 w = parseFloat(node.get("width")),356 h = parseFloat(node.get("height")),357 wt = this.getStroke().weight || 0;358 if(wt) {359 wt = wt * 2;360 w = w - wt;361 h = h - wt;362 }363 return {364 width: w,365 height: h366 };367 }368 }369 };370 function ShapeNode(){}371 ShapeNode.prototype = IMPLEMENTATION[ENGINE];372 ShapeNode.one = function(node)373 {374 var instance = ShapeNode._instance;375 if(!instance)376 {377 instance = new Y.ShapeNode();378 ShapeNode._instance = instance;379 }380 instance._node = node;381 return instance;382 };383 Y.ShapeNode = ShapeNode;384 suite.add(new Y.Test.Case({385 name: "Graphics Path Tests",386 testGraphicsLoaded : function()387 {388 var shapes = Y.all(SHAPE),389 paths = Y.all(ROUNDEDRECT);390 Y.Assert.areEqual(1, shapes.size(), "There should be 1 shape.");391 Y.Assert.areEqual(1, paths.size(), "There should be 1 roundedRect instance.");392 },393 testCustomShape: function()394 {395 var roundRect = Y.all(ROUNDEDRECT).shift(),396 roundRectWidth = 300,397 roundRectHeight = 200,398 roundRectDimensions = Y.ShapeNode.one(roundRect).getDimensions("path"),399 defaultStops = [400 {color: "#9aa9bb", offset: 0, opacity: 1},401 {color: "#eeefff", offset: 0.4, opacity: 1},402 {color: "#00000f", offset: 0.8, opacity: 1},403 {color: "#9aa9bb", offset: 1, opacity: 1}404 ],405 defaultStop,406 i = 0,407 len = defaultStops.length,408 fill,409 stops, 410 key,411 stop;412 //Need to add logic for parsing size of path element in svg413 if(ENGINE != "svg")414 {415 Y.Assert.areEqual(roundRectWidth, roundRectDimensions.width, "The width of the roundRect should be " + roundRectWidth + ".");416 Y.Assert.areEqual(roundRectHeight, roundRectDimensions.height, "The height of the roundRect should be " + roundRectHeight + ".");417 }418 if(ENGINE != "canvas")419 {420 fill = Y.ShapeNode.one(roundRect).getFill();421 stops = fill.stops;422 for(; i < len; i = i + 1)423 {424 stop = stops[i];425 defaultStop = defaultStops[i];426 if(stop && defaultStops)427 {428 for(key in stop)429 {430 if(stop.hasOwnProperty(key))431 {432 Y.Assert.areEqual(defaultStop[key], stop[key], "The " + key + " value should be " + defaultStop[key] + ".");433 }434 }435 }436 }437 }438 }439 }));440 Y.Test.Runner.add(suite);...
graphics-violin-tests.js
Source:graphics-violin-tests.js
1YUI.add('graphics-violin-tests', function(Y) {2 var suite = new Y.Test.Suite('graphics-violin-tests example test suite'),3 _getClassName = Y.ClassNameManager.getClassName,4 SHAPE,5 ENGINE = "vml",6 ELLIPSE,7 RECT,8 PATH,9 DOCUMENT = Y.config.doc,10 canvas = DOCUMENT && DOCUMENT.createElement("canvas"),11 graphicTests,12 svgTests,13 canvasTests,14 vmlTests,15 TORGB = Y.Color.toRGB,16 TOHEX = Y.Color.toHex,17 toRGBA = function(val, alpha) {18 alpha = Y.Lang.isNumber(alpha) ? alpha : 1;19 if (!Y.Color.re_RGB.test(val)) {20 val = TOHEX(val);21 }22 if(Y.Color.re_hex.exec(val)) {23 val = 'rgba(' + [24 parseInt(RegExp.$1, 16),25 parseInt(RegExp.$2, 16),26 parseInt(RegExp.$3, 16)27 ].join(',') + ',' + alpha + ')';28 }29 return val;30 },31 IMPLEMENTATION;32 if(DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"))33 {34 ENGINE = "svg";35 }36 else if(canvas && canvas.getContext && canvas.getContext("2d"))37 {38 ENGINE = "canvas";39 }40 SHAPE = "." + _getClassName(ENGINE + "Shape");41 ELLIPSE = "." + _getClassName(ENGINE + "Ellipse");42 RECT = "." + _getClassName(ENGINE + "Rect");43 PATH = "." + _getClassName(ENGINE + "Path");44 IMPLEMENTATION = {45 svg: {46 getStroke: function()47 {48 var node = this._node,49 color = node.getAttribute("stroke"),50 weight = node.getAttribute("stroke-width"),51 opacity = node.getAttribute("stroke-opacity");52 color = toRGBA(TOHEX(color), opacity);53 return {54 color: color,55 weight: weight56 }57 },58 getFill: function()59 {60 var node = this._node,61 fillNode,62 stopNodes,63 len,64 i = 0,65 stops,66 stop,67 stopNode,68 offset,69 gradientIndex,70 tagName,71 type,72 color = node.getAttribute("fill"),73 opacity = node.getAttribute("fill-opacity"),74 fill = {};75 if(color.indexOf("url") > -1)76 {77 color = color.slice(color.indexOf("#"), color.lastIndexOf(")"));78 fillNode = Y.one(color);79 if(fillNode)80 {81 tagName = fillNode.get("tagName");82 if(tagName)83 {84 gradientIndex = tagName.indexOf("Gradient");85 if(gradientIndex > -1)86 {87 type = tagName.slice(tagName.indexOf(":") + 1, gradientIndex);88 if(type == "linear")89 {90 //add rotation logic91 }92 else if(type == "radial")93 {94 //add cx,cy,fx,fy,r logic95 }96 }97 fill.type = type;98 }99 stopNodes = fillNode.get("children");100 stopNodes = stopNodes ? stopNodes.filter("stop") : null;101 if(stopNodes)102 { 103 len = stopNodes.size();104 stops = [];105 for(; i < len; i = i + 1)106 {107 stopNode = stopNodes.item(i);108 stop = {};109 if(stopNode.hasAttribute("stop-color"))110 {111 stop.color = TOHEX(stopNode.getAttribute("stop-color")).toLowerCase();112 }113 if(stopNode.hasAttribute("offset"))114 {115 offset = stopNode.getAttribute("offset");116 if(offset.indexOf("%") > -1)117 {118 offset = parseFloat(offset)/100;119 }120 else121 {122 offset = 1;123 }124 stop.offset = offset;125 }126 if(stopNode.hasAttribute("stop-opacity"))127 {128 stop.opacity = stopNode.getAttribute("stop-opacity");129 }130 stops.push(stop);131 }132 fill.stops = stops;133 }134 }135 }136 else137 {138 color = toRGBA(TOHEX(color), opacity);139 fill.color = color;140 fill.type = "solid";141 }142 return fill;143 },144 getDimensions: function(shape)145 {146 var w,147 h,148 node = this._node;149 switch(shape)150 {151 case "circle" :152 w = node.getAttribute("r") * 2;153 h = w;154 break;155 case "ellipse" :156 w = parseFloat(node.getAttribute("rx")) * 2;157 h = parseFloat(node.getAttribute("ry")) * 2;158 break;159 default :160 w = node.get("width");161 h = node.get("height");162 break;163 }164 return {165 width: w,166 height: h167 }168 }169 },170 vml: {171 getStroke: function()172 {173 var node = Y.one(this._node),174 nodelist = node.get("children"),175 strokeNode,176 color,177 weight,178 opacity;179 if(nodelist)180 {181 strokeNode = nodelist.filter('stroke');182 if(strokeNode.size() > 0)183 {184 strokeNode = strokeNode.shift().getDOMNode();185 }186 }187 color = node.get("strokecolor");188 weight = node.get("strokeweight");189 opacity = strokeNode ? strokeNode.opacity : 1;190 if(!Y.Lang.isNumber(opacity))191 {192 opacity = 1;193 }194 if(color.value)195 {196 color = color.value;197 }198 color = toRGBA(TOHEX(color), parseFloat(opacity));199 weight = Math.round(weight * (96/72));200 return {201 color: color,202 weight: weight203 }204 },205 getFill: function()206 {207 var node = this._node,208 nodelist = Y.one(node).get("children"),209 type,210 fillNode,211 color,212 offset,213 stops,214 stopAttrs,215 stopStrings,216 opacity,217 i = 0,218 len,219 fill = {};220 if(nodelist)221 {222 fillNode = nodelist.filter("fill");223 if(fillNode.size() > 0)224 {225 fillNode = fillNode.shift().getDOMNode();226 }227 type = fillNode.type || "solid";228 if(type == "gradient")229 {230 type = "linear";231 }232 else if(type == "gradientRadial")233 {234 type = "radial";235 }236 }237 else238 {239 type = "solid";240 }241 switch(type)242 {243 case "solid" :244 color = node.get("fillcolor");245 opacity = fillNode ? fillNode.opacity : 1;246 if(color.value)247 {248 color = color.value;249 }250 color = toRGBA(TOHEX(color), parseFloat(opacity)); 251 fill.color = color;252 break;253 case "linear" :254 stopStrings = fillNode.colors;255 if(stopStrings)256 {257 stops = [];258 if(stopStrings.value)259 {260 stopStrings = stopStrings.value;261 }262 stopStrings = stopStrings.split(";");263 len = stops.length;264 for(; i < len; i = i + 1)265 {266 stopAttrs = stopStrings[i].split(" ");267 offset = stopAttrs[0];268 if(offset.indexOf("f") > -1)269 {270 offset = 100 * parseFloat(offset)/65535271 offset = Math.round(offset)/100;272 }273 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );274 }275 fill.stops = stops;276 }277 break;278 case "radial" :279 stopStrings = fillNode.colors;280 if(stopStrings)281 {282 stops = [];283 if(stopStrings.value)284 {285 stopStrings = stopStrings.value;286 }287 stopStrings = stopStrings.split(";");288 len = stops.length;289 for(; i < len; i = i + 1)290 {291 stopAttrs = stopStrings[i].split(" ");292 offset = stopAttrs[0];293 if(offset.indexOf("f") > -1)294 {295 offset = 100 * parseFloat(offset)/65535296 offset = Math.round(offset)/100;297 }298 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );299 }300 fill.stops = stops;301 }302 break;303 }304 fill.type = type;305 return fill;306 },307 getDimensions: function(shape)308 {309 var node = this._node,310 w = parseFloat(node.getComputedStyle("width")),311 h = parseFloat(node.getComputedStyle("height"));312 return {313 width: w,314 height: h315 };316 }317 },318 canvas: {319 getStroke: function()320 {321 var context = this._node.getDOMNode().getContext("2d"),322 color = context.strokeStyle,323 weight = context.lineWidth;324 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)325 {326 color = color.toLowerCase();327 color = color.replace(/, /g, ",");328 }329 else330 {331 color = toRGBA(TOHEX(color));332 }333 return {334 color: color,335 weight: weight336 }337 },338 getFill: function()339 {340 var context = this._node.getDOMNode().getContext("2d"),341 color = context.fillStyle;342 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)343 {344 color = color.toLowerCase();345 color = color.replace(/, /g, ",");346 }347 else348 {349 color = toRGBA(TOHEX(color));350 }351 return {352 color: color353 }354 },355 getDimensions: function(shape)356 {357 var node = this._node,358 w = parseFloat(node.get("width")),359 h = parseFloat(node.get("height")),360 wt = this.getStroke().weight || 0;361 if(wt) {362 wt = wt * 2;363 w = w - wt;364 h = h - wt;365 }366 return {367 width: w,368 height: h369 };370 }371 }372 };373 function ShapeNode(){}374 ShapeNode.prototype = IMPLEMENTATION[ENGINE];375 ShapeNode.one = function(node)376 {377 var instance = ShapeNode._instance;378 if(!instance)379 {380 instance = new Y.ShapeNode();381 ShapeNode._instance = instance;382 }383 instance._node = node;384 return instance;385 };386 Y.ShapeNode = ShapeNode;387 suite.add(new Y.Test.Case({388 name: "Graphics Violin Tests",389 testGraphicsLoaded : function()390 {391 var shapes = Y.all(SHAPE),392 ellipses = Y.all(ELLIPSE),393 rects = Y.all(RECT),394 paths = Y.all(PATH),395 ie = Y.UA.ie,396 numberofpaths = ie && ie < 9 ? 19 : 20,397 totalshapes = numberofpaths + 8;398 Y.Assert.areEqual(totalshapes, shapes.size(), "There should be " + totalshapes + " shape.");399 Y.Assert.areEqual(7, ellipses.size(), "There should be 7 Ellipse instance.");400 Y.Assert.areEqual(1, rects.size(), "There should be 3 Rect instances.");401 Y.Assert.areEqual(numberofpaths, paths.size(), "There should be " + numberofpaths + " Path instances.");402 }403 }));404 Y.Test.Runner.add(suite);...
graphics-muddyglass-tests.js
Source:graphics-muddyglass-tests.js
1YUI.add('graphics-muddyglass-tests', function(Y) {2 var suite = new Y.Test.Suite('graphics-muddyglass-tests example test suite'),3 _getClassName = Y.ClassNameManager.getClassName,4 SHAPE,5 ENGINE = "vml",6 ELLIPSE,7 RECT,8 DOCUMENT = Y.config.doc,9 canvas = DOCUMENT && DOCUMENT.createElement("canvas"),10 graphicTests,11 svgTests,12 canvasTests,13 vmlTests,14 TORGB = Y.Color.toRGB,15 TOHEX = Y.Color.toHex,16 toRGBA = function(val, alpha) {17 alpha = Y.Lang.isNumber(alpha) ? alpha : 1;18 if (!Y.Color.re_RGB.test(val)) {19 val = TOHEX(val);20 }21 if(Y.Color.re_hex.exec(val)) {22 val = 'rgba(' + [23 parseInt(RegExp.$1, 16),24 parseInt(RegExp.$2, 16),25 parseInt(RegExp.$3, 16)26 ].join(',') + ',' + alpha + ')';27 }28 return val;29 },30 IMPLEMENTATION;31 if(DOCUMENT && DOCUMENT.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"))32 {33 ENGINE = "svg";34 }35 else if(canvas && canvas.getContext && canvas.getContext("2d"))36 {37 ENGINE = "canvas";38 }39 SHAPE = "." + _getClassName(ENGINE + "Shape");40 ELLIPSE = "." + _getClassName(ENGINE + "Ellipse");41 RECT = "." + _getClassName(ENGINE + "Rect");42 IMPLEMENTATION = {43 svg: {44 getStroke: function()45 {46 var node = this._node,47 color = node.getAttribute("stroke"),48 weight = node.getAttribute("stroke-width"),49 opacity = node.getAttribute("stroke-opacity");50 color = toRGBA(TOHEX(color), opacity);51 return {52 color: color,53 weight: weight54 }55 },56 getFill: function()57 {58 var node = this._node,59 fillNode,60 stopNodes,61 len,62 i = 0,63 stops,64 stop,65 stopNode,66 offset,67 gradientIndex,68 tagName,69 type,70 color = node.getAttribute("fill"),71 opacity = node.getAttribute("fill-opacity"),72 fill = {};73 if(color.indexOf("url") > -1)74 {75 color = color.slice(color.indexOf("#"), color.lastIndexOf(")"));76 fillNode = Y.one(color);77 if(fillNode)78 {79 tagName = fillNode.get("tagName");80 if(tagName)81 {82 gradientIndex = tagName.indexOf("Gradient");83 if(gradientIndex > -1)84 {85 type = tagName.slice(tagName.indexOf(":") + 1, gradientIndex);86 if(type == "linear")87 {88 //add rotation logic89 }90 else if(type == "radial")91 {92 //add cx,cy,fx,fy,r logic93 }94 }95 fill.type = type;96 }97 stopNodes = fillNode.get("children");98 stopNodes = stopNodes ? stopNodes.filter("stop") : null;99 if(stopNodes)100 { 101 len = stopNodes.size();102 stops = [];103 for(; i < len; i = i + 1)104 {105 stopNode = stopNodes.item(i);106 stop = {};107 if(stopNode.hasAttribute("stop-color"))108 {109 stop.color = TOHEX(stopNode.getAttribute("stop-color")).toLowerCase();110 }111 if(stopNode.hasAttribute("offset"))112 {113 offset = stopNode.getAttribute("offset");114 if(offset.indexOf("%") > -1)115 {116 offset = parseFloat(offset)/100;117 }118 else119 {120 offset = 1;121 }122 stop.offset = offset;123 }124 if(stopNode.hasAttribute("stop-opacity"))125 {126 stop.opacity = stopNode.getAttribute("stop-opacity");127 }128 stops.push(stop);129 }130 fill.stops = stops;131 }132 }133 }134 else135 {136 color = toRGBA(TOHEX(color), opacity);137 fill.color = color;138 fill.type = "solid";139 }140 return fill;141 },142 getDimensions: function(shape)143 {144 var w,145 h,146 node = this._node;147 switch(shape)148 {149 case "circle" :150 w = node.getAttribute("r") * 2;151 h = w;152 break;153 case "ellipse" :154 w = parseFloat(node.getAttribute("rx")) * 2;155 h = parseFloat(node.getAttribute("ry")) * 2;156 break;157 default :158 w = node.get("width");159 h = node.get("height");160 break;161 }162 return {163 width: w,164 height: h165 }166 }167 },168 vml: {169 getStroke: function()170 {171 var node = Y.one(this._node),172 nodelist = node.get("children"),173 strokeNode,174 color,175 weight,176 opacity;177 if(nodelist)178 {179 strokeNode = nodelist.filter('stroke');180 if(strokeNode.size() > 0)181 {182 strokeNode = strokeNode.shift().getDOMNode();183 }184 }185 color = node.get("strokecolor");186 weight = node.get("strokeweight");187 opacity = strokeNode ? strokeNode.opacity : 1;188 if(!Y.Lang.isNumber(opacity))189 {190 opacity = 1;191 }192 if(color.value)193 {194 color = color.value;195 }196 color = toRGBA(TOHEX(color), parseFloat(opacity));197 weight = Math.round(weight * (96/72));198 return {199 color: color,200 weight: weight201 }202 },203 getFill: function()204 {205 var node = this._node,206 nodelist = Y.one(node).get("children"),207 type,208 fillNode,209 color,210 offset,211 stops,212 stopAttrs,213 stopStrings,214 opacity,215 i = 0,216 len,217 fill = {};218 if(nodelist)219 {220 fillNode = nodelist.filter("fill");221 if(fillNode.size() > 0)222 {223 fillNode = fillNode.shift().getDOMNode();224 }225 type = fillNode.type || "solid";226 if(type == "gradient")227 {228 type = "linear";229 }230 else if(type == "gradientRadial")231 {232 type = "radial";233 }234 }235 else236 {237 type = "solid";238 }239 switch(type)240 {241 case "solid" :242 color = node.get("fillcolor");243 opacity = fillNode ? fillNode.opacity : 1;244 if(color.value)245 {246 color = color.value;247 }248 color = toRGBA(TOHEX(color), parseFloat(opacity)); 249 fill.color = color;250 break;251 case "linear" :252 stopStrings = fillNode.colors;253 if(stopStrings)254 {255 stops = [];256 if(stopStrings.value)257 {258 stopStrings = stopStrings.value;259 }260 stopStrings = stopStrings.split(";");261 len = stops.length;262 for(; i < len; i = i + 1)263 {264 stopAttrs = stopStrings[i].split(" ");265 offset = stopAttrs[0];266 if(offset.indexOf("f") > -1)267 {268 offset = 100 * parseFloat(offset)/65535269 offset = Math.round(offset)/100;270 }271 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );272 }273 fill.stops = stops;274 }275 break;276 case "radial" :277 stopStrings = fillNode.colors;278 if(stopStrings)279 {280 stops = [];281 if(stopStrings.value)282 {283 stopStrings = stopStrings.value;284 }285 stopStrings = stopStrings.split(";");286 len = stops.length;287 for(; i < len; i = i + 1)288 {289 stopAttrs = stopStrings[i].split(" ");290 offset = stopAttrs[0];291 if(offset.indexOf("f") > -1)292 {293 offset = 100 * parseFloat(offset)/65535294 offset = Math.round(offset)/100;295 }296 stops.push( {color: TOHEX(stopAttrs[1]).toLowerCase(), offset: offset} );297 }298 fill.stops = stops;299 }300 break;301 }302 fill.type = type;303 return fill;304 },305 getDimensions: function(shape)306 {307 var node = this._node,308 w = parseFloat(node.getComputedStyle("width")),309 h = parseFloat(node.getComputedStyle("height"));310 return {311 width: w,312 height: h313 };314 }315 },316 canvas: {317 getStroke: function()318 {319 var context = this._node.getDOMNode().getContext("2d"),320 color = context.strokeStyle,321 weight = context.lineWidth;322 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)323 {324 color = color.toLowerCase();325 color = color.replace(/, /g, ",");326 }327 else328 {329 color = toRGBA(TOHEX(color));330 }331 return {332 color: color,333 weight: weight334 }335 },336 getFill: function()337 {338 var context = this._node.getDOMNode().getContext("2d"),339 color = context.fillStyle;340 if(color.indexOf("RGBA") > -1 || color.indexOf("rgba") > -1)341 {342 color = color.toLowerCase();343 color = color.replace(/, /g, ",");344 }345 else346 {347 color = toRGBA(TOHEX(color));348 }349 return {350 color: color351 }352 },353 getDimensions: function(shape)354 {355 var node = this._node,356 w = parseFloat(node.get("width")),357 h = parseFloat(node.get("height")),358 wt = this.getStroke().weight || 0;359 if(wt) {360 wt = wt * 2;361 w = w - wt;362 h = h - wt;363 }364 return {365 width: w,366 height: h367 };368 }369 }370 };371 function ShapeNode(){}372 ShapeNode.prototype = IMPLEMENTATION[ENGINE];373 ShapeNode.one = function(node)374 {375 var instance = ShapeNode._instance;376 if(!instance)377 {378 instance = new Y.ShapeNode();379 ShapeNode._instance = instance;380 }381 instance._node = node;382 return instance;383 };384 Y.ShapeNode = ShapeNode;385 suite.add(new Y.Test.Case({386 name: "Graphics Transparent Glass Tests",387 testGraphicsLoaded : function()388 {389 var shapes = Y.all(SHAPE),390 ellipses = Y.all(ELLIPSE),391 rects = Y.all(RECT);392 Y.Assert.areEqual(4, shapes.size(), "There should be 1 shape.");393 Y.Assert.areEqual(1, ellipses.size(), "There should be 1 Ellipse instance.");394 Y.Assert.areEqual(3, rects.size(), "There should be 3 Rect instances.");395 }396 }));397 Y.Test.Runner.add(suite);...
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!