mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 13:46:17 +08:00
234 lines
7.9 KiB
ABAP
234 lines
7.9 KiB
ABAP
class ZCL_EXCEL_THEME definition
|
|
public
|
|
create public .
|
|
|
|
public section.
|
|
|
|
constants C_THEME_ELEMENTS type STRING value 'themeElements'. "#EC NOTEXT
|
|
constants C_THEME_OBJECT_DEF type STRING value 'objectDefaults'. "#EC NOTEXT
|
|
constants C_THEME_EXTRA_COLOR type STRING value 'extraClrSchemeLst'. "#EC NOTEXT
|
|
constants C_THEME_EXTLST type STRING value 'extLst'. "#EC NOTEXT
|
|
constants C_THEME type STRING value 'theme'. "#EC NOTEXT
|
|
constants C_THEME_NAME type STRING value 'name'. "#EC NOTEXT
|
|
constants C_THEME_XMLNS type STRING value 'xmlns:a'. "#EC NOTEXT
|
|
constants C_THEME_PREFIX type STRING value 'a'. "#EC NOTEXT
|
|
constants C_THEME_PREFIX_WRITE type STRING value 'a:'. "#EC NOTEXT
|
|
constants C_THEME_XMLNS_VAL type STRING value 'http://schemas.openxmlformats.org/drawingml/2006/main'. "#EC NOTEXT
|
|
|
|
methods CONSTRUCTOR .
|
|
methods READ_THEME
|
|
importing
|
|
value(IO_THEME_XML) type ref to IF_IXML_DOCUMENT .
|
|
methods WRITE_THEME
|
|
returning
|
|
value(RV_XSTRING) type XSTRING .
|
|
methods SET_COLOR
|
|
importing
|
|
value(IV_TYPE) type STRING
|
|
value(IV_SRGB) type ZCL_EXCEL_THEME_COLOR_SCHEME=>T_SRGB optional
|
|
value(IV_SYSCOLORNAME) type STRING optional
|
|
value(IV_SYSCOLORLAST) type ZCL_EXCEL_THEME_COLOR_SCHEME=>T_SRGB optional .
|
|
methods SET_COLOR_SCHEME_NAME
|
|
importing
|
|
value(IV_NAME) type STRING .
|
|
methods SET_FONT
|
|
importing
|
|
value(IV_TYPE) type STRING
|
|
value(IV_SCRIPT) type STRING
|
|
value(IV_TYPEFACE) type STRING .
|
|
methods SET_LATIN_FONT
|
|
importing
|
|
value(IV_TYPE) type STRING
|
|
value(IV_TYPEFACE) type STRING
|
|
value(IV_PANOSE) type STRING optional
|
|
value(IV_PITCHFAMILY) type STRING optional
|
|
value(IV_CHARSET) type STRING optional .
|
|
methods SET_EA_FONT
|
|
importing
|
|
value(IV_TYPE) type STRING
|
|
value(IV_TYPEFACE) type STRING
|
|
value(IV_PANOSE) type STRING optional
|
|
value(IV_PITCHFAMILY) type STRING optional
|
|
value(IV_CHARSET) type STRING optional .
|
|
methods SET_CS_FONT
|
|
importing
|
|
value(IV_TYPE) type STRING
|
|
value(IV_TYPEFACE) type STRING
|
|
value(IV_PANOSE) type STRING optional
|
|
value(IV_PITCHFAMILY) type STRING optional
|
|
value(IV_CHARSET) type STRING optional .
|
|
methods SET_FONT_SCHEME_NAME
|
|
importing
|
|
value(IV_NAME) type STRING .
|
|
methods SET_THEME_NAME
|
|
importing
|
|
value(IV_NAME) type STRING .
|
|
protected section.
|
|
|
|
data ELEMENTS type ref to ZCL_EXCEL_THEME_ELEMENTS .
|
|
data OBJECTDEFAULTS type ref to ZCL_EXCEL_THEME_OBJECTDEFAULTS .
|
|
data EXTCLRSCHEMELST type ref to ZCL_EXCEL_THEME_ECLRSCHEMELST .
|
|
data EXTLST type ref to ZCL_EXCEL_THEME_EXTLST .
|
|
private section.
|
|
|
|
data THEME_CHANGED type ABAP_BOOL .
|
|
data THEME_READ type ABAP_BOOL .
|
|
data NAME type STRING .
|
|
data XMLS_A type STRING .
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_EXCEL_THEME IMPLEMENTATION.
|
|
|
|
|
|
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
|
|
ENDCLASS.
|