всякие диаграммные мелочи

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@57172 954022d7-b5bf-4e40-9824-e11837661b57
This commit is contained in:
Elen.Subbotina
2014-07-05 11:49:25 +00:00
committed by Alexander Trofimov
parent d5894dfdfa
commit 84034dec50
13 changed files with 367 additions and 85 deletions

View File

@ -1279,6 +1279,14 @@
RelativePath=".\OdfFormat\odf_drawing_context.h"
>
</File>
<File
RelativePath=".\OdfFormat\odf_table_context.cpp"
>
</File>
<File
RelativePath=".\OdfFormat\odf_table_context.h"
>
</File>
<File
RelativePath=".\OdfFormat\odf_text_context.cpp"
>

View File

@ -269,6 +269,14 @@ void odf_chart_context::set_chart_bar_type(int type)
case 5: // st_shapePYRAMIDTOMAX = 5
impl_->current_level_.back().chart_properties_->content().chart_solid_type_ = chart_solid_type(chart_solid_type::pyramid); break;
}
if (type == -1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
int sz = impl_->current_level_.size();
if (sz > 1)
impl_->current_level_.back().chart_properties_->content().chart_solid_type_ =
impl_->current_level_[sz-2].chart_properties_->content().chart_solid_type_;
}
}
void odf_chart_context::set_chart_bar_direction(int type)
@ -697,6 +705,7 @@ void odf_chart_context::start_grid(int type)
}
start_element(chart_elm, style_elm, style_name);
}
void odf_chart_context::start_title()
{
office_element_ptr chart_elm;
@ -819,6 +828,11 @@ void odf_chart_context::start_floor()
floor->common_attlist_.chart_style_name_ = style_name;
}
start_element(elm, style_elm, style_name);
if (style_)
{
impl_->current_level_.back().graphic_properties_ = style_->style_content_.get_style_graphic_properties();
}
}
void odf_chart_context::start_wall()
{
@ -1019,11 +1033,15 @@ void odf_chart_context::set_layout_x(double *val,int mode)//edge, factor
chart_title *title = dynamic_cast<chart_title*>(impl_->current_chart_state_.elements_.back().elm.get());
if (title)title->chart_title_attlist_.common_draw_position_attlist_.svg_x_ = x_cm;
}
void odf_chart_context::set_axis_label(int type)
void odf_chart_context::set_display_label(bool Val)
{
if (!impl_->current_level_.back().chart_properties_)return;
if (type == 1 || type == 2)
impl_->current_level_.back().chart_properties_->content().chart_display_label_ = true;
impl_->current_level_.back().chart_properties_->content().chart_display_label_ = Val;
}
void odf_chart_context::set_display_label_position(int type)
{
if (!impl_->current_level_.back().chart_properties_)return;
//impl_->current_level_.back().chart_properties_->content().chart:label-arrangement_ = Val;
}
void odf_chart_context::set_axis_orientation(int type)
{
@ -1040,6 +1058,50 @@ void odf_chart_context::set_axis_min(double val)
if (!impl_->current_level_.back().chart_properties_)return;
impl_->current_level_.back().chart_properties_->content().chart_minimum_ = val;
}
void odf_chart_context::set_axis_tick_minor(int type)
{
if (!impl_->current_level_.back().chart_properties_)return;
switch (type)
{
case 0: break;// st_tickmarkCROSS = 0,
case 1: // st_tickmarkIN = 1,
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_minor_inner_ = true;
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_minor_outer_ = false; break;
case 2: // st_tickmarkNONE = 2,
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_minor_inner_ = false;
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_minor_outer_ = false; break;
case 3: // st_tickmarkOUT = 3
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_minor_inner_ = false;
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_minor_outer_ = true; break;
}
}
void odf_chart_context::set_no_fill(bool Val)
{
if (Val == false)return;
if (!impl_->current_level_.back().graphic_properties_)return;
impl_->current_level_.back().graphic_properties_->content().common_draw_fill_attlist_.draw_fill_ = draw_fill(draw_fill::none);
}
void odf_chart_context::set_axis_tick_major(int type)
{
if (!impl_->current_level_.back().chart_properties_)return;
switch (type)
{
case 0: break;// st_tickmarkCROSS = 0,
case 1: // st_tickmarkIN = 1,
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_major_inner_ = true;
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_major_outer_ = false; break;
case 2: // st_tickmarkNONE = 2,
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_major_inner_ = false;
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_major_outer_ = false; break;
case 3: // st_tickmarkOUT = 3
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_major_inner_ = false;
impl_->current_level_.back().chart_properties_->content().chart_tick_marks_major_outer_ = true; break;
}
}
void odf_chart_context::set_axis_logarithmic(bool val)
{
if (!impl_->current_level_.back().chart_properties_)return;
@ -1165,6 +1227,7 @@ void odf_chart_context::start_element(office_element_ptr & elm, office_element_p
void odf_chart_context::end_element()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//if (impl_->current_level_.size()>0)
{
if (impl_->current_level_.back().paragraph_properties_)
{
@ -1185,7 +1248,6 @@ void odf_chart_context::end_element()
}
}
}
impl_->current_level_.pop_back();
drawing_context()->end_element();
}
@ -1353,7 +1415,18 @@ void odf_chart_context::Impl::create_local_table()
std::wstring table_name = L"local-table";
int max_columns=0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ref
for (long i=0; i < cash_.size(); i++)
{
for (long j=i+1; j < cash_.size(); j++)
{
if (cash_[j].ref == cash_[i].ref)
{
cash_.erase(cash_.begin()+j);
}
}
}
for (long i=0; i < cash_.size(); i++)
{
std::vector<std::wstring> refs;
@ -1388,9 +1461,12 @@ void odf_chart_context::Impl::create_local_table()
c.row = (row2==row1) ? row1 : row1+j;
c.val = cash_[i].data_str[j];
c.label = cash_[i].label;
cells_cash.push_back(c);
if (c.label) cells_cash_label.push_back(c);
//else cells_cash.push_back(c);
if (c.col > max_columns) max_columns = c.col;
}
@ -1415,18 +1491,20 @@ void odf_chart_context::Impl::create_local_table()
table_state->set_table_name(table_name);
/////////////////////////////////////////////////
office_element_ptr col_elm;
create_element(L"table", L"table-column",col_elm, odf_context_);
office_element_ptr cols_header_elm;
create_element(L"table", L"table-header-columns",cols_header_elm, odf_context_);
table_elm->add_child_element(cols_header_elm);
cols_header_elm->add_child_element(col_elm);
office_element_ptr cols_elm;
create_element(L"table", L"table-columns",cols_elm, odf_context_);
table_elm->add_child_element(cols_elm);
office_element_ptr col_elm;
create_element(L"table", L"table-column",col_elm, odf_context_);
for (long i=0; i < max_columns; i++)
for (long i=0; i < max_columns-1; i++)
cols_elm->add_child_element(col_elm);
office_element_ptr row_headers_elm;

View File

@ -78,17 +78,22 @@ public:
void set_axis_dimension(int type);
void set_axis_orientation(int type);
void set_axis_logarithmic(bool val);
void set_axis_label(int type);
void set_display_label(bool Val);
void set_display_label_position(int type);
void set_axis_position(int type);
void set_axis_label_position(int type);
void set_axis_max(double val);
void set_axis_min(double val);
void set_axis_tick_minor(int type);
void set_axis_tick_major(int type);
void start_title();
void start_grid(int type);
void start_legend();
void start_floor();
void start_wall();
void set_legend_position(int val);
void set_no_fill(bool val);
void start_stock_gain_marker();
void set_stock_gain_marker_width(std::wstring val);

View File

@ -5,9 +5,6 @@
#include <cpdoccore/CPOptional.h>
//#include "ods_comments_context.h"
//#include "ods_hyperlinks.h"
#include "office_elements.h"
#include "office_elements_create.h"

View File

@ -208,7 +208,6 @@ void ods_conversion_context::set_comment_rect(double l, double t, double w, doub
{
current_table().set_comment_rect(l,t,w,h);
}
/////////////////////////////
void ods_conversion_context::add_hyperlink(std::wstring & ref, std::wstring & link, std::wstring & display)
{

View File

@ -36,7 +36,7 @@ double calculate_size_font_symbols(std::wstring str_test, std::wstring font_name
}
}
odt_conversion_context::odt_conversion_context(package::odf_document * outputDocument)
: odf_conversion_context(outputDocument),comment_context_(this), page_layout_context_(this), main_text_context_(NULL)
: odf_conversion_context(outputDocument),comment_context_(this), page_layout_context_(this), main_text_context_(NULL),table_context_(this)
{
current_field_.enabled = false;
current_field_.started = false;
@ -458,6 +458,34 @@ void odt_conversion_context::end_drop_cap()
drop_cap_state_.clear();
}
///////////////////////////////////////
void odt_conversion_context::start_table()
{
}
void odt_conversion_context::start_table_columns()
{
}
void odt_conversion_context::add_table_column()
{
}
void odt_conversion_context::end_table_columns()
{
}
void odt_conversion_context::start_table_row()
{
}
void odt_conversion_context::start_table_cell()
{
}
void odt_conversion_context::end_table_cell()
{
}
void odt_conversion_context::end_table_row()
{
}
void odt_conversion_context::end_table()
{
}
}
}

View File

@ -1,7 +1,9 @@
#pragma once
#include "odf_conversion_context.h"
#include "odf_comment_context.h"
#include "odf_table_context.h"
namespace cpdoccore {
namespace odf {
@ -73,6 +75,16 @@ public:
void start_comment_content();
void end_comment_content();
void start_table();
void start_table_columns();
void add_table_column();
void end_table_columns();
void start_table_row();
void start_table_cell();
void end_table_cell();
void end_table_row();
void end_table();
private:
office_text* root_text_;
office_element_ptr root_document_;
@ -87,6 +99,8 @@ private:
std::vector<office_element_ptr> current_paragraphs_; // for section, if needed
std::vector<odt_section_state> sections_;
odf_table_context table_context_;
struct _field_state
{
bool enabled;

View File

@ -30,6 +30,7 @@ void chart_format_properties::serialize(std::wostream & _Wostream ,const wchar_t
CP_XML_ATTR_OPT(L"chart:percentage", chart_percentage_ );
CP_XML_ATTR_OPT(L"chart:connect-bars", chart_connect_bars_ );
CP_XML_ATTR_OPT(L"chart:deep", chart_deep_ );
CP_XML_ATTR_OPT(L"chart:tick-marks-major-inner",chart_tick_marks_major_inner_ );
CP_XML_ATTR_OPT(L"chart:tick-marks-major-outer",chart_tick_marks_major_outer_ );
CP_XML_ATTR_OPT(L"chart:tick-marks-minor-inner",chart_tick_marks_minor_inner_ );
CP_XML_ATTR_OPT(L"chart:tick-marks-minor-outer",chart_tick_marks_minor_outer_ );

View File

@ -38,6 +38,7 @@ public:
_CP_OPT(Bool) chart_connect_bars_;
_CP_OPT(Bool) chart_deep_;
_CP_OPT(Bool) chart_tick_marks_major_outer_;
_CP_OPT(Bool) chart_tick_marks_major_inner_;
_CP_OPT(Bool) chart_tick_marks_minor_inner_;
_CP_OPT(Bool) chart_tick_marks_minor_outer_;
_CP_OPT(Bool) chart_lines_;

View File

@ -280,7 +280,7 @@ public:
void convert(OOX::Spreadsheet::CT_Legend *ct_legend);
void convert(OOX::Spreadsheet::CT_LegendEntry *ct_legend);
void convert(OOX::Spreadsheet::CT_PlotArea *ct_plotArea);
void convert(OOX::Spreadsheet::CT_Surface *ct_surface, int type);
void convert(OOX::Spreadsheet::CT_Surface *ct_surface, int type, bool chart3D);
void convert(OOX::Spreadsheet::CT_CatAx *ct_catAx);
void convert(OOX::Spreadsheet::CT_SerAx *ct_serAx);
void convert(OOX::Spreadsheet::CT_DateAx *ct_dateAx);

View File

@ -30,12 +30,17 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ChartSpace *oox_chart)
convert(oox_chart->m_chart->m_title);
convert(oox_chart->m_chart->m_legend);
convert(oox_chart->m_chart->m_plotArea);
convert(oox_chart->m_chart->m_sideWall, 2);
convert(oox_chart->m_chart->m_backWall, 3);
convert(oox_chart->m_chart->m_floor, 1);
odf_context()->chart_context()->start_plot_area();
{
convert(oox_chart->m_chart->m_plotArea);
bool chart3D = (oox_chart->m_chart->m_view3D) ? true : false;
convert(oox_chart->m_chart->m_floor, 1, chart3D);
if (chart3D) convert(oox_chart->m_chart->m_backWall, 2, chart3D);
//convert(oox_chart->m_chart->m_sizeWall, 3, chart3D);
}
odf_context()->chart_context()->end_plot_area();
}
void OoxConverter::convert(OOX::Spreadsheet::CRichText* rich)
@ -128,52 +133,55 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_PlotArea* ct_plotArea)
{
if (ct_plotArea == NULL)return;
odf_context()->chart_context()->start_plot_area();
//convert(ct_plotArea->m_oSpPr.GetPointer());
convert(ct_plotArea->m_layout);
///////////////////////
for (long i=0; i< ct_plotArea->m_Items1.GetCount(); i++)
{
if (!ct_plotArea->m_ItemsElementName1[i]) continue;
switch(*ct_plotArea->m_ItemsElementName1[i])
{
case OOX::Spreadsheet::itemschoicetype6CATAX: convert((OOX::Spreadsheet::CT_CatAx*)ct_plotArea->m_Items1[i]);break;
case OOX::Spreadsheet::itemschoicetype6DATEAX: convert((OOX::Spreadsheet::CT_DateAx*)ct_plotArea->m_Items1[i]);break;
case OOX::Spreadsheet::itemschoicetype6SERAX: convert((OOX::Spreadsheet::CT_SerAx*)ct_plotArea->m_Items1[i]);break;
case OOX::Spreadsheet::itemschoicetype6VALAX: convert((OOX::Spreadsheet::CT_ValAx*)ct_plotArea->m_Items1[i]);break;
}
}
for (long i=0; i< ct_plotArea->m_Items.GetCount(); i++)//
{
if (!ct_plotArea->m_ItemsElementName0[i]) continue;
switch(*ct_plotArea->m_ItemsElementName0[i])
{
case OOX::Spreadsheet::itemschoicetype5AREA3DCHART: convert((OOX::Spreadsheet::CT_Area3DChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5AREACHART: convert((OOX::Spreadsheet::CT_AreaChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5BAR3DCHART: convert((OOX::Spreadsheet::CT_Bar3DChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5BARCHART: convert((OOX::Spreadsheet::CT_BarChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5BUBBLECHART: convert((OOX::Spreadsheet::CT_BubbleChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5DOUGHNUTCHART: convert((OOX::Spreadsheet::CT_DoughnutChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5LINE3DCHART: convert((OOX::Spreadsheet::CT_Line3DChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5LINECHART: convert((OOX::Spreadsheet::CT_LineChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5OFPIECHART: convert((OOX::Spreadsheet::CT_OfPieChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5PIE3DCHART: convert((OOX::Spreadsheet::CT_Pie3DChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5PIECHART: convert((OOX::Spreadsheet::CT_PieChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5RADARCHART: convert((OOX::Spreadsheet::CT_RadarChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5SCATTERCHART: convert((OOX::Spreadsheet::CT_ScatterChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5STOCKCHART: convert((OOX::Spreadsheet::CT_StockChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5SURFACE3DCHART: convert((OOX::Spreadsheet::CT_Surface3DChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5SURFACECHART: convert((OOX::Spreadsheet::CT_SurfaceChart*) ct_plotArea->m_Items[i]);break;
}
}
if (ct_plotArea->m_dTable)
{
}
odf_context()->chart_context()->start_wall();
convert(ct_plotArea->m_oSpPr.GetPointer());
odf_context()->chart_context()->end_element();
odf_context()->chart_context()->end_plot_area();
bool chart3D = false;
convert(ct_plotArea->m_layout);
///////////////////////
for (long i=0; i< ct_plotArea->m_Items1.GetCount(); i++)
{
if (!ct_plotArea->m_ItemsElementName1[i]) continue;
switch(*ct_plotArea->m_ItemsElementName1[i])
{
case OOX::Spreadsheet::itemschoicetype6CATAX: convert((OOX::Spreadsheet::CT_CatAx*)ct_plotArea->m_Items1[i]);break;
case OOX::Spreadsheet::itemschoicetype6DATEAX: convert((OOX::Spreadsheet::CT_DateAx*)ct_plotArea->m_Items1[i]);break;
case OOX::Spreadsheet::itemschoicetype6SERAX: convert((OOX::Spreadsheet::CT_SerAx*)ct_plotArea->m_Items1[i]);break;
case OOX::Spreadsheet::itemschoicetype6VALAX: convert((OOX::Spreadsheet::CT_ValAx*)ct_plotArea->m_Items1[i]);break;
}
}
for (long i=0; i< ct_plotArea->m_Items.GetCount(); i++)//
{
if (!ct_plotArea->m_ItemsElementName0[i]) continue;
switch(*ct_plotArea->m_ItemsElementName0[i])
{
case OOX::Spreadsheet::itemschoicetype5AREA3DCHART: convert((OOX::Spreadsheet::CT_Area3DChart*) ct_plotArea->m_Items[i]); chart3D = true; break;
case OOX::Spreadsheet::itemschoicetype5AREACHART: convert((OOX::Spreadsheet::CT_AreaChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5BAR3DCHART: convert((OOX::Spreadsheet::CT_Bar3DChart*) ct_plotArea->m_Items[i]); chart3D = true; break;
case OOX::Spreadsheet::itemschoicetype5BARCHART: convert((OOX::Spreadsheet::CT_BarChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5BUBBLECHART: convert((OOX::Spreadsheet::CT_BubbleChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5DOUGHNUTCHART: convert((OOX::Spreadsheet::CT_DoughnutChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5LINE3DCHART: convert((OOX::Spreadsheet::CT_Line3DChart*) ct_plotArea->m_Items[i]); chart3D = true; break;
case OOX::Spreadsheet::itemschoicetype5LINECHART: convert((OOX::Spreadsheet::CT_LineChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5OFPIECHART: convert((OOX::Spreadsheet::CT_OfPieChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5PIE3DCHART: convert((OOX::Spreadsheet::CT_Pie3DChart*) ct_plotArea->m_Items[i]); chart3D = true; break;
case OOX::Spreadsheet::itemschoicetype5PIECHART: convert((OOX::Spreadsheet::CT_PieChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5RADARCHART: convert((OOX::Spreadsheet::CT_RadarChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5SCATTERCHART: convert((OOX::Spreadsheet::CT_ScatterChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5STOCKCHART: convert((OOX::Spreadsheet::CT_StockChart*) ct_plotArea->m_Items[i]);break;
case OOX::Spreadsheet::itemschoicetype5SURFACE3DCHART: convert((OOX::Spreadsheet::CT_Surface3DChart*) ct_plotArea->m_Items[i]); chart3D = true; break;
case OOX::Spreadsheet::itemschoicetype5SURFACECHART: convert((OOX::Spreadsheet::CT_SurfaceChart*) ct_plotArea->m_Items[i]);break;
}
}
if (ct_plotArea->m_dTable)
{
}
if (chart3D == false)
{
odf_context()->chart_context()->start_wall();
{
convert(ct_plotArea->m_oSpPr.GetPointer());
}
odf_context()->chart_context()->end_element();
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
void OoxConverter::convert(OOX::Spreadsheet::CT_CatAx* axis)
@ -194,8 +202,17 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_CatAx* axis)
if (axis->m_scaling->m_min && axis->m_scaling->m_min->m_val) odf_context()->chart_context()->set_axis_min(*axis->m_scaling->m_min->m_val);
if (axis->m_scaling->m_max && axis->m_scaling->m_max->m_val) odf_context()->chart_context()->set_axis_max(*axis->m_scaling->m_max->m_val);
}
if (axis->m_majorTickMark)odf_context()->chart_context()->set_axis_label(1);
if (axis->m_minorTickMark)odf_context()->chart_context()->set_axis_label(2);
if (axis->m_majorTickMark && axis->m_majorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_major(*axis->m_majorTickMark->m_val);
if (axis->m_minorTickMark && axis->m_minorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_minor(*axis->m_minorTickMark->m_val);
if (axis->m_tickLblPos)
{
if (axis->m_tickLblPos->m_val)odf_context()->chart_context()->set_display_label_position(*axis->m_tickLblPos->m_val);
odf_context()->chart_context()->set_display_label(true);
}
if (axis->m_axPos && axis->m_axPos->m_val)
odf_context()->chart_context()->set_axis_position(*axis->m_axPos->m_val);
if (axis->m_tickLblPos && axis->m_tickLblPos->m_val)
@ -227,8 +244,17 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_DateAx* axis)
if (axis->m_scaling->m_max && axis->m_scaling->m_max->m_val) odf_context()->chart_context()->set_axis_max(*axis->m_scaling->m_max->m_val);
}
if (axis->m_majorTickMark)odf_context()->chart_context()->set_axis_label(1);
if (axis->m_minorTickMark)odf_context()->chart_context()->set_axis_label(2);
if (axis->m_majorTickMark && axis->m_majorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_major(*axis->m_majorTickMark->m_val);
if (axis->m_minorTickMark && axis->m_minorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_minor(*axis->m_minorTickMark->m_val);
if (axis->m_tickLblPos)
{
if (axis->m_tickLblPos->m_val)odf_context()->chart_context()->set_display_label_position(*axis->m_tickLblPos->m_val);
odf_context()->chart_context()->set_display_label(true);
}
if (axis->m_axPos && axis->m_axPos->m_val)
odf_context()->chart_context()->set_axis_position(*axis->m_axPos->m_val);
//////////////////
@ -256,8 +282,18 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_SerAx* axis)
if (axis->m_scaling->m_min && axis->m_scaling->m_min->m_val) odf_context()->chart_context()->set_axis_min(*axis->m_scaling->m_min->m_val);
if (axis->m_scaling->m_max && axis->m_scaling->m_max->m_val) odf_context()->chart_context()->set_axis_max(*axis->m_scaling->m_max->m_val);
}
if (axis->m_majorTickMark)odf_context()->chart_context()->set_axis_label(1);
if (axis->m_minorTickMark)odf_context()->chart_context()->set_axis_label(2);
if (axis->m_majorTickMark && axis->m_majorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_major(*axis->m_majorTickMark->m_val);
if (axis->m_minorTickMark && axis->m_minorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_minor(*axis->m_minorTickMark->m_val);
if (axis->m_tickLblPos)
{
if (axis->m_tickLblPos->m_val)odf_context()->chart_context()->set_display_label_position(*axis->m_tickLblPos->m_val);
odf_context()->chart_context()->set_display_label(true);
}
if (axis->m_axPos && axis->m_axPos->m_val)
odf_context()->chart_context()->set_axis_position(*axis->m_axPos->m_val);
///////////////////////////
@ -285,8 +321,17 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ValAx* axis)
if (axis->m_scaling->m_min && axis->m_scaling->m_min->m_val)odf_context()->chart_context()->set_axis_min(*axis->m_scaling->m_min->m_val);
if (axis->m_scaling->m_max && axis->m_scaling->m_max->m_val)odf_context()->chart_context()->set_axis_max(*axis->m_scaling->m_max->m_val);
}
if (axis->m_majorTickMark)odf_context()->chart_context()->set_axis_label(1);
if (axis->m_minorTickMark)odf_context()->chart_context()->set_axis_label(2);
if (axis->m_majorTickMark && axis->m_majorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_major(*axis->m_majorTickMark->m_val);
if (axis->m_minorTickMark && axis->m_minorTickMark->m_val)
odf_context()->chart_context()->set_axis_tick_minor(*axis->m_minorTickMark->m_val);
if (axis->m_tickLblPos)
{
if (axis->m_tickLblPos->m_val)odf_context()->chart_context()->set_display_label_position(*axis->m_tickLblPos->m_val);
odf_context()->chart_context()->set_display_label(true);
}
if (axis->m_axPos && axis->m_axPos->m_val)
odf_context()->chart_context()->set_axis_position(*axis->m_axPos->m_val);
/////////////////////////////
@ -457,6 +502,9 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_LineChart *chart)
if (chart->m_grouping && chart->m_grouping->m_val)
odf_context()->chart_context()->set_chart_grouping(*chart->m_grouping->m_val);
if (chart->m_marker && chart->m_marker->m_val && (*chart->m_marker->m_val == true))
odf_context()->chart_context()->set_marker_type(12); //auto type
convert (chart->m_dropLines, 3);
odf_context()->chart_context()->start_group_series();
@ -588,6 +636,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_ScatterChart *chart)
if (chart->m_scatterStyle && chart->m_scatterStyle->m_val)
odf_context()->chart_context()->set_chart_scatter_type(*chart->m_scatterStyle->m_val);
odf_context()->chart_context()->start_group_series();
for (long i=0; i< chart->m_ser.GetCount(); i++)
{
@ -606,7 +655,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_RadarChart *chart)
odf_context()->chart_context()->set_chart_type(L"radar");
if (chart->m_radarStyle && chart->m_radarStyle->m_val)
odf_context()->chart_context()->set_chart_radar_type(*chart->m_radarStyle->m_val);
//odf_context()->chart_context()->set_chart_grouping(2);???
//odf_context()->chart_context()->set_chart_grouping(2);???
odf_context()->chart_context()->start_group_series();
convert(chart->m_dLbls);
@ -761,6 +810,8 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_BarSer* ser)
}
if (ser->m_shape && ser->m_shape->m_val)
odf_context()->chart_context()->set_chart_bar_type(*ser->m_shape->m_val);
else
odf_context()->chart_context()->set_chart_bar_type(-1);
//m_trendline;
//m_errBars
odf_context()->chart_context()->end_series();
@ -923,7 +974,7 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_AxDataSource* cat, int type)
{
if (cat->m_strRef->m_f)odf_context()->chart_context()->set_category_axis_formula(string2std_string(*cat->m_strRef->m_f),type);
convert(cat->m_strRef->m_strCache);
convert(cat->m_strRef->m_strCache/*, type == 1 ? true:false*/);
}
else if (cat->m_numRef)
{
@ -952,16 +1003,23 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_NumDataSource* val)
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
void OoxConverter::convert(OOX::Spreadsheet::CT_Surface* ct_surface, int type)
void OoxConverter::convert(OOX::Spreadsheet::CT_Surface* ct_surface, int type, bool chart3D)
{
if (ct_surface == NULL)return;
if (ct_surface == NULL && chart3D == false)return;
//floor, side, back
//if (type == 1)odf_context()->chart_context()->start_floor();
//if (type == 2)odf_context()->chart_context()->start_side_wall();
if (type == 1)odf_context()->chart_context()->start_floor();
if (type == 2)odf_context()->chart_context()->start_wall();
//if (type == 3)odf_context()->chart_context()->start_back_wall();
//odf_context()->chart_context()->end_element();
if (ct_surface)
{
convert(ct_surface->m_oSpPr.GetPointer());
}
else if (chart3D)//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD> 3D <20><><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
odf_context()->chart_context()->set_no_fill(true);
}
odf_context()->chart_context()->end_element();
}
void OoxConverter::convert(OOX::Spreadsheet::CT_ExternalData *external_data)
{

View File

@ -204,6 +204,11 @@ void DocxConverter::convert(OOX::WritingElement *oox_unknown)
OOX::Logic::CSectionProperty *pSectionPr = static_cast<OOX::Logic::CSectionProperty*>(oox_unknown);
convert(pSectionPr, true);
}break;
case OOX::et_w_tbl:
{
OOX::Logic::CTbl* pTable= static_cast<OOX::Logic::CTbl*>(oox_unknown);
convert(pTable);
}break;
default:
{
OoxConverter::convert(oox_unknown);
@ -217,7 +222,7 @@ void DocxConverter::convert(OOX::Logic::CParagraph *oox_paragraph)
bool styled = false;
bool bStartNewParagraph = !m_bKeepNextParagraph;
if (oox_paragraph->m_oParagraphProperty)
{
styled = true;
@ -234,8 +239,11 @@ void DocxConverter::convert(OOX::Logic::CParagraph *oox_paragraph)
odt_context->styles_context()->create_style(L"",odf::style_family::Paragraph, true, false, -1);
paragraph_properties = odt_context->styles_context()->last_state().get_paragraph_properties();
}
m_bKeepNextParagraph = false;
convert(oox_paragraph->m_oParagraphProperty, paragraph_properties);
}
}else m_bKeepNextParagraph = false;
if (bStartNewParagraph) odt_context->start_paragraph(styled);
for ( int nIndex = 0; nIndex < oox_paragraph->m_arrItems.GetSize(); nIndex++ )
@ -254,7 +262,7 @@ void DocxConverter::convert(OOX::Logic::CParagraph *oox_paragraph)
}
if (m_bKeepNextParagraph) odt_context->end_drop_cap();
if (bStartNewParagraph && !m_bKeepNextParagraph) odt_context->end_paragraph();
if (!m_bKeepNextParagraph) odt_context->end_paragraph();
}
void DocxConverter::convert(OOX::Logic::CRun *oox_run)//wordprocessing 22.1.2.87 math 17.3.2.25
{
@ -1453,6 +1461,80 @@ void DocxConverter::convert_comment(int oox_comm_id)
}
}
}
void DocxConverter::convert(OOX::Logic::CTbl *oox_table)
{
if (oox_table == NULL) return;
odt_context->start_table();
convert(oox_table->m_oTblGrid.GetPointer());
for (int i =0 ; i < oox_table->m_arrItems.GetSize(); i++)
{
convert(oox_table->m_arrItems[i]);
}
odt_context->end_table();
}
void DocxConverter::convert(OOX::Logic::CTblGrid *oox_table_grid)
{
if (oox_table_grid == NULL) return;
odt_context->start_table_columns();
//nullable<OOX::Logic::CTblGridChange > m_oTblGridChange;
for (int i =0 ; i < oox_table_grid->m_arrGridCol.GetSize(); i++)
{
//m_oW
odt_context->add_table_column(/*10*/);
}
odt_context->end_table_columns();
}
void DocxConverter::convert(OOX::Logic::CTr *oox_table_row)
{
if (oox_table_row == NULL) return;
for (int i =0 ; i < oox_table_row->m_arrItems.GetSize(); i++)
{
odt_context->start_table_row();
convert(oox_table_row->m_arrItems[i]);
odt_context->end_table_row();
}
}
void DocxConverter::convert(OOX::Logic::CTc *oox_table_cell)
{
if (oox_table_cell == NULL) return;
odt_context->start_table_cell();
for (int i =0 ; i < oox_table_cell->m_arrItems.GetSize(); i++)
{
convert(oox_table_cell->m_arrItems[i]);
}
odt_context->end_table_cell();
}
void DocxConverter::convert(OOX::Logic::CTableCellProperties *oox_table_cell_pr)
{
if (oox_table_cell_pr == NULL) return;
//nullable<ComplexTypes::Word::CTrackChange > m_oCellDel;
//nullable<ComplexTypes::Word::CTrackChange > m_oCellIns;
//nullable<ComplexTypes::Word::CCellMergeTrackChange > m_oCellMerge;
//nullable<ComplexTypes::Word::CCnf > m_oCnfStyle;
//nullable<ComplexTypes::Word::CDecimalNumber > m_oGridSpan;
//nullable<OOX::Logic::CHeaders > m_oHeaders;
//nullable<ComplexTypes::Word::COnOff2<SimpleTypes::onoffTrue> > m_oHideMark;
//nullable<ComplexTypes::Word::CHMerge > m_oHMerge;
//nullable<ComplexTypes::Word::COnOff2<SimpleTypes::onoffTrue> > m_oNoWrap;
//nullable<ComplexTypes::Word::CShading > m_oShd;
//nullable<OOX::Logic::CTcBorders > m_oTcBorders;
//nullable<ComplexTypes::Word::COnOff2<SimpleTypes::onoffTrue> > m_oTcFitText;
//nullable<OOX::Logic::CTcMar > m_oTcMar;
//nullable<OOX::Logic::CTcPrChange > m_oTcPrChange;
//nullable<ComplexTypes::Word::CTblWidth > m_oTcW;
//nullable<ComplexTypes::Word::CTextDirection > m_oTextDirection;
//nullable<ComplexTypes::Word::CVerticalJc > m_oVAlign;
//nullable<ComplexTypes::Word::CVMerge > m_oVMerge;
}
}

View File

@ -34,6 +34,13 @@ namespace OOX
class CCommentRangeStart;
class CCommentRangeEnd;
class CCommentReference;
class CTbl;
class CTblGrid;
class CTr;
class CTc;
class CTableCellProperties;
class CTblGridCol;
}
}
@ -129,7 +136,11 @@ namespace Oox2Odf
void convert(OOX::Logic::CCommentRangeEnd *oox_comm_end);
void convert(OOX::Logic::CCommentReference *oox_comm_ref);
void convert(OOX::Logic::CTbl *oox_table);
void convert(OOX::Logic::CTblGrid *oox_table_grid);
void convert(OOX::Logic::CTr *oox_table_row);
void convert(OOX::Logic::CTc *oox_table_cell);
void convert(OOX::Logic::CTableCellProperties *oox_table_cell_pr);
//--------------------------------------------------------------------------------
bool m_bKeepNextParagraph;
};