Commit 0510442e authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

(1.2.0.46): ASCOfficeOdfFileW

доделки по биржевой диаграмме

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@56350 954022d7-b5bf-4e40-9824-e11837661b57
parent 3a168126
......@@ -263,6 +263,7 @@ void odf_chart_context::set_chart_bar_direction(int type)
void odf_chart_context::set_chart_bar_gap_width(std::wstring val)
{
if (!impl_->current_level_.back().chart_properties_) return;
int res = val.find(L"%");
bool percent=false;
......@@ -288,6 +289,15 @@ void odf_chart_context::set_chart_bar_overlap(std::wstring val)
double dVal = boost::lexical_cast<double>(val);
impl_->current_level_.back().chart_properties_->content().chart_overlap_ = (int)dVal;
}
void odf_chart_context::set_chart_stock_candle_stick(bool val)
{
if (!impl_->current_level_.back().chart_properties_) return;
impl_->current_level_.back().chart_properties_->content().chart_japanese_candle_stick_ = val;
}
void odf_chart_context::set_chart_radar_type(int type)
{
switch(type)
......@@ -861,9 +871,9 @@ void odf_chart_context::start_stock_gain_marker()
void odf_chart_context::start_stock_loss_marker()
{
office_element_ptr elm;
create_element(L"chart", L"stock-gain-marker", elm, impl_->odf_context_);
create_element(L"chart", L"stock-loss-marker", elm, impl_->odf_context_);
chart_stock_gain_marker *marker = dynamic_cast<chart_stock_gain_marker*>(elm.get());
chart_stock_loss_marker *marker = dynamic_cast<chart_stock_loss_marker*>(elm.get());
//////////
impl_->styles_context_->create_style(L"",style_family::Chart, true, false, -1);
......@@ -881,6 +891,30 @@ void odf_chart_context::start_stock_loss_marker()
}
start_element(elm, style_elm, style_name);
}
void odf_chart_context::set_stock_gain_marker_width(std::wstring val)
{
int res = val.find(L"%");
bool percent=false;
if (res > 0)
{
val = val.substr(0,res);
percent=true;
}
double dVal = boost::lexical_cast<double>(val);
}
void odf_chart_context::set_stock_loss_marker_width(std::wstring val)
{
int res = val.find(L"%");
bool percent=false;
if (res > 0)
{
val = val.substr(0,res);
percent=true;
}
double dVal = boost::lexical_cast<double>(val);
}
long odf_chart_context::get_count_data_points_series()
{
return impl_->current_data_points_series_count_;
......
......@@ -42,6 +42,7 @@ public:
void set_chart_bar_gap_width(std::wstring val);
void set_chart_bar_overlap(std::wstring val);
void set_chart_radar_type(int type);
void set_chart_stock_candle_stick(bool val);
void set_marker_size(int size);
void set_marker_type(int type);
......@@ -86,8 +87,11 @@ public:
void start_floor();
void start_wall();
void set_legend_position(int val);
void start_stock_gain_marker();
void set_stock_gain_marker_width(std::wstring val);
void start_stock_loss_marker();
void set_stock_loss_marker_width(std::wstring val);
void start_stock_range_line();
void start_element(office_element_ptr & elm, office_element_ptr & style_elm, std::wstring style_name);
......
......@@ -45,6 +45,7 @@ void chart_format_properties::serialize(std::wostream & _Wostream ,const wchar_t
CP_XML_ATTR_OPT(L"chart:error-upper-indicator", chart_error_upper_indicator_ );
CP_XML_ATTR_OPT(L"chart:error-lower-indicator", chart_error_lower_indicator_ );
CP_XML_ATTR_OPT(L"chart:treat-empty-cells", chart_treat_empty_cells_);
CP_XML_ATTR_OPT(L"chart:japanese-candle-stick", chart_japanese_candle_stick_);
CP_XML_ATTR_OPT(L"chart:symbol-type", chart_symbol_type_);
CP_XML_ATTR_OPT(L"chart:symbol-name", chart_symbol_name_);
......
......@@ -52,6 +52,7 @@ public:
_CP_OPT(Bool) chart_error_upper_indicator_;
_CP_OPT(Bool) chart_error_lower_indicator_;
_CP_OPT(Bool) chart_treat_empty_cells_;
_CP_OPT(Bool) chart_japanese_candle_stick_;
_CP_OPT(chart_symbol_type) chart_symbol_type_;
_CP_OPT(chart_symbol_name) chart_symbol_name_;
......
......@@ -626,33 +626,44 @@ void OoxConverter::convert(OOX::Spreadsheet::CT_StockChart *chart)
odf_context()->chart_context()->start_group_series();
convert(chart->m_dLbls);
for (long i=0; i< chart->m_ser.GetCount(); i++)
{
convert(chart->m_ser[i]);
}
for (long i=0; i< chart->m_axId.GetCount(); i++)
{
odf_context()->chart_context()->add_axis_group_series(*chart->m_axId[i]->m_val);
}
convert (chart->m_dropLines ,3);
convert (chart->m_hiLowLines, 4);
if (chart->m_upDownBars)
{
//m_gapWidth
odf_context()->chart_context()->set_chart_stock_candle_stick(true);
std::wstring gap_width;
if (chart->m_upDownBars->m_gapWidth && chart->m_upDownBars->m_gapWidth->m_val)
{
gap_width = string2std_string(*chart->m_upDownBars->m_gapWidth->m_val);
/*odf_context()->chart_context()->set_chart_bar_gap_width(gap_width);*/
}
if (chart->m_upDownBars->m_upBars)
{
odf_context()->chart_context()->start_stock_gain_marker();
convert(chart->m_upDownBars->m_upBars->m_oSpPr.GetPointer());
if (gap_width.length() > 0)
odf_context()->chart_context()->set_chart_bar_gap_width(gap_width);
odf_context()->chart_context()->end_element();
}
if (chart->m_upDownBars->m_downBars)
{
odf_context()->chart_context()->start_stock_loss_marker();
convert(chart->m_upDownBars->m_downBars->m_oSpPr.GetPointer());
if (gap_width.length() > 0)
odf_context()->chart_context()->set_chart_bar_gap_width(gap_width);
odf_context()->chart_context()->end_element();
}
}
for (long i=0; i< chart->m_ser.GetCount(); i++)
{
convert(chart->m_ser[i]);
}
for (long i=0; i< chart->m_axId.GetCount(); i++)
{
odf_context()->chart_context()->add_axis_group_series(*chart->m_axId[i]->m_val);
}
convert (chart->m_hiLowLines, 4);
odf_context()->chart_context()->end_group_series();
}
void OoxConverter::convert(OOX::Spreadsheet::CT_OfPieChart *chart)
......
......@@ -2,6 +2,6 @@
//1
//2
//0
//46
#define INTVER 1,2,0,46
#define STRVER "1,2,0,46\0"
//47
#define INTVER 1,2,0,47
#define STRVER "1,2,0,47\0"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment