Commit 8142fbf1 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

(1.2.0.56): ASCOfficeOdfFileW

группы шейпов
правки ошибок по результатам тестирования

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@56464 954022d7-b5bf-4e40-9824-e11837661b57
parent 42466507
......@@ -198,7 +198,6 @@ static const def_language_code LanguageCodeTable[] =
odf_number_styles_context::odf_number_styles_context()
{
create_default(0);
}
void odf_number_styles_context::set_odf_context(odf_conversion_context * Context)
{
......
......@@ -22,7 +22,10 @@ void calculate_size_font_symbols(_font_metrix & metrix)
double appr_px = 0;//(int)_gdi_graphics_::calculate_size_symbol_asc(metrix.font_name,metrix.font_size,metrix.italic,metrix.bold);
if (appr_px <0.01)
appr_px = (int)_gdi_graphics_::calculate_size_symbol(metrix.font_name,metrix.font_size,false/*metrix.italic*/,false/*metrix.bold*/);
{
appr_px = /*(int)*/_gdi_graphics_::calculate_size_symbol(metrix.font_name,metrix.font_size,false/*metrix.italic*/,false/*metrix.bold*/);
appr_px = ((int)(appr_px+0.5) + 2*(int)appr_px)/3.;
}
if (appr_px > 0)
{
......
......@@ -689,10 +689,42 @@ void OoxConverter::convert(OOX::Drawing::CRunProperty * oox_run_pr, odf::style_t
{
text_properties->content().fo_letter_spacing_ = odf::letter_spacing(odf::length(oox_run_pr->m_oSpace->GetValue()/100., odf::length::pt));
}
//if (oox_run_pr->m_oUnderline.IsInit())
//{
// convert_element ????
//}
if (oox_run_pr->m_oUnderline.IsInit())
{
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Solid);
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Single);
SimpleTypes::EUnderline type = oox_run_pr->m_oUnderline->GetValue();
switch(type)
{
case SimpleTypes::underlineNone :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::None);break;
case SimpleTypes::underlineDash :
case SimpleTypes::underlineDashedHeavy:
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Dash);break;
case SimpleTypes::underlineDotDash :
case SimpleTypes::underlineDashDotHeavy:
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::DotDash);break;
case SimpleTypes::underlineDashLong:
case SimpleTypes::underlineDashLongHeavy:
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::LongDash);break;
case SimpleTypes::underlineDotDotDash:
case SimpleTypes::underlineDashDotDotHeavy :
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::DotDotDash);break;
case SimpleTypes::underlineDotted:
case SimpleTypes::underlineDottedHeavy:
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Dotted);break;
case SimpleTypes::underlineWave :
case SimpleTypes::underlineWavyHeavy :
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Wave);break;
case SimpleTypes::underlineDouble :
case SimpleTypes::underlineThick :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Double);break;
case SimpleTypes::underlineWavyDouble :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Double);
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Wave);break;
}
}
}
void OoxConverter::convert(OOX::Drawing::CRun *oox_run)
{
......
......@@ -488,9 +488,27 @@ void XlsxConverter::convert(OOX::Spreadsheet::CRPr *oox_run_pr)
}
convert(oox_run_pr->m_oColor.GetPointer(),text_properties->content().fo_color_);
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::None);
if (oox_run_pr->m_oUnderline.IsInit())
{
//convert_element ????
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Solid);
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Single);
if (oox_run_pr->m_oUnderline->m_oUnderline.IsInit())
{
SimpleTypes::Spreadsheet::EUnderline type = oox_run_pr->m_oUnderline->m_oUnderline->GetValue();
switch(type)
{
case SimpleTypes::Spreadsheet::underlineDouble :
case SimpleTypes::Spreadsheet::underlineDoubleAccounting :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Double);break;
case SimpleTypes::Spreadsheet::underlineNone :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::None);break;
case SimpleTypes::Spreadsheet::underlineSingle :
case SimpleTypes::Spreadsheet::underlineSingleAccounting :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Single);break;
}
}
}
if (oox_run_pr->m_oItalic.IsInit())
{
......@@ -513,13 +531,22 @@ void XlsxConverter::convert(OOX::Spreadsheet::CRPr *oox_run_pr)
text_properties->content().fo_font_family_ = string2std_string(oox_run_pr->m_oRFont->m_sVal.get());
}
//convert(oox_run_pr->m_oVertAlign.GetPointer(),...
if (oox_run_pr->m_oScheme.IsInit() && oox_run_pr->m_oScheme->m_oFontScheme.IsInit())
{
SimpleTypes::Spreadsheet::EFontScheme type = oox_run_pr->m_oScheme->m_oFontScheme->GetValue();
if (type == SimpleTypes::Spreadsheet::fontschemeMajor)
{
text_properties->content().style_text_position_ = odf::text_position(+33.);
}
if (type == SimpleTypes::Spreadsheet::fontschemeMinor)
{
text_properties->content().style_text_position_ = odf::text_position(-33.);
}
}
//nullable<CCharset> m_oCharset;
//nullable<ComplexTypes::Spreadsheet::COnOff2<SimpleTypes::onoffTrue> > m_oCondense;
//nullable<ComplexTypes::Spreadsheet::COnOff2<SimpleTypes::onoffTrue> > m_oExtend;
//nullable<ComplexTypes::Spreadsheet::COnOff2<SimpleTypes::onoffTrue> > m_oOutline;
//nullable<CFontScheme> m_oScheme;
//nullable<ComplexTypes::Spreadsheet::COnOff2<SimpleTypes::onoffTrue> > m_oShadow;
//nullable<ComplexTypes::Spreadsheet::COnOff2<SimpleTypes::onoffTrue> > m_oStrike;
......@@ -752,9 +779,26 @@ void XlsxConverter::convert(OOX::Spreadsheet::CFont * font, odf::style_text_prop
convert(font->m_oColor.GetPointer(),text_properties->content().fo_color_);
if (font->m_oUnderline.IsInit())
if (font->m_oUnderline.IsInit() )
{
//convert_element ????
text_properties->content().style_text_underline_style_ = odf::line_style(odf::line_style::Solid);
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Single);
if (font->m_oUnderline->m_oUnderline.IsInit())
{
SimpleTypes::Spreadsheet::EUnderline type = font->m_oUnderline->m_oUnderline->GetValue();
switch(type)
{
case SimpleTypes::Spreadsheet::underlineDouble :
case SimpleTypes::Spreadsheet::underlineDoubleAccounting :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Double);break;
case SimpleTypes::Spreadsheet::underlineNone :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::None);break;
case SimpleTypes::Spreadsheet::underlineSingle :
case SimpleTypes::Spreadsheet::underlineSingleAccounting :
text_properties->content().style_text_underline_type_= odf::line_type(odf::line_type::Single);break;
}
}
}
if (font->m_oItalic.IsInit() && (font->m_oItalic->m_oVal.ToBool() ==true))font_italic = true;
......@@ -777,15 +821,23 @@ void XlsxConverter::convert(OOX::Spreadsheet::CFont * font, odf::style_text_prop
{
font_name = string2std_string(font->m_oRFont->m_sVal.get());
text_properties->content().fo_font_family_ = font_name;
//text_properties->content().style_font_name_asian_ = font_name;
//text_properties->content().style_font_name_complex_ = font_name;
text_properties->content().style_font_family_asian_ = font_name;
text_properties->content().style_font_family_complex_ = font_name;
}
if (font->m_oScheme.IsInit() && font->m_oScheme->m_oFontScheme.IsInit())
{
SimpleTypes::Spreadsheet::EFontScheme type = font->m_oScheme->m_oFontScheme->GetValue();
if (type == SimpleTypes::Spreadsheet::fontschemeMajor)
{
text_properties->content().style_text_position_ = odf::text_position(+33.);
}
if (type == SimpleTypes::Spreadsheet::fontschemeMinor)
{
text_properties->content().style_text_position_ = odf::text_position(-33.);
}
}
ods_context->calculate_font_metrix(font_name,font_size,font_italic,font_bold);
/////
//...
/////
}
void XlsxConverter::convert(double oox_size, _CP_OPT(odf::length) & odf_size)
......@@ -1244,7 +1296,10 @@ void XlsxConverter::convert(OOX::Spreadsheet::CCellAnchor *oox_anchor)
{
convert(oox_anchor->m_oGraphicFrame.GetPointer());
}
else if (oox_anchor->m_oGraphicFrame.IsInit())//chart
{
convert(oox_anchor->m_oGraphicFrame.GetPointer());
}
}
void XlsxConverter::convert(OOX::Spreadsheet::CDrawing *oox_drawing)
......
......@@ -88,7 +88,7 @@ namespace _gdi_graphics_
ULONG_PTR gdiplusToken=0;
Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
////
std::wstring test_string = L"0123456789abcdefg";
std::wstring test_string = L"0123456789";
int style = Gdiplus::FontStyleRegular;
if (bold && italic) style = Gdiplus::FontStyleBoldItalic;
......
......@@ -2,6 +2,6 @@
//1
//2
//0
//55
#define INTVER 1,2,0,55
#define STRVER "1,2,0,55\0"
//56
#define INTVER 1,2,0,56
#define STRVER "1,2,0,56\0"
......@@ -136,6 +136,8 @@ namespace OOX
m_oShape = oShapeReader;
else if (_T("xdr:cxnSp") == sName)
m_oConnShape = oShapeReader;
else if (_T("xdr:grpSp") == sName)
m_oGroupShape = oShapeReader;
}
}
}
......@@ -175,6 +177,7 @@ namespace OOX
nullable<OOX::Spreadsheet::CExt> m_oExt;
nullable<OOX::Spreadsheet::CGraphicFrame> m_oGraphicFrame;
nullable<OOX::Spreadsheet::CPic> m_oPicture;
nullable<OOX::Spreadsheet::CGroupShape> m_oGroupShape;
nullable<OOX::Spreadsheet::CShape> m_oShape;
nullable<OOX::Spreadsheet::CConnShape> m_oConnShape;
nullable<CString> m_oXml;
......
......@@ -129,7 +129,67 @@ namespace OOX
nullable<OOX::Drawing::COfficeArtExtensionList> m_oExtLst;
nullable<OOX::Drawing::CPictureLocking> m_oSpLocks;//todo CShapeLocking
};
//--------------------------------------------------------------------------------
// 20.5.2.6 cNvGrpSpPr (Non-Visual Group Shape Drawing Properties)
//--------------------------------------------------------------------------------
class CNonVisualGroupShapeDrawingProps : public WritingElement
{
public:
WritingElementSpreadsheet_AdditionConstructors(CNonVisualGroupShapeDrawingProps)
CNonVisualGroupShapeDrawingProps()
{
}
virtual ~CNonVisualGroupShapeDrawingProps()
{
}
public:
virtual CString toXML() const
{
return _T("");
}
virtual void toXML(XmlUtils::CStringWriter& writer) const
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CWCharWrapper sName = oReader.GetName();
sName = oReader.GetName();
if ( _T("a:extLst") == sName )
m_oExtLst = oReader;
//else ( _T("a:grpSpLocks") == sName )
// m_oSpLocks = oReader;
}
}
virtual EElementType getType () const
{
return et_NonVisualGroupShapeDrawingProps;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_End( oReader )
}
public:
// Attributes
SimpleTypes::COnOff<SimpleTypes::onoffFalse> m_otxBox;
// Childs
nullable<OOX::Drawing::COfficeArtExtensionList> m_oExtLst;
//nullable<OOX::Drawing::CPictureLocking> m_oSpLocks;//todo grpSpLocks
};
//--------------------------------------------------------------------------------
// 20.5.2.23 nvSpPr (Non-Visual Properties for a Shape)
//--------------------------------------------------------------------------------
......@@ -312,6 +372,70 @@ namespace OOX
nullable<OOX::Drawing::CPictureLocking> m_oPicLocks;
};
//--------------------------------------------------------------------------------
// 20.5.2.18 grpSpPr (Group Shape Properties)
//--------------------------------------------------------------------------------
class CGroupShapeProperties : public WritingElement
{
public:
WritingElementSpreadsheet_AdditionConstructors(CGroupShapeProperties)
CGroupShapeProperties()
{
}
virtual ~CGroupShapeProperties()
{
}
public:
virtual CString toXML() const
{
return _T("");
}
virtual void toXML(XmlUtils::CStringWriter& writer) const
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CWCharWrapper sName = oReader.GetName();
//if ( _T("xdr:cNvCxnSpPr") == sName )
// m_oCNvConnSpPr = oReader;
//else if ( _T("xdr:cNvPr") == sName )
// m_oCNvPr = oReader;
}
}
virtual EElementType getType () const
{
return et_GroupShapeProperties;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_End( oReader )
}
public:
// Childs
//blipFill (Picture Fill) 20.1.8.14
//effectDag (Effect Container) 20.1.8.25
//effectLst (Effect Container) 20.1.8.26
//extLst (Extension List) 20.1.2.2.15
//gradFill (Gradient Fill) 20.1.8.33
//grpFill (Group Fill) 20.1.8.35
//noFill (No Fill) 20.1.8.44
//pattFill (Pattern Fill) 20.1.8.47
};
//--------------------------------------------------------------------------------
// 20.5.2.19 nvCxnSpPr (Non-Visual Properties for a Connection Shape)
//--------------------------------------------------------------------------------
......@@ -370,7 +494,6 @@ namespace OOX
nullable<OOX::Drawing::CNonVisualDrawingProps> m_oCNvPr;
};
//--------------------------------------------------------------------------------
//20.5.2.13 cxnSp (Connection Shape)
//--------------------------------------------------------------------------------
......@@ -427,6 +550,130 @@ namespace OOX
nullable<OOX::Drawing::CShapeProperties> m_oSpPr;
nullable<OOX::Drawing::CShapeStyle> m_oShapeStyle;
};
//--------------------------------------------------------------------------------
// 20.5.2.21 nvGrpSpPr (Non-Visual Properties for a Group Shape)
//--------------------------------------------------------------------------------
class CGroupShapeNonVisual : public WritingElement
{
public:
WritingElementSpreadsheet_AdditionConstructors(CGroupShapeNonVisual)
CGroupShapeNonVisual()
{
}
virtual ~CGroupShapeNonVisual()
{
}
public:
virtual CString toXML() const
{
return _T("");
}
virtual void toXML(XmlUtils::CStringWriter& writer) const
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CWCharWrapper sName = oReader.GetName();
if ( _T("xdr:cNvGrpSpPr") == sName )
m_oCNvGroupSpPr = oReader;
else if ( _T("xdr:cNvPr") == sName )
m_oCNvPr = oReader;
}
}
virtual EElementType getType () const
{
return et_GroupShapeNonVisual;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
WritingElement_ReadAttributes_Start( oReader )
WritingElement_ReadAttributes_End( oReader )
}
public:
// Childs
nullable<CNonVisualGroupShapeDrawingProps> m_oCNvGroupSpPr;
nullable<OOX::Drawing::CNonVisualDrawingProps> m_oCNvPr;
};
//--------------------------------------------------------------------------------
// 20.5.2.17 grpSp (Group Shape)
//--------------------------------------------------------------------------------
class CGroupShape : public WritingElementWithChilds<WritingElement>
{
public:
WritingElementSpreadsheet_AdditionConstructors(CGroupShape)
CGroupShape()
{
}
virtual ~CGroupShape()
{
}
public:
virtual CString toXML() const
{
return _T("");
}
virtual void toXML(XmlUtils::CStringWriter& writer) const
{
}
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader)
{
ReadAttributes( oReader );
if ( oReader.IsEmptyNode() )
return;
int nCurDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nCurDepth ) )
{
CWCharWrapper sName = oReader.GetName();
if ( _T("xdr:nvGrpSpPr") == sName )
m_oNvGroupSpPr = oReader;
//else if ( _T("xdr:grpSpPr") == sName )
// m_oGroupSpPr = oReader;
else if ( _T("xdr:sp") == sName )
m_arrItems.Add( new OOX::Spreadsheet::CShape( oReader ));
else if ( _T("xdr:cxnSp") == sName )
m_arrItems.Add( new OOX::Spreadsheet::CConnShape( oReader ));
else if ( _T("xdr:graphicFrame") == sName )
m_arrItems.Add( new OOX::Spreadsheet::CGraphicFrame( oReader ));
else if ( _T("xdr:pic") == sName )
m_arrItems.Add( new OOX::Spreadsheet::CPic( oReader ));
else if ( _T("xdr:grpSp") == sName )
m_arrItems.Add( new OOX::Spreadsheet::CGroupShape( oReader ));
}
}
virtual EElementType getType () const
{
return et_GroupShape;
}
private:
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
{
}
public:
//nullable<OOX::Drawing::CGroupShapeProperties> m_oGroupSpPr;
nullable<CGroupShapeNonVisual> m_oNvGroupSpPr;
};
} //Spreadsheet
} // namespace OOX
......
......@@ -306,10 +306,14 @@ namespace Spreadsheet
et_ShapeProperties,
et_ShapeNonVisual,
et_ShapeStyle,
et_GroupShape,
et_Shape,
et_ConnShape,
et_ShapeTextBody,
et_ConnShapeNonVisual,
et_GroupShapeNonVisual,
et_GroupShapeProperties,
et_NonVisualGroupShapeDrawingProps,
et_ConnectionNonVisualConnShapeProps,
et_GraphicFrameNonVisual,
et_ConnectionNonVisualGraphicFrameProps,
......
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