*"* 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
method constructor.
create object elements.
create object objectdefaults.
create object extclrschemelst.
create object extlst.
endmethod. "class_constructor
method read_theme.
data: lo_node_theme type ref to if_ixml_element.
data: lo_theme_children type ref to if_ixml_node_list.
data: lo_theme_iterator type ref to if_ixml_node_iterator.
data: lo_theme_element type ref to if_ixml_element.
check io_theme_xml is not initial.
lo_node_theme = io_theme_xml->get_root_element( )." find_from_name( name = c_theme ).
if lo_node_theme is bound.
name = lo_node_theme->get_attribute( name = c_theme_name ).
xmls_a = lo_node_theme->get_attribute( name = c_theme_xmlns ).
lo_theme_children = lo_node_theme->get_children( ).
lo_theme_iterator = lo_theme_children->create_iterator( ).
lo_theme_element ?= lo_theme_iterator->get_next( ).
while lo_theme_element is bound.
case lo_theme_element->get_name( ).
when c_theme_elements.
elements->load( io_elements = lo_theme_element ).
when c_theme_object_def.
objectdefaults->load( io_object_def = lo_theme_element ).
when c_theme_extra_color.
extclrschemelst->load( io_extra_color = lo_theme_element ).
when c_theme_extlst.
extlst->load( io_extlst = lo_theme_element ).
endcase.
lo_theme_element ?= lo_theme_iterator->get_next( ).
endwhile.
endif.
endmethod. "read_theme
method set_color.
elements->color_scheme->set_color(
exporting
iv_type = iv_type
iv_srgb = iv_srgb
iv_syscolorname = iv_syscolorname
iv_syscolorlast = iv_syscolorlast
).
endmethod. "set_color
method set_color_scheme_name.
elements->color_scheme->set_name( iv_name = iv_name ).
endmethod. "set_color_scheme_name
method set_cs_font.
elements->font_scheme->modify_cs_font(
exporting
iv_type = iv_type
iv_typeface = iv_typeface
iv_panose = iv_panose
iv_pitchfamily = iv_pitchfamily
iv_charset = iv_charset
).
endmethod. "set_cs_font
method set_ea_font.
elements->font_scheme->modify_ea_font(
exporting
iv_type = iv_type
iv_typeface = iv_typeface
iv_panose = iv_panose
iv_pitchfamily = iv_pitchfamily
iv_charset = iv_charset
).
endmethod. "set_ea_font
method set_font.
elements->font_scheme->modify_font(
exporting
iv_type = iv_type
iv_script = iv_script
iv_typeface = iv_typeface
).
endmethod. "set_font
method set_font_scheme_name.
elements->font_scheme->set_name( iv_name = iv_name ).
endmethod. "set_font_scheme_name
method set_latin_font.
elements->font_scheme->modify_latin_font(
exporting
iv_type = iv_type
iv_typeface = iv_typeface
iv_panose = iv_panose
iv_pitchfamily = iv_pitchfamily
iv_charset = iv_charset
).
endmethod. "set_latin_font
method set_theme_name.
name = iv_name.
endmethod.
method write_theme.
data: lo_ixml type ref to if_ixml,
lo_element_root type ref to if_ixml_element,
lo_encoding type ref to if_ixml_encoding.
data: lo_streamfactory TYPE REF TO if_ixml_stream_factory.
data: lo_ostream TYPE REF TO if_ixml_ostream.
data: lo_renderer TYPE REF TO if_ixml_renderer.
data: lo_document type ref to if_ixml_document.
lo_ixml = cl_ixml=>create( ).
lo_encoding = lo_ixml->create_encoding( byte_order = if_ixml_encoding=>co_platform_endian
character_set = 'UTF-8' ).
lo_document = lo_ixml->create_document( ).
lo_document->set_encoding( lo_encoding ).
lo_document->set_standalone( abap_true ).
lo_document->set_namespace_prefix( prefix = 'a' ).
lo_element_root = lo_document->create_simple_element_ns( prefix = c_theme_prefix
name = c_theme
parent = lo_document
).
lo_element_root->set_attribute_ns( name = c_theme_xmlns
value = c_theme_xmlns_val ).
lo_element_root->set_attribute_ns( name = c_theme_name
value = name ).
elements->build_xml( io_document = lo_document ).
objectdefaults->build_xml( io_document = lo_document ).
extclrschemelst->build_xml( io_document = lo_document ).
extlst->build_xml( io_document = lo_document ).
lo_streamfactory = lo_ixml->create_stream_factory( ).
lo_ostream = lo_streamfactory->create_ostream_xstring( string = rv_xstring ).
lo_renderer = lo_ixml->create_renderer( ostream = lo_ostream document = lo_document ).
lo_renderer->render( ).
endmethod. "write_theme