premasagar / pablo

Pablo is a lightweight, expressive JavaScript SVG library. Pablo creates interactive drawings with SVG (Scalable Vector Graphics), giving access to all of SVG's granularity and power.
https://pablojs.com
MIT License
413 stars 16 forks source link

Add attribute methods for collections #75

Open premasagar opened 11 years ago

premasagar commented 11 years ago

E.g.

var circle = Pablo.circle().cx(50).cy(50).r(50);

According to MDN, the following are SVG 1.1 elements:

accent-height, accumulate, additive, alignment-baseline, allowReorder, alphabetic, amplitude, arabic-form, ascent, attributeName, attributeType, azimuth, baseFrequency, baseline-shift, baseProfile, bbox, begin, bias, by, calcMode, cap-height, class, clip, clipPathUnits, clip-path, clip-rule, color, color-interpolation, color-interpolation-filters, color-profile, color-rendering, contentScriptType, contentStyleType, cursor, cx, cy, d, descent, diffuseConstant, direction, display, divisor, dominant-baseline, dur, dx, dy, edgeMode, elevation, enable-background, end, exponent, externalResourcesRequired, fill, fill-opacity, fill-rule, filter, filterRes, filterUnits, flood-color, flood-opacity, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, format, from, fx, fy, g1, g2, glyph-name, glyph-orientation-horizontal, glyph-orientation-vertical, glyphRef, gradientTransform, gradientUnits, hanging, height, horiz-adv-x, horiz-origin-x, id, ideographic, image-rendering, in, in2, intercept, k, k1, k2, k3, k4, kernelMatrix, kernelUnitLength, kerning, keyPoints, keySplines, keyTimes, lang, lengthAdjust, letter-spacing, lighting-color, limitingConeAngle, local, marker-end, marker-mid, marker-start, markerHeight, markerUnits, markerWidth, mask, maskContentUnits, maskUnits, mathematical, max, media, method, min, mode, name, numOctaves, offset, onabort, onactivate, onbegin, onclick, onend, onerror, onfocusin, onfocusout, onload, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onrepeat, onresize, onscroll, onunload, onzoom, opacity, operator, order, orient, orientation, origin, overflow, overline-position, overline-thickness, panose-1, paint-order, path, pathLength, patternContentUnits, patternTransform, patternUnits, pointer-events, points, pointsAtX, pointsAtY, pointsAtZ, preserveAlpha, preserveAspectRatio, primitiveUnits, r, radius, refX, refY, rendering-intent, repeatCount, repeatDur, requiredExtensions, requiredFeatures, restart, result, rotate, rx, ry, scale, seed, shape-rendering, slope, spacing, specularConstant, specularExponent, spreadMethod, startOffset, stdDeviation, stemh, stemv, stitchTiles, stop-color, stop-opacity, strikethrough-position, strikethrough-thickness, string, stroke, stroke-dasharray, stroke-dashoffset, stroke-linecap, stroke-linejoin, stroke-miterlimit, stroke-opacity, stroke-width, style, surfaceScale, systemLanguage, tableValues, target, targetX, targetY, text-anchor, text-decoration, text-rendering, textLength, to, transform, type, u1, u2, underline-position, underline-thickness, unicode, unicode-bidi, unicode-range, units-per-em, v-alphabetic, v-hanging, v-ideographic, v-mathematical, values, version, vert-adv-y, vert-origin-x, vert-origin-y, viewBox, viewTarget, visibility, width, widths, word-spacing, writing-mode, x, x-height, x1, x2, xChannelSelector, xlink:actuate, xlink:arcrole, xlink:href, xlink:role, xlink:show, xlink:title, xlink:type, xml:base, xml:lang, xml:space, y, y1, y2, yChannelSelector, z, zoomAndPan

The problem is that there are a small number of attributes that have conflicting method names with an element method:

color-profile, cursor, filter, glyphRef, mask, path, style

Additionally, .transform() already exists on Pablo collections, but this would just require an override of the generic attribute generator with a more specific method, as with the .svg() method.