@@ -88,6 +88,10 @@ typedef struct {
8888 lxw_format * format ;
8989} xls_resource_format_t ;
9090
91+ typedef struct {
92+ HashTable * maps ;
93+ } xls_resource_formats_cache_t ;
94+
9195typedef struct {
9296 lxw_data_validation * validation ;
9397} xls_resource_validation_t ;
@@ -102,11 +106,13 @@ typedef struct {
102106} xls_resource_rich_string_t ;
103107
104108typedef struct _vtiful_xls_object {
105- xls_resource_read_t read_ptr ;
106- xls_resource_write_t write_ptr ;
107- zend_long write_line ;
108- xls_resource_format_t format_ptr ;
109- zend_object zo ;
109+ xls_resource_read_t read_ptr ;
110+ xls_resource_write_t write_ptr ;
111+ zend_long write_line ;
112+ xls_resource_format_t format_ptr ;
113+ xls_resource_formats_cache_t formats_cache_ptr ;
114+ lxw_row_col_options * row_options ;
115+ zend_object zo ;
110116} xls_object ;
111117
112118typedef struct _vtiful_format_object {
@@ -294,6 +300,15 @@ static inline void php_vtiful_close_resource(zend_object *obj) {
294300 intern -> format_ptr .format = NULL ;
295301 }
296302
303+ if (intern -> formats_cache_ptr .maps != NULL ) {
304+ zend_hash_destroy (intern -> formats_cache_ptr .maps );
305+ }
306+
307+ if (intern -> row_options != NULL ) {
308+ efree (intern -> row_options );
309+ intern -> row_options = NULL ;
310+ }
311+
297312#ifdef ENABLE_READER
298313 if (intern -> read_ptr .sheet_t != NULL ) {
299314 xlsxioread_sheet_close (intern -> read_ptr .sheet_t );
@@ -340,14 +355,14 @@ void printed_direction(xls_resource_write_t *res, unsigned int direction);
340355void xls_file_path (zend_string * file_name , zval * dir_path , zval * file_path );
341356void freeze_panes (xls_resource_write_t * res , zend_long row , zend_long column );
342357void margins (xls_resource_write_t * res , double left , double right , double top , double bottom );
343- void set_row (zend_string * range , double height , xls_resource_write_t * res , lxw_format * format );
358+ void set_row (zend_string * range , double height , xls_resource_write_t * res , lxw_format * format , lxw_row_col_options * user_options );
344359void validation (xls_resource_write_t * res , zend_string * range , lxw_data_validation * validation );
345- void set_column (zend_string * range , double width , xls_resource_write_t * res , lxw_format * format );
360+ void set_column (zend_string * range , double width , xls_resource_write_t * res , lxw_format * format , lxw_row_col_options * user_options );
346361void merge_cells (zend_string * range , zval * value , xls_resource_write_t * res , lxw_format * format );
347362void comment_writer (zend_string * comment , zend_long row , zend_long columns , xls_resource_write_t * res );
348363void call_object_method (zval * object , const char * function_name , uint32_t param_count , zval * params , zval * ret_val );
349364void chart_writer (zend_long row , zend_long columns , xls_resource_chart_t * chart_resource , xls_resource_write_t * res );
350- void worksheet_set_rows (lxw_row_t start , lxw_row_t end , double height , xls_resource_write_t * res , lxw_format * format );
365+ void worksheet_set_rows (lxw_row_t start , lxw_row_t end , double height , xls_resource_write_t * res , lxw_format * format , lxw_row_col_options * user_options );
351366void image_writer (zval * value , zend_long row , zend_long columns , double width , double height , xls_resource_write_t * res );
352367void formula_writer (zend_string * value , zend_long row , zend_long columns , xls_resource_write_t * res , lxw_format * format );
353368void type_writer (zval * value , zend_long row , zend_long columns , xls_resource_write_t * res , zend_string * format , lxw_format * format_handle );
@@ -361,4 +376,6 @@ lxw_datetime timestamp_to_datetime(zend_long timestamp);
361376zend_string * char_join_to_zend_str (const char * left , const char * right );
362377zend_string * str_pick_up (zend_string * left , const char * right , size_t len );
363378
379+ lxw_format * object_format (xls_object * obj , zend_string * format , lxw_format * format_handle );
380+
364381#endif
0 commit comments