summaryrefslogtreecommitdiff
path: root/writerfilter/source/dmapper/MeasureHandler.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/dmapper/MeasureHandler.cxx')
-rw-r--r--writerfilter/source/dmapper/MeasureHandler.cxx135
1 files changed, 135 insertions, 0 deletions
diff --git a/writerfilter/source/dmapper/MeasureHandler.cxx b/writerfilter/source/dmapper/MeasureHandler.cxx
new file mode 100644
index 000000000000..5c315330a0cc
--- /dev/null
+++ b/writerfilter/source/dmapper/MeasureHandler.cxx
@@ -0,0 +1,135 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: MeasureHandler.cxx,v $
+ * $Revision: 1.6 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#include <MeasureHandler.hxx>
+#include <PropertyMap.hxx>
+#include <doctok/resourceids.hxx>
+#include <ConversionHelper.hxx>
+#include <ooxml/resourceids.hxx>
+#include <com/sun/star/text/SizeType.hpp>
+
+namespace writerfilter {
+namespace dmapper {
+
+using namespace ::com::sun::star;
+
+/*-- 24.04.2007 09:06:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+MeasureHandler::MeasureHandler() :
+ m_nMeasureValue( 0 ),
+ m_nUnit( -1 ),
+ m_nRowHeightSizeType( text::SizeType::MIN )
+{
+}
+/*-- 24.04.2007 09:06:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+MeasureHandler::~MeasureHandler()
+{
+}
+/*-- 24.04.2007 09:06:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void MeasureHandler::attribute(Id rName, Value & rVal)
+{
+ sal_Int32 nIntValue = rVal.getInt();
+ (void)rName;
+ /* WRITERFILTERSTATUS: table: MeasureHandler_attributedata */
+ switch( rName )
+ {
+ /* WRITERFILTERSTATUS: done: 1, planned: 0, spent: 0 */
+ case NS_rtf::LN_unit:
+ /* WRITERFILTERSTATUS: done: 1, planned: 0, spent: 0 */
+ case NS_ooxml::LN_CT_TblWidth_type:// = 90668;
+ //can be: NS_ooxml::LN_Value_ST_TblWidth_nil, NS_ooxml::LN_Value_ST_TblWidth_pct,
+ // NS_ooxml::LN_Value_ST_TblWidth_dxa, NS_ooxml::LN_Value_ST_TblWidth_auto;
+ m_nUnit = nIntValue;
+ break;
+ /* WRITERFILTERSTATUS: done: 1, planned: 0, spent: 0 */
+ case NS_ooxml::LN_CT_Height_hRule: // 90666;
+ {
+ ::rtl::OUString sHeightType = rVal.getString();
+ if( sHeightType.equalsAscii( "exact" ) )
+ m_nRowHeightSizeType = text::SizeType::FIX;
+ }
+ break;
+ /* WRITERFILTERSTATUS: done: 1, planned: 0, spent: 0 */
+ case NS_rtf::LN_trleft:
+ /* WRITERFILTERSTATUS: done: 1, planned: 0, spent: 0 */
+ case NS_rtf::LN_preferredWidth:
+ case NS_ooxml::LN_CT_TblWidth_w:// = 90667;
+ m_nMeasureValue = nIntValue;
+ break;
+ /* WRITERFILTERSTATUS: done: 1, planned: 0, spent: 0 */
+ case NS_ooxml::LN_CT_Height_val: // 90665 -- a string value
+ {
+ m_nUnit = NS_ooxml::LN_Value_ST_TblWidth_dxa;
+ ::rtl::OUString sHeight = rVal.getString();
+ m_nMeasureValue = sHeight.toInt32();
+ }
+ break;
+ default:
+ OSL_ENSURE( false, "unknown attribute");
+ }
+}
+/*-- 24.04.2007 09:06:35---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void MeasureHandler::sprm(Sprm & rSprm)
+{
+ (void)rSprm;
+}
+/*-- 24.04.2007 09:09:01---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Int32 MeasureHandler::getMeasureValue() const
+{
+ sal_Int32 nRet = 0;
+ if( m_nMeasureValue != 0 && m_nUnit >= 0 )
+ {
+ // TODO m_nUnit 3 - twip, other values unknown :-(
+ if( m_nUnit == 3 || sal::static_int_cast<Id>(m_nUnit) == NS_ooxml::LN_Value_ST_TblWidth_dxa)
+ nRet = ConversionHelper::convertTwipToMM100( m_nMeasureValue );
+ //todo: handle additional width types:
+ //NS_ooxml::LN_Value_ST_TblWidth_nil, NS_ooxml::LN_Value_ST_TblWidth_pct,
+ //NS_ooxml::LN_Value_ST_TblWidth_dxa, NS_ooxml::LN_Value_ST_TblWidth_auto;
+ }
+ return nRet;
+}
+/*-- 18.06.2007 10:24:26---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+bool MeasureHandler::isAutoWidth() const
+{
+ return sal::static_int_cast<Id>(m_nUnit) == NS_ooxml::LN_Value_ST_TblWidth_auto;
+}
+
+} //namespace dmapper
+} //namespace writerfilter