text: /*****************************************************************************
   * theme - A library for creating Excel XLSX theme files.
   *
   * Used in conjunction with the libxlsxwriter library.
   *
   * Copyright 2014-2018, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
   *
   */
  
  #include <string.h>
  
  #include "xlsxwriter/xmlwriter.h"
  #include "xlsxwriter/theme.h"
  #include "xlsxwriter/utility.h"
  
  const char *theme_strs[] = {
      "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n",
      "<a:theme xmlns:a=\"http://schemas.openxmlformats.org/",
      "drawingml/2006/main\" name=\"Office Theme\">",
      "<a:themeElements>",
      "<a:clrScheme name=\"Office\"><a:dk1>",
      "<a:sysClr val=\"windowText\" lastClr=\"000000\"/>",
      "</a:dk1><a:lt1>",
      "<a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1><a:dk2>",
      "<a:srgbClr val=\"1F497D\"/></a:dk2><a:lt2>",
      "<a:srgbClr val=\"EEECE1\"/></a:lt2><a:accent1>",
      "<a:srgbClr val=\"4F81BD\"/></a:accent1><a:accent2>",
      "<a:srgbClr val=\"C0504D\"/></a:accent2><a:accent3>",
      "<a:srgbClr val=\"9BBB59\"/></a:accent3><a:accent4>",
      "<a:srgbClr val=\"8064A2\"/></a:accent4><a:accent5>",
      "<a:srgbClr val=\"4BACC6\"/></a:accent5><a:accent6>",
      "<a:srgbClr val=\"F79646\"/></a:accent6><a:hlink>",
      "<a:srgbClr val=\"0000FF\"/></a:hlink><a:folHlink>",
      "<a:srgbClr val=\"800080\"/></a:folHlink></a:clrScheme>",
      "<a:fontScheme name=\"Office\"><a:majorFont>",
      "<a:latin typeface=\"Cambria\"/><a:ea typeface=\"\"/>",
      "<a:cs typeface=\"\"/>",
      "<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>",
      "<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>",
      "<a:font script=\"Hans\" typeface=\"宋体\"/>",
      "<a:font script=\"Hant\" typeface=\"新細明體\"/>",
      "<a:font script=\"Arab\" typeface=\"Times New Roman\"/>",
      "<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>",
      "<a:font script=\"Thai\" typeface=\"Tahoma\"/>",
      "<a:font script=\"Ethi\" typeface=\"Nyala\"/>",
      "<a:font script=\"Beng\" typeface=\"Vrinda\"/>",
      "<a:font script=\"Gujr\" typeface=\"Shruti\"/>",
      "<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>",
      "<a:font script=\"Knda\" typeface=\"Tunga\"/>",
      "<a:font script=\"Guru\" typeface=\"Raavi\"/>",
      "<a:font script=\"Cans\" typeface=\"Euphemia\"/>",
      "<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>",
      "<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>",
      "<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>",
      "<a:font script=\"Thaa\" typeface=\"MV Boli\"/>",
      "<a:font script=\"Deva\" typeface=\"Mangal\"/>",
      "<a:font script=\"Telu\" typeface=\"Gautami\"/>",
      "<a:font script=\"Taml\" typeface=\"Latha\"/>",
      "<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>",
      "<a:font script=\"Orya\" typeface=\"Kalinga\"/>",
      "<a:font script=\"Mlym\" typeface=\"Kartika\"/>",
      "<a:font script=\"Laoo\" typeface=\"DokChampa\"/>",
      "<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>",
      "<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>",
      "<a:font script=\"Viet\" typeface=\"Times New Roman\"/>",
      "<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>",
      "</a:majorFont>",
      "<a:minorFont>",
      "<a:latin typeface=\"Calibri\"/>",
      "<a:ea typeface=\"\"/>",
      "<a:cs typeface=\"\"/>",
      "<a:font script=\"Jpan\" typeface=\"ＭＳ Ｐゴシック\"/>",
      "<a:font script=\"Hang\" typeface=\"맑은 고딕\"/>",
      "<a:font script=\"Hans\" typeface=\"宋体\"/>",
      "<a:font script=\"Hant\" typeface=\"新細明體\"/>",
      "<a:font script=\"Arab\" typeface=\"Arial\"/>",
      "<a:font script=\"Hebr\" typeface=\"Arial\"/>",
      "<a:font script=\"Thai\" typeface=\"Tahoma\"/>",
      "<a:font script=\"Ethi\" typeface=\"Nyala\"/>",
      "<a:font script=\"Beng\" typeface=\"Vrinda\"/>",
      "<a:font script=\"Gujr\" typeface=\"Shruti\"/>",
      "<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>",
      "<a:font script=\"Knda\" typeface=\"Tunga\"/>",
      "<a:font script=\"Guru\" typeface=\"Raavi\"/>",
      "<a:font script=\"Cans\" typeface=\"Euphemia\"/>",
      "<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>",
      "<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>",
      "<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>",
      "<a:font script=\"Thaa\" typeface=\"MV Boli\"/>",
      "<a:font script=\"Deva\" typeface=\"Mangal\"/>",
      "<a:font script=\"Telu\" typeface=\"Gautami\"/>",
      "<a:font script=\"Taml\" typeface=\"Latha\"/>",
      "<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>",
      "<a:font script=\"Orya\" typeface=\"Kalinga\"/>",
      "<a:font script=\"Mlym\" typeface=\"Kartika\"/>",
      "<a:font script=\"Laoo\" typeface=\"DokChampa\"/>",
      "<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>",
      "<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>",
      "<a:font script=\"Viet\" typeface=\"Arial\"/>",
      "<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>",
      "</a:minorFont>",
      "</a:fontScheme><a:fmtScheme name=\"Office\">",
      "<a:fillStyleLst>",
      "<a:solidFill>",
      "<a:schemeClr val=\"phClr\"/>",
      "</a:solidFill>",
      "<a:gradFill rotWithShape=\"1\">",
      "<a:gsLst>",
      "<a:gs pos=\"0\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:tint val=\"50000\"/>",
      "<a:satMod val=\"300000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"35000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:tint val=\"37000\"/>",
      "<a:satMod val=\"300000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"100000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:tint val=\"15000\"/>",
      "<a:satMod val=\"350000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "</a:gsLst>",
      "<a:lin ang=\"16200000\" scaled=\"1\"/>",
      "</a:gradFill>",
      "<a:gradFill rotWithShape=\"1\">",
      "<a:gsLst>",
      "<a:gs pos=\"0\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:shade val=\"51000\"/>",
      "<a:satMod val=\"130000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"80000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:shade val=\"93000\"/>",
      "<a:satMod val=\"130000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"100000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:shade val=\"94000\"/>",
      "<a:satMod val=\"135000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "</a:gsLst>",
      "<a:lin ang=\"16200000\" scaled=\"0\"/>",
      "</a:gradFill>",
      "</a:fillStyleLst>",
      "<a:lnStyleLst>",
      "<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">",
      "<a:solidFill>",
      "<a:schemeClr val=\"phClr\">",
      "<a:shade val=\"95000\"/>",
      "<a:satMod val=\"105000\"/>",
      "</a:schemeClr>",
      "</a:solidFill>",
      "<a:prstDash val=\"solid\"/>",
      "</a:ln>",
      "<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">",
      "<a:solidFill>",
      "<a:schemeClr val=\"phClr\"/>",
      "</a:solidFill>",
      "<a:prstDash val=\"solid\"/>",
      "</a:ln>",
      "<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">",
      "<a:solidFill>",
      "<a:schemeClr val=\"phClr\"/>",
      "</a:solidFill>",
      "<a:prstDash val=\"solid\"/>",
      "</a:ln>",
      "</a:lnStyleLst>",
      "<a:effectStyleLst>",
      "<a:effectStyle>",
      "<a:effectLst>",
      "<a:outerShdw blurRad=\"40000\" dist=\"20000\" ",
      "dir=\"5400000\" rotWithShape=\"0\">",
      "<a:srgbClr val=\"000000\">",
      "<a:alpha val=\"38000\"/>",
      "</a:srgbClr>",
      "</a:outerShdw>",
      "</a:effectLst>",
      "</a:effectStyle>",
      "<a:effectStyle>",
      "<a:effectLst>",
      "<a:outerShdw blurRad=\"40000\" dist=\"23000\" ",
      "dir=\"5400000\" rotWithShape=\"0\">",
      "<a:srgbClr val=\"000000\">",
      "<a:alpha val=\"35000\"/>",
      "</a:srgbClr>",
      "</a:outerShdw>",
      "</a:effectLst>",
      "</a:effectStyle>",
      "<a:effectStyle>",
      "<a:effectLst>",
      "<a:outerShdw blurRad=\"40000\" dist=\"23000\" ",
      "dir=\"5400000\" rotWithShape=\"0\">",
      "<a:srgbClr val=\"000000\">",
      "<a:alpha val=\"35000\"/>",
      "</a:srgbClr>",
      "</a:outerShdw>",
      "</a:effectLst>",
      "<a:scene3d>",
      "<a:camera prst=\"orthographicFront\">",
      "<a:rot lat=\"0\" lon=\"0\" rev=\"0\"/>",
      "</a:camera>",
      "<a:lightRig rig=\"threePt\" dir=\"t\">",
      "<a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/>",
      "</a:lightRig>",
      "</a:scene3d>",
      "<a:sp3d>",
      "<a:bevelT w=\"63500\" h=\"25400\"/>",
      "</a:sp3d>",
      "</a:effectStyle>",
      "</a:effectStyleLst>",
      "<a:bgFillStyleLst>",
      "<a:solidFill>",
      "<a:schemeClr val=\"phClr\"/>",
      "</a:solidFill>",
      "<a:gradFill rotWithShape=\"1\">",
      "<a:gsLst>",
      "<a:gs pos=\"0\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:tint val=\"40000\"/>",
      "<a:satMod val=\"350000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"40000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:tint val=\"45000\"/>",
      "<a:shade val=\"99000\"/>",
      "<a:satMod val=\"350000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"100000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:shade val=\"20000\"/>",
      "<a:satMod val=\"255000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "</a:gsLst>",
      "<a:path path=\"circle\">",
      "<a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/>",
      "</a:path>",
      "</a:gradFill>",
      "<a:gradFill rotWithShape=\"1\">",
      "<a:gsLst>",
      "<a:gs pos=\"0\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:tint val=\"80000\"/>",
      "<a:satMod val=\"300000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "<a:gs pos=\"100000\">",
      "<a:schemeClr val=\"phClr\">",
      "<a:shade val=\"30000\"/>",
      "<a:satMod val=\"200000\"/>",
      "</a:schemeClr>",
      "</a:gs>",
      "</a:gsLst>",
      "<a:path path=\"circle\">",
      "<a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/>",
      "</a:path>",
      "</a:gradFill>",
      "</a:bgFillStyleLst>",
      "</a:fmtScheme>",
      "</a:themeElements>",
      "<a:objectDefaults/>",
      "<a:extraClrSchemeLst/>",
      "</a:theme>\n",
      ""
  };
  
  /*
   * Forward declarations.
   */
  
  /*****************************************************************************
   *
   * Private functions.
   *
   ****************************************************************************/
  
  /*
   * Create a new theme object.
   */
  lxw_theme *
  lxw_theme_new()
  {
      lxw_theme *theme = calloc(1, sizeof(lxw_theme));
      GOTO_LABEL_ON_MEM_ERROR(theme, mem_error);
  
      return theme;
  
  mem_error:
      lxw_theme_free(theme);
      return NULL;
  }
  
  /*
   * Free a theme object.
   */
  void
  lxw_theme_free(lxw_theme *theme)
  {
      if (!theme)
          return;
  
      free(theme);
  }
  
  /*****************************************************************************
   *
   * XML functions.
   *
   ****************************************************************************/
  
  /* This library isn't a xmlwriter. */
  
  /*****************************************************************************
   *
   * XML file assembly functions.
   *
   ****************************************************************************/
  
  /*
   * Assemble and write the XML file.
   */
  void
  lxw_theme_assemble_xml_file(lxw_theme *self)
  {
      int i = 0;
  
      while (strlen(theme_strs[i])) {
          fprintf(self->file, "%s", theme_strs[i]);
          i++;
      }
  }
  
  /*****************************************************************************
   *
   * Public functions.
   *
   ****************************************************************************/
  