[Libreoffice-commits] core.git: filter/Configuration_filter.mk filter/source include/vcl oox/source vcl/source

Sushil Shinde sushil.shinde at synerzip.com
Fri Dec 13 01:59:59 PST 2013


 filter/Configuration_filter.mk                                       |    4 +
 filter/source/config/cache/typedetection.cxx                         |    1 
 filter/source/config/fragments/filters/mov__MOV.xcu                  |   21 +++++++++
 filter/source/config/fragments/internalgraphicfilters/mov_Import.xcu |   18 +++++++
 filter/source/config/fragments/types/mov_MOV.xcu                     |   20 ++++++++
 include/vcl/gfxlink.hxx                                              |    1 
 include/vcl/graphicfilter.hxx                                        |    4 +
 oox/source/export/drawingml.cxx                                      |    4 +
 vcl/source/filter/FilterConfigCache.cxx                              |    4 +
 vcl/source/filter/graphicfilter.cxx                                  |   23 ++++++++++
 10 files changed, 99 insertions(+), 1 deletion(-)

New commits:
commit c42c57e665ad65b3a270ae223f1012ac988acdd3
Author: Sushil Shinde <sushil.shinde at synerzip.com>
Date:   Tue Nov 26 19:06:48 2013 +0530

    fdo#70338 : Fixed file corruption issue after save for docx.
    
        - File was giving corruption message if saved in LO.
        - Issue due to video file.
        - Attached file contain .mov which was not handled properly.
        - Added mov extension support in graphic filter.
    
    Reviewed on:
    	https://gerrit.libreoffice.org/6818
    
    Change-Id: Ia278127ddc4afcd2d5fe04e86ed6201fb28dc04f

diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index 347d00c..587e414 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -734,6 +734,7 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_drawgraphics_types.xcu,
 	graphic_SWF \
 	jpg_JPEG \
 	met_OS2_Metafile \
+        mov_MOV \
 	pbm_Portable_Bitmap \
 	pcd_Photo_CD_Base \
 	pcd_Photo_CD_Base16 \
@@ -764,6 +765,7 @@ $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_drawgraphics_filters.
 	GIF___Graphics_Interchange \
 	JPG___JPEG \
 	MET___OS_2_Metafile \
+	mov__MOV \
 	PBM___Portable_Bitmap \
 	PCT___Mac_Pict \
 	PCX___Zsoft_Paintbrush \
@@ -880,6 +882,7 @@ $(call filter_Configuration_add_types,fcfg_langpack,fcfg_internalgraphics_types.
 	gif_Graphics_Interchange \
 	jpg_JPEG \
 	met_OS2_Metafile \
+        mov_MOV \
 	pbm_Portable_Bitmap \
 	pcd_Photo_CD_Base \
 	pcd_Photo_CD_Base16 \
@@ -947,6 +950,7 @@ $(call filter_Configuration_add_internal_filters,fcfg_langpack,fcfg_internalgrap
 	xbm_Import \
 	xpm_Export \
 	xpm_Import \
+        mov_Import \
 )
 
 # fcfg_xslt
diff --git a/filter/source/config/cache/typedetection.cxx b/filter/source/config/cache/typedetection.cxx
index d0bd8cf..dadf07e 100644
--- a/filter/source/config/cache/typedetection.cxx
+++ b/filter/source/config/cache/typedetection.cxx
@@ -220,6 +220,7 @@ int getFlatTypeRank(const OUString& rType)
         "psd_Adobe_Photoshop",
         "png_Portable_Network_Graphic",
         "jpg_JPEG",
+        "mov_MOV",
         "gif_Graphics_Interchange",
         "bmp_MS_Windows",
         "pcx_Zsoft_Paintbrush",
diff --git a/filter/source/config/fragments/filters/mov__MOV.xcu b/filter/source/config/fragments/filters/mov__MOV.xcu
new file mode 100644
index 0000000..eb06ad7
--- /dev/null
+++ b/filter/source/config/fragments/filters/mov__MOV.xcu
@@ -0,0 +1,21 @@
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+    <node oor:name="MOV - MOV" oor:op="replace">
+        <prop oor:name="Flags"><value>IMPORT ALIEN</value></prop>
+        <prop oor:name="UIComponent"/>
+        <prop oor:name="FilterService"/>
+        <prop oor:name="UserData"><value></value></prop>
+        <prop oor:name="UIName">
+            <value xml:lang="x-default">MOV - QuickTime File Format</value>
+        </prop>
+        <prop oor:name="FileFormatVersion"><value>0</value></prop>
+        <prop oor:name="Type"><value>mov_MOV</value></prop>
+        <prop oor:name="TemplateName"/>
+        <prop oor:name="DocumentService"><value>com.sun.star.drawing.DrawingDocument</value></prop>
+    </node>
diff --git a/filter/source/config/fragments/internalgraphicfilters/mov_Import.xcu b/filter/source/config/fragments/internalgraphicfilters/mov_Import.xcu
new file mode 100644
index 0000000..3dd2886
--- /dev/null
+++ b/filter/source/config/fragments/internalgraphicfilters/mov_Import.xcu
@@ -0,0 +1,18 @@
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+    <node oor:name="mov_Import" oor:op="replace"  >
+        <prop oor:name="Type"><value>mov_MOV</value></prop>
+        <prop oor:name="FormatName"><value>SVMOV</value></prop>
+        <prop oor:name="RealFilterName"><value>MOV - MOV</value></prop>
+        <prop oor:name="UIComponent"/>
+        <prop oor:name="UIName">
+            <value xml:lang="en-US">MOV - QuickTime File Format</value>
+        </prop>
+        <prop oor:name="Flags"><value>IMPORT</value></prop>
+    </node>
diff --git a/filter/source/config/fragments/types/mov_MOV.xcu b/filter/source/config/fragments/types/mov_MOV.xcu
new file mode 100644
index 0000000..7471a78
--- /dev/null
+++ b/filter/source/config/fragments/types/mov_MOV.xcu
@@ -0,0 +1,20 @@
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+    <node oor:name="mov_MOV" oor:op="replace" >
+        <prop oor:name="DetectService"><value>com.sun.star.comp.draw.FormatDetector</value></prop>
+        <prop oor:name="URLPattern"/>
+        <prop oor:name="Extensions"><value>mov MOV</value></prop>
+        <prop oor:name="MediaType"><value>application/movie</value></prop>
+        <prop oor:name="Preferred"><value>false</value></prop>
+        <prop oor:name="PreferredFilter"><value>MOV - MOV</value></prop>
+        <prop oor:name="UIName">
+            <value>MOV - QuickTime File Format</value>
+        </prop>
+        <prop oor:name="ClipboardFormat"/>
+    </node>
diff --git a/include/vcl/gfxlink.hxx b/include/vcl/gfxlink.hxx
index f996dde..80187b1 100644
--- a/include/vcl/gfxlink.hxx
+++ b/include/vcl/gfxlink.hxx
@@ -103,6 +103,7 @@ enum GfxLinkType
     GFX_LINK_TYPE_NATIVE_MET    = 7,    // Don't forget to update the following defines
     GFX_LINK_TYPE_NATIVE_PCT    = 8,    // Don't forget to update the following defines
     GFX_LINK_TYPE_NATIVE_SVG    = 9,    // Don't forget to update the following defines
+    GFX_LINK_TYPE_NATIVE_MOV    = 10,
     GFX_LINK_TYPE_USER          = 0xffff
 };
 
diff --git a/include/vcl/graphicfilter.hxx b/include/vcl/graphicfilter.hxx
index 7d29b6c..cfadd3c 100644
--- a/include/vcl/graphicfilter.hxx
+++ b/include/vcl/graphicfilter.hxx
@@ -54,6 +54,7 @@ struct ConvertData;
 #define GRFILTER_I_FLAGS_ALLOW_PARTIAL_STREAMREAD   00000010
 
 #define IMP_BMP                 "SVBMP"
+#define IMP_MOV                 "SVMOV"
 #define IMP_SVMETAFILE          "SVMETAFILE"
 #define IMP_WMF                 "SVWMF"
 #define IMP_EMF                 "SVEMF"
@@ -74,6 +75,7 @@ struct ConvertData;
 #define EXP_PNG                 "SVEPNG"
 
 #define BMP_SHORTNAME           "BMP"
+#define MOV_SHORTNAME           "MOV"
 #define GIF_SHORTNAME           "GIF"
 #define JPG_SHORTNAME           "JPG"
 #define MET_SHORTNAME           "MET"
@@ -113,6 +115,7 @@ struct ConvertData;
 #define GFF_SGV ( (sal_uInt16)0x00f7 )
 #define GFF_EMF ( (sal_uInt16)0x00f8 )
 #define GFF_SVG ( (sal_uInt16)0x00f9 )
+#define GFF_MOV ( (sal_uInt16)0x00fa )
 #define GFF_XXX ( (sal_uInt16)0xffff )
 
 // ---------------------
@@ -159,6 +162,7 @@ class VCL_DLLPUBLIC GraphicDescriptor
     sal_Bool            ImpDetectSGV( SvStream& rStm, sal_Bool bExtendedInfo );
     sal_Bool            ImpDetectEMF( SvStream& rStm, sal_Bool bExtendedInfo );
     sal_Bool            ImpDetectSVG( SvStream& rStm, sal_Bool bExtendedInfo );
+    sal_Bool            ImpDetectMOV( SvStream& rStm, sal_Bool bExtendedInfo );
     GraphicDescriptor( const GraphicDescriptor& );
     GraphicDescriptor& operator=( const GraphicDescriptor& );
 
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index e542df8..3ed8f02 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -493,6 +493,10 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic )
             sMediaType = "image/x-pict";
             pExtension = ".pct";
             break;
+        case GFX_LINK_TYPE_NATIVE_MOV:
+            sMediaType = "application/movie";
+            pExtension = ".MOV";
+            break;
         default: {
             GraphicType aType = rGraphic.GetType();
             if ( aType == GRAPHIC_BITMAP ) {
diff --git a/vcl/source/filter/FilterConfigCache.cxx b/vcl/source/filter/FilterConfigCache.cxx
index 217888e..71334c9 100644
--- a/vcl/source/filter/FilterConfigCache.cxx
+++ b/vcl/source/filter/FilterConfigCache.cxx
@@ -37,7 +37,7 @@ using namespace ::com::sun::star::configuration ;
 const char* FilterConfigCache::FilterConfigCacheEntry::InternalPixelFilterNameList[] =
 {
     IMP_BMP, IMP_GIF, IMP_PNG,IMP_JPEG, IMP_XBM, IMP_XPM,
-    EXP_BMP, EXP_JPEG, EXP_PNG, NULL
+    EXP_BMP, EXP_JPEG, EXP_PNG, IMP_MOV, NULL
 };
 
 const char* FilterConfigCache::FilterConfigCacheEntry::InternalVectorFilterNameList[] =
@@ -234,6 +234,8 @@ const char* FilterConfigCache::InternalFilterListForSvxLight[] =
     "gif","2","egi",
     "jpg","1","SVIJPEG",
     "jpg","2","SVEJPEG",
+    "mov","1","SVMOV",
+    "mov","2","SVMOV",
     "sgv","1","SVSGV",
     "sgf","1","SVSGF",
     "met","1","ime",
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx
index 6a98aba..6c38c1b 100644
--- a/vcl/source/filter/graphicfilter.cxx
+++ b/vcl/source/filter/graphicfilter.cxx
@@ -765,6 +765,19 @@ static bool ImpPeekGraphicFormat( SvStream& rStream, OUString& rFormatExtension,
         }
     }
 
+    if(!bTest || rFormatExtension.startsWith( "MOV" ))
+    {
+        if ((sFirstBytes[ 4 ] == 'f' && sFirstBytes[ 5 ] == 't' && sFirstBytes[ 6 ] == 'y' &&
+             sFirstBytes[ 7 ] == 'p' && sFirstBytes[ 8 ] == 'q' && sFirstBytes[ 9 ] == 't') ||
+            (sFirstBytes[ 4 ] == 'm' && sFirstBytes[ 5 ] == 'o' && sFirstBytes[ 6 ] == 'o' &&
+             sFirstBytes[ 7 ] == 'v' && sFirstBytes[ 11 ] == 'l' && sFirstBytes[ 12 ] == 'm'))
+        {
+            bSomethingTested=true;
+            rFormatExtension = "MOV";
+            return true;
+        }
+    }
+
     return bTest && !bSomethingTested;
 }
 
@@ -1564,6 +1577,16 @@ sal_uInt16 GraphicFilter::ImportGraphic( Graphic& rGraphic, const OUString& rPat
             if( rIStream.GetError() )
                 nStatus = GRFILTER_FORMATERROR;
         }
+        else if( aFilterName.equalsIgnoreAsciiCase( IMP_MOV ) )
+        {
+            rIStream >> rGraphic;
+            if( rIStream.GetError() )
+                nStatus = GRFILTER_FORMATERROR;
+            else
+                rGraphic.SetDefaultType();
+                rIStream.Seek( STREAM_SEEK_TO_END );
+                eLinkType = GFX_LINK_TYPE_NATIVE_MOV;
+        }
         else if( aFilterName.equalsIgnoreAsciiCase( IMP_WMF ) ||
                 aFilterName.equalsIgnoreAsciiCase( IMP_EMF ) )
         {


More information about the Libreoffice-commits mailing list