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

fix RtfFile linux build (rtf->docx testing), x2t linux build (new wmf/emf conversion )

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62177 954022d7-b5bf-4e40-9824-e11837661b57
parent d534dfc4
......@@ -19,7 +19,12 @@ INCLUDEPATH += \
SOURCES += ../ASCSVGWriter.cpp \
../CASCSVGRenderer.cpp \
../CMetafile.cpp \
../CASCImage.cpp
../CASCImage.cpp \
../../DesktopEditor/raster/Metafile/Common.cpp \
../../DesktopEditor/raster/Metafile/MetaFile.cpp \
../../DesktopEditor/raster/Metafile/Emf/EmfObjects.cpp \
../../DesktopEditor/raster/Metafile/Emf/EmfPath.cpp \
../../DesktopEditor/raster/Metafile/Emf/EmfPlayer.cpp
HEADERS += ../ASCSVGWriter.h \
../CASCImage.h \
......@@ -33,22 +38,30 @@ HEADERS += ../ASCSVGWriter.h \
../Writer/SVGWriter.h \
../Writer/VectorGraphicsWriter2.h \
../Writer/VMLWriter.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/RendererOutput.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfCharsets.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfCodePage932.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfCodePage936.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfCodePage949.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfCodePage950.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfCodePage1361.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfColor.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfFile.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfMemory.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfOutputDevice.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfRegion.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfTypes.h \
../../ASCImageStudio3/ASCGraphics/Objects/Image/Wmf/WmfUtils.h
unix {
unix { \
../../DesktopEditor/raster/Metafile/Common.h \
../../DesktopEditor/raster/Metafile/MetaFile.h \
../../DesktopEditor/raster/Metafile/Emf/EmfFile.h \
../../DesktopEditor/raster/Metafile/Emf/EmfObjects.h \
../../DesktopEditor/raster/Metafile/Emf/EmfOutputDevice.h \
../../DesktopEditor/raster/Metafile/Emf/EmfPath.h \
../../DesktopEditor/raster/Metafile/Emf/EmfPlayer.h \
../../DesktopEditor/raster/Metafile/Emf/EmfTypes.h \
../../DesktopEditor/raster/Metafile/Emf/RendererOutput.h \
../../DesktopEditor/raster/Metafile/Wmf/RendererOutput.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfCharsets.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfCodePage932.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfCodePage936.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfCodePage949.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfCodePage950.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfCodePage1361.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfColor.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfFile.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfMemory.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfOutputDevice.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfRegion.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfTypes.h \
../../DesktopEditor/raster/Metafile/Wmf/WmfUtils.h
target.path = /usr/lib
INSTALLS += target
}
......@@ -1180,7 +1180,23 @@ class ShapePropertyReader : public RtfAbstractReader
if( _T("") == m_sPropValue )
return;
CString sValue = m_sPropValue;
int nValue = Strings::ToInteger( sValue );
if( _T("wzName") == m_sPropName )
{
m_oShape.m_sName = sValue;
return;
}
else if( _T("pibName") == m_sPropName )
{
return;
}
else if( _T("wzDescription") == m_sPropName )
{
m_oShape.m_sDescription = sValue;
return;
}
//числовые
int nValue = Strings::ToInteger( sValue );
if( _T("shapeType") == m_sPropName )
m_oShape.m_nShapeType = nValue;
......
......@@ -75,7 +75,10 @@ public:
{
//в проекте используется ungetcб только после getc
//поэтому проблем с выходом в 0 нет
m_nPosAbs--;
if( m_nPosAbs + 1 < m_nSizeAbs )
{
m_nPosAbs--;
}//взять любой txt переименовать в rtf - зацикливание
}
void putString( CStringA sText )
{
......
......@@ -301,7 +301,7 @@ CString RtfShape::RenderToOOX(RenderParameter oRenderParameter)
if( PROP_DEF != m_oPicture->m_nWidthGoal && PROP_DEF != m_oPicture->m_nHeightGoal )
sResult.AppendFormat( _T("<wp:extent cx=\"%d\" cy=\"%d\"/>"), RtfUtility::Twips2Emu( m_oPicture->m_nWidthGoal ), RtfUtility::Twips2Emu( m_oPicture->m_nHeightGoal ) );
int nImageID = poDocument->m_oIdGenerator.Generate_ImagePropId();
sResult.AppendFormat( _T("<wp:docPr id=\"%d\" name=\"\" descr=\"\"/>"), nImageID );
sResult.AppendFormat( _T("<wp:docPr id=\"%d\" name=\"%ls\" descr=\"\"/>"), m_sName.GetBuffer(), nImageID );
int nCropLeft = PROP_DEF;
int nCropTop = PROP_DEF;
......@@ -328,8 +328,8 @@ CString RtfShape::RenderToOOX(RenderParameter oRenderParameter)
sResult.Append( _T("<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"));
sResult.Append( _T("<pic:nvPicPr>") );
sResult.AppendFormat( _T("<pic:cNvPr id=\"%d\" name=\"\" descr=\"\"/>"), nImageID );
if( 0 == m_bLockAnchor )
sResult.AppendFormat( _T("<pic:cNvPr id=\"%d\" name=\"%ls\" descr=\"\"/>"), nImageID, m_sName.GetBuffer() );
if( 0 == m_bLockAnchor )
sResult.Append( _T("<pic:cNvPicPr><a:picLocks noChangeAspect=\"0\" noChangeArrowheads=\"1\"/></pic:cNvPicPr>") );
else
sResult.Append( _T("<pic:cNvPicPr><a:picLocks noChangeAspect=\"1\" noChangeArrowheads=\"1\"/></pic:cNvPicPr>") );
......@@ -565,7 +565,7 @@ CString RtfShape::RenderToOOX(RenderParameter oRenderParameter)
}
}
int nImageID = poDocument->m_oIdGenerator.Generate_ImagePropId();
sResult.AppendFormat( _T("<wp:docPr id=\"%d\" name=\"\" descr=\"\"/>"), nImageID );
sResult.AppendFormat( _T("<wp:docPr id=\"%d\" name=\"%ls\" descr=\"\"/>"), nImageID, m_sName.GetBuffer() );
int nCropLeft = PROP_DEF;
int nCropTop = PROP_DEF;
......@@ -592,7 +592,7 @@ CString RtfShape::RenderToOOX(RenderParameter oRenderParameter)
sResult.Append( _T("<a:graphic><a:graphicData uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"><pic:pic xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\">"));
sResult.Append( _T("<pic:nvPicPr>") );
sResult.AppendFormat( _T("<pic:cNvPr id=\"%d\" name=\"\" descr=\"\"/>"), nImageID );
sResult.AppendFormat( _T("<pic:cNvPr id=\"%d\" name=\"%ls\" descr=\"\"/>"), nImageID, m_sName.GetBuffer() );
if( 0 == m_bLockAnchor )
sResult.Append( _T("<pic:cNvPicPr><a:picLocks noChangeAspect=\"0\" noChangeArrowheads=\"1\"/></pic:cNvPicPr>") );
else
......
......@@ -22,6 +22,9 @@ public:
ShapeType m_eShapeType;
CString m_sName;
CString m_sDescription;
int m_nLeft; //\shpleftN Specifies position of shape from the left of the anchor. The value N is in twips.
int m_nTop; //\shptopN Specifies position of shape from the top of the anchor. The value N is in twips.
int m_nBottom; //\shpbottomN Specifies position of shape from the bottom of the anchor. The value N is in twips.
......
......@@ -92,8 +92,8 @@ namespace MetaFile
oFrame.OpenFile(wsTempFileName);
// TODO: .
::_wunlink(wsTempFileName.c_str());
//::_wunlink(wsTempFileName.c_str());
NSFile::CFileBinary::Remove(wsTempFileName);
return false;
}
else if (BI_BITCOUNT_1 == ushBitCount)
......@@ -493,4 +493,4 @@ namespace MetaFile
else // BitmapInfoHeader
ReadImageInfoHeader(pHeaderBuffer + 4, ulHeaderBufferLen - 4, pImageBuffer, ulImageBufferLen, ppDstBuffer, pulWidth, pulHeight);
}
}
\ No newline at end of file
}
......@@ -17,7 +17,10 @@ namespace MetaFile
CEmfLogBrushEx::~CEmfLogBrushEx()
{
if (BS_DIBPATTERN == BrushStyle && L"" != DibPatternPath)
::_wunlink(DibPatternPath.c_str());
{
// ::_wunlink(DibPatternPath.c_str());
NSFile::CFileBinary::Remove(DibPatternPath);
}
if (DibBuffer)
delete[] DibBuffer;
......@@ -58,4 +61,4 @@ namespace MetaFile
BrushStyle = BS_DIBPATTERN;
DibPatternPath = wsTempFileName;
}
}
\ No newline at end of file
}
......@@ -4,7 +4,7 @@
#include "EmfTypes.h"
#include "../Wmf/WmfUtils.h"
#include "../Wmf/WmfTypes.h"
#include "../../Common/Types.h"
#include "../../common/Types.h"
namespace MetaFile
{
......@@ -125,4 +125,4 @@ namespace MetaFile
};
}
#endif // _EMF_OBJECTS_H
\ No newline at end of file
#endif // _EMF_OBJECTS_H
#ifndef _EMF_TYPES_H
#define _EMF_TYPES_H
#if !defined(_WIN32) && !defined(_WIN64)
//from wingdi.h
#ifndef _MAC
#define ENHMETA_SIGNATURE 0x464D4520
#else
#define ENHMETA_SIGNATURE 0x20454D46
#endif
// Stock object flag used in the object handle index in the enhanced
// metafile records.
// E.g. The object handle index (META_STOCK_OBJECT | BLACK_BRUSH)
// represents the stock object BLACK_BRUSH.
#define ENHMETA_STOCK_OBJECT 0x80000000
// Enhanced metafile record types.
#define EMR_HEADER 1
#define EMR_POLYBEZIER 2
#define EMR_POLYGON 3
#define EMR_POLYLINE 4
#define EMR_POLYBEZIERTO 5
#define EMR_POLYLINETO 6
#define EMR_POLYPOLYLINE 7
#define EMR_POLYPOLYGON 8
#define EMR_SETWINDOWEXTEX 9
#define EMR_SETWINDOWORGEX 10
#define EMR_SETVIEWPORTEXTEX 11
#define EMR_SETVIEWPORTORGEX 12
#define EMR_SETBRUSHORGEX 13
#define EMR_EOF 14
#define EMR_SETPIXELV 15
#define EMR_SETMAPPERFLAGS 16
#define EMR_SETMAPMODE 17
#define EMR_SETBKMODE 18
#define EMR_SETPOLYFILLMODE 19
#define EMR_SETROP2 20
#define EMR_SETSTRETCHBLTMODE 21
#define EMR_SETTEXTALIGN 22
#define EMR_SETCOLORADJUSTMENT 23
#define EMR_SETTEXTCOLOR 24
#define EMR_SETBKCOLOR 25
#define EMR_OFFSETCLIPRGN 26
#define EMR_MOVETOEX 27
#define EMR_SETMETARGN 28
#define EMR_EXCLUDECLIPRECT 29
#define EMR_INTERSECTCLIPRECT 30
#define EMR_SCALEVIEWPORTEXTEX 31
#define EMR_SCALEWINDOWEXTEX 32
#define EMR_SAVEDC 33
#define EMR_RESTOREDC 34
#define EMR_SETWORLDTRANSFORM 35
#define EMR_MODIFYWORLDTRANSFORM 36
#define EMR_SELECTOBJECT 37
#define EMR_CREATEPEN 38
#define EMR_CREATEBRUSHINDIRECT 39
#define EMR_DELETEOBJECT 40
#define EMR_ANGLEARC 41
#define EMR_ELLIPSE 42
#define EMR_RECTANGLE 43
#define EMR_ROUNDRECT 44
#define EMR_ARC 45
#define EMR_CHORD 46
#define EMR_PIE 47
#define EMR_SELECTPALETTE 48
#define EMR_CREATEPALETTE 49
#define EMR_SETPALETTEENTRIES 50
#define EMR_RESIZEPALETTE 51
#define EMR_REALIZEPALETTE 52
#define EMR_EXTFLOODFILL 53
#define EMR_LINETO 54
#define EMR_ARCTO 55
#define EMR_POLYDRAW 56
#define EMR_SETARCDIRECTION 57
#define EMR_SETMITERLIMIT 58
#define EMR_BEGINPATH 59
#define EMR_ENDPATH 60
#define EMR_CLOSEFIGURE 61
#define EMR_FILLPATH 62
#define EMR_STROKEANDFILLPATH 63
#define EMR_STROKEPATH 64
#define EMR_FLATTENPATH 65
#define EMR_WIDENPATH 66
#define EMR_SELECTCLIPPATH 67
#define EMR_ABORTPATH 68
#define EMR_GDICOMMENT 70
#define EMR_FILLRGN 71
#define EMR_FRAMERGN 72
#define EMR_INVERTRGN 73
#define EMR_PAINTRGN 74
#define EMR_EXTSELECTCLIPRGN 75
#define EMR_BITBLT 76
#define EMR_STRETCHBLT 77
#define EMR_MASKBLT 78
#define EMR_PLGBLT 79
#define EMR_SETDIBITSTODEVICE 80
#define EMR_STRETCHDIBITS 81
#define EMR_EXTCREATEFONTINDIRECTW 82
#define EMR_EXTTEXTOUTA 83
#define EMR_EXTTEXTOUTW 84
#define EMR_POLYBEZIER16 85
#define EMR_POLYGON16 86
#define EMR_POLYLINE16 87
#define EMR_POLYBEZIERTO16 88
#define EMR_POLYLINETO16 89
#define EMR_POLYPOLYLINE16 90
#define EMR_POLYPOLYGON16 91
#define EMR_POLYDRAW16 92
#define EMR_CREATEMONOBRUSH 93
#define EMR_CREATEDIBPATTERNBRUSHPT 94
#define EMR_EXTCREATEPEN 95
#define EMR_POLYTEXTOUTA 96
#define EMR_POLYTEXTOUTW 97
#define EMR_SETICMMODE 98
#define EMR_CREATECOLORSPACE 99
#define EMR_SETCOLORSPACE 100
#define EMR_DELETECOLORSPACE 101
#define EMR_GLSRECORD 102
#define EMR_GLSBOUNDEDRECORD 103
#define EMR_PIXELFORMAT 104
#define EMR_RESERVED_105 105
#define EMR_RESERVED_106 106
#define EMR_RESERVED_107 107
#define EMR_RESERVED_108 108
#define EMR_RESERVED_109 109
#define EMR_RESERVED_110 110
#define EMR_COLORCORRECTPALETTE 111
#define EMR_SETICMPROFILEA 112
#define EMR_SETICMPROFILEW 113
#define EMR_ALPHABLEND 114
#define EMR_SETLAYOUT 115
#define EMR_TRANSPARENTBLT 116
#define EMR_RESERVED_117 117
#define EMR_GRADIENTFILL 118
#define EMR_RESERVED_119 119
#define EMR_RESERVED_120 120
#define EMR_COLORMATCHTOTARGETW 121
#define EMR_CREATECOLORSPACEW 122
#define EMR_MIN 1
#define EMR_MAX 122
#endif
namespace MetaFile
{
struct TEmfColor
......@@ -354,4 +504,4 @@ namespace MetaFile
unsigned char Red;
};
};
#endif //_EMF_TYPES_H
\ No newline at end of file
#endif //_EMF_TYPES_H
......@@ -1612,8 +1612,8 @@ private:
CBgraFrame oFrame;
oFrame.OpenFile(wsTempFileName);
// TODO: Как будут файлы сделать чтение.
::_wunlink(wsTempFileName.c_str());
// TODO: Как будут файлы сделать чтение.
NSFile::CFileBinary::Remove(wsTempFileName);
return false;
}
......
......@@ -13,8 +13,7 @@
#include "../../../common/File.h"
#define UTF8_TO_U(val) NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)val, strlen(val))
#define U_TO_UTF8(val) NSFile::CUtf8Converter::GetUtf8StringFromUnicode2(val, wcslen(val))
#define U_TO_UTF8(val) NSFile::CUtf8Converter::GetUtf8StringFromUnicode2(val.c_str(), val.length())
static std::wstring ascii_to_unicode(const char *src)
{
......@@ -165,7 +164,7 @@ static bool WmfOpenTempFile(std::wstring *pwsName, FILE **ppFile, wchar_t *wsMod
char *wsTempDirA;
if ( ( wsTempDirA = getenv( "TEMP" ) ) && ( wsFolder == NULL ) )
{
std::wstring wsTempDir = UTF8_TO_U( wsTempDirA );
std::wstring wsTempDir = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)wsTempDirA, strlen(wsTempDirA));
wsTemp = wsTempDir.c_str();
#endif
wsTemp.append(L"/");
......@@ -185,8 +184,12 @@ static bool WmfOpenTempFile(std::wstring *pwsName, FILE **ppFile, wchar_t *wsMod
{
wsFileName = wsTemp;
wchar_t buffer[24];
_itow(nTime + nIndex,buffer,10);
wsFileName.append(buffer);
#if defined (_WIN32) || defined (_WIN64)
itow(nTime + nIndex,buffer,10);
wsFileName.append(buffer);
#else
wsFileName.append(std::to_wstring(nTime + nIndex));
#endif
if (wsExt)
{
......@@ -200,7 +203,8 @@ static bool WmfOpenTempFile(std::wstring *pwsName, FILE **ppFile, wchar_t *wsMod
std::string sFileName = U_TO_UTF8(wsFileName);
if ( !( pTempFile = fopen( sFileName.c_str(), "r" ) ) )
{
std::string sMode = U_TO_UTF8(wsMode);
std::wstring strMode (wsMode);
std::string sMode = U_TO_UTF8(strMode);
if ( !( pTempFile = fopen( sFileName.c_str(), sMode.c_str() ) ) )
#endif
{
......
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