Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef IWORKTYPES_H_INCLUDED
00011 #define IWORKTYPES_H_INCLUDED
00012
00013 #include "IWORKTypes_fwd.h"
00014
00015 #include <deque>
00016 #include <map>
00017 #include <string>
00018
00019 #include <boost/optional.hpp>
00020 #include <boost/variant.hpp>
00021
00022 #include <mdds/flat_segment_tree.hpp>
00023
00024 #include "libetonyek_utils.h"
00025 #include "IWORKEnum.h"
00026 #include "IWORKPath_fwd.h"
00027 #include "IWORKStyle_fwd.h"
00028 #include "IWORKFormula.h"
00029
00030 namespace libetonyek
00031 {
00032
00033 class IWORKOutputElements;
00034
00035 typedef boost::unordered_map<std::string, IWORKOutputElements> IWORKHeaderFooterMap_t;
00036
00037 struct IWORKSize
00038 {
00039 double m_width;
00040 double m_height;
00041
00042 IWORKSize();
00043 IWORKSize(double w, double h);
00044 };
00045
00046 struct IWORKPosition
00047 {
00048 double m_x;
00049 double m_y;
00050
00051 IWORKPosition();
00052 IWORKPosition(double x_, double y_);
00053 };
00054
00055 struct IWORKGeometry
00056 {
00057 IWORKSize m_naturalSize;
00058 IWORKSize m_size;
00059 IWORKPosition m_position;
00060 boost::optional<double> m_angle;
00061 boost::optional<double> m_shearXAngle;
00062 boost::optional<double> m_shearYAngle;
00063 boost::optional<bool> m_horizontalFlip;
00064 boost::optional<bool> m_verticalFlip;
00065 boost::optional<bool> m_aspectRatioLocked;
00066 boost::optional<bool> m_sizesLocked;
00067
00068 IWORKGeometry();
00069 };
00070
00071 struct IWORKColor
00072 {
00073 double m_red;
00074 double m_green;
00075 double m_blue;
00076 double m_alpha;
00077
00078 IWORKColor();
00079 IWORKColor(double r, double g, double b, double a);
00080 };
00081
00082 struct IWORKPadding
00083 {
00084 boost::optional<double> m_top;
00085 boost::optional<double> m_right;
00086 boost::optional<double> m_bottom;
00087 boost::optional<double> m_left;
00088
00089 IWORKPadding();
00090 };
00091
00092 struct IWORKTabStop
00093 {
00094 double m_pos;
00095
00096 explicit IWORKTabStop(double pos_);
00097 };
00098
00099 typedef std::deque<IWORKTabStop> IWORKTabStops_t;
00100 typedef boost::unordered_map<ID_t, IWORKTabStops_t> IWORKTabStopsMap_t;
00101 typedef mdds::flat_segment_tree<unsigned, IWORKStylePtr_t> IWORKGridLine_t;
00102 typedef std::vector<IWORKGridLine_t> IWORKGridLineList_t;
00103
00104 struct IWORKLine
00105 {
00106 IWORKGeometryPtr_t m_geometry;
00107 IWORKStylePtr_t m_style;
00108 boost::optional<double> m_x1;
00109 boost::optional<double> m_y1;
00110 boost::optional<double> m_x2;
00111 boost::optional<double> m_y2;
00112
00113 IWORKLine();
00114 };
00115
00116 struct IWORKData
00117 {
00118 RVNGInputStreamPtr_t m_stream;
00119 boost::optional<std::string> m_displayName;
00120 std::string m_mimeType;
00121
00122 IWORKData();
00123 };
00124
00125 struct IWORKMediaContent
00126 {
00127 boost::optional<IWORKSize> m_size;
00128 IWORKDataPtr_t m_data;
00129
00130 IWORKMediaContent();
00131 };
00132
00133 struct IWORKBinary
00134 {
00135 boost::optional<IWORKSize> m_size;
00136 boost::optional<std::string> m_path;
00137 boost::optional<std::string> m_type;
00138 boost::optional<unsigned> m_dataSize;
00139
00140 IWORKBinary();
00141 };
00142
00143 struct IWORKImage
00144 {
00145 boost::optional<bool> m_locked;
00146 IWORKGeometryPtr_t m_geometry;
00147 boost::optional<IWORKBinary> m_binary;
00148
00149 IWORKImage();
00150 };
00151
00152 struct IWORKMedia
00153 {
00154 IWORKGeometryPtr_t m_geometry;
00155 IWORKStylePtr_t m_style;
00156 boost::optional<bool> m_placeholder;
00157 boost::optional<IWORKSize> m_placeholderSize;
00158 IWORKMediaContentPtr_t m_content;
00159
00160 IWORKMedia();
00161 };
00162
00163 struct IWORKWrap
00164 {
00165 IWORKPathPtr_t m_path;
00166 IWORKGeometryPtr_t m_geometry;
00167
00168 IWORKWrap();
00169 };
00170
00171 struct IWORKLineSpacing
00172 {
00173 IWORKLineSpacing(double amount, bool relative);
00174
00175 double m_amount;
00176 bool m_relative;
00177 };
00178
00179 struct IWORKTableData
00180 {
00181 IWORKTableData();
00182
00183 IWORKColumnSizes_t m_columnSizes;
00184 IWORKRowSizes_t m_rowSizes;
00185
00186 unsigned m_column;
00187 unsigned m_row;
00188 unsigned m_numColumns;
00189 unsigned m_numRows;
00190
00191 boost::optional<unsigned> m_columnSpan;
00192 boost::optional<unsigned> m_rowSpan;
00193 boost::optional<unsigned> m_cellMove;
00194 boost::optional<std::string> m_content;
00195 boost::optional<IWORKFormula> m_formula;
00196 IWORKGridLineList_t m_horizontalLines;
00197 IWORKGridLineList_t m_verticalLines;
00198 IWORKStylePtr_t m_style;
00199 IWORKCellType m_type;
00200 };
00201
00202 struct IWORKStroke
00203 {
00204 IWORKStroke();
00205
00206 IWORKStrokeType m_type;
00207 double m_width;
00208 IWORKColor m_color;
00209 IWORKLineJoin m_join;
00210 IWORKLineCap m_cap;
00211 std::deque<double> m_pattern;
00212 };
00213
00214 struct IWORKGradientStop
00215 {
00216 IWORKGradientStop();
00217
00218 IWORKColor m_color;
00219 double m_fraction;
00220 double m_inflection;
00221 };
00222
00223 struct IWORKGradient
00224 {
00225 IWORKGradient();
00226
00227 IWORKGradientType m_type;
00228 std::deque<IWORKGradientStop> m_stops;
00229 double m_angle;
00230 };
00231
00232 struct IWORKFillImage
00233 {
00234 IWORKFillImage();
00235
00236 IWORKFillImageType m_type;
00237 boost::optional<IWORKColor> m_color;
00238 IWORKSize m_size;
00239 RVNGInputStreamPtr_t m_stream;
00240 std::string m_mimeType;
00241 };
00242
00243 typedef boost::variant<IWORKColor, IWORKGradient, IWORKFillImage> IWORKFill;
00244
00245 struct IWORKShadow
00246 {
00247 IWORKShadow();
00248
00249 IWORKColor m_color;
00250 double m_angle;
00251 double m_offset;
00252 double m_opacity;
00253 };
00254
00255 struct IWORKMetadata
00256 {
00257 IWORKMetadata();
00258
00259 std::string m_title;
00260 std::string m_author;
00261 std::string m_keywords;
00262 std::string m_comment;
00263 };
00264
00265 struct IWORKColumns
00266 {
00267 struct Column
00268 {
00269 Column();
00270
00271 double m_width;
00272 double m_spacing;
00273 };
00274
00275 typedef std::deque<Column> Columns_t;
00276
00277 IWORKColumns();
00278
00279 bool m_equal;
00280 Columns_t m_columns;
00281 };
00282
00283 struct IWORKNumberFormat
00284 {
00285 IWORKNumberFormat();
00286
00287 IWORKCellNumberType m_type;
00288 std::string m_string;
00289 int m_decimalPlaces;
00290 std::string m_currencyCode;
00291 int m_negativeStyle;
00292 bool m_thousandsSeperator;
00293 int m_fractionAccuracy;
00294 bool m_accountingStyle;
00295 int m_base;
00296 int m_basePlaces;
00297 };
00298
00299 struct IWORKDateTimeFormat
00300 {
00301 IWORKDateTimeFormat();
00302
00303 std::string m_format;
00304 };
00305
00306 struct IWORKDurationFormat
00307 {
00308 IWORKDurationFormat();
00309
00310 std::string m_format;
00311 };
00312
00313 struct IWORKFilterDescriptor
00314 {
00315 IWORKFilterDescriptor();
00316
00317 bool m_isShadow;
00318 };
00319
00320 typedef boost::unordered_map<ID_t, IWORKFilterDescriptor> IWORKFilterDescriptorMap_t;
00321
00322 struct IWORKListLabelGeometry
00323 {
00324 IWORKListLabelGeometry();
00325
00326 IWORKAlignment m_align;
00327 double m_scale;
00328 double m_offset;
00329 bool m_scaleWithText;
00330 };
00331
00332 typedef boost::unordered_map<ID_t, IWORKListLabelGeometry> IWORKListLabelGeometryMap_t;
00333
00334 struct IWORKTextLabelFormat
00335 {
00336 IWORKTextLabelFormat();
00337
00338 IWORKLabelNumFormatSurrounding m_prefix;
00339 IWORKLabelNumFormat m_format;
00340 IWORKLabelNumFormatSurrounding m_suffix;
00341 };
00342
00343 struct IWORKTextLabel
00344 {
00345 IWORKTextLabel();
00346
00347 IWORKTextLabelFormat m_format;
00348 bool m_tiered;
00349 unsigned m_first;
00350 };
00351
00352
00353
00354
00355 typedef boost::variant<bool, std::string, IWORKTextLabel, IWORKMediaContentPtr_t> IWORKListLabelTypeInfo_t;
00356 typedef boost::unordered_map<ID_t, IWORKListLabelTypeInfo_t> IWORKListLabelTypeInfoMap_t;
00357
00358 typedef std::map<unsigned, IWORKStylePtr_t> IWORKListStyle_t;
00359 typedef boost::unordered_map<ID_t, IWORKListStyle_t> IWORKListStyleMap_t;
00360
00361 }
00362
00363 #endif // IWORKTYPES_H_INCLUDED
00364
00365