Compare commits

...

13 Commits

15 changed files with 120 additions and 15 deletions

View File

@ -107,6 +107,7 @@ static const std::wstring _ooxShapeType[]=
L"path",
L"custGeom",//uses sub-sub type,
L"polygon",
L"roundRect",
};
@ -355,7 +356,7 @@ void _oox_drawing::serialize_shape(std::wostream & strm)
shapeGeomPreset = L"rect";
}
}
else if (sub_type < 9 && sub_type >= 0)
else if (sub_type < 10 && sub_type >= 0)
{
shapeGeomPreset = _ooxShapeType[sub_type]; //odf -> oox
}

View File

@ -235,7 +235,7 @@ void Compute_HatchFill(draw_hatch * image_style,oox::oox_hatch_fill_ptr fill)
int style =0;
if (image_style->draw_style_)style = image_style->draw_style_->get_type();
int angle = (int)(0.5 + *image_style->draw_rotation_/10.);
int angle = image_style->draw_rotation_ ? (int)(0.5 + *image_style->draw_rotation_/10.) : 0;
if (image_style->draw_color_)fill->color_ref = image_style->draw_color_->get_hex_value();

View File

@ -74,7 +74,7 @@ void draw_shape::add_child_element( xml::sax * Reader, const std::wstring & Ns,
}
void draw_shape::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"draw:id", draw_id_);//или сюда draw_shape_attlist_???
CP_APPLY_ATTR(L"draw:id", draw_id_);//или сюда draw_shape_attlist_???
common_draw_attlists_.shape_with_text_and_styles_.add_attributes(Attributes);
common_draw_attlists_.position_.add_attributes(Attributes);
@ -87,6 +87,7 @@ void draw_shape::add_attributes( const xml::attributes_wc_ptr & Attributes )
void draw_rect_attlist::add_attributes( const xml::attributes_wc_ptr & Attributes )
{
CP_APPLY_ATTR(L"draw:filter-name", draw_filter_name_);
CP_APPLY_ATTR(L"draw:corner-radius",draw_corner_radius_);
}
const wchar_t * draw_rect::ns = L"draw";
@ -98,6 +99,9 @@ void draw_rect::add_attributes( const xml::attributes_wc_ptr & Attributes )
draw_shape::add_attributes(Attributes);
sub_type_ = 2;
if (draw_rect_attlist_.draw_corner_radius_)
sub_type_ = 9;
}

View File

@ -101,7 +101,8 @@ public:
virtual void add_attributes( const xml::attributes_wc_ptr & Attributes );
public:
_CP_OPT(std::wstring) draw_filter_name_;
_CP_OPT(std::wstring) draw_filter_name_;
_CP_OPT(odf_types::length) draw_corner_radius_;
};

View File

@ -626,6 +626,7 @@ public:
// header_footer_content_impl content_;
};
CP_REGISTER_OFFICE_ELEMENT2(style_footer_first);
/// style:header-left
class style_header_left : public office_element_impl<style_header_left>, public header_footer_impl

View File

@ -83,7 +83,7 @@ namespace PPTX
int nParentDepth = oReader.GetDepth();
while( oReader.ReadNextSiblingNode( nParentDepth ) )
{
std::wstring strName = XmlUtils::GetNameNoNS(oReader.GetName());
std::wstring strName = oReader.GetName();
if (strName == L"a:cxnSpLocks")
{
@ -155,7 +155,6 @@ namespace PPTX
}
}
virtual std::wstring toXML() const
{
XmlUtils::CAttribute oAttr1;

2
ASCOfficePPTXFile/PPTXFormat/Logic/GraphicFrame.cpp Normal file → Executable file
View File

@ -124,6 +124,8 @@ namespace PPTX
xfrm = oReader;
else if (L"cNvGraphicFramePr" == strName)
nvGraphicFramePr.cNvGraphicFramePr.fromXML( oReader );
else if (L"nvGraphicFramePr" == strName)
nvGraphicFramePr.fromXML( oReader );
else if (L"graphic" == strName)
{

View File

@ -112,6 +112,24 @@
/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
/* ================================================================ */
/*
* Define WIN32 when build target is Win32 API
*/
#if (defined(_WIN32) || defined(__WIN32__)) && \
!defined(WIN32) && !defined(__SYMBIAN32__)
#define WIN32
#endif
#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
/* The check above prevents the winsock2 inclusion if winsock.h already was
included, since they can't co-exist without problems */
# define CURL_PULL_WS2TCPIP_H
#endif
#endif
/* Configure process defines this to 1 when it finds out that system */
/* header file ws2tcpip.h must be included by the external interface. */
/* #undef CURL_PULL_WS2TCPIP_H */
@ -145,9 +163,12 @@
# include <inttypes.h>
#endif
#if !defined(WIN32) && !defined(_WIN32_WCE)
# define CURL_PULL_SYS_SOCKET_H
#endif
/* Configure process defines this to 1 when it finds out that system */
/* header file sys/socket.h must be included by the external interface. */
#define CURL_PULL_SYS_SOCKET_H 1
#ifdef CURL_PULL_SYS_SOCKET_H
# include <sys/socket.h>
#endif

View File

@ -112,6 +112,24 @@
/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
/* ================================================================ */
/*
* Define WIN32 when build target is Win32 API
*/
#if (defined(_WIN32) || defined(__WIN32__)) && \
!defined(WIN32) && !defined(__SYMBIAN32__)
#define WIN32
#endif
#if defined(WIN32) && !defined(_WIN32_WCE) && !defined(__CYGWIN__)
#if !(defined(_WINSOCKAPI_) || defined(_WINSOCK_H) || \
defined(__LWIP_OPT_H__) || defined(LWIP_HDR_OPT_H))
/* The check above prevents the winsock2 inclusion if winsock.h already was
included, since they can't co-exist without problems */
# define CURL_PULL_WS2TCPIP_H
#endif
#endif
/* Configure process defines this to 1 when it finds out that system */
/* header file ws2tcpip.h must be included by the external interface. */
/* #undef CURL_PULL_WS2TCPIP_H */
@ -145,9 +163,12 @@
# include <inttypes.h>
#endif
#if !defined(WIN32) && !defined(_WIN32_WCE)
# define CURL_PULL_SYS_SOCKET_H
#endif
/* Configure process defines this to 1 when it finds out that system */
/* header file sys/socket.h must be included by the external interface. */
#define CURL_PULL_SYS_SOCKET_H 1
#ifdef CURL_PULL_SYS_SOCKET_H
# include <sys/socket.h>
#endif

View File

@ -365,7 +365,13 @@ namespace NSDirectory
SECURITY_ATTRIBUTES sa={};
codeResult = SHCreateDirectoryExW(NULL, strDirectory.c_str(), &sa);
if (strDirectory.find(L"./") == 0)
{
std::wstring sDir = NSFile::GetProcessDirectory() + L"/" + strDirectory;
codeResult = SHCreateDirectoryExW(NULL, sDir.c_str(), &sa);
}
else
codeResult = SHCreateDirectoryExW(NULL, strDirectory.c_str(), &sa);
bool created = false;
if (codeResult == ERROR_SUCCESS)

View File

@ -59,6 +59,8 @@ namespace NSDoctRenderer
void SetProperty(const char* param, const wchar_t* value);
void SetPropertyW(const wchar_t* param, const wchar_t* value);
char* GetVersion();
public:
static void Initialize();
static void Dispose();

View File

@ -1395,6 +1395,50 @@ namespace NSDoctRenderer
m_pInternal->CloseFile();
}
char* CDocBuilder::GetVersion()
{
m_pInternal->Init();
if (0 == m_pInternal->m_arDoctSDK.size())
return NULL;
std::wstring sFile;
for (std::vector<std::wstring>::iterator i = m_pInternal->m_arDoctSDK.begin(); i != m_pInternal->m_arDoctSDK.end(); i++)
{
if (std::wstring::npos != i->find(L"sdk-all-min.js"))
{
sFile = *i;
break;
}
}
if (sFile.empty())
return NULL;
std::string sData;
if (!NSFile::CFileBinary::ReadAllTextUtf8A(sFile, sData))
return NULL;
std::string::size_type startPos = sData.find("Version:");
if (std::string::npos == startPos)
return NULL;
startPos += 8;
std::string::size_type endPos = sData.find(')', startPos);
if (std::string::npos == endPos)
return NULL;
size_t sSrcLen = endPos - startPos + 1;
if (sSrcLen == 0)
return NULL;
char* sRet = new char[sSrcLen + 1];
memcpy(sRet, sData.c_str() + startPos, sSrcLen);
sRet[sSrcLen] = '\0';
return sRet;
}
bool CDocBuilder::Run(const wchar_t* path)
{
std::wstring sPath(path);

View File

@ -195,6 +195,9 @@ static const struct ActionNamesEmf
m_oStream >> ulType;
m_oStream >> ulSize;
if (ulSize < 1)
continue;
m_ulRecordPos = m_oStream.Tell();
m_ulRecordSize = ulSize - 8;
@ -1074,7 +1077,7 @@ static const struct ActionNamesEmf
m_oStream.Skip(4); // offBits
m_oStream.Skip(4); // cbBits
m_ulRecordSize -= 20;
unsigned int current_size = m_ulRecordSize - 20;
CEmfLogPen* pPen = new CEmfLogPen();
if (!pPen)
@ -1088,10 +1091,10 @@ static const struct ActionNamesEmf
m_oStream.Skip(4); // BrushHatch
m_oStream >> pPen->NumStyleEntries;
m_ulRecordSize -= 24;
current_size -= 24;
if (pPen->NumStyleEntries > 0)
{
m_ulRecordSize -= pPen->NumStyleEntries * 4;
current_size -= pPen->NumStyleEntries * 4;
pPen->StyleEntry = new unsigned int[pPen->NumStyleEntries];
if (!pPen->StyleEntry)
{
@ -1110,7 +1113,7 @@ static const struct ActionNamesEmf
}
// Пропускаем часть с картинкой, если она была
m_oStream.Skip(m_ulRecordSize);
m_oStream.Skip(current_size);
m_oPlayer.RegisterObject(ulPenIndex, (CEmfObjectBase*)pPen);
}

View File

@ -1,5 +1,5 @@
[![License](https://img.shields.io/badge/License-GNU%20AGPL%20V3-green.svg?style=flat)](http://www.gnu.org/licenses/agpl-3.0.ru.html) ![x2tconverter](https://img.shields.io/badge/x2tconverter-v2.0.2.376-blue.svg?style=flat) ![Platforms Windows | OS X | Linux](https://img.shields.io/badge/Platforms-Windows%20%7C%20OS%20X%20%7C%20Linux%20-lightgray.svg?style=flat)
[![License](https://img.shields.io/badge/License-GNU%20AGPL%20V3-green.svg?style=flat)](https://www.gnu.org/licenses/agpl-3.0.en.html) ![x2tconverter](https://img.shields.io/badge/x2tconverter-v2.0.2.376-blue.svg?style=flat) ![Platforms Windows | OS X | Linux](https://img.shields.io/badge/Platforms-Windows%20%7C%20OS%20X%20%7C%20Linux%20-lightgray.svg?style=flat)
## Core
Server core components which are a part of [ONLYOFFICE Document Server][2]. Enable the conversion between the most popular office document formats: DOC, DOCX, ODT, RTF, TXT, PDF, HTML, EPUB, XPS, DjVu, XLS, XLSX, ODS, CSV, PPT, PPTX, ODP.

View File

@ -7,7 +7,7 @@
QT -= core
QT -= gui
VERSION = 2.4.466.0
VERSION = 2.4.467.0
DEFINES += INTVER=$$VERSION
TARGET = x2t