protected void setInlineIconStyle(
        Style style,
        org.geotools.styling.Style sld,
        IconProperties properties,
        KmlEncodingContext context) {
      final String name = properties.getIconName(sld);

      Map<String, org.geotools.styling.Style> iconStyles = context.getIconStyles();
      if (!iconStyles.containsKey(name)) {
        final org.geotools.styling.Style injectedStyle =
            IconPropertyInjector.injectProperties(sld, properties.getProperties());

        iconStyles.put(name, injectedStyle);
      }
      final Double scale = properties.getScale();
      final String path = "icons/" + name + ".png";

      IconStyle is = style.createAndSetIconStyle();
      if (properties.getHeading() != null) {
        is.setHeading(0.0);
      }
      if (scale != null) {
        is.setScale(scale);
      }

      Icon icon = is.createAndSetIcon();
      icon.setHref(path);
    }
    protected void setLiveIconStyle(
        Style style,
        org.geotools.styling.Style sld,
        IconProperties properties,
        KmlEncodingContext context) {
      final Double opacity = properties.getOpacity();
      final Double scale = properties.getScale();
      final Double heading = properties.getHeading();

      IconStyle is = style.createAndSetIconStyle();

      if (opacity != null) {
        is.setColor(colorToHex(Color.WHITE, opacity));
      }

      if (scale != null) {
        is.setScale(scale);
      }

      if (heading != null) {
        is.setHeading(heading);
      }

      // Get the name of the workspace

      WorkspaceInfo ws = context.getWms().getCatalog().getStyleByName(sld.getName()).getWorkspace();
      String wsName = null;
      if (ws != null) wsName = ws.getName();

      Icon icon = is.createAndSetIcon();
      icon.setHref(
          properties.href(
              context.getMapContent().getRequest().getBaseUrl(), wsName, sld.getName()));
    }
 /** Encodes a KML IconStyle from a point style and symbolizer. */
 protected void setIconStyle(
     Style style,
     org.geotools.styling.Style sld,
     IconProperties properties,
     KmlEncodingContext context) {
   if (context.isLiveIcons() || properties.isExternal()) {
     setLiveIconStyle(style, sld, properties, context);
   } else {
     setInlineIconStyle(style, sld, properties, context);
   }
 }