mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-05 19:26:10 +08:00
229 lines
7.9 KiB
ABAP
229 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
|
|
iv_name TYPE string .
|
|
METHODS set_font
|
|
IMPORTING
|
|
iv_type TYPE string
|
|
iv_script TYPE string
|
|
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 name 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 ).
|
|
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_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.
|