protected DRDesignStyle transformStyle(
      DRIReportStyle style, boolean textStyle, DefaultStyleType defaultStyleType)
      throws DRException {
    if (style == null) {
      return getDefaultStyle(defaultStyleType);
    }
    String styleName = style.hashCode() + "_" + textStyle;
    if (designStyles.containsKey(styleName)) {
      return designStyles.get(styleName);
    }

    DRDesignStyle designStyle = style(getStyle(style), textStyle, defaultStyleType);
    if (textStyle) {
      if (StyleResolver.getFontName(designStyle) == null) {
        designStyle.getFont().setFontName(accessor.getTemplateTransform().getDefaultFontName());
      }
      if (StyleResolver.getFontSize(designStyle) == null) {
        designStyle.getFont().setFontSize(accessor.getTemplateTransform().getDefaultFontSize());
      }
      if (StyleResolver.getFontBold(designStyle) == null) {
        designStyle.getFont().setBold(accessor.getTemplateTransform().getDefaultFontBold());
      }
      if (StyleResolver.getFontItalic(designStyle) == null) {
        designStyle.getFont().setItalic(accessor.getTemplateTransform().getDefaultFontItalic());
      }
      if (StyleResolver.getFontUnderline(designStyle) == null) {
        designStyle
            .getFont()
            .setUnderline(accessor.getTemplateTransform().getDefaultFontUnderline());
      }
      if (StyleResolver.getFontStrikeThrough(designStyle) == null) {
        designStyle
            .getFont()
            .setStrikeThrough(accessor.getTemplateTransform().getDefaultFontStrikeThrough());
      }
      if (StyleResolver.getPdfFontName(designStyle) == null) {
        designStyle
            .getFont()
            .setPdfFontName(accessor.getTemplateTransform().getDefaultFontPdfFontName());
      }
      if (StyleResolver.getPdfEncoding(designStyle) == null) {
        designStyle
            .getFont()
            .setPdfEncoding(accessor.getTemplateTransform().getDefaultFontPdfEncoding());
      }
      if (StyleResolver.getPdfEmbedded(designStyle) == null) {
        designStyle
            .getFont()
            .setPdfEmbedded(accessor.getTemplateTransform().getDefaultFontPdfEmbedded());
      }
    }
    addStyle(styleName, designStyle);
    return designStyle;
  }
 protected DRIStyle getStyle(DRIReportStyle reportStyle) {
   if (reportStyle == null) {
     return null;
   }
   if (reportStyle instanceof DRIStyle) {
     return (DRIStyle) reportStyle;
   }
   if (reportStyle instanceof DRITemplateStyle) {
     String name = ((DRITemplateStyle) reportStyle).getName();
     DRIStyle style = templateStyles.get(name);
     if (style == null) {
       throw new DRDesignReportException("Template style " + name + " not found");
     }
     return style;
   }
   throw new DRDesignReportException(
       "Style " + reportStyle.getClass().getName() + " not supported");
 }