fast_excel 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.md +9 -0
  5. data/Gemfile.lock +16 -16
  6. data/README.md +1 -1
  7. data/Rakefile +1 -1
  8. data/fast_excel.gemspec +1 -1
  9. data/lib/fast_excel.rb +21 -5
  10. data/lib/fast_excel/binding/format.rb +3 -3
  11. data/libxlsxwriter/.drone.yml +27 -0
  12. data/libxlsxwriter/.indent.pro +3 -0
  13. data/libxlsxwriter/.travis.yml +12 -0
  14. data/libxlsxwriter/CMakeLists.txt +348 -0
  15. data/libxlsxwriter/Changes.txt +78 -0
  16. data/libxlsxwriter/LICENSE.txt +65 -4
  17. data/libxlsxwriter/Makefile +27 -7
  18. data/libxlsxwriter/Readme.md +2 -0
  19. data/libxlsxwriter/appveyor.yml +65 -0
  20. data/libxlsxwriter/cmake/FindMINIZIP.cmake +121 -0
  21. data/libxlsxwriter/cmake/FindPackage.cmake +183 -0
  22. data/libxlsxwriter/cmake/FindZLIB.cmake +123 -0
  23. data/libxlsxwriter/cmake/i686-toolchain.cmake +7 -0
  24. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +1 -1
  25. data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +2 -2
  26. data/libxlsxwriter/include/xlsxwriter.h +2 -2
  27. data/libxlsxwriter/include/xlsxwriter/app.h +1 -1
  28. data/libxlsxwriter/include/xlsxwriter/chart.h +109 -8
  29. data/libxlsxwriter/include/xlsxwriter/common.h +10 -2
  30. data/libxlsxwriter/include/xlsxwriter/content_types.h +1 -1
  31. data/libxlsxwriter/include/xlsxwriter/core.h +1 -1
  32. data/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
  33. data/libxlsxwriter/include/xlsxwriter/drawing.h +1 -1
  34. data/libxlsxwriter/include/xlsxwriter/format.h +6 -6
  35. data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
  36. data/libxlsxwriter/include/xlsxwriter/packager.h +6 -1
  37. data/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
  38. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
  39. data/libxlsxwriter/include/xlsxwriter/styles.h +2 -2
  40. data/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
  41. data/libxlsxwriter/include/xlsxwriter/utility.h +11 -5
  42. data/libxlsxwriter/include/xlsxwriter/workbook.h +3 -3
  43. data/libxlsxwriter/include/xlsxwriter/worksheet.h +517 -39
  44. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +2 -2
  45. data/libxlsxwriter/libxlsxwriter.podspec +4 -2
  46. data/libxlsxwriter/src/Makefile +30 -5
  47. data/libxlsxwriter/src/app.c +1 -1
  48. data/libxlsxwriter/src/chart.c +76 -19
  49. data/libxlsxwriter/src/content_types.c +1 -1
  50. data/libxlsxwriter/src/core.c +10 -10
  51. data/libxlsxwriter/src/custom.c +2 -2
  52. data/libxlsxwriter/src/drawing.c +1 -1
  53. data/libxlsxwriter/src/format.c +3 -3
  54. data/libxlsxwriter/src/hash_table.c +1 -1
  55. data/libxlsxwriter/src/packager.c +20 -7
  56. data/libxlsxwriter/src/relationships.c +1 -1
  57. data/libxlsxwriter/src/shared_strings.c +1 -1
  58. data/libxlsxwriter/src/styles.c +4 -4
  59. data/libxlsxwriter/src/theme.c +1 -1
  60. data/libxlsxwriter/src/utility.c +41 -1
  61. data/libxlsxwriter/src/workbook.c +8 -6
  62. data/libxlsxwriter/src/worksheet.c +748 -31
  63. data/libxlsxwriter/src/xmlwriter.c +2 -2
  64. data/libxlsxwriter/third_party/minizip/Makefile +6 -1
  65. data/libxlsxwriter/version.txt +1 -1
  66. data/test/reopen_test.rb +22 -0
  67. data/test/test_helper.rb +8 -5
  68. data/test/validations_test.rb +27 -0
  69. metadata +11 -2
@@ -0,0 +1,183 @@
1
+ # :copyright: (c) 2017 Alex Huszagh.
2
+ # :license: FreeBSD, see LICENSE.txt for more details.
3
+
4
+ # FindPackage
5
+ # -----------
6
+ #
7
+ # Macros and functions to help find packages. Do not invoke this module
8
+ # directly, it merely provides library definitions to be invoked
9
+ # by other find utilities.
10
+
11
+ include(CheckCXXSourceCompiles)
12
+
13
+
14
+ # Return if the package name has previously been found
15
+ #
16
+ # Args:
17
+ # packageName Name of the package
18
+ #
19
+ # Example:
20
+ # ReturnFound(Iconv)
21
+ #
22
+ macro(ReturnFound packageName)
23
+ if(${packageName}_FOUND)
24
+ return()
25
+ endif()
26
+ endmacro(ReturnFound)
27
+
28
+
29
+ # Set the library extensions for a given package dependent on whether
30
+ # to search for static or dynamic libraries.
31
+ #
32
+ # Args:
33
+ # packageName Name of the package
34
+ #
35
+ # Example:
36
+ # SetSuffixes(IConv)
37
+ #
38
+ macro(SetSuffixes packageName)
39
+ if(${packageName}_USE_STATIC_LIBS)
40
+ if(MSVC)
41
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".lib")
42
+ else()
43
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
44
+ endif()
45
+ else()
46
+ if(WIN32)
47
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".dll" ".lib" ".a")
48
+ else()
49
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".so" ".a")
50
+ endif()
51
+ endif()
52
+ endmacro(SetSuffixes)
53
+
54
+
55
+ # Check if the package was found.
56
+ #
57
+ # Args:
58
+ # packageName Name of the package
59
+ #
60
+ # Example:
61
+ # CheckFound(IConv)
62
+ #
63
+ macro(CheckFound packageName)
64
+ if(${packageName}_INCLUDE_DIRS AND ${packageName}_LIBRARIES)
65
+ set(${packageName}_FOUND TRUE)
66
+ endif()
67
+ endmacro(CheckFound)
68
+
69
+
70
+ # Replace a dynamic library with a `.dll.a` extension with the corresponding
71
+ # library removing the `.dll`.
72
+ #
73
+ # Args:
74
+ # libraryName Variable name for path to found library
75
+ #
76
+ # Example:
77
+ # ReplaceDynamic(/mingw64/lib/libiconv.dll.a)
78
+ #
79
+ macro(ReplaceDynamic libraryName)
80
+ if(${libraryName} MATCHES ".dll.a")
81
+ string(REPLACE ".dll.a" ".a" static ${${libraryName}})
82
+ if(EXISTS ${static})
83
+ set(${libraryName} ${static})
84
+ endif()
85
+ endif()
86
+ endmacro(ReplaceDynamic)
87
+
88
+
89
+ # Replace a dynamic libraries with the static variants, with integrity
90
+ # checks for the package.
91
+ #
92
+ # Args:
93
+ # packageName Name of the package
94
+ #
95
+ # Example:
96
+ # FindStaticLibs(IConv)
97
+ #
98
+ macro(FindStaticLibs packageName)
99
+ if(${packageName}_USE_STATIC_LIBS AND MSYS)
100
+ # convert `.dll.a` to `.a`
101
+ set(${packageName}_LIBRARY_SOURCE ${${packageName}_LIBRARIES})
102
+ set(${packageName}_LIBRARIES "")
103
+ foreach(library ${${packageName}_LIBRARY_SOURCE})
104
+ # replace each dynamic library with a single one
105
+ set(static_library ${library})
106
+ ReplaceDynamic(static_library)
107
+ list(APPEND ${packageName}_LIBRARIES ${static_library})
108
+ endforeach(library)
109
+ endif()
110
+ endmacro(FindStaticLibs)
111
+
112
+
113
+ # Checks if a suitable version for the found library was identified,
114
+ # if provided. The library can either force exact or inexact matching.
115
+ #
116
+ # Args:
117
+ # packageName Name of the package
118
+ #
119
+ # Example:
120
+ # MatchVersion(ICU)
121
+ #
122
+ macro(MatchVersion packageName)
123
+ if(${packageName}_FOUND AND ${packageName}_FIND_VERSION)
124
+ # MATCH VERSION
125
+ if(${packageName}_FIND_VERSION_EXACT)
126
+ # EXACT VERSION
127
+ if(${packageName}_FIND_VERSION VERSION_EQUAL ${packageName}_VERSION)
128
+ else()
129
+ set(${packageName}_FOUND FALSE)
130
+ endif()
131
+ else()
132
+ # GREATER THAN VERSION
133
+ if(${packageName}_VERSION VERSION_LESS ${packageName}_FIND_VERSION)
134
+ set(${packageName}_FOUND FALSE)
135
+ endif()
136
+ endif()
137
+ endif()
138
+ endmacro(MatchVersion)
139
+
140
+
141
+ # Check if a sample program compiles, if not, set the library to not found.
142
+ #
143
+ # Args:
144
+ # packageName Name of the package
145
+ # code String of simple program depending on the library
146
+ #
147
+ # Example:
148
+ # set(IConv_CODE "int main(int argc, char **argv){ return 0; }")
149
+ # CheckCompiles(IConv)
150
+ #
151
+ macro(CheckCompiles packageName)
152
+ # FLAGS
153
+ set(CMAKE_REQUIRED_INCLUDES ${${packageName}_INCLUDE_DIRS})
154
+ set(CMAKE_REQUIRED_LIBRARIES ${${packageName}_LIBRARIES})
155
+
156
+ # COMPILATION
157
+ check_cxx_source_compiles("${${packageName}_CODE}" ${packageName}_COMPILES)
158
+ if(NOT ${${packageName}_COMPILES})
159
+ set(${packageName}_FOUND FALSE)
160
+ message(SEND_ERROR "Cannot compile a simple ${packageName} program.")
161
+ endif()
162
+
163
+ endmacro(CheckCompiles)
164
+
165
+
166
+ # Send an error if a required package was not found. Otherwise, if the
167
+ # package is found, report to the user it was identified.
168
+ #
169
+ # Args:
170
+ # packageName Name of the package
171
+ #
172
+ # Example:
173
+ # RequiredPackageFound(ICU)
174
+ #
175
+ macro(RequiredPackageFound packageName)
176
+ if(${packageName}_FOUND)
177
+ message("Found ${packageName}.")
178
+ else()
179
+ if(${packageName}_FIND_REQUIRED)
180
+ message(SEND_ERROR "Unable to find requested ${packageName} libraries.")
181
+ endif()
182
+ endif()
183
+ endmacro(RequiredPackageFound)
@@ -0,0 +1,123 @@
1
+ # :copyright: (c) 2017 Alex Huszagh.
2
+ # :license: FreeBSD, see LICENSE.txt for more details.
3
+
4
+ # FindZLIB
5
+ # --------
6
+ #
7
+ # Find ZLIB include dirs and libraries
8
+ #
9
+ # Use this module by invoking find_package with the form::
10
+ #
11
+ # find_package(ZLIB
12
+ # [version] [EXACT] # Minimum or EXACT version e.g. 1.0.6
13
+ # [REQUIRED] # Fail with error if ZLIB is not found
14
+ # )
15
+ #
16
+ # You may also set `ZLIB_USE_STATIC_LIBS` to prefer static libraries
17
+ # to shared ones.
18
+ #
19
+ # If found, `ZLIB_FOUND` will be set to true, and `ZLIB_LIBRARIES`
20
+ # and `ZLIB_INCLUDE_DIRS` will both be set.
21
+ #
22
+ # You may optionally set `ZLIB_ROOT` to specify a custom root directory
23
+ # for the ZLIB installation.
24
+ #
25
+
26
+ include(CheckCXXSourceCompiles)
27
+ include(FindPackage)
28
+
29
+ # PATHS
30
+ # -----
31
+
32
+ set(ZLIB_SEARCH_PATHS)
33
+
34
+ if(ZLIB_ROOT)
35
+ list(APPEND ZLIB_SEARCH_PATHS ${ZLIB_ROOT})
36
+ endif()
37
+
38
+ if(WIN32)
39
+ list(APPEND ZLIB_SEARCH_PATHS
40
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
41
+ "$ENV{PROGRAMFILES}/zlib"
42
+ )
43
+ endif()
44
+
45
+ unset(ZLIB_SYSTEM_ROOT)
46
+ unset(ZLIB_CUSTOM_ROOT)
47
+ unset(ZLIB_SEARCH_HKEY)
48
+
49
+ # FIND
50
+ # ----
51
+
52
+ # INCLUDE DIRECTORY
53
+ SetSuffixes(ZLIB)
54
+ foreach(search ${ZLIB_SEARCH_PATHS})
55
+ FIND_PATH(ZLIB_INCLUDE_DIR
56
+ NAMES zlib.h
57
+ PATHS ${search}
58
+ PATH_SUFFIXES include
59
+ )
60
+ endforeach(search)
61
+
62
+ if(NOT ZLIB_INCLUDE_DIR)
63
+ FIND_PATH(ZLIB_INCLUDE_DIR zlib.h PATH_SUFFIXES include)
64
+ endif()
65
+
66
+ # LIBRARY PATHS
67
+ set(ZLIB_LIBRARY_NAMES z libz zlib zlib1)
68
+ if(CMAKE_BUILD_TYPE MATCHES Debug)
69
+ list(APPEND ZLIB_LIBRARY_NAMES zlibd zlibd1)
70
+ endif()
71
+
72
+ foreach(search ${ZLIB_SEARCH_PATHS})
73
+ FIND_LIBRARY(ZLIB_LIBRARY
74
+ NAMES ${ZLIB_LIBRARY_NAMES}
75
+ PATHS ${search}
76
+ PATH_SUFFIXES lib
77
+ )
78
+ endforeach(search)
79
+
80
+ if(NOT ZLIB_LIBRARY)
81
+ FIND_LIBRARY(ZLIB_LIBRARY NAMES ${ZLIB_LIBRARY_NAMES} PATH_SUFFIXES lib)
82
+ endif()
83
+
84
+ set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
85
+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
86
+
87
+ CheckFound(ZLIB)
88
+ FindStaticLibs(ZLIB)
89
+
90
+ # VERSION
91
+ # -------
92
+
93
+ if(ZLIB_FOUND)
94
+ file(STRINGS "${ZLIB_INCLUDE_DIRS}/zlib.h" ZLIB_VERSION_CONTENTS REGEX "#define ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\"")
95
+ string(REGEX REPLACE ".*ZLIB_VERSION \"([0-9]+)\\.[0-9]+\\.[0-9]+\"" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_VERSION_CONTENTS}")
96
+ string(REGEX REPLACE ".*ZLIB_VERSION \"[0-9]+\\.([0-9]+)\\.[0-9]+\"" "\\1" ZLIB_VERSION_MINOR "${ZLIB_VERSION_CONTENTS}")
97
+ string(REGEX REPLACE ".*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+)\"" "\\1" ZLIB_VERSION_PATCH "${ZLIB_VERSION_CONTENTS}")
98
+
99
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
100
+ set(ZLIB_VERSION ${ZLIB_VERSION_STRING})
101
+
102
+ MatchVersion(ZLIB)
103
+ endif()
104
+
105
+ # COMPILATION
106
+ # -----------
107
+
108
+ set(ZLIB_CODE "
109
+ #include <zlib.h>
110
+ int main(void)
111
+ {
112
+ const char *version;
113
+ version = zlibVersion();
114
+
115
+ return 0;
116
+ }
117
+ "
118
+ )
119
+
120
+ if(ZLIB_FOUND)
121
+ CheckCompiles(ZLIB)
122
+ endif()
123
+ RequiredPackageFound(ZLIB)
@@ -0,0 +1,7 @@
1
+ set(CMAKE_SYSTEM_NAME Linux)
2
+ set(CMAKE_SYSTEM_VERSION 1)
3
+ set(CMAKE_SYSTEM_PROCESSOR "i686")
4
+
5
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32" CACHE STRING "c++ flags")
6
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32" CACHE STRING "c flags")
7
+ set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -m32" CACHE STRING "asm flags")
@@ -1,4 +1,4 @@
1
- #import <UIKit/UIKit.h>
1
+ #import <Foundation/Foundation.h>
2
2
 
3
3
  #import "../xlsxwriter.h"
4
4
  #import "app.h"
@@ -1,6 +1,6 @@
1
1
  framework module xlsxwriter {
2
- umbrella header "libxlsxwriter-umbrella.h"
3
- header "../xlsxwriter.h"
2
+ umbrella header "xlsxwriter/libxlsxwriter-umbrella.h"
3
+ header "xlsxwriter.h"
4
4
 
5
5
  export *
6
6
  module * { export * }
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * libxlsxwriter
3
3
  *
4
- * Copyright 2014-2017, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
4
+ * Copyright 2014-2018, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
5
5
  */
6
6
 
7
7
  /**
@@ -18,6 +18,6 @@
18
18
  #include "xlsxwriter/format.h"
19
19
  #include "xlsxwriter/utility.h"
20
20
 
21
- #define LXW_VERSION "0.6.9"
21
+ #define LXW_VERSION "0.7.7"
22
22
 
23
23
  #endif /* __LXW_XLSXWRITER_H__ */
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * libxlsxwriter
3
3
  *
4
- * Copyright 2014-2017, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
4
+ * Copyright 2014-2018, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
5
5
  *
6
6
  * app - A libxlsxwriter library for creating Excel XLSX app files.
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  * libxlsxwriter
3
3
  *
4
- * Copyright 2014-2017, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
4
+ * Copyright 2014-2018, John McNamara, jmcnamara@cpan.org. See LICENSE.txt.
5
5
  *
6
6
  * chart - A libxlsxwriter library for creating Excel XLSX chart files.
7
7
  *
@@ -464,6 +464,17 @@ typedef enum lxw_chart_label_separator {
464
464
  LXW_CHART_LABEL_SEPARATOR_SPACE
465
465
  } lxw_chart_label_separator;
466
466
 
467
+ /**
468
+ * @brief Chart axis types.
469
+ */
470
+ typedef enum lxw_chart_axis_type {
471
+ /** Chart X axis. */
472
+ LXW_CHART_AXIS_TYPE_X,
473
+
474
+ /** Chart Y axis. */
475
+ LXW_CHART_AXIS_TYPE_Y
476
+ } lxw_chart_axis_type;
477
+
467
478
  enum lxw_chart_subtype {
468
479
 
469
480
  LXW_CHART_SUBTYPE_NONE = 0,
@@ -613,7 +624,7 @@ typedef struct lxw_chart_line {
613
624
  /** The line dash type. See #lxw_chart_line_dash_type. */
614
625
  uint8_t dash_type;
615
626
 
616
- /* Transparency for lines isn't generally useful. Undocumented for now. */
627
+ /** Set the transparency of the line. 0 - 100. Default 0. */
617
628
  uint8_t transparency;
618
629
 
619
630
  /* Members for internal use only. */
@@ -675,7 +686,7 @@ typedef struct lxw_chart_font {
675
686
  char *name;
676
687
 
677
688
  /** The chart font size. The default is 11. */
678
- uint16_t size;
689
+ double size;
679
690
 
680
691
  /** The chart font bold property. Set to 0 or 1. */
681
692
  uint8_t bold;
@@ -692,10 +703,17 @@ typedef struct lxw_chart_font {
692
703
  /** The chart font color. See @ref working_with_colors. */
693
704
  lxw_color_t color;
694
705
 
695
- /* Members for internal use only. */
706
+ /** The chart font pitch family property. Rarely required. set to 0. */
696
707
  uint8_t pitch_family;
708
+
709
+ /** The chart font character set property. Rarely required. set to 0. */
697
710
  uint8_t charset;
711
+
712
+ /** The chart font baseline property. Rarely required. set to 0. */
698
713
  int8_t baseline;
714
+
715
+ /* Members for internal use only. */
716
+
699
717
  uint8_t has_color;
700
718
 
701
719
  } lxw_chart_font;
@@ -808,6 +826,17 @@ typedef enum lxw_chart_error_bar_direction {
808
826
  LXW_CHART_ERROR_BAR_DIR_MINUS
809
827
  } lxw_chart_error_bar_direction;
810
828
 
829
+ /**
830
+ * @brief Direction for a data series error bar.
831
+ */
832
+ typedef enum lxw_chart_error_bar_axis {
833
+ /** X axis error bar. */
834
+ LXW_CHART_ERROR_BAR_AXIS_X,
835
+
836
+ /** Y axis error bar. */
837
+ LXW_CHART_ERROR_BAR_AXIS_Y
838
+ } lxw_chart_error_bar_axis;
839
+
811
840
  /**
812
841
  * @brief End cap styles for a data series error bar.
813
842
  */
@@ -1768,7 +1797,7 @@ void chart_series_set_labels_percentage(lxw_chart_series *series);
1768
1797
  * For more information see @ref chart_labels.
1769
1798
  */
1770
1799
  void chart_series_set_labels_num_format(lxw_chart_series *series,
1771
- char *num_format);
1800
+ const char *num_format);
1772
1801
 
1773
1802
  /**
1774
1803
  * @brief Set the font properties for chart data labels in a series
@@ -1983,7 +2012,8 @@ void chart_series_set_trendline_intercept(lxw_chart_series *series,
1983
2012
  *
1984
2013
  * For more information see @ref chart_trendlines.
1985
2014
  */
1986
- void chart_series_set_trendline_name(lxw_chart_series *series, char *name);
2015
+ void chart_series_set_trendline_name(lxw_chart_series *series,
2016
+ const char *name);
1987
2017
 
1988
2018
  /**
1989
2019
  * @brief Set the trendline line properties for a chart data series.
@@ -2008,6 +2038,46 @@ void chart_series_set_trendline_name(lxw_chart_series *series, char *name);
2008
2038
  */
2009
2039
  void chart_series_set_trendline_line(lxw_chart_series *series,
2010
2040
  lxw_chart_line *line);
2041
+ /**
2042
+ * @brief Get a pointer to X or Y error bars from a chart series.
2043
+ *
2044
+ * @param series A series object created via `chart_add_series()`.
2045
+ * @param axis_type The axis type (X or Y): #lxw_chart_error_bar_axis.
2046
+ *
2047
+ * The `%chart_series_get_error_bars()` function returns a pointer to the
2048
+ * error bars of a series based on the type of #lxw_chart_error_bar_axis:
2049
+ *
2050
+ * @code
2051
+ * lxw_series_error_bars *x_error_bars;
2052
+ * lxw_series_error_bars *y_error_bars;
2053
+ *
2054
+ * x_error_bars = chart_series_get_error_bars(series, LXW_CHART_ERROR_BAR_AXIS_X);
2055
+ * y_error_bars = chart_series_get_error_bars(series, LXW_CHART_ERROR_BAR_AXIS_Y);
2056
+ *
2057
+ * // Use the error bar pointers.
2058
+ * chart_series_set_error_bars(x_error_bars,
2059
+ * LXW_CHART_ERROR_BAR_TYPE_STD_DEV, 1);
2060
+ *
2061
+ * chart_series_set_error_bars(y_error_bars,
2062
+ * LXW_CHART_ERROR_BAR_TYPE_STD_ERROR, 0);
2063
+ * @endcode
2064
+ *
2065
+ * Note, the series error bars can also be accessed directly:
2066
+ *
2067
+ * @code
2068
+ * // Equivalent to the above example, without function calls.
2069
+ * chart_series_set_error_bars(series->x_error_bars,
2070
+ * LXW_CHART_ERROR_BAR_TYPE_STD_DEV, 1);
2071
+ *
2072
+ * chart_series_set_error_bars(series->y_error_bars,
2073
+ * LXW_CHART_ERROR_BAR_TYPE_STD_ERROR, 0);
2074
+ * @endcode
2075
+ *
2076
+ * @return Pointer to the series error bars, or NULL if not found.
2077
+ */
2078
+
2079
+ lxw_series_error_bars *chart_series_get_error_bars(lxw_chart_series *series, lxw_chart_error_bar_axis
2080
+ axis_type);
2011
2081
 
2012
2082
  /**
2013
2083
  * Set the X or Y error bars for a chart series.
@@ -2071,7 +2141,7 @@ void chart_series_set_error_bars(lxw_series_error_bars *error_bars,
2071
2141
  * series.
2072
2142
  *
2073
2143
  * @param error_bars A pointer to the series X or Y error bars.
2074
- * @param direction The bar direction: #lxw_chart_error_bar_direction .
2144
+ * @param direction The bar direction: #lxw_chart_error_bar_direction.
2075
2145
  *
2076
2146
  * The `%chart_series_set_error_bars_direction()` function sets the
2077
2147
  * direction of the error bars:
@@ -2153,6 +2223,37 @@ void chart_series_set_error_bars_endcap(lxw_series_error_bars *error_bars,
2153
2223
  void chart_series_set_error_bars_line(lxw_series_error_bars *error_bars,
2154
2224
  lxw_chart_line *line);
2155
2225
 
2226
+ /**
2227
+ * @brief Get an axis pointer from a chart.
2228
+ *
2229
+ * @param chart Pointer to a lxw_chart instance to be configured.
2230
+ * @param axis_type The axis type (X or Y): #lxw_chart_axis_type.
2231
+ *
2232
+ * The `%chart_axis_get()` function returns a pointer to a chart axis based
2233
+ * on the #lxw_chart_axis_type:
2234
+ *
2235
+ * @code
2236
+ * lxw_chart_axis *x_axis = chart_axis_get(chart, LXW_CHART_AXIS_TYPE_X);
2237
+ * lxw_chart_axis *y_axis = chart_axis_get(chart, LXW_CHART_AXIS_TYPE_Y);
2238
+ *
2239
+ * // Use the axis pointer in other functions.
2240
+ * chart_axis_major_gridlines_set_visible(x_axis, LXW_TRUE);
2241
+ * chart_axis_major_gridlines_set_visible(y_axis, LXW_TRUE);
2242
+ * @endcode
2243
+ *
2244
+ * Note, the axis pointer can also be accessed directly:
2245
+ *
2246
+ * @code
2247
+ * // Equivalent to the above example, without function calls.
2248
+ * chart_axis_major_gridlines_set_visible(chart->x_axis, LXW_TRUE);
2249
+ * chart_axis_major_gridlines_set_visible(chart->y_axis, LXW_TRUE);
2250
+ * @endcode
2251
+ *
2252
+ * @return Pointer to the chart axis, or NULL if not found.
2253
+ */
2254
+ lxw_chart_axis *chart_axis_get(lxw_chart *chart,
2255
+ lxw_chart_axis_type axis_type);
2256
+
2156
2257
  /**
2157
2258
  * @brief Set the name caption of the an axis.
2158
2259
  *
@@ -2279,7 +2380,7 @@ void chart_axis_set_num_font(lxw_chart_axis *axis, lxw_chart_font *font);
2279
2380
  * **Axis types**: This function is applicable to to all axes types.
2280
2381
  * See @ref ww_charts_axes.
2281
2382
  */
2282
- void chart_axis_set_num_format(lxw_chart_axis *axis, char *num_format);
2383
+ void chart_axis_set_num_format(lxw_chart_axis *axis, const char *num_format);
2283
2384
 
2284
2385
  /**
2285
2386
  * @brief Set the line properties for a chart axis.