Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
onlyoffice_core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
onlyoffice_core
Commits
3e44b5d8
Commit
3e44b5d8
authored
Jul 13, 2016
by
alexey.musinov
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' of
https://github.com/ONLYOFFICE/core
into develop
parents
a2016d3f
511a9d02
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
554 additions
and
375 deletions
+554
-375
ASCOfficeDocFile/Common/SPRMCodes.h
ASCOfficeDocFile/Common/SPRMCodes.h
+1
-0
ASCOfficeDocFile/DocDocxConverter/CharacterPropertiesMapping.cpp
...ceDocFile/DocDocxConverter/CharacterPropertiesMapping.cpp
+4
-0
ASCOfficeDocFile/DocDocxConverter/ContentTypes.h
ASCOfficeDocFile/DocDocxConverter/ContentTypes.h
+1
-0
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.cpp
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.cpp
+1
-1
ASCOfficeDocFile/DocDocxConverter/DrawingPrimitives.cpp
ASCOfficeDocFile/DocDocxConverter/DrawingPrimitives.cpp
+25
-4
ASCOfficeDocFile/DocDocxConverter/DrawingPrimitives.h
ASCOfficeDocFile/DocDocxConverter/DrawingPrimitives.h
+24
-15
ASCOfficeDocFile/DocDocxConverter/OfficeDrawing/MetafilePictBlip.h
...DocFile/DocDocxConverter/OfficeDrawing/MetafilePictBlip.h
+6
-0
ASCOfficeDocFile/DocDocxConverter/PictureDescriptor.cpp
ASCOfficeDocFile/DocDocxConverter/PictureDescriptor.cpp
+93
-83
ASCOfficeDocFile/DocDocxConverter/PictureDescriptor.h
ASCOfficeDocFile/DocDocxConverter/PictureDescriptor.h
+1
-0
ASCOfficeDocFile/DocDocxConverter/PropertyExceptions.cpp
ASCOfficeDocFile/DocDocxConverter/PropertyExceptions.cpp
+5
-2
ASCOfficeDocFile/DocDocxConverter/SinglePropertyModifier.cpp
ASCOfficeDocFile/DocDocxConverter/SinglePropertyModifier.cpp
+11
-2
ASCOfficeDocFile/DocDocxConverter/TextboxMapping.cpp
ASCOfficeDocFile/DocDocxConverter/TextboxMapping.cpp
+2
-1
ASCOfficeDocFile/DocDocxConverter/VMLPictureMapping.cpp
ASCOfficeDocFile/DocDocxConverter/VMLPictureMapping.cpp
+112
-72
ASCOfficeDocFile/DocDocxConverter/VMLShapeMapping.cpp
ASCOfficeDocFile/DocDocxConverter/VMLShapeMapping.cpp
+157
-153
ASCOfficeDocFile/DocDocxConverter/VMLShapeMapping.h
ASCOfficeDocFile/DocDocxConverter/VMLShapeMapping.h
+4
-9
ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp
ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp
+1
-0
ASCOfficeDocFile/DocDocxConverter/WordprocessingDocument.cpp
ASCOfficeDocFile/DocDocxConverter/WordprocessingDocument.cpp
+104
-31
ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp
ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp
+1
-1
X2tConverter/build/Qt/X2tConverter.pro
X2tConverter/build/Qt/X2tConverter.pro
+1
-1
No files found.
ASCOfficeDocFile/Common/SPRMCodes.h
View file @
3e44b5d8
...
@@ -98,6 +98,7 @@ namespace DocFileFormat
...
@@ -98,6 +98,7 @@ namespace DocFileFormat
sprmOldCChse
=
73
,
sprmOldCChse
=
73
,
sprmOldCSymbol
=
74
,
sprmOldCSymbol
=
74
,
sprmOldCFOle2
=
75
,
sprmOldCFOle2
=
75
,
sprmCOldHighlight
=
77
,
sprmOldCIstd
=
80
,
sprmOldCIstd
=
80
,
sprmOldCIstdPermute
=
81
,
sprmOldCIstdPermute
=
81
,
sprmOldCDefault
=
82
,
sprmOldCDefault
=
82
,
...
...
ASCOfficeDocFile/DocDocxConverter/CharacterPropertiesMapping.cpp
View file @
3e44b5d8
...
@@ -301,6 +301,10 @@ namespace DocFileFormat
...
@@ -301,6 +301,10 @@ namespace DocFileFormat
colorVal
->
SetValue
(
rgbColor
.
GetString
()
);
colorVal
->
SetValue
(
rgbColor
.
GetString
()
);
}
break
;
}
break
;
case
sprmCOldHighlight
:
{
appendValueElement
(
parent
,
_T
(
"highlight"
),
FormatUtils
::
MapValueToWideString
(
iter
->
Arguments
[
1
],
&
Global
::
ColorIdentifier
[
0
][
0
],
17
,
12
).
c_str
(),
true
);
}
break
;
case
sprmCHighlight
:
case
sprmCHighlight
:
{
{
appendValueElement
(
parent
,
_T
(
"highlight"
),
FormatUtils
::
MapValueToWideString
(
iter
->
Arguments
[
0
],
&
Global
::
ColorIdentifier
[
0
][
0
],
17
,
12
).
c_str
(),
true
);
appendValueElement
(
parent
,
_T
(
"highlight"
),
FormatUtils
::
MapValueToWideString
(
iter
->
Arguments
[
0
],
&
Global
::
ColorIdentifier
[
0
][
0
],
17
,
12
).
c_str
(),
true
);
...
...
ASCOfficeDocFile/DocDocxConverter/ContentTypes.h
View file @
3e44b5d8
...
@@ -70,6 +70,7 @@ namespace OpenXmlContentTypes
...
@@ -70,6 +70,7 @@ namespace OpenXmlContentTypes
static
const
TCHAR
*
Png
=
_T
(
"image/png"
);
static
const
TCHAR
*
Png
=
_T
(
"image/png"
);
static
const
TCHAR
*
Tiff
=
_T
(
"image/tiff"
);
static
const
TCHAR
*
Tiff
=
_T
(
"image/tiff"
);
static
const
TCHAR
*
Wmf
=
_T
(
"image/x-wmf"
);
static
const
TCHAR
*
Wmf
=
_T
(
"image/x-wmf"
);
static
const
TCHAR
*
Bmp
=
_T
(
"image/bmp"
);
}
}
namespace
WordprocessingMLContentTypes
namespace
WordprocessingMLContentTypes
...
...
ASCOfficeDocFile/DocDocxConverter/DocumentMapping.cpp
View file @
3e44b5d8
...
@@ -268,7 +268,7 @@ namespace DocFileFormat
...
@@ -268,7 +268,7 @@ namespace DocFileFormat
std
::
vector
<
int
>
bookmarks
=
searchBookmarks
(
chpxChars
,
cp
);
std
::
vector
<
int
>
bookmarks
=
searchBookmarks
(
chpxChars
,
cp
);
//if there are bookmarks in this run, split the run into several runs
//if there are bookmarks in this run, split the run into several runs
if
(
bookmarks
.
size
())
if
(
!
bookmarks
.
empty
())
{
{
std
::
list
<
std
::
vector
<
wchar_t
>>*
runs
=
splitCharList
(
chpxChars
,
&
bookmarks
);
std
::
list
<
std
::
vector
<
wchar_t
>>*
runs
=
splitCharList
(
chpxChars
,
&
bookmarks
);
if
(
runs
)
if
(
runs
)
...
...
ASCOfficeDocFile/DocDocxConverter/DrawingPrimitives.cpp
View file @
3e44b5d8
...
@@ -103,8 +103,8 @@ namespace DocFileFormat
...
@@ -103,8 +103,8 @@ namespace DocFileFormat
void
DrawingPrimitive
::
read_fill
(
VirtualStreamReader
*
reader
)
void
DrawingPrimitive
::
read_fill
(
VirtualStreamReader
*
reader
)
{
{
fillFore
=
read_color
(
reader
);
fillBack
=
read_color
(
reader
);
fillBack
=
read_color
(
reader
);
fillFore
=
read_color
(
reader
);
fillPattern
=
reader
->
ReadInt16
();
fillPattern
=
reader
->
ReadInt16
();
}
}
void
DrawingPrimitive
::
read_shadow
(
VirtualStreamReader
*
reader
)
void
DrawingPrimitive
::
read_shadow
(
VirtualStreamReader
*
reader
)
...
@@ -225,13 +225,34 @@ namespace DocFileFormat
...
@@ -225,13 +225,34 @@ namespace DocFileFormat
}
}
DrawingPrimitiveTextBox
::
DrawingPrimitiveTextBox
(
VirtualStreamReader
*
reader
,
int
length
)
:
DrawingPrimitiveRect
(
reader
,
length
)
DrawingPrimitiveTextBox
::
DrawingPrimitiveTextBox
(
VirtualStreamReader
*
reader
,
int
length
)
:
DrawingPrimitiveRect
(
reader
,
length
)
{
{
strVmlType
=
L"v:rect"
;
//strVmlType = L"v:shape";
}
}
DrawingPrimitiveCTextBox
::
DrawingPrimitiveCTextBox
(
VirtualStreamReader
*
reader
,
int
length
)
:
DrawingPrimitive
(
reader
,
length
)
DrawingPrimitiveCTextBox
::
DrawingPrimitiveCTextBox
(
VirtualStreamReader
*
reader
,
int
length
)
:
DrawingPrimitive
(
reader
,
length
)
{
{
strVmlType
=
L"v:shape"
;
strVmlType
=
L"v:rect"
;
txbx
=
NULL
;
polyline
=
NULL
;
unsigned
short
f
=
reader
->
ReadUInt16
();
dzaOffset
=
reader
->
ReadUInt16
();
dzaDescent
=
reader
->
ReadUInt16
();
dzaLength
=
reader
->
ReadUInt16
();
unsigned
short
dpk_txbx
=
reader
->
ReadUInt16
();
unsigned
short
cb_txbx
=
reader
->
ReadUInt16
();
txbx
=
new
DrawingPrimitiveTextBox
(
reader
,
cb_txbx
);
unsigned
short
dpk_polyline
=
reader
->
ReadUInt16
();
unsigned
short
cb_polyline
=
reader
->
ReadUInt16
();
polyline
=
new
DrawingPrimitivePolyline
(
reader
,
cb_polyline
);
}
DrawingPrimitiveCTextBox
::~
DrawingPrimitiveCTextBox
()
{
}
}
DrawingPrimitivePolyline
::
DrawingPrimitivePolyline
(
VirtualStreamReader
*
reader
,
int
length
)
:
DrawingPrimitiveLine
(
reader
,
length
,
false
)
DrawingPrimitivePolyline
::
DrawingPrimitivePolyline
(
VirtualStreamReader
*
reader
,
int
length
)
:
DrawingPrimitiveLine
(
reader
,
length
,
false
)
...
...
ASCOfficeDocFile/DocDocxConverter/DrawingPrimitives.h
View file @
3e44b5d8
...
@@ -121,38 +121,47 @@ namespace DocFileFormat
...
@@ -121,38 +121,47 @@ namespace DocFileFormat
};
};
class
DrawingPrimitive
CTextBox
:
public
DrawingPrimitive
class
DrawingPrimitive
Elipse
:
public
DrawingPrimitive
{
{
public:
public:
DrawingPrimitive
CTextBox
(
VirtualStreamReader
*
reader
,
int
length
);
DrawingPrimitive
Elipse
(
VirtualStreamReader
*
reader
,
int
length
);
};
};
class
DrawingPrimitive
Arc
:
public
DrawingPrimitiv
e
class
DrawingPrimitive
Polyline
:
public
DrawingPrimitiveLin
e
{
{
public:
public:
DrawingPrimitive
Arc
(
VirtualStreamReader
*
reader
,
int
length
);
DrawingPrimitive
Polyline
(
VirtualStreamReader
*
reader
,
int
length
);
bool
fLeft
;
bool
fPolygon
;
bool
fUp
;
short
count
;
std
::
vector
<
std
::
pair
<
short
,
short
>>
arPoints
;
};
};
class
DrawingPrimitiveElipse
:
public
DrawingPrimitive
class
DrawingPrimitiveCTextBox
:
public
DrawingPrimitive
{
{
public:
public:
DrawingPrimitiveElipse
(
VirtualStreamReader
*
reader
,
int
length
);
DrawingPrimitiveCTextBox
(
VirtualStreamReader
*
reader
,
int
length
);
virtual
~
DrawingPrimitiveCTextBox
();
unsigned
short
dzaOffset
;
unsigned
short
dzaDescent
;
unsigned
short
dzaLength
;
DrawingPrimitiveTextBox
*
txbx
;
DrawingPrimitivePolyline
*
polyline
;
};
};
class
DrawingPrimitive
Polyline
:
public
DrawingPrimitiveLin
e
class
DrawingPrimitive
Arc
:
public
DrawingPrimitiv
e
{
{
public:
public:
DrawingPrimitivePolyline
(
VirtualStreamReader
*
reader
,
int
length
);
DrawingPrimitiveArc
(
VirtualStreamReader
*
reader
,
int
length
);
bool
fPolygon
;
short
count
;
std
::
vector
<
std
::
pair
<
short
,
short
>>
arPoints
;
bool
fLeft
;
bool
fUp
;
};
};
//-------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------
class
DrawingPrimitives
:
public
IVisitable
,
public
std
::
vector
<
DrawingPrimitive
*>
class
DrawingPrimitives
:
public
IVisitable
,
public
std
::
vector
<
DrawingPrimitive
*>
{
{
...
...
ASCOfficeDocFile/DocDocxConverter/OfficeDrawing/MetafilePictBlip.h
View file @
3e44b5d8
...
@@ -70,6 +70,12 @@ public:
...
@@ -70,6 +70,12 @@ public:
public:
public:
CMetaHeader
()
CMetaHeader
()
{
{
cbSize
=
cbSave
=
0
;
filter
=
compression
=
0
;
ptSize
.
x
=
ptSize
.
y
=
0
;
rcBounds
.
bottom
=
rcBounds
.
left
=
rcBounds
.
right
=
rcBounds
.
top
=
0
;
}
}
...
...
ASCOfficeDocFile/DocDocxConverter/PictureDescriptor.cpp
View file @
3e44b5d8
...
@@ -48,7 +48,7 @@ namespace DocFileFormat
...
@@ -48,7 +48,7 @@ namespace DocFileFormat
:
:
dxaGoal
(
0
),
dyaGoal
(
0
),
mx
(
0
),
my
(
0
),
Type
(
jpg
),
mfp
(),
dxaCropLeft
(
0
),
dyaCropTop
(
0
),
dxaGoal
(
0
),
dyaGoal
(
0
),
mx
(
0
),
my
(
0
),
Type
(
jpg
),
mfp
(),
dxaCropLeft
(
0
),
dyaCropTop
(
0
),
dxaCropRight
(
0
),
dyaCropBottom
(
0
),
brcTop
(
NULL
),
brcLeft
(
NULL
),
brcBottom
(
NULL
),
brcRight
(
NULL
),
dxaOrigin
(
0
),
dyaOrigin
(
0
),
dxaCropRight
(
0
),
dyaCropBottom
(
0
),
brcTop
(
NULL
),
brcLeft
(
NULL
),
brcBottom
(
NULL
),
brcRight
(
NULL
),
dxaOrigin
(
0
),
dyaOrigin
(
0
),
cProps
(
0
),
shapeContainer
(
NULL
),
blipStoreEntry
(
NULL
),
embeddedData
(
NULL
),
embeddedDataSize
(
0
)
cProps
(
0
),
shapeContainer
(
NULL
),
blipStoreEntry
(
NULL
),
embeddedData
(
NULL
),
embeddedDataSize
(
0
)
,
embeddedDataHeader
(
NULL
)
{
{
//Get start and length of the PICT
//Get start and length of the PICT
int
fc
=
GetFcPic
(
chpx
);
int
fc
=
GetFcPic
(
chpx
);
...
@@ -62,7 +62,7 @@ namespace DocFileFormat
...
@@ -62,7 +62,7 @@ namespace DocFileFormat
:
:
dxaGoal
(
0
),
dyaGoal
(
0
),
mx
(
0
),
my
(
0
),
Type
(
jpg
),
mfp
(),
dxaCropLeft
(
0
),
dyaCropTop
(
0
),
dxaGoal
(
0
),
dyaGoal
(
0
),
mx
(
0
),
my
(
0
),
Type
(
jpg
),
mfp
(),
dxaCropLeft
(
0
),
dyaCropTop
(
0
),
dxaCropRight
(
0
),
dyaCropBottom
(
0
),
brcTop
(
NULL
),
brcLeft
(
NULL
),
brcBottom
(
NULL
),
brcRight
(
NULL
),
dxaOrigin
(
0
),
dyaOrigin
(
0
),
dxaCropRight
(
0
),
dyaCropBottom
(
0
),
brcTop
(
NULL
),
brcLeft
(
NULL
),
brcBottom
(
NULL
),
brcRight
(
NULL
),
dxaOrigin
(
0
),
dyaOrigin
(
0
),
cProps
(
0
),
shapeContainer
(
NULL
),
blipStoreEntry
(
NULL
),
embeddedData
(
NULL
),
embeddedDataSize
(
0
)
cProps
(
0
),
shapeContainer
(
NULL
),
blipStoreEntry
(
NULL
),
embeddedData
(
NULL
),
embeddedDataSize
(
0
)
,
embeddedDataHeader
(
NULL
)
{
{
}
}
PictureDescriptor
::~
PictureDescriptor
()
PictureDescriptor
::~
PictureDescriptor
()
...
@@ -80,6 +80,7 @@ namespace DocFileFormat
...
@@ -80,6 +80,7 @@ namespace DocFileFormat
RELEASEOBJECT
(
blipStoreEntry
);
RELEASEOBJECT
(
blipStoreEntry
);
RELEASEARRAYOBJECTS
(
embeddedData
);
RELEASEARRAYOBJECTS
(
embeddedData
);
RELEASEARRAYOBJECTS
(
embeddedDataHeader
);
}
}
void
PictureDescriptor
::
parse
(
POLE
::
Stream
*
stream
,
int
fc
,
int
sz
,
bool
oldVersion
)
void
PictureDescriptor
::
parse
(
POLE
::
Stream
*
stream
,
int
fc
,
int
sz
,
bool
oldVersion
)
{
{
...
@@ -91,6 +92,8 @@ namespace DocFileFormat
...
@@ -91,6 +92,8 @@ namespace DocFileFormat
int
lcb
=
reader
.
ReadInt32
();
int
lcb
=
reader
.
ReadInt32
();
int
pos_start
=
reader
.
GetPosition
();
if
(
lcb
>
10000000
)
if
(
lcb
>
10000000
)
return
;
return
;
...
@@ -104,8 +107,9 @@ namespace DocFileFormat
...
@@ -104,8 +107,9 @@ namespace DocFileFormat
return
;
return
;
}
}
if
(
lcb
>=
10
)
if
(
lcb
<
10
)
{
return
;
int
cbHeader
=
reader
.
ReadUInt16
();
int
cbHeader
=
reader
.
ReadUInt16
();
mfp
.
mm
=
reader
.
ReadInt16
();
mfp
.
mm
=
reader
.
ReadInt16
();
...
@@ -113,25 +117,6 @@ namespace DocFileFormat
...
@@ -113,25 +117,6 @@ namespace DocFileFormat
mfp
.
yExt
=
reader
.
ReadInt16
();
mfp
.
yExt
=
reader
.
ReadInt16
();
mfp
.
hMf
=
reader
.
ReadInt16
();
mfp
.
hMf
=
reader
.
ReadInt16
();
if
(
mfp
.
mm
==
MM_ISOTROPIC
||
mfp
.
mm
==
MM_ANISOTROPIC
)
{
Type
=
wmf
;
mx
=
my
=
200
;
dxaGoal
=
mfp
.
xExt
;
dyaGoal
=
mfp
.
yExt
;
embeddedDataSize
=
lcb
-
20
;
//reader.GetSize() - reader.GetPosition(); //lcb ?
embeddedData
=
reader
.
ReadBytes
(
embeddedDataSize
,
true
);
WmfPlaceableFileHeader
*
header
=
(
WmfPlaceableFileHeader
*
)
embeddedData
;
if
(
header
)
{
}
}
else
if
(
mfp
.
mm
>=
98
)
{
unsigned
char
*
bytes
=
reader
.
ReadBytes
(
14
,
true
);
unsigned
char
*
bytes
=
reader
.
ReadBytes
(
14
,
true
);
rcWinMf
=
std
::
vector
<
unsigned
char
>
(
bytes
,
(
bytes
+
14
));
rcWinMf
=
std
::
vector
<
unsigned
char
>
(
bytes
,
(
bytes
+
14
));
RELEASEARRAYOBJECTS
(
bytes
);
RELEASEARRAYOBJECTS
(
bytes
);
...
@@ -148,29 +133,55 @@ namespace DocFileFormat
...
@@ -148,29 +133,55 @@ namespace DocFileFormat
dxaCropRight
=
reader
.
ReadInt16
();
dxaCropRight
=
reader
.
ReadInt16
();
dyaCropBottom
=
reader
.
ReadInt16
();
dyaCropBottom
=
reader
.
ReadInt16
();
shor
t
brcl
=
reader
.
ReadInt16
();
in
t
brcl
=
reader
.
ReadInt16
();
// borders
// borders
int
bytesCount
=
4
;
int
bytesCount
=
oldVersion
?
2
:
4
;
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
brcTop
=
new
BorderCode
(
bytes
,
bytesCount
);
brcTop
=
new
BorderCode
(
bytes
,
bytesCount
);
RELEASEARRAYOBJECTS
(
bytes
);
RELEASEARRAYOBJECTS
(
bytes
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
brcLeft
=
new
BorderCode
(
bytes
,
4
);
brcLeft
=
new
BorderCode
(
bytes
,
bytesCount
);
RELEASEARRAYOBJECTS
(
bytes
);
RELEASEARRAYOBJECTS
(
bytes
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
brcBottom
=
new
BorderCode
(
bytes
,
4
);
brcBottom
=
new
BorderCode
(
bytes
,
bytesCount
);
RELEASEARRAYOBJECTS
(
bytes
);
RELEASEARRAYOBJECTS
(
bytes
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
bytes
=
reader
.
ReadBytes
(
bytesCount
,
true
);
brcRight
=
new
BorderCode
(
bytes
,
4
);
brcRight
=
new
BorderCode
(
bytes
,
bytesCount
);
RELEASEARRAYOBJECTS
(
bytes
);
RELEASEARRAYOBJECTS
(
bytes
);
dxaOrigin
=
reader
.
ReadInt16
();
dxaOrigin
=
reader
.
ReadInt16
();
dyaOrigin
=
reader
.
ReadInt16
();
dyaOrigin
=
reader
.
ReadInt16
();
int
pos_end
=
reader
.
GetPosition
();
if
(
oldVersion
)
{
int
flag
=
brcl
;
brcl
=
FormatUtils
::
BitmaskToBool
(
flag
,
0x000F
);
//( 0 single 1 thick 2 double 3 shadow )
bool
fFrameEmpty
=
FormatUtils
::
BitmaskToBool
(
flag
,
0x0010
);
// picture consists of a single frame
bool
fBitmap
=
FormatUtils
::
BitmaskToBool
(
flag
,
0x0020
);
// ==1, when picture is just a bitmap
bool
fDrawHatch
=
FormatUtils
::
BitmaskToBool
(
flag
,
0x0040
);
// ==1, when picture is an active OLE object
bool
fError
=
FormatUtils
::
BitmaskToBool
(
flag
,
0x0080
);
// ==1, when picture is just an error message
short
bpp
=
FormatUtils
::
BitmaskToBool
(
flag
,
0x8000
);
// bits per pixel
//(0 unknown 1 monochrome 4 VGA)
int
sz_hdr
=
pos_end
-
pos_start
;
int
header_size
=
114
;
embeddedDataSize
=
lcb
-
sz_hdr
-
header_size
;
embeddedDataHeader
=
reader
.
ReadBytes
(
header_size
,
true
);
embeddedData
=
reader
.
ReadBytes
(
embeddedDataSize
,
true
);
}
else
{
cProps
=
reader
.
ReadInt16
();
cProps
=
reader
.
ReadInt16
();
if
(
mfp
.
mm
==
MM_SHAPEFILE
)
if
(
mfp
.
mm
==
MM_SHAPEFILE
)
...
@@ -205,7 +216,6 @@ namespace DocFileFormat
...
@@ -205,7 +216,6 @@ namespace DocFileFormat
}
}
}
}
}
}
}
/// Returns the fcPic into the "data" stream, where the PIC begins.
/// Returns the fcPic into the "data" stream, where the PIC begins.
/// Returns -1 if the CHPX has no fcPic.
/// Returns -1 if the CHPX has no fcPic.
...
...
ASCOfficeDocFile/DocDocxConverter/PictureDescriptor.h
View file @
3e44b5d8
...
@@ -129,6 +129,7 @@ namespace DocFileFormat
...
@@ -129,6 +129,7 @@ namespace DocFileFormat
ShapeContainer
*
shapeContainer
;
ShapeContainer
*
shapeContainer
;
BlipStoreEntry
*
blipStoreEntry
;
BlipStoreEntry
*
blipStoreEntry
;
unsigned
char
*
embeddedDataHeader
;
unsigned
char
*
embeddedData
;
unsigned
char
*
embeddedData
;
int
embeddedDataSize
;
int
embeddedDataSize
;
};
};
...
...
ASCOfficeDocFile/DocDocxConverter/PropertyExceptions.cpp
View file @
3e44b5d8
...
@@ -71,6 +71,11 @@ namespace DocFileFormat
...
@@ -71,6 +71,11 @@ namespace DocFileFormat
unsigned
short
code
=
oldVersion
?
FormatUtils
::
BytesToUChar
(
bytes
,
sprmStart
,
size
)
:
unsigned
short
code
=
oldVersion
?
FormatUtils
::
BytesToUChar
(
bytes
,
sprmStart
,
size
)
:
FormatUtils
::
BytesToUInt16
(
bytes
,
sprmStart
,
size
)
;
FormatUtils
::
BytesToUInt16
(
bytes
,
sprmStart
,
size
)
;
if
(
oldVersion
&&
code
==
0
)
{
sprmStart
++
;
continue
;
}
OperationCode
opCode
=
(
OperationCode
)
code
;
OperationCode
opCode
=
(
OperationCode
)
code
;
short
opSize
=
-
1
;
short
opSize
=
-
1
;
...
@@ -137,7 +142,6 @@ namespace DocFileFormat
...
@@ -137,7 +142,6 @@ namespace DocFileFormat
}
}
}
}
//copy sprm to array
//length is 2byte for the opCode, lenByte for the length, opSize for the length of the operand
//length is 2byte for the opCode, lenByte for the length, opSize for the length of the operand
int
sprmBytesSize
=
opCodeSize
+
lenByte
+
opSize
;
int
sprmBytesSize
=
opCodeSize
+
lenByte
+
opSize
;
unsigned
char
*
sprmBytes
=
NULL
;
unsigned
char
*
sprmBytes
=
NULL
;
...
@@ -148,7 +152,6 @@ namespace DocFileFormat
...
@@ -148,7 +152,6 @@ namespace DocFileFormat
{
{
memcpy
(
sprmBytes
,
(
bytes
+
sprmStart
),
sprmBytesSize
);
memcpy
(
sprmBytes
,
(
bytes
+
sprmStart
),
sprmBytesSize
);
//parse
SinglePropertyModifier
sprm
(
sprmBytes
,
sprmBytesSize
,
oldVersion
);
SinglePropertyModifier
sprm
(
sprmBytes
,
sprmBytesSize
,
oldVersion
);
grpprl
->
push_back
(
sprm
);
grpprl
->
push_back
(
sprm
);
...
...
ASCOfficeDocFile/DocDocxConverter/SinglePropertyModifier.cpp
View file @
3e44b5d8
...
@@ -51,6 +51,13 @@ namespace DocFileFormat
...
@@ -51,6 +51,13 @@ namespace DocFileFormat
opCodeSize
=
1
;
opCodeSize
=
1
;
//first 1 byte are the operation code ...
//first 1 byte are the operation code ...
OpCode
=
(
OperationCode
)
FormatUtils
::
BytesToUChar
(
bytes
,
0
,
size
);
OpCode
=
(
OperationCode
)
FormatUtils
::
BytesToUChar
(
bytes
,
0
,
size
);
if
(
OpCode
==
0
&&
size
==
4
)
{
//так записывается rgb цвет (
OpCode
=
sprmCCv
;
opSize
=
3
;
}
else
opSize
=
GetOldOperandSize
(
(
unsigned
char
)
OpCode
);
opSize
=
GetOldOperandSize
(
(
unsigned
char
)
OpCode
);
}
}
else
else
...
@@ -208,7 +215,9 @@ namespace DocFileFormat
...
@@ -208,7 +215,9 @@ namespace DocFileFormat
}
}
static
const
unsigned
char
OldOperandSizeTable
[]
=
static
const
unsigned
char
OldOperandSizeTable
[]
=
{
{
0
,
0
,
2
,
255
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
255
,
1
,
1
,
255
,
2
,
2
,
2
,
2
,
4
,
2
,
2
,
255
,
1
,
1
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
255
,
2
,
4
,
1
,
2
,
3
,
255
,
1
,
0
,
0
,
0
,
0
,
2
,
255
,
255
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
3
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
255
,
1
,
255
,
255
,
2
,
255
,
2
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
255
,
2
,
2
,
2
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
255
,
0
,
0
,
3
,
3
,
1
,
1
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
0
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
2
,
2
,
1
,
1
,
12
,
255
,
2
,
255
,
255
,
4
,
5
,
4
,
2
,
4
,
2
,
2
,
5
,
4
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
// 0,0,2,255,1,1,1,1,1,1,1,1,255,1,1,255,2,2,2,2,4,2,2,255,1,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,2,2,2,1,2,2,2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,255,2,4,1,2,3,255,1,0,0,0,0,2,255,255,0,0,1,1,1,1,1,1,1,1,2,1,3,2,2,1,1,1,1,1,255,1,255,255,2,255,2,2,0,0,0,0,0,0,1,1,1,255,2,2,2,2,0,0,0,0,0,0,1,1,255,0,0,3,3,1,1,2,2,1,1,2,2,1,1,2,2,1,1,1,1,2,2,2,2,1,1,2,2,1,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,1,1,12,255,2,255,255,4,5,4,2,4,2,2,5,4,0,0,0,0,0,0,0,0
0
,
0
,
2
,
255
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
255
,
1
,
1
,
255
,
2
,
2
,
2
,
2
,
4
,
2
,
2
,
255
,
1
,
1
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
2
,
2
,
2
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
255
,
2
,
4
,
1
,
2
,
3
,
255
,
1
,
0
,
2
,
0
,
0
,
2
,
255
,
255
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
2
,
1
,
3
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
255
,
1
,
255
,
255
,
2
,
255
,
2
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
255
,
2
,
2
,
2
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
255
,
0
,
0
,
3
,
3
,
1
,
1
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
1
,
1
,
1
,
2
,
2
,
2
,
2
,
1
,
1
,
2
,
2
,
1
,
0
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
2
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
2
,
2
,
2
,
1
,
1
,
12
,
255
,
2
,
255
,
255
,
4
,
5
,
4
,
2
,
4
,
2
,
2
,
5
,
4
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
};
};
unsigned
char
SinglePropertyModifier
::
GetOldOperandSize
(
unsigned
char
code
)
unsigned
char
SinglePropertyModifier
::
GetOldOperandSize
(
unsigned
char
code
)
...
...
ASCOfficeDocFile/DocDocxConverter/TextboxMapping.cpp
View file @
3e44b5d8
...
@@ -130,7 +130,8 @@ namespace DocFileFormat
...
@@ -130,7 +130,8 @@ namespace DocFileFormat
}
}
else
if
(
m_nTBIndex
+
1
<
m_document
->
TextboxIndividualPlex
->
CharacterPositions
.
size
())
else
if
(
m_nTBIndex
+
1
<
m_document
->
TextboxIndividualPlex
->
CharacterPositions
.
size
())
{
{
cp
=
m_document
->
TextboxIndividualPlex
->
CharacterPositions
[
m_nTBIndex
];
//todooo сделать чище
cp
=
m_document
->
TextboxIndividualPlex
->
CharacterPositions
[
m_nTBIndex
]
+
2
;
cpEnd
=
m_document
->
TextboxIndividualPlex
->
CharacterPositions
[
m_nTBIndex
+
1
];
cpEnd
=
m_document
->
TextboxIndividualPlex
->
CharacterPositions
[
m_nTBIndex
+
1
];
}
}
}
}
...
...
ASCOfficeDocFile/DocDocxConverter/VMLPictureMapping.cpp
View file @
3e44b5d8
...
@@ -34,10 +34,13 @@
...
@@ -34,10 +34,13 @@
#include "OfficeDrawing/GeometryBooleanProperties.h"
#include "OfficeDrawing/GeometryBooleanProperties.h"
#include "OfficeDrawing/GeometryTextBooleanProperties.h"
#include "OfficeDrawing/GeometryTextBooleanProperties.h"
#include "OfficeDrawing/MetafilePictBlip.h"
#include "../../DesktopEditor/common/String.h"
#include "../../DesktopEditor/common/String.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Document.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Document.h"
#include "../../Common/DocxFormat/Source/DocxFormat/Document.h"
#include "../../DesktopEditor/common/File.h"
#include "../../DesktopEditor/raster/BgraFrame.h"
typedef
struct
typedef
struct
{
{
...
@@ -64,6 +67,73 @@ typedef struct
...
@@ -64,6 +67,73 @@ typedef struct
namespace
DocFileFormat
namespace
DocFileFormat
{
{
struct
__BITMAPINFOHEADER
{
DWORD
biSize
;
LONG
biWidth
;
LONG
biHeight
;
WORD
biPlanes
;
WORD
biBitCount
;
DWORD
biCompression
;
DWORD
biSizeImage
;
LONG
biXPelsPerMeter
;
LONG
biYPelsPerMeter
;
DWORD
biClrUsed
;
DWORD
biClrImportant
;
};
struct
__BITMAPCOREHEADER
{
DWORD
bcSize
;
/* used to get to color table */
WORD
bcWidth
;
WORD
bcHeight
;
WORD
bcPlanes
;
WORD
bcBitCount
;
};
Global
::
BlipType
GetFormatPict
(
unsigned
char
*
data
,
int
size
)
{
Global
::
BlipType
btWin32
=
Global
::
msoblipDIB
;
int
offset
=
0
,
biSizeImage
=
0
;
__BITMAPINFOHEADER
*
header
=
(
__BITMAPINFOHEADER
*
)
data
;
if
(
!
header
)
return
btWin32
;
if
(
header
->
biWidth
>
100000
||
header
->
biHeight
>
100000
||
header
->
biSize
!=
40
)
{
__BITMAPCOREHEADER
*
header_core
=
(
__BITMAPCOREHEADER
*
)
data
;
if
(
header_core
->
bcSize
!=
12
)
{
btWin32
=
Global
::
msoblipWMF
;
}
else
{
offset
=
12
;
//sizeof(BITMAPCOREHEADER)
int
stride
=
(
size
-
offset
)
/
header_core
->
bcHeight
;
biSizeImage
=
size
-
offset
;
if
(
stride
>=
header_core
->
bcWidth
&&
header_core
->
bcBitCount
>=
24
)
{
btWin32
=
Global
::
msoblipPNG
;
}
}
}
else
{
offset
=
40
;
//sizeof(BITMAPINFOHEADER)
int
sz_bitmap
=
header
->
biHeight
*
header
->
biWidth
*
header
->
biBitCount
/
8
;
int
stride
=
(
size
-
offset
)
/
header
->
biHeight
;
if
(
stride
>=
header
->
biWidth
&&
header
->
biBitCount
>=
24
)
{
btWin32
=
Global
::
msoblipPNG
;
}
}
return
btWin32
;
}
bool
ParseEmbeddedEquation
(
const
std
::
string
&
xmlString
,
std
::
wstring
&
newXmlString
)
bool
ParseEmbeddedEquation
(
const
std
::
string
&
xmlString
,
std
::
wstring
&
newXmlString
)
{
{
newXmlString
.
clear
();
newXmlString
.
clear
();
...
@@ -307,7 +377,6 @@ namespace DocFileFormat
...
@@ -307,7 +377,6 @@ namespace DocFileFormat
return
m_ShapeId
;
return
m_ShapeId
;
}
}
/// Writes a border element
void
VMLPictureMapping
::
writePictureBorder
(
const
std
::
wstring
&
name
,
const
BorderCode
*
brc
)
void
VMLPictureMapping
::
writePictureBorder
(
const
std
::
wstring
&
name
,
const
BorderCode
*
brc
)
{
{
if
(
!
brc
||
name
.
empty
())
return
;
if
(
!
brc
||
name
.
empty
())
return
;
...
@@ -318,8 +387,6 @@ namespace DocFileFormat
...
@@ -318,8 +387,6 @@ namespace DocFileFormat
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
true
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
true
);
}
}
/// Copies the picture from the binary stream to the zip archive
/// and creates the relationships for the image.
bool
VMLPictureMapping
::
CopyPicture
(
PictureDescriptor
*
pict
)
bool
VMLPictureMapping
::
CopyPicture
(
PictureDescriptor
*
pict
)
{
{
if
(
!
pict
)
return
false
;
if
(
!
pict
)
return
false
;
...
@@ -329,47 +396,36 @@ namespace DocFileFormat
...
@@ -329,47 +396,36 @@ namespace DocFileFormat
if
(
pict
->
embeddedData
&&
pict
->
embeddedDataSize
>
0
)
if
(
pict
->
embeddedData
&&
pict
->
embeddedDataSize
>
0
)
{
{
ENHMETAHEADER3
oHeader
;
Global
::
BlipType
btWin32
=
GetFormatPict
(
pict
->
embeddedData
,
pict
->
embeddedDataSize
);
int
w
=
0
,
h
=
0
;
oHeader
.
iType
=
0x00000001
;
oHeader
.
nSize
=
sizeof
(
oHeader
);
oHeader
.
rclBounds
.
left
=
0
;
if
(
btWin32
==
Global
::
msoblipWMF
)
oHeader
.
rclBounds
.
top
=
0
;
{
oHeader
.
rclBounds
.
right
=
w
;
CMetaHeader
oMetaHeader
;
oHeader
.
rclBounds
.
bottom
=
h
;
oHeader
.
rclFrame
.
left
=
0
;
oHeader
.
rclFrame
.
top
=
0
;
oHeader
.
rclFrame
.
right
=
w
;
oHeader
.
rclFrame
.
bottom
=
h
;
oHeader
.
dSignature
=
0x464D4520
;
oMetaHeader
.
rcBounds
.
right
=
pict
->
mfp
.
xExt
;
oHeader
.
nVersion
=
0x00010000
;
oMetaHeader
.
rcBounds
.
bottom
=
pict
->
mfp
.
yExt
;
oHeader
.
nBytes
=
pict
->
embeddedDataSize
-
176
;
oHeader
.
nRecords
=
1
;
WmfPlaceableFileHeader
oWmfHeader
=
{}
;
oHeader
.
nHandles
=
0
;
oMetaHeader
.
ToWMFHeader
(
&
oWmfHeader
)
;
oHeader
.
sReserved
=
0
;
int
lLenHeader
=
114
+
22
;
oHeader
.
nDescription
=
0
;
unsigned
char
*
newData
=
new
unsigned
char
[
pict
->
embeddedDataSize
+
lLenHeader
];
oHeader
.
offDescription
=
0
;
oHeader
.
nPalEntries
=
0
;
memcpy
(
newData
,
(
unsigned
char
*
)(
&
oWmfHeader
),
22
);
memcpy
(
newData
+
22
,
pict
->
embeddedDataHeader
,
114
);
oHeader
.
szlDevice
.
cx
=
200
;
memcpy
(
newData
+
lLenHeader
,
pict
->
embeddedData
,
pict
->
embeddedDataSize
);
oHeader
.
szlDevice
.
cy
=
200
;
oHeader
.
szlMillimeters
.
cx
=
100
;
pict
->
embeddedDataSize
+=
lLenHeader
;
oHeader
.
szlMillimeters
.
cy
=
100
;
delete
[]
pict
->
embeddedData
;
pict
->
embeddedData
=
newData
;
memcpy
(
pict
->
embeddedData
,
&
oHeader
,
sizeof
(
oHeader
));
}
m_ctx
->
_docx
->
ImagesList
.
push_back
(
ImageFileStructure
(
GetTargetExt
(
Global
::
msoblipDIB
),
std
::
vector
<
unsigned
char
>
(
pict
->
embeddedData
,
(
pict
->
embeddedData
+
pict
->
embeddedDataSize
)),
Global
::
msoblipDIB
));
m_ctx
->
_docx
->
ImagesList
.
push_back
(
ImageFileStructure
(
GetTargetExt
(
Global
::
msoblipWMF
),
std
::
vector
<
unsigned
char
>
(
pict
->
embeddedData
,
pict
->
embeddedData
+
pict
->
embeddedDataSize
)));
m_nImageId
=
m_ctx
->
_docx
->
RegisterImage
(
m_caller
,
btWin32
);
m_nImageId
=
m_ctx
->
_docx
->
RegisterImage
(
m_caller
,
Global
::
msoblipWMF
);
result
=
true
;
result
=
true
;
}
}
else
if
((
oBlipEntry
!=
NULL
)
&&
(
oBlipEntry
->
Blip
!=
NULL
))
else
if
((
oBlipEntry
!=
NULL
)
&&
(
oBlipEntry
->
Blip
!=
NULL
))
...
@@ -379,7 +435,6 @@ namespace DocFileFormat
...
@@ -379,7 +435,6 @@ namespace DocFileFormat
case
Global
:
:
msoblipEMF
:
case
Global
:
:
msoblipEMF
:
case
Global
:
:
msoblipWMF
:
case
Global
:
:
msoblipWMF
:
{
{
//it's a meta image
MetafilePictBlip
*
metaBlip
=
static_cast
<
MetafilePictBlip
*>
(
oBlipEntry
->
Blip
);
MetafilePictBlip
*
metaBlip
=
static_cast
<
MetafilePictBlip
*>
(
oBlipEntry
->
Blip
);
if
(
metaBlip
)
if
(
metaBlip
)
{
//decompress inside MetafilePictBlip
{
//decompress inside MetafilePictBlip
...
@@ -405,18 +460,15 @@ namespace DocFileFormat
...
@@ -405,18 +460,15 @@ namespace DocFileFormat
m_ctx
->
_docx
->
ImagesList
.
push_back
(
ImageFileStructure
(
GetTargetExt
(
oBlipEntry
->
btWin32
),
m_ctx
->
_docx
->
ImagesList
.
push_back
(
ImageFileStructure
(
GetTargetExt
(
oBlipEntry
->
btWin32
),
std
::
vector
<
unsigned
char
>
(
bitBlip
->
m_pvBits
,
(
bitBlip
->
m_pvBits
+
bitBlip
->
pvBitsSize
)),
oBlipEntry
->
btWin32
));
std
::
vector
<
unsigned
char
>
(
bitBlip
->
m_pvBits
,
(
bitBlip
->
m_pvBits
+
bitBlip
->
pvBitsSize
)),
oBlipEntry
->
btWin32
));
}
}
}
}
break
;
break
;
default:
default:
{
{
return
false
;
return
false
;
}
}
break
;
break
;
}
}
m_nImageId
=
m_ctx
->
_docx
->
RegisterImage
(
m_caller
,
oBlipEntry
->
btWin32
);
m_nImageId
=
m_ctx
->
_docx
->
RegisterImage
(
m_caller
,
oBlipEntry
->
btWin32
);
result
=
true
;
result
=
true
;
}
}
...
@@ -430,28 +482,16 @@ namespace DocFileFormat
...
@@ -430,28 +482,16 @@ namespace DocFileFormat
{
{
switch
(
nType
)
switch
(
nType
)
{
{
//case Global::msoblipDIB:
case
Global
:
:
msoblipDIB
:
// return std::wstring( _T( ".bmp" ) );
return
std
::
wstring
(
_T
(
".bmp"
));
//case msoblipBMP:
// return wstring( _T( ".bmp" ) );
case
Global
:
:
msoblipEMF
:
case
Global
:
:
msoblipEMF
:
return
std
::
wstring
(
_T
(
".emf"
));
return
std
::
wstring
(
_T
(
".emf"
));
//case msoblipGIF:
// return wstring( _T( ".gif" ) );
//case msoblipICON:
// return wstring( _T( ".ico" ) );
case
Global
:
:
msoblipJPEG
:
case
Global
:
:
msoblipJPEG
:
case
Global
:
:
msoblipCMYKJPEG
:
case
Global
:
:
msoblipCMYKJPEG
:
return
std
::
wstring
(
_T
(
".jpg"
));
return
std
::
wstring
(
_T
(
".jpg"
));
//case msoblipPCX:
// return wstring( _T( ".pcx" ) );
case
Global
:
:
msoblipPNG
:
case
Global
:
:
msoblipPNG
:
return
std
::
wstring
(
_T
(
".png"
));
return
std
::
wstring
(
_T
(
".png"
));
...
@@ -470,9 +510,6 @@ namespace DocFileFormat
...
@@ -470,9 +510,6 @@ namespace DocFileFormat
{
{
switch
(
nType
)
switch
(
nType
)
{
{
//case msoblipBMP:
// return wstring( _T( "image/bmp" ) );
case
Global
:
:
msoblipEMF
:
case
Global
:
:
msoblipEMF
:
return
std
::
wstring
(
OpenXmlContentTypes
::
Emf
);
return
std
::
wstring
(
OpenXmlContentTypes
::
Emf
);
...
@@ -498,6 +535,9 @@ namespace DocFileFormat
...
@@ -498,6 +535,9 @@ namespace DocFileFormat
case
Global
:
:
msoblipWMF
:
case
Global
:
:
msoblipWMF
:
return
std
::
wstring
(
OpenXmlContentTypes
::
Wmf
);
return
std
::
wstring
(
OpenXmlContentTypes
::
Wmf
);
case
Global
:
:
msoblipDIB
:
return
std
::
wstring
(
OpenXmlContentTypes
::
Bmp
);
default:
default:
return
std
::
wstring
(
OpenXmlContentTypes
::
Png
);
return
std
::
wstring
(
OpenXmlContentTypes
::
Png
);
}
}
...
...
ASCOfficeDocFile/DocDocxConverter/VMLShapeMapping.cpp
View file @
3e44b5d8
...
@@ -95,12 +95,6 @@ namespace DocFileFormat
...
@@ -95,12 +95,6 @@ namespace DocFileFormat
{
{
m_pBlipStore
=
static_cast
<
BlipStoreContainer
*>
(
recBs
);
m_pBlipStore
=
static_cast
<
BlipStoreContainer
*>
(
recBs
);
}
}
m_offset_x
.
push_back
(
0
);
m_offset_y
.
push_back
(
0
);
m_scale_x
.
push_back
(
1
);
m_scale_y
.
push_back
(
1
);
}
}
VMLShapeMapping
::~
VMLShapeMapping
()
VMLShapeMapping
::~
VMLShapeMapping
()
...
@@ -1333,8 +1327,8 @@ namespace DocFileFormat
...
@@ -1333,8 +1327,8 @@ namespace DocFileFormat
{
{
switch
(
_type
)
switch
(
_type
)
{
{
//case msoblipBMP
:
case
Global
:
:
msoblipDIB
:
//
return std::wstring( _T( ".bmp" ) );
return
std
::
wstring
(
_T
(
".bmp"
)
);
case
Global
:
:
msoblipEMF
:
case
Global
:
:
msoblipEMF
:
return
std
::
wstring
(
_T
(
".emf"
)
);
return
std
::
wstring
(
_T
(
".emf"
)
);
...
@@ -2124,6 +2118,63 @@ namespace DocFileFormat
...
@@ -2124,6 +2118,63 @@ namespace DocFileFormat
m_pXmlWriter
->
WriteNodeBegin
(
primitive
->
strVmlType
.
c_str
(),
TRUE
);
m_pXmlWriter
->
WriteNodeBegin
(
primitive
->
strVmlType
.
c_str
(),
TRUE
);
if
(
primitive
->
type
==
0x0007
)
{
DrawingPrimitiveCTextBox
*
callout
=
dynamic_cast
<
DrawingPrimitiveCTextBox
*>
(
primitive
);
if
((
callout
)
&&
(
callout
->
txbx
))
{
//временно обычный текстбокс
callout
->
txbx
->
xa
+=
callout
->
xa
;
callout
->
txbx
->
ya
+=
callout
->
ya
;
WritePrimitiveProps
(
dynamic_cast
<
DrawingPrimitive
*>
(
callout
->
txbx
),
(
index
==
0
?
true
:
false
));
}
//todooo нарисовать кастомный шейп
}
else
WritePrimitiveProps
(
primitive
,
(
index
==
0
?
true
:
false
));
if
(
primitive
->
type
==
0x0000
)
{
index
++
;
while
(
true
)
{
if
(
index
>
primitives
->
size
()
-
1
)
break
;
primitive
=
dynamic_cast
<
DrawingPrimitive
*>
(
primitives
->
at
(
index
));
if
(
primitive
->
type
==
0x0008
)
{
break
;
}
index
=
ApplyPrimitive
(
primitives
,
index
);
}
}
if
(
primitive
->
type
==
0x0002
||
primitive
->
type
==
0x0007
)
{
int
nLTxID
=
currentTextBoxIndex
++
;;
if
(
-
1
!=
nLTxID
)
{
TextboxMapping
textboxMapping
(
m_ctx
,
nLTxID
-
1
,
m_pXmlWriter
,
m_pCaller
);
//textboxMapping.SetInset(ndxTextLeft, ndyTextTop, ndxTextRight, ndyTextBottom);
m_ctx
->
_doc
->
Convert
(
&
textboxMapping
);
}
}
m_pXmlWriter
->
WriteNodeEnd
(
primitive
->
strVmlType
.
c_str
()
);
index
++
;
return
index
;
}
void
VMLShapeMapping
::
WritePrimitiveProps
(
DrawingPrimitive
*
primitive
,
bool
root
)
{
TwipsValue
x
(
primitive
->
xa
);
TwipsValue
x
(
primitive
->
xa
);
TwipsValue
y
(
primitive
->
ya
);
TwipsValue
y
(
primitive
->
ya
);
TwipsValue
w
(
primitive
->
dxa
);
TwipsValue
w
(
primitive
->
dxa
);
...
@@ -2151,16 +2202,7 @@ namespace DocFileFormat
...
@@ -2151,16 +2202,7 @@ namespace DocFileFormat
}
}
else
else
{
{
if
(
index
>
0
)
if
(
root
)
{
strStyle
+=
_T
(
"left:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
xa
)
+
_T
(
";"
);
strStyle
+=
_T
(
"top:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
ya
)
+
_T
(
";"
);
strStyle
+=
_T
(
"width:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
dxa
)
+
_T
(
";"
);
strStyle
+=
_T
(
"height:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
dya
)
+
_T
(
";"
);
}
else
{
{
//strStyle += _T("left:") + FormatUtils::IntToWideString( x.ToPoints()) + _T("pt;");
//strStyle += _T("left:") + FormatUtils::IntToWideString( x.ToPoints()) + _T("pt;");
//strStyle += _T("top:") + FormatUtils::IntToWideString( y.ToPoints()) + _T("pt;");
//strStyle += _T("top:") + FormatUtils::IntToWideString( y.ToPoints()) + _T("pt;");
...
@@ -2187,7 +2229,17 @@ namespace DocFileFormat
...
@@ -2187,7 +2229,17 @@ namespace DocFileFormat
m_pXmlWriter
->
WriteAttribute
(
_T
(
"coordsize"
),
strSize
.
c_str
());
m_pXmlWriter
->
WriteAttribute
(
_T
(
"coordsize"
),
strSize
.
c_str
());
//m_pXmlWriter->WriteAttribute( _T("coordorigin"), strOrigin.c_str());
//m_pXmlWriter->WriteAttribute( _T("coordorigin"), strOrigin.c_str());
}
}
else
{
strStyle
+=
_T
(
"left:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
xa
)
+
_T
(
";"
);
strStyle
+=
_T
(
"top:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
ya
)
+
_T
(
";"
);
strStyle
+=
_T
(
"width:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
dxa
)
+
_T
(
";"
);
strStyle
+=
_T
(
"height:"
)
+
FormatUtils
::
IntToWideString
(
primitive
->
dya
)
+
_T
(
";"
);
}
}
}
if
(
primitive
->
fillPattern
==
0
)
m_pXmlWriter
->
WriteAttribute
(
_T
(
"filled"
),
_T
(
"f"
));
if
(
primitive
->
type
>
1
)
if
(
primitive
->
type
>
1
)
{
{
m_pXmlWriter
->
WriteAttribute
(
_T
(
"fillColor"
),
FormatUtils
::
IntToFormattedWideString
(
primitive
->
fillFore
,
L"#%06x"
).
c_str
());
m_pXmlWriter
->
WriteAttribute
(
_T
(
"fillColor"
),
FormatUtils
::
IntToFormattedWideString
(
primitive
->
fillFore
,
L"#%06x"
).
c_str
());
...
@@ -2203,14 +2255,11 @@ namespace DocFileFormat
...
@@ -2203,14 +2255,11 @@ namespace DocFileFormat
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
TRUE
,
FALSE
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
TRUE
,
FALSE
);
if
(
primitive
->
type
>
1
)
if
(
primitive
->
type
>
1
&&
primitive
->
fillPattern
>
1
)
{
{
m_pXmlWriter
->
WriteNodeBegin
(
_T
(
"v:fill"
),
TRUE
);
m_pXmlWriter
->
WriteNodeBegin
(
_T
(
"v:fill"
),
TRUE
);
m_pXmlWriter
->
WriteAttribute
(
_T
(
"color2"
),
FormatUtils
::
IntToFormattedWideString
(
primitive
->
fillBack
,
L"#%06x"
).
c_str
());
m_pXmlWriter
->
WriteAttribute
(
_T
(
"color2"
),
FormatUtils
::
IntToFormattedWideString
(
primitive
->
fillBack
,
L"#%06x"
).
c_str
());
if
(
primitive
->
fillPattern
>
0
)
{
m_pXmlWriter
->
WriteAttribute
(
_T
(
"type"
),
_T
(
"pattern"
));
m_pXmlWriter
->
WriteAttribute
(
_T
(
"type"
),
_T
(
"pattern"
));
}
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
TRUE
,
FALSE
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
TRUE
,
FALSE
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
"v:fill"
)
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
"v:fill"
)
);
}
}
...
@@ -2223,51 +2272,6 @@ namespace DocFileFormat
...
@@ -2223,51 +2272,6 @@ namespace DocFileFormat
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
TRUE
,
FALSE
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
""
),
TRUE
,
FALSE
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
"v:stroke"
)
);
m_pXmlWriter
->
WriteNodeEnd
(
_T
(
"v:stroke"
)
);
}
}
if
(
primitive
->
type
==
0x0000
)
{
m_offset_x
.
push_back
(
20000.
/
primitive
->
xa
);
m_offset_y
.
push_back
(
20000.
/
primitive
->
ya
);
m_scale_x
.
push_back
(
20000.
/
primitive
->
dxa
);
m_scale_y
.
push_back
(
20000.
/
primitive
->
dya
);
index
++
;
while
(
true
)
{
if
(
index
>
primitives
->
size
()
-
1
)
break
;
primitive
=
dynamic_cast
<
DrawingPrimitive
*>
(
primitives
->
at
(
index
));
if
(
primitive
->
type
==
0x0008
)
{
m_offset_x
.
pop_back
();
m_offset_y
.
pop_back
();
m_scale_x
.
pop_back
();
m_scale_y
.
pop_back
();
break
;
}
index
=
ApplyPrimitive
(
primitives
,
index
);
}
}
if
(
primitive
->
type
==
0x0002
||
primitive
->
type
==
0x0007
)
{
int
nLTxID
=
currentTextBoxIndex
++
;;
if
(
-
1
!=
nLTxID
)
{
TextboxMapping
textboxMapping
(
m_ctx
,
nLTxID
-
1
,
m_pXmlWriter
,
m_pCaller
);
//textboxMapping.SetInset(ndxTextLeft, ndyTextTop, ndxTextRight, ndyTextBottom);
m_ctx
->
_doc
->
Convert
(
&
textboxMapping
);
}
}
}
m_pXmlWriter
->
WriteNodeEnd
(
primitive
->
strVmlType
.
c_str
()
);
index
++
;
return
index
;
}
}
}
ASCOfficeDocFile/DocDocxConverter/VMLShapeMapping.h
View file @
3e44b5d8
...
@@ -65,9 +65,11 @@ namespace DocFileFormat
...
@@ -65,9 +65,11 @@ namespace DocFileFormat
private:
private:
void
ApplyPrimitives
(
DrawingPrimitives
*
primitives
);
void
ApplyPrimitives
(
DrawingPrimitives
*
primitives
);
int
ApplyPrimitive
(
DrawingPrimitives
*
primitives
,
int
index
);
int
ApplyPrimitive
(
DrawingPrimitives
*
primitives
,
int
index
);
void
WritePrimitiveProps
(
DrawingPrimitive
*
primitive
,
bool
root
);
// Converts a group of shapes
// Converts a group of shapes
void
WriteGroup
(
const
GroupContainer
*
pContainer
);
void
WriteGroup
(
const
GroupContainer
*
pContainer
);
// Converts a single shape
// Converts a single shape
...
@@ -135,12 +137,5 @@ namespace DocFileFormat
...
@@ -135,12 +137,5 @@ namespace DocFileFormat
XMLTools
::
XMLElement
<
wchar_t
>
m_imagedata
;
XMLTools
::
XMLElement
<
wchar_t
>
m_imagedata
;
XMLTools
::
XMLElement
<
wchar_t
>
m_3dstyle
;
XMLTools
::
XMLElement
<
wchar_t
>
m_3dstyle
;
XMLTools
::
XMLElement
<
wchar_t
>
m_textpath
;
XMLTools
::
XMLElement
<
wchar_t
>
m_textpath
;
//----------------------------------------------------------------
std
::
vector
<
double
>
m_offset_x
;
std
::
vector
<
double
>
m_offset_y
;
std
::
vector
<
double
>
m_scale_x
;
std
::
vector
<
double
>
m_scale_y
;
};
};
}
}
ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp
View file @
3e44b5d8
...
@@ -49,6 +49,7 @@ namespace DocFileFormat
...
@@ -49,6 +49,7 @@ namespace DocFileFormat
EndnoteReferenceCharactersPlex
(
NULL
),
FieldsPlex
(
NULL
),
FootnoteDocumentFieldsPlex
(
NULL
),
EndnoteReferenceCharactersPlex
(
NULL
),
FieldsPlex
(
NULL
),
FootnoteDocumentFieldsPlex
(
NULL
),
EndnoteDocumentFieldsPlex
(
NULL
),
HeadersAndFootersDocumentFieldsPlex
(
NULL
),
HeaderStoriesPlex
(
NULL
),
EndnoteDocumentFieldsPlex
(
NULL
),
HeadersAndFootersDocumentFieldsPlex
(
NULL
),
HeaderStoriesPlex
(
NULL
),
AnnotationsReferencePlex
(
NULL
),
IndividualCommentsPlex
(
NULL
),
TextboxBreakPlex
(
NULL
),
TextboxBreakPlexHeader
(
NULL
),
AnnotationsReferencePlex
(
NULL
),
IndividualCommentsPlex
(
NULL
),
TextboxBreakPlex
(
NULL
),
TextboxBreakPlexHeader
(
NULL
),
TextboxIndividualPlex
(
NULL
),
OfficeDrawingPlex
(
NULL
),
OfficeDrawingPlexHeader
(
NULL
),
SectionPlex
(
NULL
),
BookmarkStartPlex
(
NULL
),
BookmarkEndPlex
(
NULL
),
OfficeDrawingPlex
(
NULL
),
OfficeDrawingPlexHeader
(
NULL
),
SectionPlex
(
NULL
),
BookmarkStartPlex
(
NULL
),
BookmarkEndPlex
(
NULL
),
AutoTextPlex
(
NULL
),
AllPapxFkps
(
NULL
),
AllChpxFkps
(
NULL
),
AllPapx
(
NULL
),
AllPapxVector
(
NULL
),
AllSepx
(
NULL
),
Styles
(
NULL
),
listTable
(
NULL
),
AutoTextPlex
(
NULL
),
AllPapxFkps
(
NULL
),
AllChpxFkps
(
NULL
),
AllPapx
(
NULL
),
AllPapxVector
(
NULL
),
AllSepx
(
NULL
),
Styles
(
NULL
),
listTable
(
NULL
),
AnnotationOwners
(
NULL
),
DocProperties
(
NULL
),
listFormatOverrideTable
(
NULL
),
headerAndFooterTable
(
NULL
),
encryptionHeader
(
NULL
)
AnnotationOwners
(
NULL
),
DocProperties
(
NULL
),
listFormatOverrideTable
(
NULL
),
headerAndFooterTable
(
NULL
),
encryptionHeader
(
NULL
)
...
...
ASCOfficeDocFile/DocDocxConverter/WordprocessingDocument.cpp
View file @
3e44b5d8
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
namespace
ImageHelper
namespace
ImageHelper
{
{
typedef
struct
___tag
BITMAPINFOHEADER
struct
__
BITMAPINFOHEADER
{
{
DWORD
biSize
;
DWORD
biSize
;
LONG
biWidth
;
LONG
biWidth
;
...
@@ -52,44 +52,117 @@ namespace ImageHelper
...
@@ -52,44 +52,117 @@ namespace ImageHelper
LONG
biYPelsPerMeter
;
LONG
biYPelsPerMeter
;
DWORD
biClrUsed
;
DWORD
biClrUsed
;
DWORD
biClrImportant
;
DWORD
biClrImportant
;
}
___BITMAPINFOHEADER
;
};
inline
static
int
CompareStrings
(
const
wchar_t
*
str1
,
const
wchar_t
*
str2
)
struct
__BITMAPCOREHEADER
{
{
CString
cstr1
;
cstr1
=
str1
;
DWORD
bcSize
;
/* used to get to color table */
CString
cstr2
;
cstr2
=
str2
;
WORD
bcWidth
;
WORD
bcHeight
;
WORD
bcPlanes
;
WORD
bcBitCount
;
};
inline
Global
::
_BlipType
SaveImageToFileFromDIB
(
unsigned
char
*
data
,
int
size
,
const
std
::
wstring
&
file_name
)
//without ext
{
Global
::
_BlipType
result
=
Global
::
msoblipERROR
;
CBgraFrame
oFrame
;
int
offset
=
0
,
biSizeImage
=
0
;
if
(
cstr1
==
cstr2
)
__BITMAPINFOHEADER
*
header
=
(
__BITMAPINFOHEADER
*
)
data
;
return
0
;
if
(
!
header
)
return
result
;
return
1
;
result
==
Global
::
msoblipDIB
;
if
(
header
->
biWidth
>
100000
||
header
->
biHeight
>
100000
||
header
->
biSize
!=
40
)
{
__BITMAPCOREHEADER
*
header_core
=
(
__BITMAPCOREHEADER
*
)
data
;
if
(
header_core
->
bcSize
!=
12
)
{
result
=
Global
::
msoblipWMF
;
}
}
inline
bool
SaveImageToFileFromDIB
(
unsigned
char
*
buffer
,
int
size
,
const
std
::
wstring
&
file
)
else
{
{
bool
result
=
false
;
offset
=
12
;
//sizeof(BITMAPCOREHEADER)
const
___BITMAPINFOHEADER
*
info
=
(
___BITMAPINFOHEADER
*
)
buffer
;
oFrame
.
put_Height
(
header_core
->
bcHeight
);
oFrame
.
put_Width
(
header_core
->
bcWidth
);
int
sz_bitmap
=
header_core
->
bcHeight
*
header_core
->
bcWidth
*
header_core
->
bcBitCount
/
8
;
if
(
NULL
!=
info
&&
info
->
biSize
==
40
)
//if (header_core->bcWidth % 2 != 0 && sz_bitmap < size - offset)
// header_core->bcWidth++;
///???? todooo непонятно .. в biff5 нужно флипать картинку, в biff8 не ясно ( -
int
stride
=
-
(
size
-
offset
)
/
header_core
->
bcHeight
;
oFrame
.
put_Stride
(
stride
/*header_core->bcBitCount * header_core->bcWidth /8 */
);
biSizeImage
=
size
-
offset
;
if
(
-
stride
>=
header_core
->
bcWidth
&&
header_core
->
bcBitCount
>=
24
)
{
{
unsigned
char
*
pBgraData
=
buffer
+
sizeof
(
___BITMAPINFOHEADER
);
result
=
Global
::
msoblipPNG
;
}
}
}
else
{
offset
=
40
;
//sizeof(BITMAPINFOHEADER)
int
nWidth
=
info
->
biWidth
;
oFrame
.
put_Height
(
header
->
biHeight
)
;
int
nHeight
=
info
->
biHeight
;
oFrame
.
put_Width
(
header
->
biWidth
)
;
CBgraFrame
oFrame
;
int
sz_bitmap
=
header
->
biHeight
*
header
->
biWidth
*
header
->
biBitCount
/
8
;
oFrame
.
put_Data
(
pBgraData
);
oFrame
.
put_Width
(
nWidth
);
oFrame
.
put_Height
(
nHeight
);
int
nStride
=
info
->
biSizeImage
/
nHeight
;
//if (header->biWidth % 2 != 0 && sz_bitmap < size -offset)
oFrame
.
put_Stride
(
-
nStride
)
;
// header->biWidth++
;
result
=
oFrame
.
SaveFile
(
file
,
4
)
;
int
stride
=
-
(
size
-
offset
)
/
header
->
biHeight
;
oFrame
.
put_Data
(
NULL
);
if
(
-
stride
>=
header
->
biWidth
&&
header
->
biBitCount
>=
24
)
{
result
=
Global
::
msoblipPNG
;
}
oFrame
.
put_Stride
(
stride
/*header->biBitCount * header->biWidth /8*/
);
biSizeImage
=
header
->
biSizeImage
>
0
?
header
->
biSizeImage
:
(
size
-
offset
);
}
//------------------------------------------------------------------------------------------
if
(
result
==
Global
::
msoblipPNG
)
{
oFrame
.
put_Data
((
unsigned
char
*
)
data
+
offset
);
if
(
!
oFrame
.
SaveFile
(
file_name
+
_T
(
".png"
),
4
/*CXIMAGE_FORMAT_PNG*/
))
result
=
Global
::
msoblipERROR
;
oFrame
.
put_Data
(
NULL
);
}
else
if
(
result
==
Global
::
msoblipWMF
)
{
NSFile
::
CFileBinary
file
;
if
(
file
.
CreateFileW
(
file_name
+
_T
(
".wmf"
)))
{
file
.
WriteFile
((
BYTE
*
)
data
,
size
);
file
.
CloseFile
();
}
}
}
else
if
(
biSizeImage
>
0
)
{
NSFile
::
CFileBinary
file
;
if
(
file
.
CreateFileW
(
file_name
+
_T
(
".bmp"
)))
{
WORD
vtType
=
0x4D42
;
file
.
WriteFile
((
BYTE
*
)
&
vtType
,
2
);
DWORD
dwLen
=
biSizeImage
;
file
.
WriteFile
((
BYTE
*
)
&
dwLen
,
4
);
DWORD
dwRes
=
0
;
file
.
WriteFile
((
BYTE
*
)
&
dwRes
,
4
);
DWORD
dwOffset
=
2
;
file
.
WriteFile
((
BYTE
*
)
&
dwOffset
,
4
);
file
.
WriteFile
((
BYTE
*
)
data
,
size
);
file
.
CloseFile
();
}
}
return
result
;
return
result
;
}
}
}
}
...
@@ -147,8 +220,8 @@ namespace DocFileFormat
...
@@ -147,8 +220,8 @@ namespace DocFileFormat
if
(
Global
::
msoblipDIB
==
iter
->
blipType
)
if
(
Global
::
msoblipDIB
==
iter
->
blipType
)
{
//user_manual_v52.doc
{
//user_manual_v52.doc
std
::
wstring
file_name
=
string2std_string
(
pathMedia
.
GetPath
())
+
FILE_SEPARATOR_STR
+
_T
(
"image"
)
+
FormatUtils
::
IntToWideString
(
i
++
)
+
iter
->
ext
;
std
::
wstring
file_name
=
string2std_string
(
pathMedia
.
GetPath
())
+
FILE_SEPARATOR_STR
+
_T
(
"image"
)
+
FormatUtils
::
IntToWideString
(
i
++
);
ImageHelper
::
SaveImageToFileFromDIB
(
bytes
,
iter
->
data
.
size
(),
file_name
);
iter
->
blipType
=
ImageHelper
::
SaveImageToFileFromDIB
(
bytes
,
iter
->
data
.
size
(),
file_name
);
}
}
else
else
{
{
...
...
ASCOfficeXlsFile2/source/XlsXlsxConverter/XlsConverter.cpp
View file @
3e44b5d8
X2tConverter/build/Qt/X2tConverter.pro
View file @
3e44b5d8
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
QT
-=
core
QT
-=
core
QT
-=
gui
QT
-=
gui
VERSION
=
2.0
.
2.3
78
VERSION
=
2.0
.
2.3
80
DEFINES
+=
INTVER
=
$$
VERSION
DEFINES
+=
INTVER
=
$$
VERSION
mac
{
mac
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment