Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
04950bf3
Kaydet (Commit)
04950bf3
authored
Nis 08, 2012
tarafından
Fridrich Štrba
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Allow conversion of embedded images to another binary image format
üst
00e60cf7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
10 deletions
+50
-10
OdtGenerator.cxx
writerperfect/source/filter/OdtGenerator.cxx
+48
-10
OdtGenerator.hxx
writerperfect/source/filter/OdtGenerator.hxx
+2
-0
No files found.
writerperfect/source/filter/OdtGenerator.cxx
Dosyayı görüntüle @
04950bf3
...
@@ -118,6 +118,7 @@ public:
...
@@ -118,6 +118,7 @@ public:
void
_closeListLevel
();
void
_closeListLevel
();
OdfEmbeddedObject
_findEmbeddedObjectHandler
(
const
WPXString
&
mimeType
);
OdfEmbeddedObject
_findEmbeddedObjectHandler
(
const
WPXString
&
mimeType
);
OdfEmbeddedImage
_findEmbeddedImageHandler
(
const
WPXString
&
mimeType
);
OdfDocumentHandler
*
mpHandler
;
OdfDocumentHandler
*
mpHandler
;
bool
mbUsed
;
// whether or not it has been before (you can only use me once!)
bool
mbUsed
;
// whether or not it has been before (you can only use me once!)
...
@@ -148,6 +149,7 @@ public:
...
@@ -148,6 +149,7 @@ public:
// embedded object handlers
// embedded object handlers
std
::
map
<
WPXString
,
OdfEmbeddedObject
,
ltstr
>
mObjectHandlers
;
std
::
map
<
WPXString
,
OdfEmbeddedObject
,
ltstr
>
mObjectHandlers
;
std
::
map
<
WPXString
,
OdfEmbeddedImage
,
ltstr
>
mImageHandlers
;
// metadata
// metadata
std
::
vector
<
DocumentElement
*>
mMetaData
;
std
::
vector
<
DocumentElement
*>
mMetaData
;
...
@@ -187,7 +189,7 @@ OdtGeneratorPrivate::OdtGeneratorPrivate(OdfDocumentHandler *pHandler, const Odf
...
@@ -187,7 +189,7 @@ OdtGeneratorPrivate::OdtGeneratorPrivate(OdfDocumentHandler *pHandler, const Odf
mWriterListStates
(),
mWriterListStates
(),
mParagraphManager
(),
mSpanManager
(),
mFontManager
(),
mParagraphManager
(),
mSpanManager
(),
mFontManager
(),
mSectionStyles
(),
mTableStyles
(),
mFrameStyles
(),
mFrameAutomaticStyles
(),
mSectionStyles
(),
mTableStyles
(),
mFrameStyles
(),
mFrameAutomaticStyles
(),
mObjectHandlers
(),
mMetaData
(),
mObjectHandlers
(),
m
ImageHandlers
(),
m
MetaData
(),
miNumListStyles
(
0
),
miNumListStyles
(
0
),
mBodyElements
(),
mBodyElements
(),
mpCurrentContentElements
(
&
mBodyElements
),
mpCurrentContentElements
(
&
mBodyElements
),
...
@@ -267,6 +269,15 @@ OdfEmbeddedObject OdtGeneratorPrivate::_findEmbeddedObjectHandler(const WPXStrin
...
@@ -267,6 +269,15 @@ OdfEmbeddedObject OdtGeneratorPrivate::_findEmbeddedObjectHandler(const WPXStrin
return
0
;
return
0
;
}
}
OdfEmbeddedImage
OdtGeneratorPrivate
::
_findEmbeddedImageHandler
(
const
WPXString
&
mimeType
)
{
std
::
map
<
WPXString
,
OdfEmbeddedImage
,
ltstr
>::
iterator
i
=
mImageHandlers
.
find
(
mimeType
);
if
(
i
!=
mImageHandlers
.
end
())
return
i
->
second
;
return
0
;
}
OdtGenerator
::
OdtGenerator
(
OdfDocumentHandler
*
pHandler
,
const
OdfStreamType
streamType
)
:
OdtGenerator
::
OdtGenerator
(
OdfDocumentHandler
*
pHandler
,
const
OdfStreamType
streamType
)
:
mpImpl
(
new
OdtGeneratorPrivate
(
pHandler
,
streamType
))
mpImpl
(
new
OdtGeneratorPrivate
(
pHandler
,
streamType
))
{
{
...
@@ -1247,18 +1258,40 @@ void OdtGenerator::insertBinaryObject(const WPXPropertyList &propList, const WPX
...
@@ -1247,18 +1258,40 @@ void OdtGenerator::insertBinaryObject(const WPXPropertyList &propList, const WPX
return
;
return
;
OdfEmbeddedObject
tmpObjectHandler
=
mpImpl
->
_findEmbeddedObjectHandler
(
propList
[
"libwpd:mimetype"
]
->
getStr
());
OdfEmbeddedObject
tmpObjectHandler
=
mpImpl
->
_findEmbeddedObjectHandler
(
propList
[
"libwpd:mimetype"
]
->
getStr
());
OdfEmbeddedImage
tmpImageHandler
=
mpImpl
->
_findEmbeddedImageHandler
(
propList
[
"libwpd:mimetype"
]
->
getStr
());
if
(
tmpObjectHandler
)
if
(
tmpObjectHandler
||
tmpImageHandler
)
{
{
std
::
vector
<
DocumentElement
*>
tmpContentElements
;
if
(
tmpObjectHandler
)
InternalHandler
tmpHandler
(
&
tmpContentElements
);
if
(
tmpObjectHandler
(
data
,
&
tmpHandler
,
ODF_FLAT_XML
)
&&
!
tmpContentElements
.
empty
())
{
{
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagOpenElement
(
"draw:object"
));
std
::
vector
<
DocumentElement
*>
tmpContentElements
;
for
(
std
::
vector
<
DocumentElement
*>::
const_iterator
iter
=
tmpContentElements
.
begin
();
iter
!=
tmpContentElements
.
end
();
++
iter
)
InternalHandler
tmpHandler
(
&
tmpContentElements
);
mpImpl
->
mpCurrentContentElements
->
push_back
(
*
iter
);
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagCloseElement
(
"draw:object"
));
if
(
tmpObjectHandler
(
data
,
&
tmpHandler
,
ODF_FLAT_XML
)
&&
!
tmpContentElements
.
empty
())
{
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagOpenElement
(
"draw:object"
));
for
(
std
::
vector
<
DocumentElement
*>::
const_iterator
iter
=
tmpContentElements
.
begin
();
iter
!=
tmpContentElements
.
end
();
++
iter
)
mpImpl
->
mpCurrentContentElements
->
push_back
(
*
iter
);
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagCloseElement
(
"draw:object"
));
}
}
if
(
tmpImageHandler
)
{
WPXBinaryData
output
;
if
(
tmpImageHandler
(
data
,
output
))
{
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagOpenElement
(
"draw:image"
));
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagOpenElement
(
"office:binary-data"
));
WPXString
binaryBase64Data
=
output
.
getBase64Data
();
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
CharDataElement
(
binaryBase64Data
.
cstr
()));
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagCloseElement
(
"office:binary-data"
));
mpImpl
->
mpCurrentContentElements
->
push_back
(
new
TagCloseElement
(
"draw:image"
));
}
}
}
}
}
else
else
...
@@ -1346,4 +1379,9 @@ void OdtGenerator::registerEmbeddedObjectHandler(const WPXString &mimeType, OdfE
...
@@ -1346,4 +1379,9 @@ void OdtGenerator::registerEmbeddedObjectHandler(const WPXString &mimeType, OdfE
mpImpl
->
mObjectHandlers
[
mimeType
]
=
objectHandler
;
mpImpl
->
mObjectHandlers
[
mimeType
]
=
objectHandler
;
}
}
void
OdtGenerator
::
registerEmbeddedImageHandler
(
const
WPXString
&
mimeType
,
OdfEmbeddedImage
imageHandler
)
{
mpImpl
->
mImageHandlers
[
mimeType
]
=
imageHandler
;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
writerperfect/source/filter/OdtGenerator.hxx
Dosyayı görüntüle @
04950bf3
...
@@ -38,6 +38,7 @@
...
@@ -38,6 +38,7 @@
typedef
bool
(
*
OdfEmbeddedObject
)(
const
WPXBinaryData
&
data
,
OdfDocumentHandler
*
pHandler
,
const
OdfStreamType
streamType
);
typedef
bool
(
*
OdfEmbeddedObject
)(
const
WPXBinaryData
&
data
,
OdfDocumentHandler
*
pHandler
,
const
OdfStreamType
streamType
);
typedef
bool
(
*
OdfEmbeddedImage
)(
const
WPXBinaryData
&
input
,
WPXBinaryData
&
output
);
class
OdtGeneratorPrivate
;
class
OdtGeneratorPrivate
;
...
@@ -113,6 +114,7 @@ public:
...
@@ -113,6 +114,7 @@ public:
// Register special converter for certain embedded binary objects
// Register special converter for certain embedded binary objects
void
registerEmbeddedObjectHandler
(
const
WPXString
&
mimeType
,
OdfEmbeddedObject
objectHandler
);
void
registerEmbeddedObjectHandler
(
const
WPXString
&
mimeType
,
OdfEmbeddedObject
objectHandler
);
void
registerEmbeddedImageHandler
(
const
WPXString
&
mimeType
,
OdfEmbeddedImage
imageHandler
);
private
:
private
:
OdtGeneratorPrivate
*
mpImpl
;
OdtGeneratorPrivate
*
mpImpl
;
...
...
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