function parseFilterString(currentStyle) {
    var result = {};
    var fnReg = /(([a-z].*?)\(.*?\))(?=\s([a-z].*?)\(.*?\)|\s*$)/g;
    var matches = currentStyle.match(fnReg);
    var fnArray = currentStyle !== 'none' ? matches : 'none';

    if (fnArray instanceof Array) {
      for (var j = 0, jl = fnArray.length; j < jl; j += 1) {
        var p = fnArray[j].trim().split(/\((.+)/);
        var pp = replaceDashNamespace(p[0]);
        if (pp === 'dropShadow') {
          var shadowColor = p[1].match(/(([a-z].*?)\(.*?\))(?=\s(.*?))/)[0];
          var params = p[1].replace(shadowColor, '').split(/\s/).map(parseFloat);
          result[pp] = params.filter(function (el) { return !Number.isNaN(el); }).concat(shadowColor);
        } else {
          result[pp] = p[1].replace(/'|"|\)/g, '');
        }
      }
    }

    return result;
  }
Returns an array with current filter sub-properties values.
@param {string} currentStyle the current filter computed style
@returns {{[x: string]: number}} the filter tuple