docs: public void parseParameters(String parameters) {
  
          m_width = -1;
          m_height = -1;
          m_position = 0;
          m_type = 0;
          m_color = Simapi.COLOR_TRANSPARENT;
          m_cropX = -1;
          m_cropY = -1;
          m_cropWidth = -1;
          m_cropHeight = -1;
  
          List<String> tokens = CmsStringUtil.splitAsList(parameters, ',');
          Iterator<String> it = tokens.iterator();
          String k;
          String v;
          while (it.hasNext()) {
              String t = it.next();
              // extract key and value
              k = null;
              v = null;
              int idx = t.indexOf(':');
              if (idx >= 0) {
                  k = t.substring(0, idx).trim();
                  if (t.length() > idx) {
                      v = t.substring(idx + 1).trim();
                  }
              }
              if (CmsStringUtil.isNotEmpty(k) && CmsStringUtil.isNotEmpty(v)) {
                  // key and value are available
                  if (SCALE_PARAM_HEIGHT.equals(k)) {
                      // image height
                      m_height = CmsStringUtil.getIntValue(v, Integer.MIN_VALUE, k);
                  } else if (SCALE_PARAM_WIDTH.equals(k)) {
                      // image width
                      m_width = CmsStringUtil.getIntValue(v, Integer.MIN_VALUE, k);
                  } else if (SCALE_PARAM_CROP_X.equals(k)) {
                      // crop x coordinate
                      m_cropX = CmsStringUtil.getIntValue(v, Integer.MIN_VALUE, k);
                  } else if (SCALE_PARAM_CROP_Y.equals(k)) {
                      // crop y coordinate
                      m_cropY = CmsStringUtil.getIntValue(v, Integer.MIN_VALUE, k);
                  } else if (SCALE_PARAM_CROP_WIDTH.equals(k)) {
                      // crop width
                      m_cropWidth = CmsStringUtil.getIntValue(v, Integer.MIN_VALUE, k);
                  } else if (SCALE_PARAM_CROP_HEIGHT.equals(k)) {
                      // crop height
                      m_cropHeight = CmsStringUtil.getIntValue(v, Integer.MIN_VALUE, k);
                  } else if (SCALE_PARAM_TYPE.equals(k)) {
                      // scaling type
                      setType(CmsStringUtil.getIntValue(v, -1, CmsImageScaler.SCALE_PARAM_TYPE));
                  } else if (SCALE_PARAM_COLOR.equals(k)) {
                      // image background color
                      setColor(v);
                  } else if (SCALE_PARAM_POS.equals(k)) {
                      // image position (depends on scale type)
                      setPosition(CmsStringUtil.getIntValue(v, -1, CmsImageScaler.SCALE_PARAM_POS));
                  } else if (SCALE_PARAM_QUALITY.equals(k)) {
                      // image position (depends on scale type)
                      setQuality(CmsStringUtil.getIntValue(v, 0, k));
                  } else if (SCALE_PARAM_RENDERMODE.equals(k)) {
                      // image position (depends on scale type)
                      setRenderMode(CmsStringUtil.getIntValue(v, 0, k));
                  } else if (SCALE_PARAM_FILTER.equals(k)) {
                      // image filters to apply
                      setFilters(v);
                  } else {
                      if (LOG.isDebugEnabled()) {
                          LOG.debug(Messages.get().getBundle().key(Messages.ERR_INVALID_IMAGE_SCALE_PARAMS_2, k, v));
                      }
                  }
              } else {
                  if (LOG.isDebugEnabled()) {
                      LOG.debug(Messages.get().getBundle().key(Messages.ERR_INVALID_IMAGE_SCALE_PARAMS_2, k, v));
                  }
              }
          }
          // initialize image crop area
          initCropArea();
      }