*"* use this source file for the definition and implementation of *"* local helper classes, interface definitions and type *"* declarations *"* use this source file for any type of declarations (class *"* definitions, interfaces or type declarations) you need for *"* components in the private section *"* use this source file for any macro definitions you need *"* in the implementation part of the class *"* use this source file for your ABAP unit test classes method build_xml. data: lo_scheme_element type ref to if_ixml_element. data: lo_font type ref to if_ixml_element. data: lo_latin type ref to if_ixml_element. data: lo_ea type ref to if_ixml_element. data: lo_cs type ref to if_ixml_element. data: lo_major type ref to if_ixml_element. data: lo_minor type ref to if_ixml_element. data: lo_elements type ref to if_ixml_element. field-symbols: <font> type t_font. check io_document is bound. lo_elements ?= io_document->find_from_name_ns( name = zcl_excel_theme=>c_theme_elements ). if lo_elements is bound. lo_scheme_element ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = zcl_excel_theme_elements=>c_font_scheme parent = lo_elements ). lo_scheme_element->set_attribute( name = c_name value = font_scheme-name ). lo_major ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_major parent = lo_scheme_element ). if lo_major is bound. lo_latin ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_latin parent = lo_major ). lo_latin->set_attribute( name = c_typeface value = font_scheme-major-latin-typeface ). if font_scheme-major-latin-panose is not initial. lo_latin->set_attribute( name = c_panose value = font_scheme-major-latin-panose ). endif. if font_scheme-major-latin-pitchfamily is not initial. lo_latin->set_attribute( name = c_pitchfamily value = font_scheme-major-latin-pitchfamily ). endif. if font_scheme-major-latin-charset is not initial. lo_latin->set_attribute( name = c_charset value = font_scheme-major-latin-charset ). endif. lo_ea ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_ea parent = lo_major ). lo_ea->set_attribute( name = c_typeface value = font_scheme-major-ea-typeface ). if font_scheme-major-ea-panose is not initial. lo_ea->set_attribute( name = c_panose value = font_scheme-major-ea-panose ). endif. if font_scheme-major-ea-pitchfamily is not initial. lo_ea->set_attribute( name = c_pitchfamily value = font_scheme-major-ea-pitchfamily ). endif. if font_scheme-major-ea-charset is not initial. lo_ea->set_attribute( name = c_charset value = font_scheme-major-ea-charset ). endif. lo_cs ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_cs parent = lo_major ). lo_cs->set_attribute( name = c_typeface value = font_scheme-major-cs-typeface ). if font_scheme-major-cs-panose is not initial. lo_cs->set_attribute( name = c_panose value = font_scheme-major-cs-panose ). endif. if font_scheme-major-cs-pitchfamily is not initial. lo_cs->set_attribute( name = c_pitchfamily value = font_scheme-major-cs-pitchfamily ). endif. if font_scheme-major-cs-charset is not initial. lo_cs->set_attribute( name = c_charset value = font_scheme-major-cs-charset ). endif. loop at font_scheme-major-fonts assigning <font>. if <font>-script is not initial and <font>-typeface is not initial. clear lo_font. lo_font ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_font parent = lo_major ). lo_font->set_attribute( name = c_script value = <font>-script ). lo_font->set_attribute( name = c_typeface value = <font>-typeface ). endif. endloop. clear: lo_latin, lo_ea, lo_cs, lo_font. endif. lo_minor ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_minor parent = lo_scheme_element ). if lo_minor is bound. lo_latin ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_latin parent = lo_minor ). lo_latin->set_attribute( name = c_typeface value = font_scheme-minor-latin-typeface ). if font_scheme-minor-latin-panose is not initial. lo_latin->set_attribute( name = c_panose value = font_scheme-minor-latin-panose ). endif. if font_scheme-minor-latin-pitchfamily is not initial. lo_latin->set_attribute( name = c_pitchfamily value = font_scheme-minor-latin-pitchfamily ). endif. if font_scheme-minor-latin-charset is not initial. lo_latin->set_attribute( name = c_charset value = font_scheme-minor-latin-charset ). endif. lo_ea ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_ea parent = lo_minor ). lo_ea->set_attribute( name = c_typeface value = font_scheme-minor-ea-typeface ). if font_scheme-minor-ea-panose is not initial. lo_ea->set_attribute( name = c_panose value = font_scheme-minor-ea-panose ). endif. if font_scheme-minor-ea-pitchfamily is not initial. lo_ea->set_attribute( name = c_pitchfamily value = font_scheme-minor-ea-pitchfamily ). endif. if font_scheme-minor-ea-charset is not initial. lo_ea->set_attribute( name = c_charset value = font_scheme-minor-ea-charset ). endif. lo_cs ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_cs parent = lo_minor ). lo_cs->set_attribute( name = c_typeface value = font_scheme-minor-cs-typeface ). if font_scheme-minor-cs-panose is not initial. lo_cs->set_attribute( name = c_panose value = font_scheme-minor-cs-panose ). endif. if font_scheme-minor-cs-pitchfamily is not initial. lo_cs->set_attribute( name = c_pitchfamily value = font_scheme-minor-cs-pitchfamily ). endif. if font_scheme-minor-cs-charset is not initial. lo_cs->set_attribute( name = c_charset value = font_scheme-minor-cs-charset ). endif. loop at font_scheme-minor-fonts assigning <font>. if <font>-script is not initial and <font>-typeface is not initial. clear lo_font. lo_font ?= io_document->create_simple_element_ns( prefix = zcl_excel_theme=>c_theme_prefix name = c_font parent = lo_minor ). lo_font->set_attribute( name = c_script value = <font>-script ). lo_font->set_attribute( name = c_typeface value = <font>-typeface ). endif. endloop. clear: lo_latin, lo_ea, lo_cs, lo_font. endif. endif. endmethod. "build_xml method constructor. set_defaults( ). endmethod. "constructor method load. data: lo_scheme_children type ref to if_ixml_node_list. data: lo_scheme_iterator type ref to if_ixml_node_iterator. data: lo_scheme_element type ref to if_ixml_element. data: lo_major_children type ref to if_ixml_node_list. data: lo_major_iterator type ref to if_ixml_node_iterator. data: lo_major_element type ref to if_ixml_element. data: lo_minor_children type ref to if_ixml_node_list. data: lo_minor_iterator type ref to if_ixml_node_iterator. data: lo_minor_element type ref to if_ixml_element. data: ls_font type t_font. check io_font_scheme is not initial. clear font_scheme. font_scheme-name = io_font_scheme->get_attribute( name = c_name ). lo_scheme_children = io_font_scheme->get_children( ). lo_scheme_iterator = lo_scheme_children->create_iterator( ). lo_scheme_element ?= lo_scheme_iterator->get_next( ). while lo_scheme_element is bound. case lo_scheme_element->get_name( ). when c_major. lo_major_children = lo_scheme_element->get_children( ). lo_major_iterator = lo_major_children->create_iterator( ). lo_major_element ?= lo_major_iterator->get_next( ). while lo_major_element is bound. case lo_major_element->get_name( ). when c_latin. font_scheme-major-latin-typeface = lo_major_element->get_attribute( name = c_typeface ). font_scheme-major-latin-panose = lo_major_element->get_attribute( name = c_panose ). font_scheme-major-latin-pitchfamily = lo_major_element->get_attribute( name = c_pitchfamily ). font_scheme-major-latin-charset = lo_major_element->get_attribute( name = c_charset ). when c_ea. font_scheme-major-ea-typeface = lo_major_element->get_attribute( name = c_typeface ). font_scheme-major-ea-panose = lo_major_element->get_attribute( name = c_panose ). font_scheme-major-ea-pitchfamily = lo_major_element->get_attribute( name = c_pitchfamily ). font_scheme-major-ea-charset = lo_major_element->get_attribute( name = c_charset ). when c_cs. font_scheme-major-cs-typeface = lo_major_element->get_attribute( name = c_typeface ). font_scheme-major-cs-panose = lo_major_element->get_attribute( name = c_panose ). font_scheme-major-cs-pitchfamily = lo_major_element->get_attribute( name = c_pitchfamily ). font_scheme-major-cs-charset = lo_major_element->get_attribute( name = c_charset ). when c_font. clear ls_font. ls_font-script = lo_major_element->get_attribute( name = c_script ). ls_font-typeface = lo_major_element->get_attribute( name = c_typeface ). try. insert ls_font into table font_scheme-major-fonts. catch cx_root. "not the best but just to avoid duplicate lines dump endtry. endcase. lo_major_element ?= lo_major_iterator->get_next( ). endwhile. when c_minor. lo_minor_children = lo_scheme_element->get_children( ). lo_minor_iterator = lo_minor_children->create_iterator( ). lo_minor_element ?= lo_minor_iterator->get_next( ). while lo_minor_element is bound. case lo_minor_element->get_name( ). when c_latin. font_scheme-minor-latin-typeface = lo_minor_element->get_attribute( name = c_typeface ). font_scheme-minor-latin-panose = lo_minor_element->get_attribute( name = c_panose ). font_scheme-minor-latin-pitchfamily = lo_minor_element->get_attribute( name = c_pitchfamily ). font_scheme-minor-latin-charset = lo_minor_element->get_attribute( name = c_charset ). when c_ea. font_scheme-minor-ea-typeface = lo_minor_element->get_attribute( name = c_typeface ). font_scheme-minor-ea-panose = lo_minor_element->get_attribute( name = c_panose ). font_scheme-minor-ea-pitchfamily = lo_minor_element->get_attribute( name = c_pitchfamily ). font_scheme-minor-ea-charset = lo_minor_element->get_attribute( name = c_charset ). when c_cs. font_scheme-minor-cs-typeface = lo_minor_element->get_attribute( name = c_typeface ). font_scheme-minor-cs-panose = lo_minor_element->get_attribute( name = c_panose ). font_scheme-minor-cs-pitchfamily = lo_minor_element->get_attribute( name = c_pitchfamily ). font_scheme-minor-cs-charset = lo_minor_element->get_attribute( name = c_charset ). when c_font. clear ls_font. ls_font-script = lo_minor_element->get_attribute( name = c_script ). ls_font-typeface = lo_minor_element->get_attribute( name = c_typeface ). try. insert ls_font into table font_scheme-minor-fonts. catch cx_root. "not the best but just to avoid duplicate lines dump endtry. endcase. lo_minor_element ?= lo_minor_iterator->get_next( ). endwhile. endcase. lo_scheme_element ?= lo_scheme_iterator->get_next( ). endwhile. endmethod. "load method modify_cs_font. modify_lec_fonts( exporting iv_type = iv_type iv_font_type = c_cs iv_typeface = iv_typeface iv_panose = iv_panose iv_pitchfamily = iv_pitchfamily iv_charset = iv_charset ). endmethod. "modify_latin_font method modify_ea_font. modify_lec_fonts( exporting iv_type = iv_type iv_font_type = c_ea iv_typeface = iv_typeface iv_panose = iv_panose iv_pitchfamily = iv_pitchfamily iv_charset = iv_charset ). endmethod. "modify_latin_font method modify_font. data: ls_font type t_font. field-symbols: <font> type t_font. ls_font-script = iv_script. ls_font-typeface = iv_typeface. try. case iv_type. when c_major. read table font_scheme-major-fonts with key script = iv_script assigning <font>. if sy-subrc eq 0. <font> = ls_font. else. insert ls_font into table font_scheme-major-fonts. endif. when c_minor. read table font_scheme-minor-fonts with key script = iv_script assigning <font>. if sy-subrc eq 0. <font> = ls_font. else. insert ls_font into table font_scheme-minor-fonts. endif. endcase. catch cx_root. "not the best but just to avoid duplicate lines dump endtry. endmethod. "add_font method modify_latin_font. modify_lec_fonts( exporting iv_type = iv_type iv_font_type = c_latin iv_typeface = iv_typeface iv_panose = iv_panose iv_pitchfamily = iv_pitchfamily iv_charset = iv_charset ). endmethod. "modify_latin_font method modify_lec_fonts. field-symbols: <type> type t_fonts, <font> type t_fonttype. case iv_type. when c_minor. assign font_scheme-minor to <type>. when c_major. assign font_scheme-major to <type>. when others. return. endcase. check <type> is assigned. case iv_font_type. when c_latin. assign <type>-latin to <font>. when c_ea. assign <type>-ea to <font>. when c_cs. assign <type>-cs to <font>. when others. return. endcase. check <font> is assigned. <font>-typeface = iv_typeface. <font>-panose = iv_panose. <font>-pitchfamily = iv_pitchfamily. <font>-charset = iv_charset. endmethod. "modify_lec_fonts method set_defaults. clear font_scheme. font_scheme-name = 'Office'. font_scheme-major-latin-typeface = 'Calibri Light'. font_scheme-major-latin-panose = '020F0302020204030204'. modify_font( iv_type = c_major iv_script = 'Jpan' iv_typeface = 'MS Pゴシック' ). modify_font( iv_type = c_major iv_script = 'Hang' iv_typeface = '맑은 고딕' ). modify_font( iv_type = c_major iv_script = 'Hans' iv_typeface = '宋体' ). modify_font( iv_type = c_major iv_script = 'Hant' iv_typeface = '新細明體' ). modify_font( iv_type = c_major iv_script = 'Arab' iv_typeface = 'Times New Roman' ). modify_font( iv_type = c_major iv_script = 'Hebr' iv_typeface = 'Times New Roman' ). modify_font( iv_type = c_major iv_script = 'Thai' iv_typeface = 'Tahoma' ). modify_font( iv_type = c_major iv_script = 'Ethi' iv_typeface = 'Nyala' ). modify_font( iv_type = c_major iv_script = 'Beng' iv_typeface = 'Vrinda' ). modify_font( iv_type = c_major iv_script = 'Gujr' iv_typeface = 'Shruti' ). modify_font( iv_type = c_major iv_script = 'Khmr' iv_typeface = 'MoolBoran' ). modify_font( iv_type = c_major iv_script = 'Knda' iv_typeface = 'Tunga' ). modify_font( iv_type = c_major iv_script = 'Guru' iv_typeface = 'Raavi' ). modify_font( iv_type = c_major iv_script = 'Cans' iv_typeface = 'Euphemia' ). modify_font( iv_type = c_major iv_script = 'Cher' iv_typeface = 'Plantagenet Cherokee' ). modify_font( iv_type = c_major iv_script = 'Yiii' iv_typeface = 'Microsoft Yi Baiti' ). modify_font( iv_type = c_major iv_script = 'Tibt' iv_typeface = 'Microsoft Himalaya' ). modify_font( iv_type = c_major iv_script = 'Thaa' iv_typeface = 'MV Boli' ). modify_font( iv_type = c_major iv_script = 'Deva' iv_typeface = 'Mangal' ). modify_font( iv_type = c_major iv_script = 'Telu' iv_typeface = 'Gautami' ). modify_font( iv_type = c_major iv_script = 'Taml' iv_typeface = 'Latha' ). modify_font( iv_type = c_major iv_script = 'Syrc' iv_typeface = 'Estrangelo Edessa' ). modify_font( iv_type = c_major iv_script = 'Orya' iv_typeface = 'Kalinga' ). modify_font( iv_type = c_major iv_script = 'Mlym' iv_typeface = 'Kartika' ). modify_font( iv_type = c_major iv_script = 'Laoo' iv_typeface = 'DokChampa' ). modify_font( iv_type = c_major iv_script = 'Sinh' iv_typeface = 'Iskoola Pota' ). modify_font( iv_type = c_major iv_script = 'Mong' iv_typeface = 'Mongolian Baiti' ). modify_font( iv_type = c_major iv_script = 'Viet' iv_typeface = 'Times New Roman' ). modify_font( iv_type = c_major iv_script = 'Uigh' iv_typeface = 'Microsoft Uighur' ). modify_font( iv_type = c_major iv_script = 'Geor' iv_typeface = 'Sylfaen' ). font_scheme-minor-latin-typeface = 'Calibri'. font_scheme-minor-latin-panose = '020F0502020204030204'. modify_font( iv_type = c_minor iv_script = 'Jpan' iv_typeface = 'MS Pゴシック' ). modify_font( iv_type = c_minor iv_script = 'Hang' iv_typeface = '맑은 고딕' ). modify_font( iv_type = c_minor iv_script = 'Hans' iv_typeface = '宋体' ). modify_font( iv_type = c_minor iv_script = 'Hant' iv_typeface = '新細明體' ). modify_font( iv_type = c_minor iv_script = 'Arab' iv_typeface = 'Arial' ). modify_font( iv_type = c_minor iv_script = 'Hebr' iv_typeface = 'Arial' ). modify_font( iv_type = c_minor iv_script = 'Thai' iv_typeface = 'Tahoma' ). modify_font( iv_type = c_minor iv_script = 'Ethi' iv_typeface = 'Nyala' ). modify_font( iv_type = c_minor iv_script = 'Beng' iv_typeface = 'Vrinda' ). modify_font( iv_type = c_minor iv_script = 'Gujr' iv_typeface = 'Shruti' ). modify_font( iv_type = c_minor iv_script = 'Khmr' iv_typeface = 'DaunPenh' ). modify_font( iv_type = c_minor iv_script = 'Knda' iv_typeface = 'Tunga' ). modify_font( iv_type = c_minor iv_script = 'Guru' iv_typeface = 'Raavi' ). modify_font( iv_type = c_minor iv_script = 'Cans' iv_typeface = 'Euphemia' ). modify_font( iv_type = c_minor iv_script = 'Cher' iv_typeface = 'Plantagenet Cherokee' ). modify_font( iv_type = c_minor iv_script = 'Yiii' iv_typeface = 'Microsoft Yi Baiti' ). modify_font( iv_type = c_minor iv_script = 'Tibt' iv_typeface = 'Microsoft Himalaya' ). modify_font( iv_type = c_minor iv_script = 'Thaa' iv_typeface = 'MV Boli' ). modify_font( iv_type = c_minor iv_script = 'Deva' iv_typeface = 'Mangal' ). modify_font( iv_type = c_minor iv_script = 'Telu' iv_typeface = 'Gautami' ). modify_font( iv_type = c_minor iv_script = 'Taml' iv_typeface = 'Latha' ). modify_font( iv_type = c_minor iv_script = 'Syrc' iv_typeface = 'Estrangelo Edessa' ). modify_font( iv_type = c_minor iv_script = 'Orya' iv_typeface = 'Kalinga' ). modify_font( iv_type = c_minor iv_script = 'Mlym' iv_typeface = 'Kartika' ). modify_font( iv_type = c_minor iv_script = 'Laoo' iv_typeface = 'DokChampa' ). modify_font( iv_type = c_minor iv_script = 'Sinh' iv_typeface = 'Iskoola Pota' ). modify_font( iv_type = c_minor iv_script = 'Mong' iv_typeface = 'Mongolian Baiti' ). modify_font( iv_type = c_minor iv_script = 'Viet' iv_typeface = 'Arial' ). modify_font( iv_type = c_minor iv_script = 'Uigh' iv_typeface = 'Microsoft Uighur' ). modify_font( iv_type = c_minor iv_script = 'Geor' iv_typeface = 'Sylfaen' ). endmethod. "set_defaults method set_name. font_scheme-name = iv_name. endmethod. "set_name