[ooo-build-commit] 4 commits - patches/dev300
Radek DoulÃk
rodo at kemper.freedesktop.org
Sun Jul 26 23:23:44 PDT 2009
patches/dev300/apply | 4
patches/dev300/layoutcode071809.diff | 4289 --------------------------------
patches/dev300/offapi-layoutcode.diff | 88
patches/dev300/sd-layoutcode.diff | 4440 ++++++++++++++++++++++++++++++++++
4 files changed, 4531 insertions(+), 4290 deletions(-)
New commits:
commit 27815102b58a5bc7a06b3790cb2c948a1fe8f627
Author: Radek Doulik <rodo at novell.com>
Date: Mon Jul 27 08:21:42 2009 +0200
fixed the patch so that it applies
* patches/dev300/offapi-layoutcode.diff:
diff --git a/patches/dev300/offapi-layoutcode.diff b/patches/dev300/offapi-layoutcode.diff
index 9a2e74a..c12e7fd 100644
--- a/patches/dev300/offapi-layoutcode.diff
+++ b/patches/dev300/offapi-layoutcode.diff
@@ -1,12 +1,11 @@
diff -Nrup offapi-m16/com/sun/star/presentation/makefile.mk offapi/com/sun/star/presentation/makefile.mk
--- offapi-m16/com/sun/star/presentation/makefile.mk 2009-07-26 00:58:11.000000000 -0700
+++ offapi/com/sun/star/presentation/makefile.mk 2009-07-26 00:58:57.000000000 -0700
-@@ -92,8 +92,8 @@ IDLFILES=\
+@@ -92,7 +92,8 @@ IDLFILES=\
XSlideShowView.idl\
XPresentation2.idl\
XTransition.idl\
- XTransitionFactory.idl
--
+ XTransitionFactory.idl\
+ XLayoutList.idl
commit 018afa32524de001bbb824d4e08b19de270ec12f
Author: cocofan <cocofan at mailbolt.com>
Date: Sun Jul 26 01:36:07 2009 -0700
Add two new patches for layout code.
* patches/dev300/offapi-layoutcode.diff:
* patches/dev300/sd-layoutcode.diff:
diff --git a/patches/dev300/offapi-layoutcode.diff b/patches/dev300/offapi-layoutcode.diff
new file mode 100644
index 0000000..9a2e74a
--- /dev/null
+++ b/patches/dev300/offapi-layoutcode.diff
@@ -0,0 +1,89 @@
+diff -Nrup offapi-m16/com/sun/star/presentation/makefile.mk offapi/com/sun/star/presentation/makefile.mk
+--- offapi-m16/com/sun/star/presentation/makefile.mk 2009-07-26 00:58:11.000000000 -0700
++++ offapi/com/sun/star/presentation/makefile.mk 2009-07-26 00:58:57.000000000 -0700
+@@ -92,8 +92,8 @@ IDLFILES=\
+ XSlideShowView.idl\
+ XPresentation2.idl\
+ XTransition.idl\
+- XTransitionFactory.idl
+-
++ XTransitionFactory.idl\
++ XLayoutList.idl
+
+ # ------------------------------------------------------------------
+
+diff -Nrup offapi-m16/com/sun/star/presentation/XLayoutList.idl offapi/com/sun/star/presentation/XLayoutList.idl
+--- offapi-m16/com/sun/star/presentation/XLayoutList.idl 1969-12-31 16:00:00.000000000 -0800
++++ offapi/com/sun/star/presentation/XLayoutList.idl 2009-07-26 00:59:28.000000000 -0700
+@@ -0,0 +1,71 @@
++/*************************************************************************
++ *
++ * 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: XLayoutList.idl,v $
++ * $Revision: 1.4 $
++ *
++ * 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.
++ *
++ ************************************************************************/
++#ifndef __com_sun_star_presentation_XLayoutList_idl__
++#define __com_sun_star_presentation_XLayoutList_idl__
++
++#ifndef __com_sun_star_uno_XInterface_idl__
++#include <com/sun/star/uno/XInterface.idl>
++#endif
++
++#ifndef __com_sun_star_awt_Rectangle_idl__
++#include <com/sun/star/awt/Rectangle.idl>
++#endif
++
++#ifndef __com_sun_star_awt_Size_idl__
++#include <com/sun/star/awt/Size.idl>
++#endif
++
++
++//=============================================================================
++
++module com { module sun { module star { module presentation {
++
++//=============================================================================
++
++/** The interface for the layout list. Layout list stores information
++ * on autolayouts (builtin and custom).
++ */
++
++interface XLayoutList : ::com::sun::star::uno::XInterface
++{
++
++ sequence< ::com::sun::star::awt::Rectangle > getAutoLayoutRectangles( [in] long Index,
++ [in] ::com::sun::star::awt::Rectangle title,
++ [in] ::com::sun::star::awt::Rectangle layout,
++ [in] ::com::sun::star::awt::Size page,
++ [in] boolean bRightToLeft);
++
++};
++
++//=============================================================================
++
++}; }; }; };
++
++#endif
diff --git a/patches/dev300/sd-layoutcode.diff b/patches/dev300/sd-layoutcode.diff
new file mode 100644
index 0000000..f1e7808
--- /dev/null
+++ b/patches/dev300/sd-layoutcode.diff
@@ -0,0 +1,4440 @@
+diff -Nrup sd-m16/inc/drawdoc.hxx sd/inc/drawdoc.hxx
+--- sd-m16/inc/drawdoc.hxx 2009-07-25 19:24:39.000000000 -0700
++++ sd/inc/drawdoc.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -57,6 +57,11 @@
+ #endif
+ #include "sddllapi.h"
+ #include "sdpage.hxx"
++#include "layoutlist.hxx"
++
++
++sd::LayoutList* GetLayoutList();
++
+
+ namespace com
+ {
+@@ -522,8 +527,8 @@ public:
+ PageKind ePageKind,
+ const String& sStandardPageName,
+ const String& sNotesPageName,
+- AutoLayout eStandardLayout,
+- AutoLayout eNotesLayout,
++ sd::AutoLayout eStandardLayout,
++ sd::AutoLayout eNotesLayout,
+ BOOL bIsPageBack,
+ BOOL bIsPageObj);
+
+@@ -578,8 +583,8 @@ public:
+ PageKind ePageKind,
+ const String& sStandardPageName,
+ const String& sNotesPageName,
+- AutoLayout eStandardLayout,
+- AutoLayout eNotesLayout,
++ sd::AutoLayout eStandardLayout,
++ sd::AutoLayout eNotesLayout,
+ BOOL bIsPageBack,
+ BOOL bIsPageObj);
+
+@@ -643,8 +648,8 @@ private:
+ PageKind ePageKind,
+ const String& sStandardPageName,
+ const String& sNotesPageName,
+- AutoLayout eStandardLayout,
+- AutoLayout eNotesLayout,
++ sd::AutoLayout eStandardLayout,
++ sd::AutoLayout eNotesLayout,
+ BOOL bIsPageBack,
+ BOOL bIsPageObj,
+
+diff -Nrup sd-m16/inc/layoutlist.hxx sd/inc/layoutlist.hxx
+--- sd-m16/inc/layoutlist.hxx 1969-12-31 16:00:00.000000000 -0800
++++ sd/inc/layoutlist.hxx 2009-07-25 23:57:34.000000000 -0700
+@@ -0,0 +1,239 @@
++/*************************************************************************
++ *
++ * 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: layoutlist.hxx,v $
++ * $Revision: 0.1 $
++ *
++ * 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.
++ *
++ ************************************************************************/
++
++
++#ifndef _LAYOUTLIST_HXX
++#define _LAYOUTLIST_HXX
++
++
++#define LL_NOT_FOUND 100000
++
++#include <vector>
++#include <cppuhelper/implbase1.hxx>
++#include <com/sun/star/uno/Reference.hxx>
++#include <com/sun/star/uno/Sequence.hxx>
++#include <com/sun/star/awt/Rectangle.hpp>
++#include <com/sun/star/awt/Size.hpp>
++#include <com/sun/star/awt/Point.hpp>
++#include <com/sun/star/presentation/XLayoutList.hpp>
++#include "layouttype.hxx"
++#include "sal/types.h"
++#include "tools/string.hxx"
++#include "sdresid.hxx"
++#include "../source/ui/inc/strings.hrc"
++#include "../source/ui/inc/res_bmp.hrc"
++#include "pres.hxx"
++
++// needed for pptin.cxx (PowerPoint filter)
++// among other files. Also, for calculating
++// handouts and notes.
++
++enum AutoLayoutBuiltin {
++ AUTOLAYOUT_TITLE = 0,
++ AUTOLAYOUT_ENUM,
++ AUTOLAYOUT_CHART,
++ AUTOLAYOUT_2TEXT,
++ AUTOLAYOUT_TEXTCHART,
++ AUTOLAYOUT_ORG,
++ AUTOLAYOUT_TEXTCLIP,
++ AUTOLAYOUT_CHARTTEXT,
++ AUTOLAYOUT_TAB,
++ AUTOLAYOUT_CLIPTEXT,
++ AUTOLAYOUT_TEXTOBJ,
++ AUTOLAYOUT_OBJ,
++ AUTOLAYOUT_TEXT2OBJ,
++ AUTOLAYOUT_OBJTEXT,
++ AUTOLAYOUT_OBJOVERTEXT,
++ AUTOLAYOUT_2OBJTEXT,
++ AUTOLAYOUT_2OBJOVERTEXT,
++ AUTOLAYOUT_TEXTOVEROBJ,
++ AUTOLAYOUT_4OBJ,
++ AUTOLAYOUT_ONLY_TITLE,
++ AUTOLAYOUT_NONE,
++ AUTOLAYOUT_NOTES,
++ AUTOLAYOUT_HANDOUT1,
++ AUTOLAYOUT_HANDOUT2,
++ AUTOLAYOUT_HANDOUT3,
++ AUTOLAYOUT_HANDOUT4,
++ AUTOLAYOUT_HANDOUT6,
++ AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART,
++ AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE,
++ AUTOLAYOUT_TITLE_VERTICAL_OUTLINE,
++ AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART,
++ AUTOLAYOUT_HANDOUT9,
++ AUTOLAYOUT_ONLY_TEXT,
++ AL_NUM_OF_BUILTINS
++};
++
++
++
++
++namespace sd {
++
++ typedef sal_Int32 AutoLayout;
++
++ class LayoutList: public ::cppu::WeakImplHelper1< ::com::sun::star::presentation::XLayoutList >
++ {
++ public:
++
++ LayoutList(bool testing=false);
++ ~LayoutList();
++
++ /** passes back the absolute path plus file name
++ * of the autolayout configuration file.
++ */
++ String* getConfigFile();
++
++ /** write entire layout information to a config file
++ */
++ void writeToFile();
++
++ /** read entire layout information to a config file
++ */
++ void readFromFile();
++
++ /** adds a layout object to the list
++ * passes back a true if the layout
++ * was successfully added and passes back
++ * a false if not (name already in the list,
++ * for example). Also, adds to the given
++ * menu list at the given index (or at
++ * the end if the index is negative(-1)) */
++ bool addLayout(LayoutType* pLayout, const sal_Int32& menuIndex,
++ const PageKind& eMenu);
++
++ /** removes a custom layout from the layout list
++ * but doesn't remove builtins.
++ * Deletes the layout object and sets a NULL
++ * in the layout list so as not to change the
++ * indices of the list. It also finds the menu
++ * entry and removes it completely. Items will
++ * be moved up in the menu list.
++ */
++ void deleteLayoutFromList(const LString& sName);
++
++ /** return the length of the list. This may not be
++ * the number of actual layouts in the list */
++ sal_uInt32 length() const;
++
++ /** return the number of actual layouts in the list
++ */
++ sal_uInt32 numberOfLayouts() const;
++
++ /** pass in the index to the list. for iterating
++ * the list. Will send back a NULL if a layout isn't there.
++ */
++ LayoutType* getLayoutByIndex(const sal_uInt32 nIndex);
++
++
++
++ /** find and pass back a layout object with the given
++ name or NULL */
++ LayoutType* getLayoutByName(const LString& sName);
++
++ /** get the autolayout value of the given name. It will
++ * send back a LL_NOT_FOUND if there is no layout. Need to
++ * cast this value to a sal_uInt32 to use as an
++ * index into the list. */
++ sal_uInt32 getLayoutIndex(const LString& sName);
++
++ /** get the layout object for the given layoutMenu
++ * index.
++ */
++ LayoutType* getLayoutAtMenuIndex(const sal_uInt32& nIndex,
++ const PageKind& eMenu);
++
++ /** get the size of a particular menu list */
++ sal_uInt32 getMenuLength(const PageKind& eMenu);
++
++ /** given an autolayout number, find the index in the menu.
++ * If not in the list, then passes back LL_NOT_FOUND*/
++ sal_uInt32 getMenuIndex(const AutoLayout& nLayout,
++ const PageKind& nMenu);
++
++ /** remove the autolayout from the list. Need to move
++ * the layouts over.
++ */
++ void removeFromMenuList(const AutoLayout& lnum,
++ const PageKind& eMenu);
++
++ /** add an autolayout to the menu list. will grow
++ * the list to fit the given index. A negative index
++ * will cause the autolayout to be appended to the
++ * end of the list. */
++
++ void addToMenuList(const sal_Int32& index,
++ const AutoLayout& lnum,
++ const PageKind& eMenu);
++
++
++ /** UNO implementation of interface XLayoutList
++ * for use with xmloff code
++ */
++ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::awt::Rectangle >
++ SAL_CALL getAutoLayoutRectangles( ::sal_Int32 Index,
++ const ::com::sun::star::awt::Rectangle& title,
++ const ::com::sun::star::awt::Rectangle& layout,
++ const ::com::sun::star::awt::Size& page,
++ ::sal_Bool bRightToLeft )
++ throw (::com::sun::star::uno::RuntimeException);
++ Rectangle UNORectToRect(const ::com::sun::star::awt::Rectangle& rect);
++ ::com::sun::star::awt::Rectangle RectToUNORect(const Rectangle& rect);
++
++
++ private:
++
++ typedef std::vector<AutoLayout> MEListImpl;
++ typedef std::vector<LayoutType*> LListImpl;
++
++ // list used for storing info about
++ // both builtin and custom layouts
++ LListImpl maLayoutList;
++
++ // lists used to fill the LayoutMenu
++ // Gives the layouts in order by index.
++ // There is a list for each view mode.
++ MEListImpl maStandard; //standard view
++ MEListImpl maNotes; // notes view
++ MEListImpl maHandout; // handout view
++
++ bool mbTesting; // used to determine when testing.
++
++ void initializeList();
++ void initializeMenuOrder();
++
++
++
++
++ }; // Class LayoutList
++
++}
++
++#endif // _LAYOUTLIST_HXX
+diff -Nrup sd-m16/inc/layouttype.hxx sd/inc/layouttype.hxx
+--- sd-m16/inc/layouttype.hxx 1969-12-31 16:00:00.000000000 -0800
++++ sd/inc/layouttype.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -0,0 +1,223 @@
++/*************************************************************************
++ *
++ * 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: layouttype.hxx,v $
++ * $Revision: 0.1 $
++ *
++ * 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.
++ *
++ ************************************************************************/
++
++
++#ifndef _LAYOUTTYPE_HXX
++#define _LAYOUTTYPE_HXX
++
++#include <vector>
++#include <cppuhelper/implbase1.hxx>
++
++#include <com/sun/star/text/WritingMode.hpp>
++#include "sal/types.h"
++#include "tools/string.hxx"
++#include "tools/gen.hxx"
++#include "pres.hxx"
++#include <sax/fshelper.hxx>
++#include <com/sun/star/uno/Reference.hxx>
++#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
++
++
++
++using ::com::sun::star::uno::Reference;
++using namespace ::com::sun::star::xml;
++using namespace ::com::sun::star::text;
++using namespace ::sax_fastparser;
++
++namespace sd {
++
++ typedef String LString;
++
++ /** RectType determines which
++ * standard rectangle to use
++ * to calculate bounding rects
++ * and also determine the factors
++ * used to calculate the rects.
++ */
++
++ enum RectType {
++ RT_TITLE, // a non-vertical title
++ RT_VERTICAL_TITLE,
++ RT_LAYOUT, // a non-vertical non-title shape
++ RT_VERTICAL_LAYOUT,
++ RT_TEXT_ONLY, // for the text only layout
++ RT_LAYOUT_SWITCH, // use if shapes need switching
++ // for right to left writing
++ RT_ERROR
++ };
++
++ /** ElemType defines the information for
++ * one element (or pres. object) in
++ * a layout.
++ */
++
++ typedef struct {
++ PresObjKind kind; // the type of pres. object
++ bool isVertical; // whether to make this obj. vertical
++ double factorX; // factor for calculating topleft x value
++ double factorY; // factor for calculating topleft y value
++ double factorHt; // factor for calculating height
++ double factorWt; // factor for calculating width
++ RectType recttype; // type of standard rect to use
++ // for calculating rects.
++ } ElemType;
++
++ /** LayoutType represents on autolayout */
++
++ class LayoutType
++ {
++ public:
++ LayoutType();
++ ~LayoutType();
++
++ /** functions for writing this layout to a xml configuration file */
++ void writeLayoutToFile(FastSerializerHelper& fsh, sal_Int32 autolayout);
++ void writeElementTofile(FastSerializerHelper& fsh,
++ const sal_uInt32 i,
++ const char* sNumber,
++ const ElemType* elem);
++
++ /** functions for reading this layout in from a xml configuration
++ * file. Passes back entry in the list.
++ */
++ sal_Int32 getIntValue(const Reference<dom::XNode>& node);
++ double getDoubleValue(const Reference<dom::XNode>& node);
++ sal_Int32 readLayoutFromFile(const Reference<dom::XNode>& node);
++
++ /** get functions for variables
++ * other than elements
++ */
++
++ LString getName();
++ sal_uInt32 getStrId();
++ WritingMode getWritingMode();
++ sal_uInt32 getHBitmapId();
++ sal_uInt32 getLBitmapId();
++
++ /** get functions for elements by index
++ * and element list functions
++ */
++ ElemType* getElemByIndex(const sal_uInt32& nIndex);
++ sal_uInt32 length();
++ PresObjKind getKind(const sal_uInt32& nIndex);
++ bool isVertical(const sal_uInt32& nIndex);
++ double factorX(const sal_uInt32& nIndex);
++ double factorY(const sal_uInt32& nIndex);
++ double factorHt(const sal_uInt32& nIndex);
++ double factorWt(const sal_uInt32& nIndex);
++ RectType recttype(const sal_uInt32& nIndex);
++
++ /** set functions for variables other
++ * than elements.
++ */
++
++ void setName(const LString& sName);
++ void setStrId(const sal_uInt32 id);
++ void setWritingMode(const WritingMode& wmode);
++ void setHBitmapId(const sal_uInt32& id);
++ void setLBitmapId(const sal_uInt32& id);
++
++
++ /** set functions for elements and list
++ */
++
++ void createDefaultElement();
++ void setKind(const sal_uInt32& nIndex, PresObjKind nKind);
++ void setVertical(const sal_uInt32& nIndex, bool bVertical);
++ void setFactorX(const sal_uInt32& nIndex, double fx);
++ void setFactorY(const sal_uInt32& nIndex, double fy);
++ void setFactorHt(const sal_uInt32& nIndex, double ht);
++ void setFactorWt(const sal_uInt32& nIndex, double wt);
++ void setRecttype(const sal_uInt32& nIndex, RectType rect);
++ /** add a passed in element to the list */
++ void addElemToList(ElemType& rElement);
++ /** deletes element and also removes from list */
++ void deleteElement(const sal_uInt32& nIndex);
++
++ /** sets the bounding rectangle information
++ * for a custom layout. rRect is the actual
++ * rectangle from the pres object. rStandard
++ * is the generic title or layout rectangle.
++ * For non-vertical titles, use RT_TITLE
++ * and pass in the generic title rect.
++ * For non-vertical all else, use RT_LAYOUT,
++ * (or RT_LAYOUT_SWITCH if a switching of
++ * rectangles is needed for right to left
++ * writing) and pass in a generic layout rect.
++ * For vertical, use the corresponding
++ * RT_VERTICAL_ type (see above).
++ */
++ void setCustomRectInfo(const sal_uInt32& nIndex,
++ const RectType& rType,
++ const Rectangle& rRect,
++ const Rectangle& rStandard);
++
++ /** call this to calculation the bounding rectangles for
++ * the elements in a layout
++ */
++ void calcAutoLayoutRectangles( const Rectangle& aTitleRect,
++ const Rectangle& aLayoutRect,
++ const Size& aPageSize,
++ const bool& bRightToLeft,
++ Rectangle* pRectangle );
++
++ /** initialize the rectInfo. Mainly designed for builtins
++ * but might be useful for custom layouts.
++ * Should be called after the elements are
++ * all in the list, otherwise some elements won't be
++ * initialized at all.
++ * These functions may not be
++ * needed after the configuration
++ * file code is done. */
++
++ void initializeRectInfo(const sal_uInt32& nLayout);
++ void initFromLayoutNumber(ElemType* elem,
++ const sal_uInt32& i,
++ const sal_uInt32& nLayout);
++
++ private:
++ LString name; // String name of the layout
++ sal_uInt32 nStrId; // resource id for the string.
++ WritingMode nWritingMode; // righttoleft or toptobottom
++ sal_uInt32 nHBitmapId; // resource id for the High Contrast Bitmap
++ sal_uInt32 nLBitmapId; // resource id for the Low contrast Bitmap
++
++ // list of elements whicht the pres. objects will be
++ // created from for this layout.
++ typedef std::vector< ElemType* > ListImpl;
++ ListImpl elemList;
++
++
++ }; // Class LayoutType
++
++} //namespace sd
++
++#endif // _LAYOUTTYPE_HXX
++
+diff -Nrup sd-m16/inc/pres.hxx sd/inc/pres.hxx
+--- sd-m16/inc/pres.hxx 2009-07-25 19:24:39.000000000 -0700
++++ sd/inc/pres.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -54,44 +54,6 @@ enum PresObjKind
+ PRESOBJ_MAX
+ };
+
+-enum AutoLayout
+-{
+- AUTOLAYOUT__START,
+- AUTOLAYOUT_TITLE = AUTOLAYOUT__START,
+- AUTOLAYOUT_ENUM,
+- AUTOLAYOUT_CHART,
+- AUTOLAYOUT_2TEXT,
+- AUTOLAYOUT_TEXTCHART,
+- AUTOLAYOUT_ORG,
+- AUTOLAYOUT_TEXTCLIP,
+- AUTOLAYOUT_CHARTTEXT,
+- AUTOLAYOUT_TAB,
+- AUTOLAYOUT_CLIPTEXT,
+- AUTOLAYOUT_TEXTOBJ,
+- AUTOLAYOUT_OBJ,
+- AUTOLAYOUT_TEXT2OBJ,
+- AUTOLAYOUT_OBJTEXT,
+- AUTOLAYOUT_OBJOVERTEXT,
+- AUTOLAYOUT_2OBJTEXT,
+- AUTOLAYOUT_2OBJOVERTEXT,
+- AUTOLAYOUT_TEXTOVEROBJ,
+- AUTOLAYOUT_4OBJ,
+- AUTOLAYOUT_ONLY_TITLE,
+- AUTOLAYOUT_NONE,
+- AUTOLAYOUT_NOTES,
+- AUTOLAYOUT_HANDOUT1,
+- AUTOLAYOUT_HANDOUT2,
+- AUTOLAYOUT_HANDOUT3,
+- AUTOLAYOUT_HANDOUT4,
+- AUTOLAYOUT_HANDOUT6,
+- AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART,
+- AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE,
+- AUTOLAYOUT_TITLE_VERTICAL_OUTLINE,
+- AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART,
+- AUTOLAYOUT_HANDOUT9,
+- AUTOLAYOUT_ONLY_TEXT,
+- AUTOLAYOUT__END
+-};
+
+ enum PageKind
+ {
+diff -Nrup sd-m16/inc/sdpage.hxx sd/inc/sdpage.hxx
+--- sd-m16/inc/sdpage.hxx 2009-07-25 19:24:39.000000000 -0700
++++ sd/inc/sdpage.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -45,6 +45,8 @@
+ #include <list>
+ #include <functional>
+ #include <vector>
++#include "layoutlist.hxx"
++#include "layouttype.hxx"
+ #include <svx/svdobj.hxx>
+ #ifndef _FM_FMPAGE_HXX //autogen
+ #include <svx/fmpage.hxx>
+@@ -126,7 +128,7 @@ friend class sd::UndoAttrObject;
+
+ protected:
+ PageKind mePageKind; // Seitentyp
+- AutoLayout meAutoLayout; // AutoLayout
++ sd::AutoLayout meAutoLayout; // AutoLayout
+ sd::ShapeList maPresentationShapeList; // Praesentationsobjekte
+ sd::ScopeLock maLockAutoLayoutArrangement;
+ BOOL mbSelected; // Selektionskennung
+@@ -208,9 +210,8 @@ public:
+
+ /** inserts the given SdrObject into the presentation object list */
+ void InsertPresObj(SdrObject* pObj, PresObjKind eKind );
+-
+- void SetAutoLayout(AutoLayout eLayout, BOOL bInit=FALSE, BOOL bCreate=FALSE);
+- AutoLayout GetAutoLayout() const { return meAutoLayout; }
++ void SetAutoLayout(sd::AutoLayout eLayout, BOOL bInit=FALSE, BOOL bCreate=FALSE);
++ sd::AutoLayout GetAutoLayout() const { return meAutoLayout; }
+ void CreateTitleAndLayout(BOOL bInit=FALSE, BOOL bCreate=FALSE);
+ SdrObject* InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind, bool bVertical, Rectangle aRect, bool bInit );
+
+@@ -375,8 +376,7 @@ public:
+
+ Rectangle GetTitleRect() const;
+ Rectangle GetLayoutRect() const;
+-
+- static void CalculateHandoutAreas( SdDrawDocument& rModel, AutoLayout eLayout, bool bHorizontal, std::vector< Rectangle >& rAreas );
++ static void CalculateHandoutAreas( SdDrawDocument& rModel, sd::AutoLayout eLayout, bool bHorizontal, std::vector< Rectangle >& rAreas );
+
+ /** Set the "precious" flag to the given value.
+ */
+diff -Nrup sd-m16/inc/Test.hxx sd/inc/Test.hxx
+--- sd-m16/inc/Test.hxx 1969-12-31 16:00:00.000000000 -0800
++++ sd/inc/Test.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -0,0 +1,43 @@
++/*************************************************************************
++ *
++ * 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: LayoutMenu.cxx,v $
++ * $Revision: 1.27 $
++ *
++ * 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.
++ *
++ ************************************************************************/
++#ifndef _TEST_HXX
++#define _TEST_HXX
++
++#include <vector>
++
++#include "sal/types.h"
++#include "rtl/ustring.hxx"
++#include "tools/string.hxx"
++#include "pres.hxx"
++
++using namespace rtl;
++
++#endif
++
+diff -Nrup sd-m16/source/core/drawdoc3.cxx sd/source/core/drawdoc3.cxx
+--- sd-m16/source/core/drawdoc3.cxx 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/core/drawdoc3.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -1756,7 +1756,7 @@ void SdDrawDocument::SetMasterPage(USHOR
+ pPage = (SdPage*)pPageList->First();
+ while (pPage)
+ {
+- AutoLayout eAutoLayout = pPage->GetAutoLayout();
++ sd::AutoLayout eAutoLayout = pPage->GetAutoLayout();
+
+ SdPresentationLayoutUndoAction * pPLUndoAction =
+ new SdPresentationLayoutUndoAction
+@@ -1926,8 +1926,8 @@ void SdDrawDocument::SetMasterPage(USHOR
+ pPage = (SdPage*)pPageList->First();
+ while(pPage)
+ {
+- AutoLayout eOldAutoLayout = pPage->GetAutoLayout();
+- AutoLayout eNewAutoLayout =
++ sd::AutoLayout eOldAutoLayout = pPage->GetAutoLayout();
++ sd::AutoLayout eNewAutoLayout =
+ pPage->GetPageKind() == PK_STANDARD ? AUTOLAYOUT_NONE : AUTOLAYOUT_NOTES;
+
+ SdPresentationLayoutUndoAction * pPLUndoAction =
+diff -Nrup sd-m16/source/core/drawdoc.cxx sd/source/core/drawdoc.cxx
+--- sd-m16/source/core/drawdoc.cxx 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/core/drawdoc.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -97,6 +97,10 @@
+ #include "../ui/inc/optsitem.hxx"
+ #include "../ui/inc/FrameView.hxx"
+
++//FOR TESTING LAYOUTLIST
++#include "../ui/inc/res_bmp.hrc"
++#include "../ui/inc/strings.hrc"
++
+ // #90477#
+ #include <tools/tenccvt.hxx>
+
+@@ -107,6 +111,30 @@ using namespace ::com::sun::star::uno;
+ using namespace ::com::sun::star::lang;
+ using namespace ::com::sun::star::linguistic2;
+
++
++// to be placed here until decided where to do
++LayoutList* autolayoutList=NULL;
++
++sd::LayoutList* GetLayoutList()
++{
++ if(autolayoutList) return autolayoutList;
++ autolayoutList = new LayoutList();
++ return autolayoutList;
++}
++
++void DeleteLayoutList()
++{
++ if(autolayoutList)
++ {
++ delete autolayoutList;
++ autolayoutList = NULL;
++ }
++}
++
++
++
++
++
+ //////////////////////////////////////////////////////////////////////////////
+
+ TYPEINIT1( SdDrawDocument, FmFormModel );
+@@ -374,6 +402,52 @@ SdDrawDocument::SdDrawDocument(DocumentT
+ rLayerAdmin.SetControlLayerName(aControlLayerName);
+ }
+
++ // THIS IS HERE FOR TESTING THE LAYOUTLIST CLASSES
++
++// LayoutList* list = GetLayoutList();
++// LayoutType* test;
++/*
++ test = new LayoutType();
++ test->setName(LString::CreateFromAscii("testing1..."));
++ test->setLayoutNumber(0);
++ test->setStrId(-1); // no string resource id
++ test->setWritingMode(WritingMode_LR_TB);
++ test->setHBitmapId(BMP_FOIL_02_H);
++ test->setLBitmapId(BMP_FOIL_02);
++
++ test->createDefaultElement(); // for title
++ test->createDefaultElement();
++ test->setKind(1,PRESOBJ_OUTLINE); // for outline
++ test->setFactorHt(1,.5); // change to new settings
++ test->setFactorWt(1,.5);
++ test->setRecttype(1, RT_LAYOUT);
++
++ if(list->addLayout(test, 3, PK_STANDARD)) OSL_TRACE("added to list");
++*/
++ // another one
++/* test = new LayoutType();
++ if(test)
++ {
++ test->createDefaultElement(); // title
++ test->createDefaultElement();
++ test->setKind(1, PRESOBJ_CHART); // chart
++ test->setFactorX(1,.5);
++ test->setFactorY(1,.5);
++ test->setFactorHt(1,.333);
++ test->setFactorWt(1,.333);
++ test->setRecttype(1, RT_LAYOUT);
++ test->createDefaultElement();
++ test->setKind(2,PRESOBJ_OUTLINE);
++ test->setFactorHt(2,.333);
++ test->setFactorWt(2,.333);
++ test->setRecttype(2, RT_LAYOUT);
++
++ if(!list->addLayout(test, -1, PK_STANDARD))
++ { OSL_TRACE("Layout2 not added"); }
++ } else
++ { OSL_TRACE("Cannot create layout2"); }
++*/
++
+
+ }
+
+@@ -457,6 +531,8 @@ SdDrawDocument::~SdDrawDocument()
+
+ delete mpCharClass;
+ mpCharClass = NULL;
++
++ DeleteLayoutList(); // needed to write autolayouts to the config file
+ }
+
+ /*************************************************************************
+diff -Nrup sd-m16/source/core/layoutlist.cxx sd/source/core/layoutlist.cxx
+--- sd-m16/source/core/layoutlist.cxx 1969-12-31 16:00:00.000000000 -0800
++++ sd/source/core/layoutlist.cxx 2009-07-26 00:09:58.000000000 -0700
+@@ -0,0 +1,1310 @@
++/*************************************************************************
++ *
++ * 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: layoutlist.cxx,v $
++ * $Revision: 0.1$
++ *
++ * 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.
++ *
++ ************************************************************************/
++
++// MARKER(update_precomp.py): autogen include statement, do not remove
++#include "precompiled_sd.hxx"
++#include <stdio.h>
++#include <tools/debug.hxx>
++#include "osl/diagnose.h"
++#include "osl/file.hxx"
++#include "osl/security.hxx"
++#include "tools/stream.hxx"
++#include <vcl/unohelp.hxx>
++#include <com/sun/star/lang/XMultiServiceFactory.hpp>
++#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
++#include <unotools/streamwrap.hxx>
++#include <sax/fshelper.hxx>
++#include "layoutlist.hxx"
++#include "sal/types.h"
++#include "tools/string.hxx"
++#include "rtl/string.hxx"
++#include "sdresid.hxx"
++#include "pres.hxx"
++#include "../ui/inc/strings.hrc"
++
++#define CHARTOOUSTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
++#define CHATTOSTR(x) String::createFromAscii(x);
++#define STRTOCHAR(x) (char*) ByteString(x, RTL_TEXTENCODING_UTF8).GetBuffer()
++#define OUSTRTOCHAR(x) (OUStringToOString(x, RTL_TEXTENCODING_UTF8)).getStr()
++
++using namespace sd;
++using namespace ::com::sun::star;
++using ::uno::Reference;
++using ::uno::Sequence;
++using ::io::XOutputStream;
++using ::io::XInputStream;
++using namespace ::xml::dom;
++using namespace ::xml::sax;
++using namespace ::lang;
++using namespace ::sax_fastparser;
++
++
++/** xml tags used by the layoutlist class
++ * for reading and writing to the
++ * configuration file.
++ */
++
++static char sTopTag[] = "AutoLayoutInfo";
++static char sLListTag[] = "layoutList";
++static char sCountTag[] = "count";
++static char sStandardTag[] = "MenuStandard";
++static char sNotesTag[] = "MenuNotes";
++static char sHandoutTag[] = "MenuHandout";
++static char sNumTag[] = "number";
++
++LayoutList::LayoutList(bool testing)
++{
++ mbTesting = testing;
++
++ maLayoutList.reserve(50);
++ maStandard.reserve(50);
++ maHandout.reserve(50);
++ maNotes.reserve(50);
++ if(!mbTesting) readFromFile();
++}
++
++LayoutList::~LayoutList()
++{
++ sal_uInt32 size = length();
++ LayoutType* layout;
++
++ if(size == 0) return; // empty list
++
++ //first, save information to the config file
++ if(!mbTesting) writeToFile();
++
++ // delete objects in the list if
++ // they are there.
++ for(sal_uInt32 i = 0; i < size; i++)
++ {
++ layout = getLayoutByIndex(i);
++ if(layout)
++ {
++ // need to do clean up
++ // in the layout class
++ delete layout;
++ }
++ }
++
++ maLayoutList.clear();
++ maStandard.clear();
++ maNotes.clear();
++ maHandout.clear();
++
++}
++
++String* LayoutList::getConfigFile()
++{
++ rtl::OUString ousFilePath(rtl::OUString::createFromAscii(""));
++ rtl::OUString ousFileName(rtl::OUString::createFromAscii("/AutoLayout.xml"));
++ rtl::OUString ousConfigURL(rtl::OUString::createFromAscii(""));
++ osl::Security sec;
++ osl::FileBase convert;
++
++ sec.getConfigDir(ousConfigURL);
++
++ OSL_TRACE("AUTOLAYOUT CONFIG URL: %s", OUSTRTOCHAR(ousConfigURL ));
++ ousConfigURL += ousFileName;
++ convert.getSystemPathFromFileURL(ousConfigURL, ousFilePath);
++ String* psFilePath = new String(ousFilePath);
++
++ OSL_TRACE("AUTOLAYOUT CONFIG PATH/FILE: %s", OUSTRTOCHAR(ousFilePath));
++ return psFilePath;
++}
++
++void LayoutList::writeToFile()
++{
++ String* psFileName = getConfigFile();
++ StreamMode eMode = (STREAM_WRITE | STREAM_TRUNC);
++ SvFileStream fs(*psFileName, eMode);
++
++ if(fs.IsOpen())
++ {
++ LayoutType* layout;
++ static char sCountValue[4];
++ static char sNum[10];
++
++ sal_Int32 size = (sal_Int32) length();
++ utl::OOutputStreamWrapper* osw = new utl::OOutputStreamWrapper(fs);
++ Reference< XOutputStream > xos(osw);
++ FastSerializerHelper fsh(xos);
++
++ sprintf(sCountValue, "%d", (int) length());
++
++ fsh.startElement(sTopTag,NULL);
++ fsh.startElement(sLListTag, sCountTag, sCountValue, NULL);
++
++ for(sal_Int32 i=0; i < size; i++)
++ {
++ layout = getLayoutByIndex(i);
++ if(layout)
++ {
++ layout->writeLayoutToFile(fsh, i);
++ }
++ }
++
++ fsh.endElement(sLListTag);
++
++ fsh.startElement(sStandardTag, NULL);
++
++ for(sal_uInt32 i=0; i < maStandard.size(); i++)
++ {
++ sprintf(sNum,"%d", (int) maStandard[i]);
++ fsh.singleElement(sStandardTag, sNumTag, sNum, NULL);
++ }
++
++ fsh.endElement(sStandardTag);
++
++ fsh.startElement(sNotesTag,NULL);
++
++ for(sal_uInt32 i=0; i < maNotes.size(); i++)
++ {
++ sprintf(sNum,"%d", (int) maNotes[i]);
++ fsh.singleElement(sNotesTag, sNumTag, sNum, NULL);
++ }
++
++ fsh.endElement(sNotesTag);
++
++ fsh.startElement(sHandoutTag,NULL);
++
++ for(sal_uInt32 i=0; i < maHandout.size(); i++)
++ {
++ sprintf(sNum,"%d", (int) maHandout[i]);
++ fsh.singleElement(sHandoutTag, sNumTag, sNum, NULL);
++ }
++
++ fsh.endElement(sHandoutTag);
++
++ fsh.endElement(sTopTag);
++ }
++ fs.Close();
++ delete psFileName;
++
++}
++
++
++void LayoutList::readFromFile()
++{
++ sal_Int32 size, index;
++ String* psFileName = getConfigFile();
++ StreamMode eMode = STREAM_READ;
++ SvFileStream fs(*psFileName, eMode);
++
++ if(!fs.IsOpen())
++ {
++ OSL_TRACE("readFromFile: Cannot open autolayout config file %s", STRTOCHAR(*psFileName));
++ // For now, we'll create the builtins from code and write the config
++ // file out.
++ initializeList();
++ writeToFile();
++ return;
++ }
++
++ const Reference<XMultiServiceFactory> xServiceFactory( vcl::unohelper::GetMultiServiceFactory(), ::uno::UNO_QUERY );
++ rtl::OUString sServName = rtl::OUString::createFromAscii("com.sun.star.xml.dom.DocumentBuilder");
++ Reference<XDocumentBuilder> xDb( xServiceFactory->createInstance(sServName), ::uno::UNO_QUERY);
++ utl::OInputStreamWrapper* isw = new utl::OInputStreamWrapper(fs);
++ const Reference<XInputStream> xIs(isw);
++ const Reference<XDocument> xDom(xDb->parse(xIs), ::uno::UNO_QUERY_THROW );
++ const Reference<XElement> xElem( xDom->getDocumentElement(), ::uno::UNO_QUERY_THROW );
++ const Reference<XNodeList> topllist(xElem->getElementsByTagName(CHARTOOUSTR(sLListTag)));
++
++ // load the autolayout list
++ const Reference<XNode> llist = topllist->item(0);
++ const Reference<XNodeList> layouts = llist->getChildNodes();
++ size = layouts->getLength();
++ sal_Int32 llistsize = 0;
++ // need to get size of layout list (not necessarily size of
++ // layout).
++ if(llist->hasAttributes())
++ {
++ Reference<dom::XNamedNodeMap> attrlist = llist->getAttributes();
++ Reference<dom::XNode> enode = attrlist->getNamedItem(CHARTOOUSTR(sCountTag));
++ if(enode.is())
++ {
++ rtl::OUString sNum = enode->getNodeValue();
++ llistsize = sNum.toInt32();
++ }
++ }
++ OSL_TRACE("SIZE OF LIST %d", llistsize);
++ // create enough entries
++ maLayoutList.resize(llistsize, NULL);
++
++ // create a layout type for each entry.
++ for(sal_Int32 i=0; i < size; i++)
++ {
++ LayoutType* layout = new LayoutType();
++ Reference<XNode> alayout = layouts->item(i);
++ index = layout->readLayoutFromFile(alayout);
++ // Put into list where indicated
++ maLayoutList[index] = layout;
++ }
++
++ // get the menu order lists
++ // Standard menu list
++ const Reference<XNodeList> topStandardlist(xElem->getElementsByTagName(CHARTOOUSTR(sStandardTag)));
++
++ size = topStandardlist->getLength()-1;
++ //OSL_TRACE("SIZE OF MENU LIST %d", size);
++
++ maStandard.resize(size, 0);
++
++ // i = 1 because we need to skip 1st tag
++ for(sal_Int32 i=1; i < size+1; i++)
++ {
++ const Reference<XNode> entry = topStandardlist->item(i);
++ if(entry->hasAttributes())
++ {
++ Reference<dom::XNamedNodeMap> attrlist = entry->getAttributes();
++ Reference<dom::XNode> enode = attrlist->getNamedItem(CHARTOOUSTR(sNumTag));
++ if(enode.is())
++ {
++ rtl::OUString sNum = enode->getNodeValue();
++ index = sNum.toInt32();
++ maStandard[i-1] = (AutoLayout) index;
++ }
++
++ }
++ // OSL_TRACE("menu standard: %d = %d", i-1, (int) maStandard[i-1]);
++
++ }
++
++ const Reference<XNodeList> topNoteslist(xElem->getElementsByTagName(CHARTOOUSTR(sNotesTag)));
++ size = topNoteslist->getLength()-1;
++ maNotes.resize(size, 0);
++
++ for(sal_Int32 i=1; i < size+1; i++)
++ {
++ const Reference<XNode> entry = topNoteslist->item(i);
++ if(entry->hasAttributes())
++ {
++ Reference<dom::XNamedNodeMap> attrlist = entry->getAttributes();
++ Reference<dom::XNode> enode = attrlist->getNamedItem(CHARTOOUSTR(sNumTag));
++ if(enode.is())
++ {
++ rtl::OUString sNum = enode->getNodeValue();
++ index = sNum.toInt32();
++ maNotes[i-1] = (AutoLayout) index;
++ }
++
++ }
++ // OSL_TRACE("menu notes: %d = %d", i-1, (int) maNotes[i-1]);
++
++ }
++
++ const Reference<XNodeList> topHandoutlist(xElem->getElementsByTagName(CHARTOOUSTR(sHandoutTag)));
++ size = topHandoutlist->getLength()-1;
++ maHandout.resize(size, 0);
++
++ for(sal_Int32 i=1; i < size+1; i++)
++ {
++ const Reference<XNode> entry = topHandoutlist->item(i);
++ if(entry->hasAttributes())
++ {
++ Reference<dom::XNamedNodeMap> attrlist = entry->getAttributes();
++ Reference<dom::XNode> enode = attrlist->getNamedItem(CHARTOOUSTR(sNumTag));
++ if(enode.is())
++ {
++ rtl::OUString sNum = enode->getNodeValue();
++ index = sNum.toInt32();
++ maHandout[i-1] = (AutoLayout) index;
++ }
++
++ }
++ // OSL_TRACE("menu handout: %d = %d", i-1, (int) maHandout[i-1]);
++
++ }
++
++ fs.Close();
++
++ delete psFileName;
++
++
++}
++
++
++/** used for adding new custom layouts. */
++
++bool LayoutList::addLayout(LayoutType* pLayout,
++ const sal_Int32& menuIndex, const PageKind& eMenu)
++{
++ LayoutType* layout;
++ sal_Int32 idx;
++ bool bFoundAHole = false;
++
++ if(!layout) return false;
++
++ LString name = pLayout->getName();
++ idx = getLayoutIndex(name);
++ if(idx != LL_NOT_FOUND)
++ {
++ //DBG_ERROR("sd::LayoutList::addLayout(), given layout name already part of list!");
++ return false;
++ }
++
++ for(sal_uInt32 i = 0; i < length(); i++)
++ {
++ //looking for any places with NULL
++ layout = maLayoutList[i];
++ if(!layout)
++ {
++ bFoundAHole = true;
++ maLayoutList[i] = pLayout;
++ }
++ }
++
++ if(!bFoundAHole)
++ {
++ // push onto the back of the list
++ maLayoutList.push_back(pLayout);
++ }
++
++ //now, find where it was put
++ idx = getLayoutIndex(name);
++ // add this value to the given menu at the given location
++ addToMenuList(menuIndex, (AutoLayout) idx, eMenu);
++
++ return true;
++}
++
++
++void LayoutList::deleteLayoutFromList(const LString& sName)
++{
++ sal_Int32 index;
++ LayoutType* layout;
++
++ index = getLayoutIndex(sName);
++ if(index >= 0)
++ {
++ // make sure builtins don't get deleted from the list
++ // (waive this for testing purposes)
++ if((index >= AL_NUM_OF_BUILTINS)||(mbTesting))
++ {
++ // Since the indices will change if
++ // I use erase (the items get move up
++ // by one) and I don't want to reorder
++ // the list. So I'll just, set the space to
++ // to NULL and delete the object.
++ layout = maLayoutList[index];
++ maLayoutList[index] = NULL;
++ if(layout) delete layout;
++ }
++ // take out of the menu lists. (Builtins are just removed from
++ // menu lists).
++ removeFromMenuList((AutoLayout) index, PK_STANDARD);
++ removeFromMenuList((AutoLayout) index, PK_NOTES);
++ removeFromMenuList((AutoLayout) index, PK_HANDOUT);
++ }
++}
++
++
++sal_uInt32 LayoutList::length() const
++{
++ return maLayoutList.size();
++}
++
++sal_uInt32 LayoutList::numberOfLayouts() const
++{
++ sal_uInt32 count = 0;
++ unsigned int size = (unsigned int) length();
++
++ for(unsigned int i=0; i < size; i++)
++ {
++ if(maLayoutList[i] != NULL)
++ count++;
++ }
++ return count;
++}
++
++LayoutType* LayoutList::getLayoutByIndex(const sal_uInt32 nIndex)
++{
++ // check for valid index (no need to check for less than zero)
++ if(nIndex > length()-1) return NULL;
++
++ return maLayoutList[nIndex];
++
++}
++
++
++LayoutType* LayoutList::getLayoutByName(const LString& sName)
++{
++ LayoutType* pLayout=NULL;
++
++ for(sal_uInt32 i = 0; i < length(); i++)
++ {
++ if ((maLayoutList[i])&&(sName == maLayoutList[i]->getName()))
++ {
++ pLayout = maLayoutList[i];
++ break;
++ }
++ }
++
++ return pLayout;
++}
++
++sal_uInt32 LayoutList::getLayoutIndex(const LString& sName)
++{
++ sal_uInt32 idx = LL_NOT_FOUND;
++
++ for(unsigned int i = 0; i < length(); i++)
++ {
++ if((maLayoutList[i])&&(sName == maLayoutList[i]->getName()))
++ {
++ idx = (sal_Int32) i;
++ break;
++ }
++ }
++
++ return idx;
++}
++
++LayoutType* LayoutList::getLayoutAtMenuIndex(const sal_uInt32& nIndex,
++ const PageKind& eMenu)
++{
++ sal_uInt32 size = getMenuLength(eMenu);
++ sal_uInt32 index;
++
++ if(nIndex >= size) return NULL; //not a valid index
++
++ switch (eMenu) {
++
++ case PK_STANDARD: index = maStandard[nIndex];
++ break;
++ case PK_NOTES: index = maNotes[nIndex];
++ break;
++ case PK_HANDOUT: index = maHandout[nIndex];
++ break;
++ default: return NULL; // not a valid menu type
++
++ }
++
++ return maLayoutList[index];
++
++}
++
++sal_uInt32 LayoutList::getMenuIndex(const AutoLayout& nLayout,
++ const PageKind& nMenu)
++{
++ sal_uInt32 count = getMenuLength(nMenu);
++ sal_uInt32 idx = LL_NOT_FOUND;
++ MEListImpl* list = NULL;
++
++ for(sal_uInt32 i = 0; i < count; i++)
++ {
++ switch (nMenu) {
++ case PK_STANDARD: list = &maStandard;
++ break;
++ case PK_NOTES: list = &maNotes;
++ break;
++ case PK_HANDOUT: list = &maHandout;
++ break;
++ default: /* leave as NULL */;
++ }
++
++ if(list)
++ {
++ if((AutoLayout)(*list)[i] == nLayout)
++ {
++ idx = i;
++ break;
++ }
++ }
++ }
++
++ return idx;
++ }
++
++
++
++
++sal_uInt32 LayoutList::getMenuLength(const PageKind& eMenu)
++{
++ sal_uInt32 size;
++
++ switch (eMenu) {
++
++ case PK_STANDARD: size = maStandard.size();
++ break;
++ case PK_NOTES: size = maNotes.size();
++ break;
++ case PK_HANDOUT: size = maHandout.size();
++ break;
++ default: size = 0; // not a valid menu type
++ }
++
++ return size;
++}
++
++void LayoutList::removeFromMenuList(const AutoLayout& lnum,
++ const PageKind& eMenu)
++{
++ sal_uInt32 index = getMenuIndex(lnum, eMenu);
++
++ if(index == LL_NOT_FOUND) return;
++
++ switch (eMenu)
++ {
++ case PK_STANDARD: maStandard.erase(maStandard.begin()+index);
++ break;
++ case PK_NOTES: maNotes.erase(maNotes.begin()+index);
++ break;
++ case PK_HANDOUT: maHandout.erase(maHandout.begin()+index);
++ break;
++ }
++
++
++}
++
++void LayoutList::addToMenuList(const sal_Int32& index,
++ const AutoLayout& lnum,
++ const PageKind& eMenu)
++{
++ sal_Int32 size;
++ MEListImpl* list = NULL;
++
++ switch (eMenu)
++ {
++ case PK_STANDARD: list = &maStandard;
++ break;
++ case PK_NOTES: list = &maNotes;
++ break;
++ case PK_HANDOUT: list = &maHandout;
++ break;
++ }
++
++ if(list)
++ {
++ size = list->size();
++ if((index < 0)||(index >= size))
++ {
++ //if too low or too high an index
++ // then assign it to the back of
++ // the list
++ list->push_back(lnum);
++ }
++ else
++ {
++ // insert at the given index
++ list->insert(list->begin() + index, lnum);
++ }
++
++ }
++
++}
++
++
++Rectangle LayoutList::UNORectToRect(const ::awt::Rectangle& rect)
++{
++ Rectangle arect;
++
++ arect.SetSize(Size(rect.Width, rect.Height));
++ arect.SetPos(Point(rect.X, rect.Y));
++ return arect;
++}
++
++::awt::Rectangle LayoutList::RectToUNORect(const Rectangle& rect)
++{
++ ::awt::Rectangle awtrect;
++ Point pos;
++
++ pos= rect.TopLeft();
++ awtrect.X = pos.X();
++ awtrect.Y = pos.Y();
++ awtrect.Width = rect.GetWidth();
++ awtrect.Height = rect.GetHeight();
++
++ return awtrect;
++}
++
++ /** UNO implementation of interface XLayoutList
++ * for use with xmloff code
++ */
++Sequence< ::awt::Rectangle > SAL_CALL LayoutList::getAutoLayoutRectangles( sal_Int32 Index,
++ const ::awt::Rectangle& title,
++ const ::awt::Rectangle& layout,
++ const ::awt::Size& page,
++ sal_Bool bRightToLeft )
++ throw (::uno::RuntimeException)
++{
++ Sequence< ::awt::Rectangle > list;
++ LayoutType* alayout;
++ sal_uInt32 count;
++ Rectangle atitlerect;
++ Rectangle alayoutrect;
++ Size apage(page.Width, page.Height);
++
++ atitlerect = UNORectToRect(title);
++ alayoutrect = UNORectToRect(layout);
++
++ alayout = getLayoutByIndex(Index);
++ if(alayout)
++ {
++ count = alayout->length();
++ Rectangle rect[count];
++
++ alayout->calcAutoLayoutRectangles(atitlerect, alayoutrect,
++ apage, bRightToLeft, rect );
++ list.realloc(count);
++ for(sal_uInt32 i=0; i < count; i++)
++ {
++ list[i] = RectToUNORect(rect[i]);
++ }
++
++ }
++
++ return list;
++}
++
++void LayoutList::initializeMenuOrder()
++{
++ // this probably would be best store in a file too.
++ // for keeping track of menu order for builtins
++
++ maStandard.resize(25, LL_NOT_FOUND);
++ maNotes.resize(1, LL_NOT_FOUND);
++ maHandout.resize(6, LL_NOT_FOUND);
++
++ // will put custom layouts on the end:
++
++ // for standard view mode:
++ maStandard[0] = AUTOLAYOUT_NONE;
++ maStandard[1] = AUTOLAYOUT_TITLE;
++ maStandard[2] = AUTOLAYOUT_ENUM;
++ maStandard[3] = AUTOLAYOUT_2TEXT;
++ maStandard[4] = AUTOLAYOUT_ONLY_TITLE;
++ maStandard[5] = AUTOLAYOUT_ONLY_TEXT;
++ maStandard[6] = AUTOLAYOUT_OBJ;
++ maStandard[7] = AUTOLAYOUT_CHART;
++ maStandard[8] = AUTOLAYOUT_TAB;
++ maStandard[9] = AUTOLAYOUT_CLIPTEXT;
++ maStandard[10] = AUTOLAYOUT_TEXTCHART;
++ maStandard[11] = AUTOLAYOUT_TEXTCLIP;
++ maStandard[12] = AUTOLAYOUT_CHARTTEXT;
++ maStandard[13] = AUTOLAYOUT_TEXTOBJ;
++ maStandard[14] = AUTOLAYOUT_TEXT2OBJ;
++ maStandard[15] = AUTOLAYOUT_OBJTEXT;
++ maStandard[16] = AUTOLAYOUT_OBJOVERTEXT;
++ maStandard[17] = AUTOLAYOUT_2OBJTEXT;
++ maStandard[18] = AUTOLAYOUT_2OBJOVERTEXT;
++ maStandard[19] = AUTOLAYOUT_TEXTOVEROBJ;
++ maStandard[20] = AUTOLAYOUT_4OBJ;
++ maStandard[21] = AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART;
++ maStandard[22] = AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE;
++ maStandard[23] = AUTOLAYOUT_TITLE_VERTICAL_OUTLINE;
++ maStandard[24] = AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART;
++
++ //for notes view:
++ maNotes[0] = AUTOLAYOUT_NOTES;
++
++ //for handout:
++ maHandout[0] = AUTOLAYOUT_HANDOUT1;
++ maHandout[1] = AUTOLAYOUT_HANDOUT2;
++ maHandout[2] = AUTOLAYOUT_HANDOUT3;
++ maHandout[3] = AUTOLAYOUT_HANDOUT4;
++ maHandout[4] = AUTOLAYOUT_HANDOUT6;
++ maHandout[5] = AUTOLAYOUT_HANDOUT9;
++
++}
++
++void LayoutList::initializeList()
++{
++ LayoutType* pLayout;
++
++ initializeMenuOrder();
++
++ maLayoutList.resize(AL_NUM_OF_BUILTINS, NULL);
++
++ // AUTOLAYOUT_TITLE (standard title with text box)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TITLE)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TITLE);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_00_H);
++ pLayout->setLBitmapId(BMP_FOIL_00);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // text element
++ pLayout->setKind(1,PRESOBJ_TEXT);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TITLE] = pLayout;
++
++ // AUTOLAYOUT_ENUM (title and outline)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_ENUM)));
++ pLayout->setStrId(STR_AUTOLAYOUT_ENUM);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_01_H);
++ pLayout->setLBitmapId(BMP_FOIL_01);
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_ENUM] = pLayout;
++
++ // AUTOLAYOUT_CHART (title and Chart)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_CHART)));
++ pLayout->setStrId(STR_AUTOLAYOUT_CHART);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_02_H);
++ pLayout->setLBitmapId(BMP_FOIL_02);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // chart element
++ pLayout->setKind(1,PRESOBJ_CHART);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_CHART] = pLayout;
++
++ // AUTOLAYOUT_2TEXT (title and 2 outlines)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_2TEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_2TEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_03_H);
++ pLayout->setLBitmapId(BMP_FOIL_03);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline1 element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++
++ pLayout->createDefaultElement(); // outline2 element
++ pLayout->setKind(2,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_2TEXT] = pLayout;
++
++ // AUTOLAYOUT_TEXTCHART (title, outline and chart)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTCHART)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TEXTCHART);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_04_H);
++ pLayout->setLBitmapId(BMP_FOIL_04);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++
++ pLayout->createDefaultElement(); // chart element
++ pLayout->setKind(2,PRESOBJ_CHART);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TEXTCHART] = pLayout;
++
++ // AUTOLAYOUT_ORG (title and org. chart)
++ // This layout isn't even put into the menu!
++ // No string resource so for now, I'll borrow chart
++ // TODO: See if I can eliminate this if not being used.
++ pLayout = new LayoutType();
++ pLayout->setName(LString::CreateFromAscii(""));
++ pLayout->setStrId(-1);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_05_H); // guessing here :)
++ pLayout->setLBitmapId(BMP_FOIL_05);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // organ. chart element
++ pLayout->setKind(1,PRESOBJ_ORGCHART);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_ORG] = pLayout;
++
++ // AUTOLAYOUT_TEXTCLIP (title, outline and clipart (graphic))
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTCLIP)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TEXTCLIP);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_06_H);
++ pLayout->setLBitmapId(BMP_FOIL_06);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++
++ pLayout->createDefaultElement(); // picture element
++ pLayout->setKind(2,PRESOBJ_GRAPHIC);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TEXTCLIP] = pLayout;
++
++ // AUTOLAYOUT_CHARTTEXT (title, chart and outline)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_CHARTTEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_CHARTTEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_07_H);
++ pLayout->setLBitmapId(BMP_FOIL_07);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // chart element
++ pLayout->setKind(1,PRESOBJ_CHART);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(2,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_CHARTTEXT] = pLayout;
++
++ // AUTOLAYOUT_TAB (title and table)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TAB)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TAB);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_08_H);
++ pLayout->setLBitmapId(BMP_FOIL_08);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // table element
++ pLayout->setKind(1,PRESOBJ_TABLE);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TAB] = pLayout;
++
++ // AUTOLAYOUT_CLIPTEXT (title, clipart (graphic) and outline)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_CLIPTEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_CLIPTEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_09_H);
++ pLayout->setLBitmapId(BMP_FOIL_09);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // picture element
++ pLayout->setKind(1,PRESOBJ_GRAPHIC);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(2,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_CLIPTEXT] = pLayout;
++
++ // AUTOLAYOUT_TEXTOBJ (title, outline and object)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTOBJ)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TEXTOBJ);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_10_H);
++ pLayout->setLBitmapId(BMP_FOIL_10);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline1 element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++
++ pLayout->createDefaultElement(); // object element
++ pLayout->setKind(2,PRESOBJ_OBJECT);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TEXTOBJ] = pLayout;
++
++ // AUTOLAYOUT_OBJ (title and object)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_OBJ)));
++ pLayout->setStrId(STR_AUTOLAYOUT_OBJ);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_11_H);
++ pLayout->setLBitmapId(BMP_FOIL_11);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // object element
++ pLayout->setKind(1,PRESOBJ_OBJECT);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_OBJ] = pLayout;
++
++
++ // AUTOLAYOUT_TEXT2OBJ (title, outline and 2 objects)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXT2OBJ)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TEXT2OBJ);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_12_H);
++ pLayout->setLBitmapId(BMP_FOIL_12);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++
++ pLayout->createDefaultElement(); // object1 element
++ pLayout->setKind(2,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // object2 element
++ pLayout->setKind(3,PRESOBJ_OBJECT);
++ pLayout->initializeRectInfo(2); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TEXT2OBJ] = pLayout;
++
++ // AUTOLAYOUT_OBJTEXT (title, object and outline)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_OBJTEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_OBJTEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_13_H);
++ pLayout->setLBitmapId(BMP_FOIL_13);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // object element
++ pLayout->setKind(1,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(2,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(1); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_OBJTEXT] = pLayout;
++
++ // AUTOLAYOUT_OBJOVERTEXT (title, object over an outline)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_OBJOVERTEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_OBJOVERTEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_14_H);
++ pLayout->setLBitmapId(BMP_FOIL_14);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // object element
++ pLayout->setKind(1,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(2,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(4); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_OBJOVERTEXT] = pLayout;
++
++ // AUTOLAYOUT_2OBJTEXT (2 objects and an outline)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_2OBJTEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_2OBJTEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_15_H);
++ pLayout->setLBitmapId(BMP_FOIL_15);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // object1 element
++ pLayout->setKind(1,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // object2 element
++ pLayout->setKind(2,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(3,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(3); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_2OBJTEXT] = pLayout;
++
++ // AUTOLAYOUT_2OBJOVERTEXT (2 objects over the outline)
++
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_2OBJOVERTEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_2OBJOVERTEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_16_H);
++ pLayout->setLBitmapId(BMP_FOIL_16);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // object1 element
++ pLayout->setKind(1,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // object2 element
++ pLayout->setKind(2,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(3,PRESOBJ_OUTLINE);
++ pLayout->initializeRectInfo(5); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_2OBJOVERTEXT] = pLayout;
++
++ // AUTOLAYOUT_TEXTOVEROBJ (title, an outline over an object)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTOVEROBJ)));
++ pLayout->setStrId(STR_AUTOLAYOUT_TEXTOVEROBJ);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_17_H);
++ pLayout->setLBitmapId(BMP_FOIL_17);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++
++ pLayout->createDefaultElement(); // object element
++ pLayout->setKind(2,PRESOBJ_OBJECT);
++
++ pLayout->initializeRectInfo(4); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TEXTOVEROBJ] = pLayout;
++
++ // AUTOLAYOUT_4OBJ (title and 4 objects)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_4OBJ)));
++ pLayout->setStrId(STR_AUTOLAYOUT_4OBJ);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_18_H);
++ pLayout->setLBitmapId(BMP_FOIL_18);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // object1 element
++ pLayout->setKind(1,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // object2 element
++ pLayout->setKind(2,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // object3 element
++ pLayout->setKind(3,PRESOBJ_OBJECT);
++
++ pLayout->createDefaultElement(); // object4 element
++ pLayout->setKind(4,PRESOBJ_OBJECT);
++ pLayout->initializeRectInfo(6); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_4OBJ] = pLayout;
++
++ // AUTOLAYOUT_ONLY_TITLE (just a title)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_ONLY_TITLE)));
++ pLayout->setStrId(STR_AUTOLAYOUT_ONLY_TITLE);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_19_H);
++ pLayout->setLBitmapId(BMP_FOIL_19);
++
++ pLayout->createDefaultElement(); // title element
++ pLayout->initializeRectInfo(0);
++
++ maLayoutList[AUTOLAYOUT_ONLY_TITLE] = pLayout;
++
++ // AUTOLAYOUT_NONE (blank page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_NONE)));\
++ pLayout->setStrId(STR_AUTOLAYOUT_NONE);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_20_H);
++ pLayout->setLBitmapId(BMP_FOIL_20);
++
++ maLayoutList[AUTOLAYOUT_NONE] = pLayout;
++
++ // AUTOLAYOUT_NOTES (notes page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_NOTES)));
++ pLayout->setStrId(STR_AUTOLAYOUT_NOTES);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILN_01_H);
++ pLayout->setLBitmapId(BMP_FOILN_01);
++
++ pLayout->createDefaultElement(); // page element
++ pLayout->setKind(0,PRESOBJ_PAGE);
++ pLayout->setRecttype(0, RT_TITLE);
++
++ pLayout->createDefaultElement(); // notes element
++ pLayout->setKind(1,PRESOBJ_NOTES);
++ pLayout->setRecttype(1,RT_LAYOUT);
++
++ maLayoutList[AUTOLAYOUT_NOTES] = pLayout;
++
++ // AUTOLAYOUT_HANDOUT1 (1 page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT1)));
++ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT1);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILH_01_H);
++ pLayout->setLBitmapId(BMP_FOILH_01);
++
++ maLayoutList[AUTOLAYOUT_HANDOUT1] = pLayout;
++
++ // AUTOLAYOUT_HANDOUT2 (2 page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT2)));
++ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT2);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILH_02_H);
++ pLayout->setLBitmapId(BMP_FOILH_02);
++
++ maLayoutList[AUTOLAYOUT_HANDOUT2] = pLayout;
++
++ // AUTOLAYOUT_HANDOUT3 (3 page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT3)));
++ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT3);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILH_03_H);
++ pLayout->setLBitmapId(BMP_FOILH_03);
++
++ maLayoutList[AUTOLAYOUT_HANDOUT3] = pLayout;
++
++ // AUTOLAYOUT_HANDOUT4 (4 page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT4)));
++ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT4);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILH_04_H);
++ pLayout->setLBitmapId(BMP_FOILH_04);
++
++ maLayoutList[AUTOLAYOUT_HANDOUT4] = pLayout;
++
++ // AUTOLAYOUT_HANDOUT6 (6 page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT6)));
++ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT6);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILH_06_H);
++ pLayout->setLBitmapId(BMP_FOILH_06);
++
++ maLayoutList[AUTOLAYOUT_HANDOUT6] = pLayout;
++
++ // AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART (vertical title
++ // and outline with chart)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AL_VERT_TITLE_TEXT_CHART)));
++ pLayout->setStrId(STR_AL_VERT_TITLE_TEXT_CHART);
++ pLayout->setWritingMode(WritingMode_TB_RL);
++ pLayout->setHBitmapId(BMP_FOIL_21_H);
++ pLayout->setLBitmapId(BMP_FOIL_21);
++
++ pLayout->createDefaultElement(); // title element
++ pLayout->setVertical(0,true);
++ pLayout->setRecttype(0, RT_VERTICAL_TITLE);
++
++ pLayout->createDefaultElement(); // outline1 element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++ pLayout->setVertical(1, true);
++ pLayout->setRecttype(1, RT_VERTICAL_LAYOUT);
++
++ pLayout->createDefaultElement(); // chart element
++ pLayout->setKind(2,PRESOBJ_CHART);
++ pLayout->setRecttype(2, RT_VERTICAL_LAYOUT);
++ pLayout->initializeRectInfo(7); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART] = pLayout;
++
++ // AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AL_VERT_TITLE_VERT_OUTLINE)));
++ pLayout->setStrId(STR_AL_VERT_TITLE_VERT_OUTLINE);
++ pLayout->setWritingMode(WritingMode_TB_RL);
++ pLayout->setHBitmapId(BMP_FOIL_22_H);
++ pLayout->setLBitmapId(BMP_FOIL_22);
++
++ pLayout->createDefaultElement(); // title element
++ pLayout->setVertical(0,true);
++ pLayout->setRecttype(0,RT_VERTICAL_TITLE);
++
++ pLayout->createDefaultElement(); // outline1 element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++ pLayout->setVertical(1, true);
++ pLayout->setRecttype(1, RT_VERTICAL_LAYOUT);
++ pLayout->initializeRectInfo(8); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE] = pLayout;
++
++ // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AL_TITLE_VERT_OUTLINE)));
++ pLayout->setStrId(STR_AL_TITLE_VERT_OUTLINE);
++ pLayout->setWritingMode(WritingMode_TB_RL);
++ pLayout->setHBitmapId(BMP_FOIL_23_H);
++ pLayout->setLBitmapId(BMP_FOIL_23);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(1,PRESOBJ_OUTLINE);
++ pLayout->setVertical(1, true);
++ pLayout->setRecttype(1,RT_VERTICAL_LAYOUT);
++ pLayout->initializeRectInfo(0); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TITLE_VERTICAL_OUTLINE] = pLayout;
++
++
++ // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AL_TITLE_VERT_OUTLINE_CLIPART)));
++ pLayout->setStrId(STR_AL_TITLE_VERT_OUTLINE_CLIPART);
++ pLayout->setWritingMode(WritingMode_TB_RL);
++ pLayout->setHBitmapId(BMP_FOIL_24_H);
++ pLayout->setLBitmapId(BMP_FOIL_24);
++
++ pLayout->createDefaultElement(); // title element
++
++ pLayout->createDefaultElement(); // picture element
++ pLayout->setKind(1,PRESOBJ_GRAPHIC);
++ pLayout->setRecttype(1,RT_LAYOUT);
++
++ pLayout->createDefaultElement(); // outline element
++ pLayout->setKind(2,PRESOBJ_OUTLINE);
++ pLayout->setRecttype(2, RT_LAYOUT);
++ pLayout->setVertical(2, true);
++ pLayout->initializeRectInfo(9); // initialize each element
++
++ maLayoutList[AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART] = pLayout;
++
++ // AUTOLAYOUT_HANDOUT9 (9 per page)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT9)));
++ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT9);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOILH_09_H);
++ pLayout->setLBitmapId(BMP_FOILH_09);
++
++ maLayoutList[AUTOLAYOUT_HANDOUT9] = pLayout;
++
++ // AUTOLAYOUT_ONLY_TEXT (just a text box)
++ pLayout = new LayoutType();
++ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_ONLY_TEXT)));
++ pLayout->setStrId(STR_AUTOLAYOUT_ONLY_TEXT);
++ pLayout->setWritingMode(WritingMode_LR_TB);
++ pLayout->setHBitmapId(BMP_FOIL_25_H);
++ pLayout->setLBitmapId(BMP_FOIL_25);
++
++ pLayout->createDefaultElement(); // text element
++ pLayout->setKind(0,PRESOBJ_TEXT);
++ pLayout->setRecttype(0,RT_TEXT_ONLY);
++ pLayout->initializeRectInfo(10);
++
++ maLayoutList[AUTOLAYOUT_ONLY_TEXT] = pLayout;
++
++}
++
+diff -Nrup sd-m16/source/core/layouttype.cxx sd/source/core/layouttype.cxx
+--- sd-m16/source/core/layouttype.cxx 1969-12-31 16:00:00.000000000 -0800
++++ sd/source/core/layouttype.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -0,0 +1,840 @@
++/*************************************************************************
++ *
++ * 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: layouttype.cxx,v $
++ * $Revision: 0.1 $
++ *
++ * 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.
++ *
++ ************************************************************************/
++
++// MARKER(update_precomp.py): autogen include statement, do not remove
++#include "precompiled_sd.hxx"
++#include <tools/debug.hxx>
++#include <stdio.h>
++#include <com/sun/star/uno/Reference.hxx>
++#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
++#include "sdresid.hxx"
++#include "../source/ui/inc/res_bmp.hrc"
++#include "layouttype.hxx"
++
++#define CHARTOOUSTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
++#define CHATTOSTR(x) String::createFromAscii(x);
++#define STRTOCHAR(x) (char*) ByteString(x, RTL_TEXTENCODING_UTF8).GetBuffer()
++#define OUSTRTOCHAR(x) (OUStringToOString(x, RTL_TEXTENCODING_UTF8)).getStr()
++
++using namespace sd;
++using namespace ::sax_fastparser;
++using namespace ::com::sun::star::uno;
++using namespace ::com::sun::star::xml;
++
++/** xml tags used by the layoutlist class
++ * for reading and writing to the
++ * configuration file.
++ */
++
++static char sElemTag[] = "Element";
++static char sKindTag[] = "PresObjKind";
++static char sVerticalTag[] = "IsVertical";
++static char sFxTag[] = "XFactor";
++static char sFyTag[] = "YFactor";
++static char sFhtTag[] = "HtFactor";
++static char sFwtTag[] = "WtFactor";
++static char sRectTag[] = "RectType";
++static char sLayoutTag[] = "layout";
++static char sNumberTag[] = "number";
++static char sNameTag[] = "Name";
++static char sStrIdTag[] = "StrId";
++static char sWmTag[] = "WritingMode";
++static char sHBitmapTag[] = "HBitmapId";
++static char sLBitmapTag[] = "LBitmapId";
++static char sElemListTag[] = "ElementList";
++
++
++
++LayoutType::LayoutType() :
++ name(LString::CreateFromAscii("")),
++ nStrId(-1),
++ nWritingMode(WritingMode_LR_TB),
++ nHBitmapId(BMP_FOIL_01_H),
++ nLBitmapId(BMP_FOIL_01)
++{
++ elemList.reserve(20);
++}
++
++LayoutType::~LayoutType()
++{
++ sal_uInt32 size = elemList.size();
++
++ for(sal_uInt32 i = 0; i < size; i++)
++ {
++ deleteElement(i);
++ }
++
++ elemList.clear();
++}
++
++/** writes the element list for this layout to the config file */
++
++void LayoutType::writeElementTofile(FastSerializerHelper& fsh,
++ const sal_uInt32 i,
++ const char* sNumber,
++ const ElemType* elem)
++{
++
++
++ static char sElemNumber[10];
++ static char sKind[10];
++ static char sVertical[10];
++ static char sRect[10];
++ static char sFx[10];
++ static char sFy[10];
++ static char sHt[10];
++ static char sWt[10];
++
++
++ sprintf(sElemNumber,"%d", (int) i);
++ sprintf(sKind, "%d", (int) elem->kind); // the type of pres. object
++ sprintf(sVertical, "%d", ((elem->isVertical) ? 1 : 0));
++ sprintf(sFx, "%f", elem->factorX); // factor for finding topleft x value
++ sprintf(sFy,"%f", elem->factorY); // factor for finding topleft y value
++ sprintf(sHt,"%f", elem->factorHt); // factor for finding height
++ sprintf(sWt,"%f", elem->factorWt); // factor for finding width
++ sprintf(sRect, "%d", (int) elem->recttype); // type of standard rect to use
++
++ fsh.singleElement(sLayoutTag,
++ sElemTag, sElemNumber,
++ sNumberTag, sNumber,
++ sKindTag, sKind,
++ sVerticalTag, sVertical,
++ sFxTag, sFx,
++ sFyTag, sFy,
++ sFhtTag, sHt,
++ sFwtTag, sWt,
++ sRectTag, sRect, NULL);
++
++
++}
++
++/** writes this layout to a xml configuration file */
++
++void LayoutType::writeLayoutToFile(FastSerializerHelper& fsh, const sal_Int32 autolayout)
++{
++ static char sNumber[10];
++ static char sName[40];
++ static char sStrId[10];
++ static char sWm[10];
++ static char sHBitmap[10];
++ static char sLBitmap[10];
++
++ // write out layout information
++ sprintf(sNumber,"%d", (int) autolayout);
++ sprintf(sName,"%s", (char*) ByteString(name, RTL_TEXTENCODING_UTF8).GetBuffer());
++ sprintf(sStrId,"%d", (int) nStrId);
++ sprintf(sWm, "%d", (int) nWritingMode);
++ sprintf(sHBitmap, "%d", (int) nHBitmapId);
++ sprintf(sLBitmap, "%d", (int) nLBitmapId);
++
++ fsh.startElement(sLayoutTag, NULL);
++
++ fsh.singleElement(sLayoutTag, sNameTag, sName,
++ sNumberTag, sNumber,
++ sStrIdTag, sStrId,
++ sWmTag, sWm,
++ sHBitmapTag, sHBitmap,
++ sLBitmapTag, sLBitmap, NULL);
++
++
++ // write out element list
++ ElemType* elem;
++
++ fsh.startElement(sElemListTag, NULL);
++
++ for(sal_uInt32 i=0; i<length();i++)
++ {
++ elem = getElemByIndex(i);
++ if(elem) writeElementTofile(fsh, i, sNumber, elem);
++ }
++
++ fsh.endElement(sElemListTag);
++
++ fsh.endElement(sLayoutTag);
++
++}
++
++sal_Int32 LayoutType::getIntValue(const Reference<dom::XNode>& node)
++{
++ sal_Int32 num=0;
++
++ if(node.is())
++ {
++ rtl::OUString sStr= node->getNodeValue();
++ num = sStr.toInt32();
++ }
++
++ return num;
++}
++
++double LayoutType::getDoubleValue(const Reference<dom::XNode>& node)
++{
++ double dnum=0.0;
++
++ if(node.is())
++ {
++ rtl::OUString sStr= node->getNodeValue();
++ dnum = sStr.toDouble();
++ }
++
++ return dnum;
++
++}
++
++/** reads in the layout information from
++ * the configuration file
++ */
++
++sal_Int32 LayoutType::readLayoutFromFile(const Reference<dom::XNode>& node)
++{
++ sal_Int32 lnum=-1;
++ sal_Int32 num;
++ double dnum;
++ Reference<dom::XNodeList> topnodes = node->getChildNodes();
++ Reference<dom::XNode> layoutattrnode = topnodes->item(0);
++
++ if(layoutattrnode->hasAttributes())
++ {
++ Reference<dom::XNamedNodeMap> attrlist = layoutattrnode->getAttributes();
++
++ Reference<dom::XNode> anode = attrlist->getNamedItem(CHARTOOUSTR(sStrIdTag));
++ num = getIntValue(anode);
++ if(num > 0)
++ {
++ nStrId = num;
++ } else
++ {
++ nStrId = -1;
++ }
++ Reference<dom::XNode> nameNode = attrlist->getNamedItem(CHARTOOUSTR(sNameTag));
++ rtl::OUString sName = nameNode->getNodeValue();
++ name = LString::CreateFromAscii(OUSTRTOCHAR(sName));
++ //OSL_TRACE("AUTOLAYOUT NAME: %s", STRTOCHAR(name));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sWmTag));
++ nWritingMode = (WritingMode) getIntValue(anode);
++ //OSL_TRACE(" writing mode %d", (int) nWritingMode);
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sNumberTag));
++ lnum = getIntValue(anode);
++ //OSL_TRACE(" AutoLayout number %d", (int) lnum);
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sHBitmapTag));
++ nHBitmapId = getIntValue(anode);
++ //OSL_TRACE(" HBitmap ID: %d", (int) nHBitmapId);
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sLBitmapTag));
++ nLBitmapId = getIntValue(anode);
++ //OSL_TRACE(" LBitmap ID: %d", (int) nLBitmapId);
++
++ }
++
++ Reference<dom::XNode> elemlistnode = topnodes->item(1);
++ Reference<dom::XNodeList> elemnodes = elemlistnode->getChildNodes();
++ sal_Int32 elemsize;
++
++ elemsize = elemnodes->getLength();
++ //OSL_TRACE("NUMBER OF ELEM %d", elemsize);
++ for(sal_Int32 i=0; i < elemsize;i++)
++ {
++ Reference<dom::XNode> elemnode = elemnodes->item(i);
++ //OSL_TRACE("ELEMENT: %i", i);
++ if(elemnode->hasAttributes())
++ {
++ Reference<dom::XNamedNodeMap> attrlist = elemnode->getAttributes();
++
++ createDefaultElement();
++ Reference<dom::XNode> anode = attrlist->getNamedItem(CHARTOOUSTR(sKindTag));
++ num = getIntValue(anode);
++ setKind(i, (PresObjKind) num);
++ //OSL_TRACE(" Kind = %l", (long) getKind(i));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sVerticalTag));
++ num = getIntValue(anode);
++ bool bVert = (num ? true : false);
++ setVertical(i, bVert);
++ //OSL_TRACE(" isvertical = %d", (isVertical(i) ? 1 : 0));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sFxTag));
++ dnum = getDoubleValue(anode);
++ setFactorX(i, dnum);
++ //OSL_TRACE(" X = %f", factorX(i));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sFyTag));
++ dnum = getDoubleValue(anode);
++ setFactorY(i, dnum);
++ //OSL_TRACE(" Y = %f", factorY(i));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sFhtTag));
++ dnum = getDoubleValue(anode);
++ setFactorHt(i, dnum);
++ //OSL_TRACE(" Ht = %f", factorHt(i));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sFwtTag));
++ dnum = getDoubleValue(anode);
++ setFactorWt(i, dnum);
++ //OSL_TRACE(" Wt = %f", factorWt(i));
++
++ anode = attrlist->getNamedItem(CHARTOOUSTR(sRectTag));
++ num = getIntValue(anode);
++ setRecttype(i, (RectType) num);
++ //OSL_TRACE(" recttype = %d", recttype(i));
++
++ }
++
++ }
++ return lnum;
++
++}
++
++
++/** creates an element of type TITLE
++ * with default rect bounds.
++ * and puts it in the elem list
++ * at the end.
++ */
++
++void LayoutType::createDefaultElement()
++{
++ ElemType* elem = new ElemType;
++
++ elem->kind = PRESOBJ_TITLE;
++ elem->isVertical = false;
++ elem->factorX = 0.0;
++ elem->factorY = 0.0;
++ elem->factorHt = 1.0;
++ elem->factorWt = 1.0;
++ elem->recttype = RT_TITLE;
++
++ addElemToList(*elem);
++
++}
++
++/** Get functions for layout information */
++
++LString LayoutType::getName()
++{
++ return name;
++}
++
++sal_uInt32 LayoutType::getStrId()
++{
++ return nStrId;
++}
++
++WritingMode LayoutType::getWritingMode()
++ {
++ return nWritingMode;
++ }
++
++sal_uInt32 LayoutType::getHBitmapId()
++{
++ return nHBitmapId;
++}
++
++sal_uInt32 LayoutType::getLBitmapId()
++{
++ return nLBitmapId;
++}
++
++
++/** gets the element at the given index
++ * into the elem list
++ */
++
++ElemType* LayoutType::getElemByIndex(const sal_uInt32& nIndex)
++{
++ // check for valid index (no need to check for negative)
++ if(nIndex >= length()) return NULL;
++
++ return elemList[nIndex];
++}
++
++/** gets length of elem list. */
++
++sal_uInt32 LayoutType::length()
++{
++ return elemList.size();
++}
++
++/** these are get functions for the element list
++ * They require passing in the index at which
++ * the element is located in the list
++ */
++
++ PresObjKind LayoutType::getKind(const sal_uInt32& nIndex)
++ {
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->kind;
++ return PRESOBJ_NONE;
++
++ }
++
++
++bool LayoutType::isVertical(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->isVertical;
++ return false;
++}
++
++double LayoutType::factorX(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->factorX;
++ return 0.0;
++}
++
++double LayoutType::factorY(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->factorY;
++ return 0.0;
++}
++
++double LayoutType::factorHt(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->factorHt;
++ return 1.0;
++}
++
++double LayoutType::factorWt(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->factorWt;
++ return 1.0;
++}
++
++RectType LayoutType::recttype(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) return elem->recttype;
++ return RT_ERROR;
++}
++
++/** Set functions for the layout */
++
++void LayoutType::setName(const LString& sName)
++{
++ name = sName;
++}
++
++void LayoutType::setStrId(const sal_uInt32 id)
++{
++ nStrId = id;
++}
++
++void LayoutType::setWritingMode(const WritingMode& wmode)
++{
++ nWritingMode = wmode;
++}
++
++void LayoutType::setHBitmapId(const sal_uInt32& id)
++{
++ nHBitmapId = id;
++}
++
++void LayoutType::setLBitmapId(const sal_uInt32& id)
++{
++ nLBitmapId = id;
++}
++
++/** set functions for the elements in the
++ * list. Requires passing in the index
++ * in the list where the element is
++ * located
++ */
++
++void LayoutType::setKind(const sal_uInt32& nIndex, PresObjKind nKind)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->kind = nKind;
++}
++
++
++void LayoutType::setVertical(const sal_uInt32& nIndex, bool bVertical)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->isVertical = bVertical;
++}
++
++void LayoutType::setFactorX(const sal_uInt32& nIndex, double fx)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->factorX = fx;
++}
++
++void LayoutType::setFactorY(const sal_uInt32& nIndex, double fy)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->factorY = fy;
++}
++
++void LayoutType::setFactorHt(const sal_uInt32& nIndex, double ht)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->factorHt = ht;
++}
++
++void LayoutType::setFactorWt(const sal_uInt32& nIndex, double wt)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->factorWt = wt;
++}
++
++void LayoutType::setRecttype(const sal_uInt32& nIndex, RectType rect)
++{
++ ElemType* elem;
++ elem = getElemByIndex(nIndex);
++ if(elem) elem->recttype = rect;
++}
++
++/** adds a passed in element object to the
++ * back of the list
++ */
++
++void LayoutType::addElemToList(ElemType& rElement)
++{
++ elemList.push_back(&rElement);
++
++}
++
++/** deletes an element from the list
++ * This will move elements up
++ * from where they are
++ */
++
++void LayoutType::deleteElement(const sal_uInt32& nIndex)
++{
++ ElemType* elem;
++ if(nIndex >= length()) return;
++ elem = elemList[nIndex];
++ elemList.erase(elemList.begin() + nIndex);
++ if(elem) delete elem;
++}
++
++/** Helper function for initializing builtins
++ * based on a given number. To possibly be
++ * removed when the configuration files
++ * are created
++ */
++
++void LayoutType::initFromLayoutNumber(ElemType* elem,
++ const sal_uInt32& i,
++ const sal_uInt32& nLayout)
++{
++ Point ncpos(0,0); //no changes to position
++ Size ncsize(1,1); //no changes to size
++ Size size;
++ Point pos;
++
++ switch (nLayout)
++
++ {
++ case 9: // title and 2 vertical side by side layouts
++ case 1: // TITLE AND 2 side by side LAYOUTS
++ // for right to left switching if needed.
++ if(nLayout != 9) elem->recttype = RT_LAYOUT_SWITCH;
++ elem->factorWt = .488;
++ if(i == 2) elem->factorX = .5124;
++ break;
++ case 2: // TITLE on top, 1 right, 2 left layouts
++ elem->recttype = RT_LAYOUT_SWITCH; // for right to left switching
++ // if needed.
++ elem->factorWt = .488;
++ if((i == 2)||(i == 3)) //2 top to bot.
++ {
++ elem->factorHt = .477;
++ elem->factorX = .5124;
++ if(i == 3) elem->factorY = .5223;
++ }
++ break;
++ case 3: //TITLE, 2 right, 1 left layouts
++ elem->recttype = RT_LAYOUT_SWITCH; // for right to left switching
++ // if needed.
++ elem->factorWt = .488;
++ if((i == 1)||(i == 2)) //2 top to bot.
++ {
++ elem->factorHt = .477;
++ if(i == 2) elem->factorY = .5223;
++ }
++ if(i == 3) elem->factorX = .5124;
++ break;
++ case 4: //TITLE, 2 layouts top to bot.
++ elem->factorHt = .477;
++ if(i == 2) elem->factorY = .5223;
++ break;
++ case 5: //TITLE, 2 layouts above 1 layout
++ elem->factorHt = .477;
++ if(i != 3) elem->factorWt = .488;
++ if(i == 2) elem->factorX = .5124;
++ if(i == 3) elem->factorY = .5223;
++ break;
++ case 6: // 4 layouts (in a square)
++ elem->factorHt = .477;
++ elem->factorWt = .488;
++ if((i == 2)||(i == 3)) elem->factorX = .5124;
++ if((i == 3)||(i == 4)) elem->factorY = .5223;
++ break;
++ case 7: // a vertical title and two layouts (top to bottom)
++ elem->recttype = RT_VERTICAL_LAYOUT;
++ elem->factorHt = .47;
++ elem->factorWt = .7;
++ if(i == 2) elem->factorY = .53;
++ break;
++ case 8: // a vertical title and one shape
++ elem->recttype = RT_VERTICAL_LAYOUT;
++ elem->factorWt = .7;
++ break;
++ case 0:
++ default: break; /* do nothing */
++ } // switch nLayout
++
++}
++
++/** to be used when the user customizes
++ * an autolayout. It sets rect bounds
++ * factors based on the sizes of a standard
++ * title (for titles) or layout
++ * rectangle.
++ */
++
++
++void LayoutType::setCustomRectInfo(const sal_uInt32& nIndex,
++ const RectType& rType,
++ const Rectangle& rRect,
++ const Rectangle& rStandard)
++{
++ ElemType* elem;
++ double x, y, ht, wt;
++ double sx, sy, sht, swt;
++
++ // the actual rectangle
++ x = rRect.TopLeft().X();
++ y = rRect.TopLeft().Y();
++ ht = rRect.getHeight();
++ wt = rRect.getWidth();
++
++ // the standard to use
++ // to get rel. size factors
++ sx = rStandard.TopLeft().X();
++ sy = rStandard.TopLeft().Y();
++ sht = rStandard.getHeight();
++ swt = rStandard.getWidth();
++
++ elem = getElemByIndex(nIndex);
++ if(elem)
++ {
++ elem->recttype = rType;
++ elem->factorHt = ht/sht;
++ elem->factorWt = wt/swt;
++ elem->factorX = (x - sx)/swt;
++ elem->factorY = (y - sy)/sht;
++ }
++
++}
++
++/** for initializing rect bounds factors
++ * for builtins. To be removed once the
++ * configuration file is implemented.
++ */
++
++void LayoutType::initializeRectInfo(const sal_uInt32& nLayout)
++{
++ ElemType* elem;
++ //Point ncpos(0,0); //no changes to position
++ //Size ncsize(1,1); //no changes to size
++ //Size size;
++ //Point pos;
++
++ for(sal_uInt32 i=0; i < length();i++)
++ {
++ elem = getElemByIndex(i);
++ if(!elem) continue;
++ if(elem->kind == PRESOBJ_NONE) continue;
++ // default to doing nothing with
++ // the position and size.
++ // this will work for 1/2 the
++ // builtins (ones with 0 )
++ // and works with some values
++ // for the others.
++ elem->factorX = 0.0;
++ elem->factorY = 0.0;
++ elem->factorHt = 1.0;
++ elem->factorWt = 1.0;
++ switch(elem->kind) {
++ case PRESOBJ_TITLE:
++ if(elem->isVertical)
++ {
++ elem->recttype = RT_VERTICAL_TITLE;
++ }
++ else
++ {
++ elem->recttype = RT_TITLE;
++ }
++ break;
++ case PRESOBJ_TEXT:
++ if(nLayout == 10) //TEXT_ONLY
++ {
++ elem->recttype = RT_TEXT_ONLY;
++ break;
++ }
++ case PRESOBJ_OUTLINE:
++ case PRESOBJ_GRAPHIC:
++ case PRESOBJ_OBJECT:
++ case PRESOBJ_CHART:
++ case PRESOBJ_TABLE:
++ elem->recttype = RT_LAYOUT;
++ initFromLayoutNumber(elem,i, nLayout);
++ break;
++ case PRESOBJ_NONE:
++ case PRESOBJ_ORGCHART:
++ case PRESOBJ_IMAGE:
++ case PRESOBJ_BACKGROUND:
++ case PRESOBJ_PAGE:
++ case PRESOBJ_HANDOUT:
++ case PRESOBJ_NOTES:
++ case PRESOBJ_HEADER:
++ case PRESOBJ_FOOTER:
++ case PRESOBJ_DATETIME:
++ case PRESOBJ_SLIDENUMBER:
++ case PRESOBJ_MAX:
++ default: break; /* do nothing. all the above handled elsewhere */
++ } //switch nKind
++ } // for
++
++}
++
++/** the function called by sdpage.cxx to get rect bounds
++ * from the factors for each element.
++ */
++
++void LayoutType::calcAutoLayoutRectangles(const Rectangle& aTitleRect,
++ const Rectangle& aLayoutRect,
++ const Size& aPageSize,
++ const bool& bRightToLeft,
++ Rectangle* pRectangle )
++{
++ ElemType* elem;
++ sal_uInt32 count = length();
++ long x,y,ht,wt;
++ long pageHt, pageWt;
++ long vtx, vty, vtht, vtwt;
++ long tx, ty, lx, ly;
++
++ pageHt = aLayoutRect.BottomLeft().Y() - aTitleRect.TopLeft().Y();
++ pageWt = aPageSize.getWidth();
++ vtx = aTitleRect.TopRight().X()-aTitleRect.getHeight();
++ vty = aTitleRect.TopRight().Y();
++ vtht = pageHt;
++ vtwt = aTitleRect.getHeight();
++ tx = aTitleRect.TopLeft().X();
++ ty = aTitleRect.TopLeft().Y();
++ lx = aLayoutRect.TopLeft().X();
++ ly = aLayoutRect.TopLeft().Y();
++
++ for(sal_uInt32 i=0; i < count;i++)
++ {
++ elem = getElemByIndex(i);
++ if(!elem) continue;
++ if(elem->kind == PRESOBJ_NONE) continue;
++ switch (elem->recttype)
++ {
++ case RT_TITLE:
++ x = (long) tx + aTitleRect.getWidth()*elem->factorX;
++ y = (long) ty + aTitleRect.getHeight()*elem->factorY;
++ ht = (long) aTitleRect.getHeight()*elem->factorHt;
++ wt = (long) aTitleRect.getWidth()*elem->factorWt;
++ break;
++ case RT_VERTICAL_TITLE:
++ x = vtx;
++ y = vty;
++ ht = vtht;
++ wt = vtwt;
++ break;
++ case RT_VERTICAL_LAYOUT: // need vertical title
++ ht = vtht*elem->factorHt;
++ wt = pageWt*elem->factorWt;
++ x = tx + vtwt*elem->factorX;
++ y = ty + vtht*elem->factorY;
++ break;
++ case RT_TEXT_ONLY: // this takes up the whole page.
++ ht = pageHt;
++ wt = aTitleRect.getWidth();
++ x = tx;
++ y = ty;
++ break;
++ case RT_LAYOUT:
++ case RT_LAYOUT_SWITCH:
++ default: // use layout as default
++ x = (long) lx + aLayoutRect.getWidth()*elem->factorX;
++ y = (long) ly + aLayoutRect.getHeight()*elem->factorY;
++ ht = (long) aLayoutRect.getHeight()*elem->factorHt;
++ wt = (long) aLayoutRect.getWidth()*elem->factorWt;
++ }
++
++ pRectangle[i] = Rectangle(Point(x,y), Size(wt, ht));
++ }
++
++ if((bRightToLeft)&&(elem->recttype == RT_LAYOUT_SWITCH))
++ {
++ switch (count)
++ {
++ case 3: //2 shapes, switch these
++ ::std::swap< Rectangle >( pRectangle[1], pRectangle[2] );
++ break;
++ case 4: //3 shapes, rotate
++ ::std::swap< long >( pRectangle[1].Left(), pRectangle[2].Left() );
++ pRectangle[3].Left() = pRectangle[2].Left();
++ break;
++ default: break; /* do nothing */
++ }
++
++ }
++
++
++}
++
++
+diff -Nrup sd-m16/source/core/makefile.mk sd/source/core/makefile.mk
+--- sd-m16/source/core/makefile.mk 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/core/makefile.mk 2009-07-25 19:36:23.000000000 -0700
+@@ -57,6 +57,8 @@ SLOFILES = $(SLO)$/stlsheet.obj \
+ $(SLO)$/drawdoc3.obj \
+ $(SLO)$/drawdoc4.obj \
+ $(SLO)$/drawdoc_animations.obj\
++ $(SLO)$/layoutlist.obj \
++ $(SLO)$/layouttype.obj \
+ $(SLO)$/sdpage.obj \
+ $(SLO)$/sdpage2.obj \
+ $(SLO)$/sdattr.obj \
+diff -Nrup sd-m16/source/core/sdpage.cxx sd/source/core/sdpage.cxx
+--- sd-m16/source/core/sdpage.cxx 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/core/sdpage.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -1058,261 +1058,10 @@ Rectangle SdPage::GetLayoutRect() const
+ |*
+ \*************************************************************************/
+
+-const int MAX_PRESOBJS = 5; // maximum number of presentation objects per layout
+-const int VERTICAL = 0x8000;
+-
+-struct LayoutDescriptor
+-{
+- int mnLayout;
+- PresObjKind meKind[MAX_PRESOBJS];
+- bool mbVertical[MAX_PRESOBJS];
+-
+- LayoutDescriptor( int nLayout, int k0 = 0, int k1 = 0, int k2 = 0, int k3 = 0, int k4 = 0 );
+-};
+-
+-LayoutDescriptor::LayoutDescriptor( int nLayout, int k0, int k1, int k2, int k3, int k4 )
+-: mnLayout( nLayout )
+-{
+- meKind[0] = static_cast<PresObjKind>(k0 & (~VERTICAL)); mbVertical[0] = (k0 & VERTICAL) == VERTICAL;
+- meKind[1] = static_cast<PresObjKind>(k1 & (~VERTICAL)); mbVertical[1] = (k1 & VERTICAL) == VERTICAL;
+- meKind[2] = static_cast<PresObjKind>(k2 & (~VERTICAL)); mbVertical[2] = (k2 & VERTICAL) == VERTICAL;
+- meKind[3] = static_cast<PresObjKind>(k3 & (~VERTICAL)); mbVertical[3] = (k3 & VERTICAL) == VERTICAL;
+- meKind[4] = static_cast<PresObjKind>(k4 & (~VERTICAL)); mbVertical[4] = (k4 & VERTICAL) == VERTICAL;
+-}
+-
+-static const LayoutDescriptor& GetLayoutDescriptor( AutoLayout eLayout )
+-{
+- static LayoutDescriptor aLayouts[AUTOLAYOUT__END-AUTOLAYOUT__START] =
+- {
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_TEXT ), // AUTOLAYOUT_TITLE
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OUTLINE ), // AUTOLAYOUT_ENUM
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_CHART ), // AUTOLAYOUT_CHART
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OUTLINE ), // AUTOLAYOUT_2TEXT
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_CHART ), // AUTOLAYOUT_TEXTCHART
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_ORGCHART ), // AUTOLAYOUT_ORG
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_GRAPHIC ), // AUTOLAYOUT_TEXTCLbIP
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_CHART, PRESOBJ_OUTLINE ), // AUTOLAYOUT_CHARTTEXT
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_TABLE ), // AUTOLAYOUT_TAB
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_GRAPHIC, PRESOBJ_OUTLINE ), // AUTOLAYOUT_CLIPTEXT
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OBJECT ), // AUTOLAYOUT_TEXTOBJ
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OBJECT ), // AUTOLAYOUT_OBJ
+- LayoutDescriptor( 2, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OBJECT, PRESOBJ_OBJECT ), // AUTOLAYOUT_TEXT2OBJ
+- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_TEXTOBJ
+- LayoutDescriptor( 4, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_OBJOVERTEXT
+- LayoutDescriptor( 3, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_2OBJTEXT
+- LayoutDescriptor( 5, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_2OBJOVERTEXT
+- LayoutDescriptor( 4, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OBJECT ), // AUTOLAYOUT_TEXTOVEROBJ
+- LayoutDescriptor( 6, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OBJECT, // AUTOLAYOUT_4OBJ
+- PRESOBJ_OBJECT, PRESOBJ_OBJECT ),
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_NONE ), // AUTOLAYOUT_ONLY_TITLE
+- LayoutDescriptor( 0, PRESOBJ_NONE ), // AUTOLAYOUT_NONE
+- LayoutDescriptor( 0, PRESOBJ_PAGE, PRESOBJ_NOTES ), // AUTOLAYOUT_NOTES
+- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT1
+- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT2
+- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT3
+- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT4
+- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT6
+- LayoutDescriptor( 7, PRESOBJ_TITLE|VERTICAL, PRESOBJ_OUTLINE|VERTICAL, PRESOBJ_CHART ),// AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART
+- LayoutDescriptor( 8, PRESOBJ_TITLE|VERTICAL, PRESOBJ_OUTLINE|VERTICAL ), // AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
+- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OUTLINE|VERTICAL ), // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
+- LayoutDescriptor( 9, PRESOBJ_TITLE, PRESOBJ_GRAPHIC, PRESOBJ_OUTLINE|VERTICAL ), // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
+- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT9
+- LayoutDescriptor( 10, PRESOBJ_TEXT, PRESOBJ_NONE ) // AUTOLAYOUT_ONLY_TEXT
+- };
+-
+- if( (eLayout < AUTOLAYOUT__START) || (eLayout >= AUTOLAYOUT__END) )
+- eLayout = AUTOLAYOUT_NONE;
+-
+- return aLayouts[ eLayout - AUTOLAYOUT__START ];
+-}
+-
+-static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRectangle )
++void findAutoLayoutShapesImpl( SdPage& rPage, LayoutType* layout, std::vector< SdrObject* >& rShapes, bool bInit )
+ {
+- Rectangle aTitleRect;
+- Rectangle aLayoutRect;
+-
+- if( rPage.GetPageKind() != PK_HANDOUT )
+- {
+- SdPage& rMasterPage = static_cast<SdPage&>(rPage.TRG_GetMasterPage());
+- SdrObject* pMasterTitle = rMasterPage.GetPresObj( PRESOBJ_TITLE );
+- SdrObject* pMasterOutline = rMasterPage.GetPresObj( rPage.GetPageKind()==PK_NOTES ? PRESOBJ_NOTES : PRESOBJ_OUTLINE );
+-
+- if( pMasterTitle )
+- aTitleRect = pMasterTitle->GetLogicRect();
+-
+- if (aTitleRect.IsEmpty() )
+- aTitleRect = rPage.GetTitleRect();
+-
+- if( pMasterOutline )
+- aLayoutRect = pMasterOutline->GetLogicRect();
+-
+- if (aLayoutRect.IsEmpty() )
+- aLayoutRect = rPage.GetLayoutRect();
+- }
+-
+- rRectangle[0] = aTitleRect;
+-
+- int i;
+- for( i = 1; i < MAX_PRESOBJS; i++ )
+- rRectangle[i] = aLayoutRect;
+-
+- Size aTitleSize( aTitleRect.GetSize() );
+- Point aTitlePos( aTitleRect.TopLeft() );
+- Size aLayoutSize( aLayoutRect.GetSize() );
+- Point aLayoutPos( aLayoutRect.TopLeft() );
+- Size aTempSize;
+- Point aTempPnt;
+-
+- sal_Bool bRightToLeft = ( rPage.GetModel() && static_cast< SdDrawDocument* >( rPage.GetModel() )->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB );
+-
+- switch( nLayout )
+- {
+- case 0: // default layout using only the title and layout area
+- break; // do nothing
+- case 1: // title, 2 shapes
+- case 9: // title, 2 vertical shapes
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
+- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- if( bRightToLeft && (nLayout != 9) )
+- ::std::swap< Rectangle >( rRectangle[1], rRectangle[2] );
+- break;
+- case 2: // title, shape, 2 shapes
+- aTempPnt = aLayoutPos;
+- aTempSize = aLayoutSize;
+- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
+- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
+- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos = aTempPnt;
+- aLayoutSize = aTempSize;
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- if( bRightToLeft )
+- {
+- ::std::swap< long >( rRectangle[1].Left(), rRectangle[2].Left() );
+- rRectangle[3].Left() = rRectangle[2].Left();
+- }
+- break;
+- case 3: // title, 2 shapes, shape
+- aTempPnt = aLayoutPos;
+- aTempSize = aLayoutSize;
+- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
+- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos = aTempPnt;
+- aLayoutSize = aTempSize;
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
+- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- if( bRightToLeft )
+- {
+- ::std::swap< long >( rRectangle[1].Left(), rRectangle[2].Left() );
+- rRectangle[3].Left() = rRectangle[2].Left();
+- }
+- break;
+- case 4: // title, shape above shape
+- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
+- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
+- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+- break;
+-
+- case 5: // title, 2 shapes above shape
+- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aTempPnt = aLayoutPos;
+- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
+- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.X() = aTempPnt.X();
+- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
+- aLayoutSize.Width() = long (aLayoutSize.Width() / 0.488);
+- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
+- break;
+- case 6: // title, 4 shapes
+- {
+- ULONG nX = long (aLayoutPos.X());
+-
+- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
+- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
+- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.X() = long (nX + aLayoutSize.Width() * 1.05);
+- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
+- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
+-
+- aLayoutPos.X() = nX;
+- rRectangle[4] = Rectangle (aLayoutPos, aLayoutSize);
+- break;
+- }
+- case 7: // vertical title, shape above shape
+- {
+- Size aSize( rRectangle[0].GetSize().Height(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
+- rRectangle[0].SetSize( aSize );
+- rRectangle[0].SetPos( aTitleRect.TopRight() - Point( aSize.Width(), 0 ) );
+-
+- Size aPageSize ( rPage.GetSize() );
+- aPageSize.Height() -= rPage.GetUppBorder() + rPage.GetLwrBorder();
+- aSize.Height() = long ( rRectangle[0].GetSize().Height() * 0.47 );
+- aSize.Width() = long( aPageSize.Width() * 0.7 );
+- rRectangle[1].SetPos( aTitleRect.TopLeft() );
+- rRectangle[1].SetSize( aSize );
+-
+- aSize.Height() = rRectangle[0].GetSize().Height();
+- Point aPos( aTitleRect.TopLeft() );
+- aPos.Y() += long ( aSize.Height() * 0.53 );
+- rRectangle[2].SetPos( aPos );
+- aSize.Height() = long ( rRectangle[0].GetSize().Height() * 0.47 );
+- rRectangle[2].SetSize( aSize );
+- break;
+- }
+- case 8: // vertical title, shape
+- {
+- Size aSize( rRectangle[0].GetSize().Height(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
+- rRectangle[0].SetSize( aSize );
+- rRectangle[0].SetPos( aTitleRect.TopRight() - Point( aSize.Width(), 0 ) );
+-
+- Size aPageSize ( rPage.GetSize() );
+- aPageSize.Height() -= rPage.GetUppBorder() + rPage.GetLwrBorder();
+- aSize.Height() = rRectangle[0].GetSize().Height();
+- aSize.Width() = long( aPageSize.Width() * 0.7 );
+- rRectangle[1].SetPos( aTitleRect.TopLeft() );
+- rRectangle[1].SetSize( aSize );
+- break;
+- }
+- case 10: // onlytext
+- {
+- Size aSize( rRectangle[0].GetSize().Width(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
+- rRectangle[0].SetSize( aSize );
+- rRectangle[0].SetPos( aTitlePos);
+- break;
+- }
+- }
+-}
+-
+-
+-void findAutoLayoutShapesImpl( SdPage& rPage, const LayoutDescriptor& rDescriptor, std::vector< SdrObject* >& rShapes, bool bInit )
+-{
+- int i;
++ int i, elemcount = layout->length();
++ PresObjKind eKind;
+
+ // init list of indexes for each presentation shape kind
+ // this is used to find subsequent shapes with the same presentation shape kind
+@@ -1321,10 +1070,16 @@ void findAutoLayoutShapesImpl( SdPage& r
+
+ bool bMissing = false;
+
+- // for each entry in the layoutdescriptor, arrange a presentation shape
+- for( i = 0; (i < PRESOBJ_MAX) && (rDescriptor.meKind[i] != PRESOBJ_NONE); i++ )
++ if(layout)
+ {
+- PresObjKind eKind = rDescriptor.meKind[i];
++ // for each entry in the element list, arrange a presentation shape
++ for( i = 0; i < elemcount ; i++ )
++ {
++ eKind = layout->getKind(i);
++ if (eKind == PRESOBJ_NONE)
++ {
++ continue;
++ }
+ SdrObject* pObj = rPage.GetPresObj( eKind, PresObjIndex[eKind] );
+ if( pObj )
+ {
+@@ -1339,14 +1094,17 @@ void findAutoLayoutShapesImpl( SdPage& r
+
+ if( bMissing && bInit )
+ {
+- // for each entry in the layoutdescriptor, look for an alternative shape
+- for( i = 0; (i < PRESOBJ_MAX) && (rDescriptor.meKind[i] != PRESOBJ_NONE); i++ )
+- {
++ // for each entry in the element list, look for an alternative shape
++ for( i = 0; i < elemcount; i++ )
++ {
++ eKind = layout->getKind(i);
++ if(eKind == PRESOBJ_NONE)
++ {
++ continue;
++ }
+ if( rShapes[i] )
+ continue;
+
+- PresObjKind eKind = rDescriptor.meKind[i];
+-
+ SdrObject* pObj = 0;
+ bool bFound = false;
+
+@@ -1411,10 +1169,10 @@ void findAutoLayoutShapesImpl( SdPage& r
+ bFound = true;
+ }
+ }
+- }
+- }
+- }
+- }
++ } // if(pPersist...
++ }// else if (rGetModel...
++ } // if(pOle2..
++ }// if(eSdrObjKind...
+ break;
+ case PRESOBJ_CHART:
+ case PRESOBJ_TABLE:
+@@ -1434,7 +1192,7 @@ void findAutoLayoutShapesImpl( SdPage& r
+ }
+ }
+ break;
+- }
++ }
+ break;
+ case PRESOBJ_PAGE:
+ case PRESOBJ_HANDOUT:
+@@ -1446,13 +1204,14 @@ void findAutoLayoutShapesImpl( SdPage& r
+ break;
+ default:
+ break;
+- }
+- }
++ } // switch (eKind)...
++ } // while(nShapesIndex...
+
+ if( bFound )
+ rShapes[i] = pObj;
+- }
+- }
++ } // for(i = 0; i < elemcount..
++ } // if(bMissing && bInit..
++ } // if(layout)...
+ }
+
+ void SdPage::SetAutoLayout(AutoLayout eLayout, BOOL bInit, BOOL bCreate )
+@@ -1472,64 +1231,107 @@ void SdPage::SetAutoLayout(AutoLayout eL
+ // MasterPage or no layout and no presentation shapes available, noting to do
+ return;
+ }
+-
+- Rectangle aRectangle[MAX_PRESOBJS];
+- const LayoutDescriptor& aDescriptor = GetLayoutDescriptor( meAutoLayout );
+- CalcAutoLayoutRectangles( *this, aDescriptor.mnLayout, aRectangle );
+-
+- std::set< SdrObject* > aUsedPresentationObjects;
+-
+-
+- std::vector< SdrObject* > aLayoutShapes(PRESOBJ_MAX, 0);
+- findAutoLayoutShapesImpl( *this, aDescriptor, aLayoutShapes, bInit );
+-
+- int i;
+-
+- // for each entry in the layoutdescriptor, arrange a presentation shape
+- for( i = 0; (i < PRESOBJ_MAX) && (aDescriptor.meKind[i] != PRESOBJ_NONE); i++ )
+- {
+- PresObjKind eKind = aDescriptor.meKind[i];
+- SdrObject* pObj = InsertAutoLayoutShape( aLayoutShapes[i], eKind, aDescriptor.mbVertical[i], aRectangle[i], bInit );
+- if( pObj )
+- aUsedPresentationObjects.insert(pObj); // remember that we used this empty shape
+- }
+-
+- // now delete all empty presentation objects that are no longer used by the new layout
+- if( bInit )
+- {
+- SdrObject* pObj = maPresentationShapeList.getNextShape(0);
+-
+- while( pObj )
+- {
+- SdrObject* pNext = maPresentationShapeList.getNextShape(pObj);
+- if( aUsedPresentationObjects.count(pObj) == 0 )
+- {
+-
+- if( pObj->IsEmptyPresObj() )
+- {
+- if( bUndo )
+- pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
+-
+- RemoveObject( pObj->GetOrdNum() );
+-
+- if( !bUndo )
+- SdrObject::Free( pObj );
+- }
+- else
+- {
+- if( bUndo )
+- {
+- pUndoManager->AddUndoAction( new UndoObjectPresentationKind( *pObj ) );
+- if( pObj->GetUserCall() )
+- pUndoManager->AddUndoAction( new UndoObjectUserCall( *pObj ) );
+- }
+- maPresentationShapeList.removeShape( *pObj );
+- pObj->SetUserCall(0);
+- }
+- }
+- pObj = pNext;
+- }
+- }
++
++ // get this layout from list
++ LayoutList* list = GetLayoutList();
++ LayoutType* layout = NULL;
++ layout = list->getLayoutByIndex(meAutoLayout);
++ if(layout)
++ {
++ int i, elemcount = layout->length();
++ PresObjKind eKind;
++ PageKind ePKind = GetPageKind();
++ Rectangle aRectangle[elemcount];
++ Rectangle aTitleRect;
++
++ Rectangle aLayoutRect;
++ Size aPageSize = GetSize();
++ bool bRightToLeft = ( GetModel() && static_cast< SdDrawDocument* >( GetModel() )->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB );
++
++
++ if( ePKind != PK_HANDOUT )
++ {
++ SdPage& rMasterPage = static_cast<SdPage&>(TRG_GetMasterPage());
++ SdrObject* pMasterTitle = rMasterPage.GetPresObj( PRESOBJ_TITLE );
++ SdrObject* pMasterOutline = rMasterPage.GetPresObj( ePKind==PK_NOTES ? PRESOBJ_NOTES : PRESOBJ_OUTLINE );
++
++ if( pMasterTitle )
++ aTitleRect = pMasterTitle->GetLogicRect();
++
++
++ if (aTitleRect.IsEmpty() )
++ aTitleRect = GetTitleRect();
++
++ if( pMasterOutline )
++ aLayoutRect = pMasterOutline->GetLogicRect();
++
++ if (aLayoutRect.IsEmpty() )
++ aLayoutRect = GetLayoutRect();
++
++ }
++ layout->calcAutoLayoutRectangles(aTitleRect, aLayoutRect,
++ aPageSize, bRightToLeft, aRectangle );
++
++ std::set< SdrObject* > aUsedPresentationObjects;
++
++ std::vector< SdrObject* > aLayoutShapes(PRESOBJ_MAX, 0);
++ findAutoLayoutShapesImpl( *this, layout, aLayoutShapes, bInit );
++
++ // for each entry in the element list, arrange a presentation shape
++ for( i = 0; i < elemcount; i++ )
++ {
++ eKind = layout->getKind(i);
++ if (eKind == PRESOBJ_NONE)
++ {
++ continue;
++ }
++
++ SdrObject* pObj = InsertAutoLayoutShape( aLayoutShapes[i], eKind, layout->isVertical(i), aRectangle[i], bInit );
++
++ if( pObj )
++ aUsedPresentationObjects.insert(pObj); // remember that we used this empty shape
++ }
++
++ // now delete all empty presentation objects that are no longer used by the new layout
++ if( bInit )
++ {
++ SdrObject* pObj = maPresentationShapeList.getNextShape(0);
++
++ while( pObj )
++ {
++ SdrObject* pNext = maPresentationShapeList.getNextShape(pObj);
++ if( aUsedPresentationObjects.count(pObj) == 0 )
++ {
++
++ if( pObj->IsEmptyPresObj() )
++ {
++ if( bUndo )
++ pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
++
++ RemoveObject( pObj->GetOrdNum() );
++
++ if( !bUndo )
++ SdrObject::Free( pObj );
++ }
++ else
++ {
++ if( bUndo )
++ {
++ pUndoManager->AddUndoAction( new UndoObjectPresentationKind( *pObj ) );
++ if( pObj->GetUserCall() )
++ pUndoManager->AddUndoAction( new UndoObjectUserCall( *pObj ) );
++ }
++ maPresentationShapeList.removeShape( *pObj );
++ pObj->SetUserCall(0);
++ }
++ }
++ pObj = pNext;
++ } // while(pObj...
++ } // if(bInit...
++
++ } else { // no autolayout object found.
++ DBG_ERROR("SetAutoLayout: no autolayout object found.");
++ }
+ }
+
+ /*************************************************************************
+diff -Nrup sd-m16/source/filter/ppt/pptin.cxx sd/source/filter/ppt/pptin.cxx
+--- sd-m16/source/filter/ppt/pptin.cxx 2009-07-25 19:25:17.000000000 -0700
++++ sd/source/filter/ppt/pptin.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -1097,7 +1097,7 @@ sal_Bool ImplSdPPTImport::Import()
+ ////////////////////
+ SetPageNum( i, PPT_SLIDEPAGE );
+ SdPage* pPage = mpDoc->GetSdPage( i, PK_STANDARD );
+- AutoLayout eAutoLayout = AUTOLAYOUT_NONE;
++ sd::AutoLayout eAutoLayout = AUTOLAYOUT_NONE;
+ const PptSlideLayoutAtom* pSlideLayout = GetSlideLayoutAtom();
+ if ( pSlideLayout )
+ {
+diff -Nrup sd-m16/source/filter/ppt/pptin.hxx sd/source/filter/ppt/pptin.hxx
+--- sd-m16/source/filter/ppt/pptin.hxx 2009-07-25 19:25:17.000000000 -0700
++++ sd/source/filter/ppt/pptin.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -38,6 +38,7 @@
+ #include <svx/msfiltertracer.hxx>
+ #include <com/sun/star/uno/Any.h>
+ #include <boost/shared_ptr.hpp>
++#include "layoutlist.hxx"
+
+ class SdDrawDocument;
+ class SfxMedium;
+diff -Nrup sd-m16/source/ui/func/unprlout.cxx sd/source/ui/func/unprlout.cxx
+--- sd-m16/source/ui/func/unprlout.cxx 2009-07-25 19:25:15.000000000 -0700
++++ sd/source/ui/func/unprlout.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -54,8 +54,8 @@ SdPresentationLayoutUndoAction::SdPresen
+ SdDrawDocument* pTheDoc,
+ String aTheOldLayoutName,
+ String aTheNewLayoutName,
+- AutoLayout eTheOldAutoLayout,
+- AutoLayout eTheNewAutoLayout,
++ sd::AutoLayout eTheOldAutoLayout,
++ sd::AutoLayout eTheNewAutoLayout,
+ BOOL bSet,
+ SdPage* pThePage):
+ SdUndoAction(pTheDoc)
+diff -Nrup sd-m16/source/ui/inc/unmodpg.hxx sd/source/ui/inc/unmodpg.hxx
+--- sd-m16/source/ui/inc/unmodpg.hxx 2009-07-25 19:25:15.000000000 -0700
++++ sd/source/ui/inc/unmodpg.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -33,6 +33,7 @@
+
+ #include "sdundo.hxx"
+ #include "pres.hxx"
++#include "layoutlist.hxx"
+
+ class SdDrawDocument;
+ class SdPage;
+@@ -45,8 +46,8 @@ class ModifyPageUndoAction : public SdUn
+ SdPage* mpPage;
+ String maOldName;
+ String maNewName;
+- AutoLayout meOldAutoLayout;
+- AutoLayout meNewAutoLayout;
++ sd::AutoLayout meOldAutoLayout;
++ sd::AutoLayout meNewAutoLayout;
+ BOOL mbOldBckgrndVisible;
+ BOOL mbNewBckgrndVisible;
+ BOOL mbOldBckgrndObjsVisible;
+@@ -61,7 +62,7 @@ public:
+ SdDrawDocument* pTheDoc,
+ SdPage* pThePage,
+ String aTheNewName,
+- AutoLayout eTheNewAutoLayout,
++ sd::AutoLayout eTheNewAutoLayout,
+ BOOL bTheNewBckgrndVisible,
+ BOOL bTheNewBckgrndObjsVisible);
+
+diff -Nrup sd-m16/source/ui/inc/unprlout.hxx sd/source/ui/inc/unprlout.hxx
+--- sd-m16/source/ui/inc/unprlout.hxx 2009-07-25 19:25:15.000000000 -0700
++++ sd/source/ui/inc/unprlout.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -32,7 +32,8 @@
+ #define _SD_UNPRLOUT_HXX
+
+ #include "sdundo.hxx"
+-#include "pres.hxx" // enum AutoLayout
++#include "pres.hxx"
++#include "layoutlist.hxx"
+
+ class SdDrawDocument;
+ class SdPage;
+@@ -41,8 +42,8 @@ class SdPresentationLayoutUndoAction : p
+ {
+ String aOldLayoutName;
+ String aNewLayoutName;
+- AutoLayout eOldAutoLayout;
+- AutoLayout eNewAutoLayout;
++ sd::AutoLayout eOldAutoLayout;
++ sd::AutoLayout eNewAutoLayout;
+ BOOL bSetAutoLayout; // TRUE: AutoLayout aendern
+ SdPage* pPage;
+ String aComment;
+@@ -52,8 +53,8 @@ public:
+ SdPresentationLayoutUndoAction(SdDrawDocument* pTheDoc,
+ String aTheOldLayoutName,
+ String aTheNewLayoutName,
+- AutoLayout eTheOldAutoLayout,
+- AutoLayout eTheNewAutoLayout,
++ sd::AutoLayout eTheOldAutoLayout,
++ sd::AutoLayout eTheNewAutoLayout,
+ BOOL bSet,
+ SdPage* pThePage);
+
+diff -Nrup sd-m16/source/ui/inc/ViewShellImplementation.hxx sd/source/ui/inc/ViewShellImplementation.hxx
+--- sd-m16/source/ui/inc/ViewShellImplementation.hxx 2009-07-25 19:25:15.000000000 -0700
++++ sd/source/ui/inc/ViewShellImplementation.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -34,6 +34,7 @@
+ #include "ViewShell.hxx"
+ #include "ViewShellManager.hxx"
+ #include "ToolBarManager.hxx"
++#include "layoutlist.hxx"
+
+ #include <boost/shared_ptr.hpp>
+ #include <boost/weak_ptr.hpp>
+@@ -129,7 +130,7 @@ public:
+ */
+ void AssignLayout (
+ SdPage* pPage,
+- AutoLayout aLayout);
++ sd::AutoLayout aLayout);
+
+ /** Determine the view id of the view shell. This corresponds to the
+ view id stored in the SfxViewFrame class.
+diff -Nrup sd-m16/source/ui/slidesorter/controller/SlsSlotManager.cxx sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+--- sd-m16/source/ui/slidesorter/controller/SlsSlotManager.cxx 2009-07-25 19:25:16.000000000 -0700
++++ sd/source/ui/slidesorter/controller/SlsSlotManager.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -248,7 +248,7 @@ void SlotManager::FuTemporary (SfxReques
+ pShell->mpImpl->AssignLayout(
+ pDocument->GetSdPage((USHORT)pWhatPage->GetValue(),
+ mrSlideSorter.GetModel().GetPageType()),
+- (AutoLayout)pWhatLayout->GetValue());
++ (sd::AutoLayout)pWhatLayout->GetValue());
+ rRequest.Done ();
+ }
+ break;
+diff -Nrup sd-m16/source/ui/toolpanel/LayoutMenu.cxx sd/source/ui/toolpanel/LayoutMenu.cxx
+--- sd-m16/source/ui/toolpanel/LayoutMenu.cxx 2009-07-25 19:25:16.000000000 -0700
++++ sd/source/ui/toolpanel/LayoutMenu.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -129,99 +129,6 @@ SFX_IMPL_INTERFACE(LayoutMenu, SfxShell,
+
+ TYPEINIT1(LayoutMenu, SfxShell);
+
+-struct snewfoil_value_info
+-{
+- USHORT mnBmpResId;
+- USHORT mnHCBmpResId;
+- USHORT mnStrResId;
+- WritingMode meWritingMode;
+- AutoLayout maAutoLayout;
+-};
+-
+-static snewfoil_value_info notes[] =
+-{
+- {BMP_FOILN_01, BMP_FOILN_01_H, STR_AUTOLAYOUT_NOTES, WritingMode_LR_TB,
+- AUTOLAYOUT_NOTES},
+- {0, 0, 0, WritingMode_LR_TB, AUTOLAYOUT_NONE},
+-};
+-
+-static snewfoil_value_info handout[] =
+-{
+- {BMP_FOILH_01, BMP_FOILH_01_H, STR_AUTOLAYOUT_HANDOUT1, WritingMode_LR_TB,
+- AUTOLAYOUT_HANDOUT1},
+- {BMP_FOILH_02, BMP_FOILH_02_H, STR_AUTOLAYOUT_HANDOUT2, WritingMode_LR_TB,
+- AUTOLAYOUT_HANDOUT2},
+- {BMP_FOILH_03, BMP_FOILH_03_H, STR_AUTOLAYOUT_HANDOUT3, WritingMode_LR_TB,
+- AUTOLAYOUT_HANDOUT3},
+- {BMP_FOILH_04, BMP_FOILH_04_H, STR_AUTOLAYOUT_HANDOUT4, WritingMode_LR_TB,
+- AUTOLAYOUT_HANDOUT4},
+- {BMP_FOILH_06, BMP_FOILH_06_H, STR_AUTOLAYOUT_HANDOUT6, WritingMode_LR_TB,
+- AUTOLAYOUT_HANDOUT6},
+- {BMP_FOILH_09, BMP_FOILH_09_H, STR_AUTOLAYOUT_HANDOUT9, WritingMode_LR_TB,
+- AUTOLAYOUT_HANDOUT9},
+- {0, 0, 0, WritingMode_LR_TB, AUTOLAYOUT_NONE},
+-};
+-
+-static snewfoil_value_info standard[] =
+-{
+- {BMP_FOIL_20, BMP_FOIL_20_H, STR_AUTOLAYOUT_NONE, WritingMode_LR_TB,
+- AUTOLAYOUT_NONE},
+- {BMP_FOIL_00, BMP_FOIL_00_H, STR_AUTOLAYOUT_TITLE, WritingMode_LR_TB,
+- AUTOLAYOUT_TITLE},
+- {BMP_FOIL_01, BMP_FOIL_01_H, STR_AUTOLAYOUT_ENUM, WritingMode_LR_TB,
+- AUTOLAYOUT_ENUM},
+- {BMP_FOIL_03, BMP_FOIL_03_H, STR_AUTOLAYOUT_2TEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_2TEXT},
+- {BMP_FOIL_19, BMP_FOIL_19_H, STR_AUTOLAYOUT_ONLY_TITLE, WritingMode_LR_TB,
+- AUTOLAYOUT_ONLY_TITLE},
+- {BMP_FOIL_25, BMP_FOIL_25_H, STR_AUTOLAYOUT_ONLY_TEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_ONLY_TEXT},
+- {BMP_FOIL_11, BMP_FOIL_11_H, STR_AUTOLAYOUT_OBJ, WritingMode_LR_TB,
+- AUTOLAYOUT_OBJ},
+- {BMP_FOIL_02, BMP_FOIL_02_H, STR_AUTOLAYOUT_CHART, WritingMode_LR_TB,
+- AUTOLAYOUT_CHART},
+- {BMP_FOIL_08, BMP_FOIL_08_H, STR_AUTOLAYOUT_TAB, WritingMode_LR_TB,
+- AUTOLAYOUT_TAB},
+- {BMP_FOIL_09, BMP_FOIL_09_H, STR_AUTOLAYOUT_CLIPTEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_CLIPTEXT},
+- {BMP_FOIL_04, BMP_FOIL_04_H, STR_AUTOLAYOUT_TEXTCHART, WritingMode_LR_TB,
+- AUTOLAYOUT_TEXTCHART},
+- {BMP_FOIL_06, BMP_FOIL_06_H, STR_AUTOLAYOUT_TEXTCLIP, WritingMode_LR_TB,
+- AUTOLAYOUT_TEXTCLIP},
+- {BMP_FOIL_07, BMP_FOIL_07_H, STR_AUTOLAYOUT_CHARTTEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_CHARTTEXT},
+- {BMP_FOIL_10, BMP_FOIL_10_H, STR_AUTOLAYOUT_TEXTOBJ, WritingMode_LR_TB,
+- AUTOLAYOUT_TEXTOBJ},
+- {BMP_FOIL_12, BMP_FOIL_12_H, STR_AUTOLAYOUT_TEXT2OBJ, WritingMode_LR_TB,
+- AUTOLAYOUT_TEXT2OBJ},
+- {BMP_FOIL_13, BMP_FOIL_13_H, STR_AUTOLAYOUT_OBJTEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_OBJTEXT},
+- {BMP_FOIL_14, BMP_FOIL_14_H, STR_AUTOLAYOUT_OBJOVERTEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_OBJOVERTEXT},
+- {BMP_FOIL_15, BMP_FOIL_15_H, STR_AUTOLAYOUT_2OBJTEXT, WritingMode_LR_TB,
+- AUTOLAYOUT_2OBJTEXT},
+- {BMP_FOIL_16, BMP_FOIL_16_H, STR_AUTOLAYOUT_2OBJOVERTEXT,
+- WritingMode_LR_TB, AUTOLAYOUT_2OBJOVERTEXT},
+- {BMP_FOIL_17, BMP_FOIL_17_H, STR_AUTOLAYOUT_TEXTOVEROBJ, WritingMode_LR_TB,
+- AUTOLAYOUT_TEXTOVEROBJ},
+- {BMP_FOIL_18, BMP_FOIL_18_H, STR_AUTOLAYOUT_4OBJ, WritingMode_LR_TB,
+- AUTOLAYOUT_4OBJ},
+- // vertical
+- {BMP_FOIL_21, BMP_FOIL_21_H, STR_AL_VERT_TITLE_TEXT_CHART,
+- WritingMode_TB_RL, AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART},
+- {BMP_FOIL_22, BMP_FOIL_22_H, STR_AL_VERT_TITLE_VERT_OUTLINE,
+- WritingMode_TB_RL, AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE},
+- {BMP_FOIL_23, BMP_FOIL_23_H, STR_AL_TITLE_VERT_OUTLINE, WritingMode_TB_RL,
+- AUTOLAYOUT_TITLE_VERTICAL_OUTLINE},
+- {BMP_FOIL_24, BMP_FOIL_24_H, STR_AL_TITLE_VERT_OUTLINE_CLIPART,
+- WritingMode_TB_RL, AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART},
+-
+- {0, 0, 0, WritingMode_LR_TB, AUTOLAYOUT_NONE}
+-};
+-
+-
+-
+-
+ LayoutMenu::LayoutMenu (
+ TreeNode* pParent,
+ DrawDocShell& rDocumentShell,
+@@ -763,43 +670,77 @@ void LayoutMenu::Fill (void)
+ catch (RuntimeException&)
+ {}
+
+- snewfoil_value_info* pInfo = NULL;
++ LayoutList* list = GetLayoutList();
++ PageKind eMenu;
++ bool aViewExists = true;
++ LayoutType* layout;
++
+ if (sCenterPaneViewName.equals(framework::FrameworkHelper::msNotesViewURL))
+ {
+- pInfo = notes;
++ eMenu = PK_NOTES;
+ }
+ else if (sCenterPaneViewName.equals(framework::FrameworkHelper::msHandoutViewURL))
+ {
+- pInfo = handout;
++ eMenu = PK_HANDOUT;
+ }
+ else if (sCenterPaneViewName.equals(framework::FrameworkHelper::msImpressViewURL)
+ || sCenterPaneViewName.equals(framework::FrameworkHelper::msSlideSorterURL))
+ {
+- pInfo = standard;
++ eMenu = PK_STANDARD;
+ }
+ else
+ {
+- pInfo = NULL;
++ eMenu = PK_STANDARD;
++ aViewExists = false;
+ }
+
+ Clear();
+- int n = 0;
+- for (sal_uInt16 i=1; pInfo!=NULL&&pInfo->mnBmpResId!=0; i++,pInfo++)
+- {
+- if ((WritingMode_TB_RL != pInfo->meWritingMode) || bVertical)
+- {
+- BitmapEx aBmp (SdResId (bHighContrast
+- ? pInfo->mnHCBmpResId
+- : pInfo->mnBmpResId));
+-
+- if (bRightToLeft && (WritingMode_TB_RL != pInfo->meWritingMode))
+- aBmp.Mirror (BMP_MIRROR_HORZ);
+-
+- InsertItem (i, aBmp, String (SdResId (pInfo->mnStrResId)));
+- SetItemData (i, new AutoLayout(pInfo->maAutoLayout));
+- n++;
+- }
+- }
++
++ WritingMode wm;
++ AutoLayout lnum;
++ sal_uInt32 index;
++ sal_uInt32 resId;
++ sal_uInt32 Hbitmap, Lbitmap;
++ LString name;
++
++ sal_uInt32 size = list->getMenuLength(eMenu);
++
++ index = 1;
++ if (aViewExists) {
++ for (sal_uInt16 i=0; i < size; i++)
++ {
++ layout = list->getLayoutAtMenuIndex(i,eMenu);
++ if(layout)
++ {
++ name = layout->getName();
++ lnum = list->getLayoutIndex(name);
++ if(lnum == LL_NOT_FOUND)
++ {
++ continue;
++ }
++ resId = layout->getStrId();
++ if(resId != -1) // if it has an ID, pull string from resource.
++ {
++ name = SdResId(resId);
++ }
++ wm = layout->getWritingMode();
++ Hbitmap = layout->getHBitmapId();
++ Lbitmap = layout->getLBitmapId();
++ if((wm != WritingMode_TB_RL) || bVertical)
++ {
++ BitmapEx aBmp (SdResId (bHighContrast
++ ? Hbitmap
++ : Lbitmap));
++ if(bRightToLeft && (wm != WritingMode_TB_RL))
++ aBmp.Mirror(BMP_MIRROR_HORZ);
++ InsertItem (index, aBmp, name);
++ SetItemData (index, new AutoLayout(lnum));
++ index++;
++
++ } //if wm...
++ } //if layout..
++ } // for...
++ } // if (aViewExists...
+
+ mbSelectionUpdatePending = true;
+ }
+@@ -904,9 +845,7 @@ void LayoutMenu::UpdateSelection (void)
+
+ // Get layout of current page.
+ AutoLayout aLayout (pCurrentPage->GetAutoLayout());
+- if (aLayout<AUTOLAYOUT__START || aLayout>AUTOLAYOUT__END)
+- break;
+-
++
+ // Find the entry of the menu for to the layout.
+ USHORT nItemCount (GetItemCount());
+ for (USHORT nId=1; nId<=nItemCount; nId++)
+diff -Nrup sd-m16/source/ui/toolpanel/LayoutMenu.hxx sd/source/ui/toolpanel/LayoutMenu.hxx
+--- sd-m16/source/ui/toolpanel/LayoutMenu.hxx 2009-07-25 19:25:16.000000000 -0700
++++ sd/source/ui/toolpanel/LayoutMenu.hxx 2009-07-25 19:36:23.000000000 -0700
+@@ -39,6 +39,7 @@
+
+ #include "glob.hxx"
+ #include "pres.hxx"
++#include "layoutlist.hxx"
+ #include <vcl/ctrl.hxx>
+ #include <svtools/valueset.hxx>
+ #include <svtools/transfer.hxx>
+@@ -198,7 +199,7 @@ private:
+ If no slide sorter is active then this call is ignored. The slide
+ sorter in the center pane is preferred if the choice exists.
+ */
+- void AssignLayoutToSelectedSlides (AutoLayout aLayout);
++ void AssignLayoutToSelectedSlides (sd::AutoLayout aLayout);
+
+ /** Insert a new page with the given layout. The page is inserted via
+ the main view shell, i.e. its SID_INSERTPAGE slot is called. It it
+@@ -206,7 +207,7 @@ private:
+ place. The new page is inserted after the currently active one (the
+ one returned by ViewShell::GetActualPage().)
+ */
+- void InsertPageWithLayout (AutoLayout aLayout);
++ void InsertPageWithLayout (sd::AutoLayout aLayout);
+
+ /** Create a request structure that can be used with the SID_INSERTPAGE
+ and SID_MODIFYPAGE slots. The parameters are set so that the given
+@@ -218,7 +219,7 @@ private:
+ */
+ SfxRequest CreateRequest (
+ USHORT nSlotId,
+- AutoLayout aLayout);
++ sd::AutoLayout aLayout);
+
+ /** Select the layout that is used by the current page.
+ */
+diff -Nrup sd-m16/source/ui/unoidl/unopage.cxx sd/source/ui/unoidl/unopage.cxx
+--- sd-m16/source/ui/unoidl/unopage.cxx 2009-07-25 19:25:14.000000000 -0700
++++ sd/source/ui/unoidl/unopage.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -536,7 +536,7 @@ void SAL_CALL SdGenericDrawPage::setProp
+ GetPage()->SetPresChange( (PresChange)nValue );
+ break;
+ case WID_PAGE_LAYOUT:
+- GetPage()->SetAutoLayout( (AutoLayout)nValue, sal_True );
++ GetPage()->SetAutoLayout( (sd::AutoLayout)nValue, sal_True );
+ break;
+ case WID_PAGE_DURATION:
+ GetPage()->SetTime((sal_uInt32)nValue);
+diff -Nrup sd-m16/source/ui/view/unmodpg.cxx sd/source/ui/view/unmodpg.cxx
+--- sd-m16/source/ui/view/unmodpg.cxx 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/ui/view/unmodpg.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -63,7 +63,7 @@ ModifyPageUndoAction::ModifyPageUndoActi
+ SdDrawDocument* pTheDoc,
+ SdPage* pThePage,
+ String aTheNewName,
+- AutoLayout eTheNewAutoLayout,
++ sd::AutoLayout eTheNewAutoLayout,
+ BOOL bTheNewBckgrndVisible,
+ BOOL bTheNewBckgrndObjsVisible)
+ : SdUndoAction(pTheDoc),
+diff -Nrup sd-m16/source/ui/view/viewshe3.cxx sd/source/ui/view/viewshe3.cxx
+--- sd-m16/source/ui/view/viewshe3.cxx 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/ui/view/viewshe3.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -293,33 +293,20 @@ SdPage* ViewShell::CreateOrDuplicatePage
+ SFX_REQUEST_ARG (rRequest, pIsPageBack, SfxBoolItem, ID_VAL_ISPAGEBACK, FALSE);
+ SFX_REQUEST_ARG (rRequest, pIsPageObj, SfxBoolItem, ID_VAL_ISPAGEOBJ, FALSE);
+
+- if (CHECK_RANGE (AUTOLAYOUT__START, (AutoLayout) pLayout->GetValue (), AUTOLAYOUT__END))
++ if (ePageKind == PK_NOTES)
+ {
+- if (ePageKind == PK_NOTES)
+- {
+- aNotesPageName = pPageName->GetValue ();
+- eNotesLayout = (AutoLayout) pLayout->GetValue ();
+- }
+- else
+- {
+- aStandardPageName = pPageName->GetValue ();
+- eStandardLayout = (AutoLayout) pLayout->GetValue ();
+- }
+-
+- bIsPageBack = pIsPageBack->GetValue ();
+- bIsPageObj = pIsPageObj->GetValue ();
++ aNotesPageName = pPageName->GetValue ();
++ eNotesLayout = (AutoLayout) pLayout->GetValue ();
+ }
+ else
+ {
+- Cancel();
+-
+- if(HasCurrentFunction( SID_BEZIER_EDIT ) )
+- GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
+-
+- StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
+- rRequest.Ignore ();
+- return NULL;
++ aStandardPageName = pPageName->GetValue ();
++ eStandardLayout = (AutoLayout) pLayout->GetValue ();
+ }
++
++ bIsPageBack = pIsPageBack->GetValue ();
++ bIsPageObj = pIsPageObj->GetValue ();
++
+ }
+
+ // 2. Create a new page or duplicate an existing one.
+diff -Nrup sd-m16/source/ui/view/ViewShellImplementation.cxx sd/source/ui/view/ViewShellImplementation.cxx
+--- sd-m16/source/ui/view/ViewShellImplementation.cxx 2009-07-25 19:25:13.000000000 -0700
++++ sd/source/ui/view/ViewShellImplementation.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -227,20 +227,12 @@ void ViewShell::Implementation::ProcessM
+ SFX_REQUEST_ARG (rRequest, pBVisible, SfxBoolItem, ID_VAL_ISPAGEBACK, FALSE);
+ SFX_REQUEST_ARG (rRequest, pBObjsVisible, SfxBoolItem, ID_VAL_ISPAGEOBJ, FALSE);
+ AutoLayout aLayout ((AutoLayout)pNewAutoLayout->GetValue ());
+- if (aLayout >= AUTOLAYOUT__START
+- && aLayout < AUTOLAYOUT__END)
+- {
+- aNewName = pNewName->GetValue ();
+- aNewAutoLayout = (AutoLayout) pNewAutoLayout->GetValue ();
+- bBVisible = pBVisible->GetValue ();
+- bBObjsVisible = pBObjsVisible->GetValue ();
+- }
+- else
+- {
+- StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
+- rRequest.Ignore ();
+- break;
+- }
++
++ aNewName = pNewName->GetValue ();
++ aNewAutoLayout = (AutoLayout) pNewAutoLayout->GetValue ();
++ bBVisible = pBVisible->GetValue ();
++ bBObjsVisible = pBObjsVisible->GetValue ();
++
+ if (ePageKind == PK_HANDOUT)
+ {
+ bHandoutMode = TRUE;
+diff -Nrup sd-m16/test/export.map sd/test/export.map
+--- sd-m16/test/export.map 1969-12-31 16:00:00.000000000 -0800
++++ sd/test/export.map 2009-07-25 19:36:23.000000000 -0700
+@@ -0,0 +1,38 @@
++#*************************************************************************
++#
++# 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: export.map,v $
++#
++# $Revision: 1.4 $
++#
++# 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.
++#
++#*************************************************************************
++
++UDK_3.1 {
++ global:
++ registerAllTestFunction;
++
++ local:
++ *;
++};
+diff -Nrup sd-m16/test/layouttest.cxx sd/test/layouttest.cxx
+--- sd-m16/test/layouttest.cxx 1969-12-31 16:00:00.000000000 -0800
++++ sd/test/layouttest.cxx 2009-07-25 19:36:23.000000000 -0700
+@@ -0,0 +1,323 @@
++/*************************************************************************
++ *
++ * 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: layouttest.cxx,v $
++ * $Revision: 1.14 $
++ *
++ * 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.
++ *
++ ************************************************************************/
++
++
++// MARKER(update_precomp.py): autogen include statement, do not remove
++#include "precompiled_sd.hxx"
++// autogenerated file with codegen.pl
++
++#include <cppunit/simpleheader.hxx>
++#include <com/sun/star/text/WritingMode.hpp>
++#include "layoutlist.hxx"
++
++using namespace sd;
++using namespace rtl;
++
++class LayoutTest : public CppUnit::TestFixture
++{
++public:
++ LayoutTest() {}
++
++ // initialise your test code values here.
++ void setUp()
++ {
++ }
++
++ void tearDown()
++ {
++ }
++
++ // insert your test code here.
++ void layoutTypeTest()
++ {
++ // test values;
++ LayoutType* aTestType = new LayoutType();
++ sal_uInt32 num, listsize;
++
++ sal_Int32 kind;
++ bool vertical;
++ double fx, fy, ht, wt;
++ RectType rt;
++ WritingMode wm;
++ sal_uInt32 Hbitmap;
++ sal_uInt32 Lbitmap;
++
++ ElemType* elem1 = new ElemType;
++ ElemType* elem2;
++ ElemType* elem3 = new ElemType;
++ ElemType* elem4 = new ElemType;
++
++ LString name1(LString::CreateFromAscii("chart"));
++ LString name2;
++
++ // set and get name
++ aTestType->setName(name1);
++ name2 = aTestType->getName();
++ CPPUNIT_ASSERT_MESSAGE("getName/setName", name1 == name2);
++
++ // set and get string resource id
++ aTestType->setStrId(10000);
++ num = aTestType->getStrId();
++ CPPUNIT_ASSERT_MESSAGE("getStrId/setStrId", num == 10000);
++
++ // set and get writing mode for layout
++ aTestType->setWritingMode(WritingMode_LR_TB);
++ wm = aTestType->getWritingMode();
++ CPPUNIT_ASSERT_MESSAGE("setwritemode/getwritemode", WritingMode_LR_TB == wm);
++
++ // set and get High Bitmap
++ aTestType->setHBitmapId(170);
++ Hbitmap = aTestType->getHBitmapId();
++ CPPUNIT_ASSERT_MESSAGE("setHbitmap/getHbitmap", 170 == Hbitmap);
++
++ // set and get Low Bitmap
++ aTestType->setLBitmapId(388);
++ Lbitmap = aTestType->getLBitmapId();
++ CPPUNIT_ASSERT_MESSAGE("setLbitmap/getLbitmap", 388 == Lbitmap);
++
++ // add an element to the list.
++ aTestType->addElemToList(*elem1);
++
++ // set and get kind of 1st element in list
++ aTestType->setKind(0,PRESOBJ_CHART);
++ kind = aTestType->getKind(0);
++ CPPUNIT_ASSERT_MESSAGE("getKind/setKind", PRESOBJ_CHART == kind);
++
++ // set and get isvertical for 1st element
++ aTestType->setVertical(0,true);
++ vertical = aTestType->isVertical(0);
++ CPPUNIT_ASSERT_MESSAGE("setVertical/isVertical", vertical);
++
++
++ // set and get X factor for 1st element
++ aTestType->setFactorX(0, .5);
++ fx = aTestType->factorX(0);
++ CPPUNIT_ASSERT_MESSAGE("setfactorx/getfactorx", .5 == fx);
++
++ // set and get Y factor for 1st element
++ aTestType->setFactorY(0, .75);
++ fy = aTestType->factorY(0);
++ CPPUNIT_ASSERT_MESSAGE("setfactory/getfactory", .75 == fy);
++
++ // set and get Height factor for 1st element
++ aTestType->setFactorHt(0, .84);
++ ht = aTestType->factorHt(0);
++ CPPUNIT_ASSERT_MESSAGE("setfactorht/getfactorht", .84 == ht);
++
++ // set and get Width factor for 1st element
++ aTestType->setFactorWt(0, 1.25);
++ wt = aTestType->factorWt(0);
++ CPPUNIT_ASSERT_MESSAGE("setfactorwt/getfactorwt", 1.25 == wt);
++
++ // set and get rectangle type for 1st element
++ aTestType->setRecttype(0, RT_TITLE);
++ rt = aTestType->recttype(0);
++ CPPUNIT_ASSERT_MESSAGE("setrecttype/getrecttype", RT_TITLE == rt);
++
++ // set up some elements to add
++ elem3->kind = PRESOBJ_IMAGE;
++ elem4->kind = PRESOBJ_OBJECT;
++
++ // get an element by its index in the list
++ elem2 = aTestType->getElemByIndex(0);
++ CPPUNIT_ASSERT_MESSAGE("addelem/getbyindex0", elem1 == elem2);
++
++ // add an element to the list (at the end)
++ aTestType->addElemToList(*elem3);
++ listsize = aTestType->length();
++ CPPUNIT_ASSERT_MESSAGE("addelem/listsize", listsize == 2);
++
++ // get an element by index and check to see if equal
++ elem2 = aTestType->getElemByIndex(1);
++ CPPUNIT_ASSERT_MESSAGE("addelem/getbyindex1", elem3 == elem2);
++
++ // test the creating of a default element
++ // get it and check to see if set to a title
++ aTestType->createDefaultElement();
++ elem2 = aTestType->getElemByIndex(2);
++ CPPUNIT_ASSERT_MESSAGE("createelement", ((elem2)&&(elem2->kind == PRESOBJ_TITLE)) );
++
++ // delete an element from the list (0 position)
++ aTestType->deleteElement(0);
++ listsize = aTestType->length();
++ CPPUNIT_ASSERT_MESSAGE("deleteElem/listsize", listsize == 2);
++ // deleting should move elements up one
++ elem2 = aTestType->getElemByIndex(0);
++ CPPUNIT_ASSERT_MESSAGE("deleteElem/checkElem", elem3 == elem2);
++
++
++ }
++
++
++ // insert your test code here.
++ void layoutListTest()
++ {
++
++ LayoutType* alayout1 = new LayoutType();
++ LayoutType* alayout3;
++ LayoutType* alayout2;
++ LayoutList* aTestList = new LayoutList(true);
++ Rectangle arect;
++ sal_uInt32 listsize, layoutcnt;
++ sal_uInt32 start_size = aTestList->length();
++
++ // set up a LayoutType
++ LString name1(LString::CreateFromAscii("ateststring"));
++ LString name2(LString::CreateFromAscii("anotherone"));
++ LString name3(LString::CreateFromAscii("defaultname"));
++
++ alayout1->setName(name1);
++
++ alayout1->createDefaultElement();
++ alayout1->createDefaultElement();
++ alayout1->setKind(1, PRESOBJ_OUTLINE);
++
++ // add the layout to the list at menu index 0
++ aTestList->addLayout(alayout1, 0, PK_STANDARD);
++ alayout2 = aTestList->getLayoutByName(name1);
++ CPPUNIT_ASSERT_MESSAGE("addlayout/getbyname/nolayout", alayout2);
++ if(alayout2)
++ {
++ CPPUNIT_ASSERT_MESSAGE("addlayout/getbyname/samelayout", alayout1 == alayout2);
++ }
++
++ // get the layout out of the list
++ alayout2 = aTestList->getLayoutByIndex(start_size);
++ CPPUNIT_ASSERT_MESSAGE("getbyindex/nolayout", alayout2);
++ if(alayout2)
++ {
++ CPPUNIT_ASSERT_MESSAGE("getbyindex/samelayout", alayout2->getName() == name1);
++ }
++
++ // make sure a layout with the same name can't be added
++ alayout3 = new LayoutType();
++ alayout3->setName(name1);
++
++ CPPUNIT_ASSERT_MESSAGE("insertsamename", !aTestList->addLayout(alayout3, 2, PK_STANDARD));
++ // make sure a layout with a different name can be added
++ alayout3->setName(name2);
++
++ listsize = aTestList->length();
++ layoutcnt = aTestList->numberOfLayouts();
++ CPPUNIT_ASSERT_MESSAGE("insertdiffname", aTestList->addLayout(alayout3, 1, PK_STANDARD));
++ // check list size and number of layouts.
++ CPPUNIT_ASSERT_MESSAGE("listsize", (listsize+1) == aTestList->length());
++ CPPUNIT_ASSERT_MESSAGE("remove/numberoflayouts", (layoutcnt+1) == aTestList->numberOfLayouts());
++
++ // test for get layout by name for the second layout
++
++ alayout2 = aTestList->getLayoutByName(name2);
++ CPPUNIT_ASSERT_MESSAGE("getbyname2/nolayout", alayout2);
++ if(alayout2)
++ {
++ CPPUNIT_ASSERT_MESSAGE("getbyname2/correct", alayout2->getName() == name2 );
++ }
++
++
++ // remove a layout from the list (number of layouts
++ // should be different from size of list)
++ sal_uInt32 origsize = aTestList->length();
++ sal_uInt32 origcount = aTestList->numberOfLayouts();
++
++ aTestList->deleteLayoutFromList(name1);
++ layoutcnt = aTestList->numberOfLayouts();
++ CPPUNIT_ASSERT_MESSAGE("remove/numberoflayouts", layoutcnt == (origcount-1));
++ listsize = aTestList->length();
++ CPPUNIT_ASSERT_MESSAGE("remove/listlength", listsize == origsize);
++
++ // test inserting a layout's index in the menu list
++ alayout2 = aTestList->getLayoutAtMenuIndex(0, PK_STANDARD);
++ CPPUNIT_ASSERT_MESSAGE("getLayoutMenuidx/nolayout", alayout2 );
++ if(alayout2)
++ {
++ CPPUNIT_ASSERT_MESSAGE("getlayoutmenuidx/correct", alayout2->getName() == alayout3->getName() );
++ }
++
++ // add layout1 back at menu 2
++ alayout1 = new LayoutType();
++ alayout1->setName(name1);
++ aTestList->addLayout(alayout1, 2, PK_STANDARD);
++ sal_uInt32 num = aTestList->getLayoutIndex(name1);
++ CPPUNIT_ASSERT_MESSAGE("re-add/correct", num == 0 );
++
++
++ // test the length of a menu list
++ sal_uInt32 count = aTestList->getMenuLength(PK_HANDOUT);
++ CPPUNIT_ASSERT_MESSAGE("getMenuLength", count = 6);
++
++
++
++ // get a layout's index at the given menu index
++ // this is for layout3
++ sal_uInt32 idx = aTestList->getMenuIndex(3, PK_STANDARD);
++ CPPUNIT_ASSERT_MESSAGE("getMenuIndex", idx = 1);
++
++ //remove the layout from the menu
++ aTestList->removeFromMenuList(1, PK_STANDARD);
++ CPPUNIT_ASSERT_MESSAGE("removeMenuIndex", idx = 1);
++
++ // add a layout to the menu list
++ aTestList->addToMenuList(0, 6, PK_STANDARD);
++ CPPUNIT_ASSERT_MESSAGE("addtoMenu", idx = 1);
++
++ // add a default layout to list
++ aTestList->createDefaultLayout(name3, PK_HANDOUT);
++ alayout2 = aTestList->getLayoutByIndex(2);
++ CPPUNIT_ASSERT_MESSAGE("createDefault/nolayoutback", alayout2);
++ if(alayout2)
++ { CPPUNIT_ASSERT_MESSAGE("createDefault/notsame", (alayout2->getName() == name3) ); }
++
++
++
++ }
++
++ // Change the following lines only, if you add, remove or rename
++ // member functions of the current class,
++ // because these macros are need by auto register mechanism.
++
++ CPPUNIT_TEST_SUITE(LayoutTest);
++ CPPUNIT_TEST(layoutListTest);
++ CPPUNIT_TEST(layoutTypeTest);
++ CPPUNIT_TEST_SUITE_END();
++
++
++
++}; // class b2dvector
++
++// -----------------------------------------------------------------------------
++
++CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(LayoutTest, "layout test");
++
++// -----------------------------------------------------------------------------
++
++// this macro creates an empty function, which will called by the RegisterAllFunctions()
++// to let the user the possibility to also register some functions by hand.
++NOADDITIONAL;
++
+diff -Nrup sd-m16/test/makefile.mk sd/test/makefile.mk
+--- sd-m16/test/makefile.mk 1969-12-31 16:00:00.000000000 -0800
++++ sd/test/makefile.mk 2009-07-25 19:36:23.000000000 -0700
+@@ -0,0 +1,91 @@
++#*************************************************************************
++#
++# 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: makefile.mk,v $
++#
++# $Revision: 1.7 $
++#
++# 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.
++#
++#*************************************************************************
++
++PRJ=..
++
++PRJNAME=sd
++TARGET=tests
++
++ENABLE_EXCEPTIONS=TRUE
++
++# --- Settings -----------------------------------------------------
++
++.INCLUDE : settings.mk
++
++# --- Common ----------------------------------------------------------
++
++SHL1OBJS= \
++ $(SLO)$/layouttest.obj \
++ $(SLO)$/layoutlist.obj \
++ $(SLO)$/layouttype.obj
++
++# linking statically against sd parts
++#SHL1LIBS=$(SLB)$/core.lib
++
++SHL1TARGET= sd_tests
++SHL1STDLIBS= \
++ $(CPPUHELPERLIB) \
++ $(CPPULIB) \
++ $(CPPUNITLIB) \
++ $(TOOLSLIB) \
++ $(SALLIB) \
++ $(ISDLIB) \
++ $(SAXLIB) \
++ $(UNOTOOLSLIB) \
++ $(VCLLIB)
++
++
++SHL1IMPLIB= i$(SHL1TARGET)
++
++DEF1NAME =$(SHL1TARGET)
++SHL1VERSIONMAP = export.map
++
++# END ------------------------------------------------------------------
++
++#------------------------------- All object files -------------------------------
++# do this here, so we get correct dependencies
++SLOFILES=$(SHL1OBJS)
++
++# --- Targets ------------------------------------------------------
++
++.INCLUDE : target.mk
++.INCLUDE : _cppunit.mk
++
++# --- Enable testshl2 execution in normal build ------------------------
++
++$(MISC)$/unittest_succeeded : $(SHL1TARGETN)
++ @echo ----------------------------------------------------------
++ @echo - start unit test on library $(SHL1TARGETN)
++ @echo ----------------------------------------------------------
++ testshl2 -sf $(mktmp ) -forward $(BIN)$/ $(SHL1TARGETN)
++ $(TOUCH) $@
++
++ALLTAR : $(MISC)$/unittest_succeeded
+diff -Nrup sd-m16/util/makefile.mk sd/util/makefile.mk
+--- sd-m16/util/makefile.mk 2009-07-25 19:24:39.000000000 -0700
++++ sd/util/makefile.mk 2009-07-25 19:36:23.000000000 -0700
+@@ -90,7 +90,8 @@ SHL1STDLIBS+= \
+ $(VOSLIB) \
+ $(CANVASLIB) \
+ $(SALLIB) \
+- $(AVMEDIALIB)
++ $(AVMEDIALIB) \
++ $(SAXLIB)
+
+ SHL1LIBS= $(LIB3TARGET) $(LIB5TARGET) $(LIB6TARGET)
+ SHL1DEPN+= makefile.mk
commit ebf68fe8019052b6256dcd7e6f3522ac06650455
Author: cocofan <cocofan at cocofan-laptop.(none)>
Date: Sun Jul 26 01:30:27 2009 -0700
change [autolayout] to apply new layout code patches.
* patches/dev300/apply:
diff --git a/patches/dev300/apply b/patches/dev300/apply
index dbb81cd..9b61df7 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -3370,4 +3370,6 @@ statusbar-fancy-modified-status-svx.diff, kohei
statusbar-fancy-modified-status-sw.diff, kohei
[ AutoLayout ]
-layoutcode071809.diff, cocofan
+sd-layoutcode.diff, cocofan
+offapi-layoutcode.diff, cocofan
+
commit ab6c56265f4b5adc222d8a00c4778df670e3b98d
Author: cocofan <cocofan at cocofan-laptop.(none)>
Date: Sun Jul 26 01:29:45 2009 -0700
erase old layout code patch
* patches/dev300/layoutcode071809.diff:
diff --git a/patches/dev300/layoutcode071809.diff b/patches/dev300/layoutcode071809.diff
deleted file mode 100644
index 755f0ed..0000000
--- a/patches/dev300/layoutcode071809.diff
+++ /dev/null
@@ -1,4289 +0,0 @@
-diff -Nrup sd-m15/inc/drawdoc.hxx sd/inc/drawdoc.hxx
---- sd-m15/inc/drawdoc.hxx 2009-07-15 21:39:04.000000000 -0700
-+++ sd/inc/drawdoc.hxx 2009-07-18 23:21:35.000000000 -0700
-@@ -57,6 +57,11 @@
- #endif
- #include "sddllapi.h"
- #include "sdpage.hxx"
-+#include "layoutlist.hxx"
-+
-+
-+sd::LayoutList* GetLayoutList();
-+
-
- namespace com
- {
-@@ -522,8 +527,8 @@ public:
- PageKind ePageKind,
- const String& sStandardPageName,
- const String& sNotesPageName,
-- AutoLayout eStandardLayout,
-- AutoLayout eNotesLayout,
-+ sd::AutoLayout eStandardLayout,
-+ sd::AutoLayout eNotesLayout,
- BOOL bIsPageBack,
- BOOL bIsPageObj);
-
-@@ -578,8 +583,8 @@ public:
- PageKind ePageKind,
- const String& sStandardPageName,
- const String& sNotesPageName,
-- AutoLayout eStandardLayout,
-- AutoLayout eNotesLayout,
-+ sd::AutoLayout eStandardLayout,
-+ sd::AutoLayout eNotesLayout,
- BOOL bIsPageBack,
- BOOL bIsPageObj);
-
-@@ -643,8 +648,8 @@ private:
- PageKind ePageKind,
- const String& sStandardPageName,
- const String& sNotesPageName,
-- AutoLayout eStandardLayout,
-- AutoLayout eNotesLayout,
-+ sd::AutoLayout eStandardLayout,
-+ sd::AutoLayout eNotesLayout,
- BOOL bIsPageBack,
- BOOL bIsPageObj,
-
-diff -Nrup sd-m15/inc/layoutlist.hxx sd/inc/layoutlist.hxx
---- sd-m15/inc/layoutlist.hxx 1969-12-31 16:00:00.000000000 -0800
-+++ sd/inc/layoutlist.hxx 2009-07-18 23:21:35.000000000 -0700
-@@ -0,0 +1,208 @@
-+/*************************************************************************
-+ *
-+ * 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: layoutlist.hxx,v $
-+ * $Revision: 0.1 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+
-+#ifndef _LAYOUTLIST_HXX
-+#define _LAYOUTLIST_HXX
-+
-+
-+#define LL_NOT_FOUND 100000
-+
-+#include <vector>
-+#include "layouttype.hxx"
-+#include "sal/types.h"
-+#include "tools/string.hxx"
-+#include "sdresid.hxx"
-+#include "../source/ui/inc/strings.hrc"
-+#include "pres.hxx"
-+
-+
-+// needed for pptin.cxx (PowerPoint filter)
-+// among other files.
-+
-+#define AUTOLAYOUT_TITLE 0
-+#define AUTOLAYOUT_ENUM 1
-+#define AUTOLAYOUT_CHART 2
-+#define AUTOLAYOUT_2TEXT 3
-+#define AUTOLAYOUT_TEXTCHART 4
-+#define AUTOLAYOUT_ORG 5
-+#define AUTOLAYOUT_TEXTCLIP 6
-+#define AUTOLAYOUT_CHARTTEXT 7
-+#define AUTOLAYOUT_TAB 8
-+#define AUTOLAYOUT_CLIPTEXT 9
-+#define AUTOLAYOUT_TEXTOBJ 10
-+#define AUTOLAYOUT_OBJ 11
-+#define AUTOLAYOUT_TEXT2OBJ 12
-+#define AUTOLAYOUT_OBJTEXT 13
-+#define AUTOLAYOUT_OBJOVERTEXT 14
-+#define AUTOLAYOUT_2OBJTEXT 15
-+#define AUTOLAYOUT_2OBJOVERTEXT 16
-+#define AUTOLAYOUT_TEXTOVEROBJ 17
-+#define AUTOLAYOUT_4OBJ 18
-+#define AUTOLAYOUT_ONLY_TITLE 19
-+#define AUTOLAYOUT_NONE 20
-+#define AUTOLAYOUT_NOTES 21
-+#define AUTOLAYOUT_HANDOUT1 22
-+#define AUTOLAYOUT_HANDOUT2 23
-+#define AUTOLAYOUT_HANDOUT3 24
-+#define AUTOLAYOUT_HANDOUT4 25
-+#define AUTOLAYOUT_HANDOUT6 26
-+#define AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART 27
-+#define AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE 28
-+#define AUTOLAYOUT_TITLE_VERTICAL_OUTLINE 29
-+#define AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART 30
-+#define AUTOLAYOUT_HANDOUT9 31
-+#define AUTOLAYOUT_ONLY_TEXT 32
-+#define AL_NUM_OF_BUILTINS 33
-+
-+
-+namespace sd {
-+
-+ typedef sal_Int32 AutoLayout;
-+
-+ class LayoutList
-+ {
-+ public:
-+
-+ LayoutList();
-+ ~LayoutList();
-+
-+ /** passes back the absolute path plus file name
-+ * of the autolayout configuration file.
-+ */
-+ String* getConfigFile();
-+
-+ /** write entire layout information to a config file
-+ */
-+ void writeToFile();
-+
-+ /** read entire layout information to a config file
-+ */
-+ void readFromFile();
-+
-+ /** adds a layout object to the list
-+ * passes back a true if the layout
-+ * was successfully added and passes back
-+ * a false if not (name already in the list,
-+ * for example). Also, adds to the given
-+ * menu list at the given index (or at
-+ * the end if the index is negative(-1)) */
-+ bool addLayout(LayoutType* pLayout, const sal_Int32& menuIndex,
-+ const PageKind& eMenu);
-+
-+ /** removes layout from list with given name.
-+ * Doesn't delete object and does nothing if
-+ * not in the list. It also, finds the menu
-+ * entry and removes it completely. Items will
-+ * be moved up in the menu list.
-+ */
-+ void removeLayoutFromList(const LString& sName);
-+
-+ /** this will delete the layout as well as
-+ * remove it from all lists. */
-+ void deleteLayout(const LString& sName);
-+
-+ /** return the length of the list. This may not be
-+ * the number of actual layouts in the list */
-+ sal_uInt32 length() const;
-+
-+ /** return the number of actual layouts in the list */
-+ sal_uInt32 numberOfLayouts() const;
-+
-+ /** pass in the index to the list. for iterating
-+ the list. Will send back a NULL if a layout isn't there.*/
-+ LayoutType* getLayoutByIndex(const sal_uInt32 nIndex);
-+
-+ /** find and pass back a layout object with the given
-+ name or NULL */
-+ LayoutType* getLayoutByName(const LString& sName);
-+
-+ /** get the autolayout value of the given name. It will
-+ * send back a LL_NOT_FOUND if there is no layout. Need to
-+ * cast this value to a sal_uInt32 to use as an
-+ * index into the list. */
-+ sal_uInt32 getLayoutIndex(const LString& sName);
-+
-+ /** get the layout object for the given layoutMenu
-+ * index.
-+ */
-+ LayoutType* getLayoutAtMenuIndex(const sal_uInt32& nIndex,
-+ const PageKind& eMenu);
-+
-+ /** get the size of a particular menu list */
-+ sal_uInt32 getMenuLength(const PageKind& eMenu);
-+
-+ /** given an autolayout number, find the index in the menu.
-+ * If not in the list, then passes back LL_NOT_FOUND*/
-+ sal_uInt32 getMenuIndex(const AutoLayout& nLayout,
-+ const PageKind& nMenu);
-+
-+ /** remove the autolayout from the list. Need to move
-+ * the layouts over.
-+ */
-+ void removeFromMenuList(const AutoLayout& lnum,
-+ const PageKind& eMenu);
-+
-+ /** add an autolayout to the menu list. will grow
-+ * the list to fit the given index. A negative index
-+ * will cause the autolayout to be appended to the
-+ * end of the list. */
-+
-+ void addToMenuList(const sal_Int32& index,
-+ const AutoLayout& lnum,
-+ const PageKind& eMenu);
-+
-+ private:
-+
-+ typedef std::vector<AutoLayout> MEListImpl;
-+ typedef std::vector<LayoutType*> LListImpl;
-+
-+ // list used for storing info about
-+ // both builtin and custom layouts
-+ LListImpl maLayoutList;
-+
-+ // lists used to fill the LayoutMenu
-+ // Gives the layouts in order by index.
-+ // There is a list for each view mode.
-+ MEListImpl maStandard; //standard view
-+ MEListImpl maNotes; // notes view
-+ MEListImpl maHandout; // handout view
-+
-+ void initializeList();
-+ void initializeMenuOrder();
-+
-+
-+
-+
-+ }; // Class LayoutList
-+
-+}
-+
-+#endif // _LAYOUTLIST_HXX
-diff -Nrup sd-m15/inc/layouttype.hxx sd/inc/layouttype.hxx
---- sd-m15/inc/layouttype.hxx 1969-12-31 16:00:00.000000000 -0800
-+++ sd/inc/layouttype.hxx 2009-07-18 23:21:35.000000000 -0700
-@@ -0,0 +1,230 @@
-+/*************************************************************************
-+ *
-+ * 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: layouttype.hxx,v $
-+ * $Revision: 0.1 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+
-+#ifndef _LAYOUTTYPE_HXX
-+#define _LAYOUTTYPE_HXX
-+
-+#include <vector>
-+#include <com/sun/star/text/WritingMode.hpp>
-+#include "sal/types.h"
-+#include "tools/string.hxx"
-+#include "tools/gen.hxx"
-+#include "pres.hxx"
-+#include <sax/fshelper.hxx>
-+#include <com/sun/star/uno/Reference.hxx>
-+#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
-+
-+
-+
-+using ::com::sun::star::uno::Reference;
-+using namespace ::com::sun::star::xml;
-+using namespace ::com::sun::star::text;
-+using namespace ::sax_fastparser;
-+
-+namespace sd {
-+
-+ typedef String LString;
-+
-+ /** RectType determines which
-+ * standard rectangle to use
-+ * to calculate bounding rects
-+ * and also determine the factors
-+ * used to calculate the rects.
-+ */
-+
-+ enum RectType {
-+ RT_TITLE, // a non-vertical title
-+ RT_VERTICAL_TITLE,
-+ RT_LAYOUT, // a non-vertical non-title shape
-+ RT_VERTICAL_LAYOUT,
-+ RT_TEXT_ONLY, // for the text only layout
-+ RT_LAYOUT_SWITCH, // use if shapes need switching
-+ // for right to left writing
-+ RT_ERROR
-+ };
-+
-+ /** ElemType defines the information for
-+ * one element (or pres. object) in
-+ * a layout.
-+ */
-+
-+ typedef struct {
-+ PresObjKind kind; // the type of pres. object
-+ bool isVertical; // whether to make this obj. vertical
-+ double factorX; // factor for calculating topleft x value
-+ double factorY; // factor for calculating topleft y value
-+ double factorHt; // factor for calculating height
-+ double factorWt; // factor for calculating width
-+ RectType recttype; // type of standard rect to use
-+ // for calculating rects.
-+ } ElemType;
-+
-+ /** LayoutType represents on autolayout */
-+
-+ class LayoutType
-+ {
-+ public:
-+ LayoutType();
-+ ~LayoutType();
-+
-+ /** functions for writing this layout to a xml configuration file */
-+ void writeLayoutToFile(FastSerializerHelper& fsh, sal_Int32 autolayout);
-+ void writeElementTofile(FastSerializerHelper& fsh,
-+ const sal_uInt32 i,
-+ const char* sNumber,
-+ const ElemType* elem);
-+
-+ /** functions for reading this layout in from a xml configuration
-+ * file. Passes back entry in the list.
-+ */
-+ sal_Int32 getIntValue(const Reference<dom::XNode>& node);
-+ double getDoubleValue(const Reference<dom::XNode>& node);
-+ sal_Int32 readLayoutFromFile(const Reference<dom::XNode>& node);
-+
-+ /** get functions for variables
-+ * other than elements
-+ */
-+
-+ LString getName();
-+ sal_uInt32 getStrId();
-+ sal_uInt32 getLayoutNumber();
-+ WritingMode getWritingMode();
-+ sal_uInt32 getHBitmapId();
-+ sal_uInt32 getLBitmapId();
-+
-+ /** get functions for elements by index
-+ * and element list functions
-+ */
-+ ElemType* getElemByIndex(const sal_uInt32& nIndex);
-+ sal_uInt32 length();
-+ PresObjKind getKind(const sal_uInt32& nIndex);
-+ bool isVertical(const sal_uInt32& nIndex);
-+ double factorX(const sal_uInt32& nIndex);
-+ double factorY(const sal_uInt32& nIndex);
-+ double factorHt(const sal_uInt32& nIndex);
-+ double factorWt(const sal_uInt32& nIndex);
-+ RectType recttype(const sal_uInt32& nIndex);
-+
-+ /** set functions for variables other
-+ * than elements.
-+ */
-+
-+ void setName(const LString& sName);
-+ void setStrId(const sal_uInt32 id);
-+ void setLayoutNumber(const sal_uInt32& number);
-+ void setWritingMode(const WritingMode& wmode);
-+ void setHBitmapId(const sal_uInt32& id);
-+ void setLBitmapId(const sal_uInt32& id);
-+
-+
-+ /** set functions for elements and list
-+ */
-+
-+ void createDefaultElement();
-+ void setKind(const sal_uInt32& nIndex, PresObjKind nKind);
-+ void setVertical(const sal_uInt32& nIndex, bool bVertical);
-+ void setFactorX(const sal_uInt32& nIndex, double fx);
-+ void setFactorY(const sal_uInt32& nIndex, double fy);
-+ void setFactorHt(const sal_uInt32& nIndex, double ht);
-+ void setFactorWt(const sal_uInt32& nIndex, double wt);
-+ void setRecttype(const sal_uInt32& nIndex, RectType rect);
-+ /** add a passed in element to the list */
-+ void addElemToList(ElemType& rElement);
-+ /** deletes element and also removes from list */
-+ void deleteElement(const sal_uInt32& nIndex);
-+
-+ /** sets the bounding rectangle information
-+ * for a custom layout. rRect is the actual
-+ * rectangle from the pres object. rStandard
-+ * is the generic title or layout rectangle.
-+ * For non-vertical titles, use RT_TITLE
-+ * and pass in the generic title rect.
-+ * For non-vertical all else, use RT_LAYOUT,
-+ * (or RT_LAYOUT_SWITCH if a switching of
-+ * rectangles is needed for right to left
-+ * writing) and pass in a generic layout rect.
-+ * For vertical, use the corresponding
-+ * RT_VERTICAL_ type (see above).
-+ */
-+ void setCustomRectInfo(const sal_uInt32& nIndex,
-+ const RectType& rType,
-+ const Rectangle& rRect,
-+ const Rectangle& rStandard);
-+
-+ /** sets up an array of bounding rectangles
-+ * used in drawing the autolayout elements.
-+ * Needs a default title rectangle, layout rectangle,
-+ * page size, upper and lower border of page and
-+ * whether the writing is right to left.
-+ */
-+
-+ void calcAutoLayoutRectangles(const Rectangle& aTitleRect,
-+ const Rectangle& aLayoutRect,
-+ const Size& aPageSize,
-+ const bool& bRightToLeft,
-+ Rectangle* rRectangle );
-+
-+ /** initialize the rectInfo. Mainly designed for builtins
-+ * but might be useful for custom layouts.
-+ * Should be called after the elements are
-+ * all in the list, otherwise some elements won't be
-+ * initialized at all.
-+ * These functions may not be
-+ * needed after the configuration
-+ * file code is done. */
-+
-+ void initializeRectInfo();
-+ void initFromLayoutNumber(ElemType* elem,
-+ const sal_uInt32& i);
-+
-+ private:
-+ LString name; // String name of the layout
-+ sal_uInt32 nStrId; // resource id for the string.
-+ WritingMode nWritingMode; // righttoleft or toptobottom
-+ sal_uInt32 nHBitmapId; // resource id for the High Contrast Bitmap
-+ sal_uInt32 nLBitmapId; // resource id for the Low contrast Bitmap
-+
-+ // list of elements whicht the pres. objects will be
-+ // created from for this layout.
-+ typedef std::vector< ElemType* > ListImpl;
-+ ListImpl elemList;
-+
-+ sal_uInt32 nLayout; // for accessing correct case in switch
-+ // statement. Will be removed when the
-+ // XML file is implemented.
-+
-+
-+ }; // Class LayoutType
-+
-+} //namespace sd
-+
-+#endif // _LAYOUTTYPE_HXX
-+
-diff -Nrup sd-m15/inc/pres.hxx sd/inc/pres.hxx
---- sd-m15/inc/pres.hxx 2009-07-15 21:39:04.000000000 -0700
-+++ sd/inc/pres.hxx 2009-07-18 23:21:36.000000000 -0700
-@@ -54,44 +54,6 @@ enum PresObjKind
- PRESOBJ_MAX
- };
-
--enum AutoLayout
--{
-- AUTOLAYOUT__START,
-- AUTOLAYOUT_TITLE = AUTOLAYOUT__START,
-- AUTOLAYOUT_ENUM,
-- AUTOLAYOUT_CHART,
-- AUTOLAYOUT_2TEXT,
-- AUTOLAYOUT_TEXTCHART,
-- AUTOLAYOUT_ORG,
-- AUTOLAYOUT_TEXTCLIP,
-- AUTOLAYOUT_CHARTTEXT,
-- AUTOLAYOUT_TAB,
-- AUTOLAYOUT_CLIPTEXT,
-- AUTOLAYOUT_TEXTOBJ,
-- AUTOLAYOUT_OBJ,
-- AUTOLAYOUT_TEXT2OBJ,
-- AUTOLAYOUT_OBJTEXT,
-- AUTOLAYOUT_OBJOVERTEXT,
-- AUTOLAYOUT_2OBJTEXT,
-- AUTOLAYOUT_2OBJOVERTEXT,
-- AUTOLAYOUT_TEXTOVEROBJ,
-- AUTOLAYOUT_4OBJ,
-- AUTOLAYOUT_ONLY_TITLE,
-- AUTOLAYOUT_NONE,
-- AUTOLAYOUT_NOTES,
-- AUTOLAYOUT_HANDOUT1,
-- AUTOLAYOUT_HANDOUT2,
-- AUTOLAYOUT_HANDOUT3,
-- AUTOLAYOUT_HANDOUT4,
-- AUTOLAYOUT_HANDOUT6,
-- AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART,
-- AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE,
-- AUTOLAYOUT_TITLE_VERTICAL_OUTLINE,
-- AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART,
-- AUTOLAYOUT_HANDOUT9,
-- AUTOLAYOUT_ONLY_TEXT,
-- AUTOLAYOUT__END
--};
-
- enum PageKind
- {
-diff -Nrup sd-m15/inc/sdpage.hxx sd/inc/sdpage.hxx
---- sd-m15/inc/sdpage.hxx 2009-07-15 21:39:04.000000000 -0700
-+++ sd/inc/sdpage.hxx 2009-07-18 23:21:35.000000000 -0700
-@@ -45,6 +45,8 @@
- #include <list>
- #include <functional>
- #include <vector>
-+#include "layoutlist.hxx"
-+#include "layouttype.hxx"
- #include <svx/svdobj.hxx>
- #ifndef _FM_FMPAGE_HXX //autogen
- #include <svx/fmpage.hxx>
-@@ -126,7 +128,7 @@ friend class sd::UndoAttrObject;
-
- protected:
- PageKind mePageKind; // Seitentyp
-- AutoLayout meAutoLayout; // AutoLayout
-+ sd::AutoLayout meAutoLayout; // AutoLayout
- sd::ShapeList maPresentationShapeList; // Praesentationsobjekte
- sd::ScopeLock maLockAutoLayoutArrangement;
- BOOL mbSelected; // Selektionskennung
-@@ -208,9 +210,8 @@ public:
-
- /** inserts the given SdrObject into the presentation object list */
- void InsertPresObj(SdrObject* pObj, PresObjKind eKind );
--
-- void SetAutoLayout(AutoLayout eLayout, BOOL bInit=FALSE, BOOL bCreate=FALSE);
-- AutoLayout GetAutoLayout() const { return meAutoLayout; }
-+ void SetAutoLayout(sd::AutoLayout eLayout, BOOL bInit=FALSE, BOOL bCreate=FALSE);
-+ sd::AutoLayout GetAutoLayout() const { return meAutoLayout; }
- void CreateTitleAndLayout(BOOL bInit=FALSE, BOOL bCreate=FALSE);
- SdrObject* InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind, bool bVertical, Rectangle aRect, bool bInit );
-
-@@ -375,8 +376,7 @@ public:
-
- Rectangle GetTitleRect() const;
- Rectangle GetLayoutRect() const;
--
-- static void CalculateHandoutAreas( SdDrawDocument& rModel, AutoLayout eLayout, bool bHorizontal, std::vector< Rectangle >& rAreas );
-+ static void CalculateHandoutAreas( SdDrawDocument& rModel, sd::AutoLayout eLayout, bool bHorizontal, std::vector< Rectangle >& rAreas );
-
- /** Set the "precious" flag to the given value.
- */
-diff -Nrup sd-m15/inc/Test.hxx sd/inc/Test.hxx
---- sd-m15/inc/Test.hxx 1969-12-31 16:00:00.000000000 -0800
-+++ sd/inc/Test.hxx 2009-07-18 23:21:36.000000000 -0700
-@@ -0,0 +1,43 @@
-+/*************************************************************************
-+ *
-+ * 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: LayoutMenu.cxx,v $
-+ * $Revision: 1.27 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+#ifndef _TEST_HXX
-+#define _TEST_HXX
-+
-+#include <vector>
-+
-+#include "sal/types.h"
-+#include "rtl/ustring.hxx"
-+#include "tools/string.hxx"
-+#include "pres.hxx"
-+
-+using namespace rtl;
-+
-+#endif
-+
-diff -Nrup sd-m15/source/core/drawdoc3.cxx sd/source/core/drawdoc3.cxx
---- sd-m15/source/core/drawdoc3.cxx 2009-07-15 21:39:20.000000000 -0700
-+++ sd/source/core/drawdoc3.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -1756,7 +1756,7 @@ void SdDrawDocument::SetMasterPage(USHOR
- pPage = (SdPage*)pPageList->First();
- while (pPage)
- {
-- AutoLayout eAutoLayout = pPage->GetAutoLayout();
-+ sd::AutoLayout eAutoLayout = pPage->GetAutoLayout();
-
- SdPresentationLayoutUndoAction * pPLUndoAction =
- new SdPresentationLayoutUndoAction
-@@ -1926,8 +1926,8 @@ void SdDrawDocument::SetMasterPage(USHOR
- pPage = (SdPage*)pPageList->First();
- while(pPage)
- {
-- AutoLayout eOldAutoLayout = pPage->GetAutoLayout();
-- AutoLayout eNewAutoLayout =
-+ sd::AutoLayout eOldAutoLayout = pPage->GetAutoLayout();
-+ sd::AutoLayout eNewAutoLayout =
- pPage->GetPageKind() == PK_STANDARD ? AUTOLAYOUT_NONE : AUTOLAYOUT_NOTES;
-
- SdPresentationLayoutUndoAction * pPLUndoAction =
-diff -Nrup sd-m15/source/core/drawdoc.cxx sd/source/core/drawdoc.cxx
---- sd-m15/source/core/drawdoc.cxx 2009-07-15 21:39:20.000000000 -0700
-+++ sd/source/core/drawdoc.cxx 2009-07-18 23:21:35.000000000 -0700
-@@ -97,6 +97,10 @@
- #include "../ui/inc/optsitem.hxx"
- #include "../ui/inc/FrameView.hxx"
-
-+//FOR TESTING LAYOUTLIST
-+#include "../ui/inc/res_bmp.hrc"
-+#include "../ui/inc/strings.hrc"
-+
- // #90477#
- #include <tools/tenccvt.hxx>
-
-@@ -107,6 +111,30 @@ using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::linguistic2;
-
-+
-+// to be placed here until decided where to do
-+LayoutList* autolayoutList=NULL;
-+
-+sd::LayoutList* GetLayoutList()
-+{
-+ if(autolayoutList) return autolayoutList;
-+ autolayoutList = new LayoutList();
-+ return autolayoutList;
-+}
-+
-+void DeleteLayoutList()
-+{
-+ if(autolayoutList)
-+ {
-+ delete autolayoutList;
-+ autolayoutList = NULL;
-+ }
-+}
-+
-+
-+
-+
-+
-
- //////////////////////////////////////////////////////////////////////////////
-
-@@ -374,6 +402,55 @@ SdDrawDocument::SdDrawDocument(DocumentT
- rLayerAdmin.SetControlLayerName(aControlLayerName);
- }
-
-+ // THIS IS HERE FOR TESTING THE LAYOUTLIST CLASSES
-+
-+ //LayoutList* list = GetLayoutList();
-+ //LayoutType* test;
-+
-+ //test = new LayoutType();
-+ //test->setName(LString::CreateFromAscii("testing1..."));
-+// test->setLayoutNumber(0);
-+ //test->setWritingMode(WritingMode_LR_TB);
-+ //test->setHBitmapId(BMP_FOIL_02_H);
-+ //test->setLBitmapId(BMP_FOIL_02);
-+
-+ //test->createDefaultElement(); // for title
-+ //test->createDefaultElement();
-+ //test->setKind(1,PRESOBJ_OUTLINE); // for outline
-+ //test->setFactorHt(1,.5); // change to new settings
-+// test->setFactorWt(1,.5);
-+ //test->setRecttype(1, RT_LAYOUT);
-+ //
-+ //if(!list->addLayout(test, 3, PK_STANDARD))
-+ // { DBG_ERROR("Layout1 not added"); }
-+
-+ // another one
-+// test = new LayoutType();
-+// test->setName(LString::CreateFromAscii("Testing2...."));
-+// test->setLayoutNumber(0);
-+// test->setWritingMode(WritingMode_LR_TB);
-+// test->setHBitmapId(BMP_FOIL_21_H);
-+// test->setLBitmapId(BMP_FOIL_21);
-+
-+
-+ //test->createDefaultElement(); // title
-+ //test->createDefaultElement();
-+ //test->setKind(1, PRESOBJ_CHART); // chart
-+ //test->setFactorX(1,.5);
-+ //test->setFactorY(1,.5);
-+ //test->setFactorHt(1,.333);
-+ //test->setFactorWt(1,.333);
-+ //test->setRecttype(1, RT_LAYOUT);
-+ //test->createDefaultElement();
-+ //test->setKind(2,PRESOBJ_OUTLINE);
-+ //test->setFactorHt(2,.333);
-+ //test->setFactorWt(2,.333);
-+ //test->setRecttype(2, RT_LAYOUT);
-+
-+ //if(!list->addLayout(test, -1, PK_STANDARD))
-+ // { DBG_ERROR("Layout2 not added"); }
-+
-+
-
- }
-
-@@ -457,6 +534,8 @@ SdDrawDocument::~SdDrawDocument()
-
- delete mpCharClass;
- mpCharClass = NULL;
-+
-+ DeleteLayoutList(); // needed to write autolayouts to the config file
- }
-
- /*************************************************************************
-diff -Nrup sd-m15/source/core/layoutlist.cxx sd/source/core/layoutlist.cxx
---- sd-m15/source/core/layoutlist.cxx 1969-12-31 16:00:00.000000000 -0800
-+++ sd/source/core/layoutlist.cxx 2009-07-18 23:21:35.000000000 -0700
-@@ -0,0 +1,1236 @@
-+/*************************************************************************
-+ *
-+ * 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: layoutlist.cxx,v $
-+ * $Revision: 0.1$
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_sd.hxx"
-+#include <stdio.h>
-+#include <tools/debug.hxx>
-+#include "osl/diagnose.h"
-+#include "osl/file.hxx"
-+#include "osl/security.hxx"
-+#include "tools/stream.hxx"
-+#include <vcl/unohelp.hxx>
-+#include <com/sun/star/uno/Reference.hxx>
-+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-+#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
-+#include <unotools/streamwrap.hxx>
-+#include <sax/fshelper.hxx>
-+#include "layoutlist.hxx"
-+#include "sal/types.h"
-+#include "tools/string.hxx"
-+#include "rtl/string.hxx"
-+#include "sdresid.hxx"
-+#include "../ui/inc/res_bmp.hrc"
-+#include "pres.hxx"
-+#include "../ui/inc/strings.hrc"
-+
-+#define CHARTOOUSTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
-+#define CHATTOSTR(x) String::createFromAscii(x);
-+#define STRTOCHAR(x) (char*) ByteString(x, RTL_TEXTENCODING_UTF8).GetBuffer()
-+#define OUSTRTOCHAR(x) (OUStringToOString(x, RTL_TEXTENCODING_UTF8)).getStr()
-+
-+using namespace sd;
-+using ::com::sun::star::uno::Reference;
-+using ::com::sun::star::io::XOutputStream;
-+using ::com::sun::star::io::XInputStream;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::xml::dom;
-+using namespace ::com::sun::star::xml::sax;
-+using namespace ::com::sun::star::lang;
-+using namespace ::sax_fastparser;
-+
-+
-+/** xml tags used by the layoutlist class
-+ * for reading and writing to the
-+ * configuration file.
-+ */
-+
-+static char sTopTag[] = "AutoLayoutInfo";
-+static char sLListTag[] = "layoutList";
-+static char sCountTag[] = "count";
-+static char sStandardTag[] = "MenuStandard";
-+static char sNotesTag[] = "MenuNotes";
-+static char sHandoutTag[] = "MenuHandout";
-+static char sNumTag[] = "number";
-+
-+LayoutList::LayoutList()
-+{
-+
-+ maLayoutList.reserve(50);
-+ maStandard.reserve(50);
-+ maHandout.reserve(50);
-+ maNotes.reserve(50);
-+
-+
-+ initializeList();
-+ writeToFile();
-+
-+ readFromFile();
-+}
-+
-+LayoutList::~LayoutList()
-+{
-+ sal_uInt32 size = length();
-+ LayoutType* layout;
-+
-+ if(size == 0) return; // empty list
-+
-+ //first, save information to the config file
-+ //writeToFile();
-+
-+ // delete objects in the list if
-+ // they are there.
-+ for(sal_uInt32 i = 0; i < size; i++)
-+ {
-+ layout = getLayoutByIndex(i);
-+ if(layout)
-+ {
-+ // need to do clean up
-+ // in the layout class
-+ delete layout;
-+ }
-+ }
-+
-+ maLayoutList.clear();
-+}
-+
-+String* LayoutList::getConfigFile()
-+{
-+ rtl::OUString ousFilePath(rtl::OUString::createFromAscii(""));
-+ rtl::OUString ousFileName(rtl::OUString::createFromAscii("/AutoLayout.xml"));
-+ rtl::OUString ousConfigURL(rtl::OUString::createFromAscii(""));
-+ osl::Security sec;
-+ osl::FileBase convert;
-+
-+ sec.getConfigDir(ousConfigURL);
-+
-+ OSL_TRACE("AUTOLAYOUT CONFIG URL: %s", OUSTRTOCHAR(ousConfigURL ));
-+ ousConfigURL += ousFileName;
-+ convert.getSystemPathFromFileURL(ousConfigURL, ousFilePath);
-+ String* psFilePath = new String(ousFilePath);
-+
-+ OSL_TRACE("AUTOLAYOUT CONFIG PATH/FILE: %s", OUSTRTOCHAR(ousFilePath));
-+ return psFilePath;
-+}
-+
-+void LayoutList::writeToFile()
-+{
-+ String* psFileName = getConfigFile();
-+ StreamMode eMode = (STREAM_WRITE | STREAM_TRUNC);
-+ SvFileStream fs(*psFileName, eMode);
-+
-+
-+ if(fs.IsOpen())
-+ {
-+ LayoutType* layout;
-+ static char sCountValue[4];
-+ static char sNum[10];
-+
-+ sal_Int32 size = (sal_Int32) length();
-+ utl::OOutputStreamWrapper* osw = new utl::OOutputStreamWrapper(fs);
-+ Reference< XOutputStream > xos(osw);
-+ FastSerializerHelper fsh(xos);
-+
-+ sprintf(sCountValue, "%d", (int) length());
-+
-+ fsh.startElement(sTopTag,NULL);
-+ fsh.startElement(sLListTag, sCountTag, sCountValue, NULL);
-+
-+ for(sal_Int32 i=0; i < size; i++)
-+ {
-+ layout = getLayoutByIndex(i);
-+ if(layout)
-+ {
-+ layout->writeLayoutToFile(fsh, i);
-+ }
-+ }
-+
-+ fsh.endElement(sLListTag);
-+
-+ fsh.startElement(sStandardTag, NULL);
-+
-+ for(sal_uInt32 i=0; i < maStandard.size(); i++)
-+ {
-+ sprintf(sNum,"%d", (int) maStandard[i]);
-+ fsh.singleElement(sStandardTag, sNumTag, sNum, NULL);
-+ }
-+
-+ fsh.endElement(sStandardTag);
-+
-+ fsh.startElement(sNotesTag,NULL);
-+
-+ for(sal_uInt32 i=0; i < maNotes.size(); i++)
-+ {
-+ sprintf(sNum,"%d", (int) maNotes[i]);
-+ fsh.singleElement(sNotesTag, sNumTag, sNum, NULL);
-+ }
-+
-+ fsh.endElement(sNotesTag);
-+
-+ fsh.startElement(sHandoutTag,NULL);
-+
-+ for(sal_uInt32 i=0; i < maHandout.size(); i++)
-+ {
-+ sprintf(sNum,"%d", (int) maHandout[i]);
-+ fsh.singleElement(sHandoutTag, sNumTag, sNum, NULL);
-+ }
-+
-+ fsh.endElement(sHandoutTag);
-+
-+ fsh.endElement(sTopTag);
-+ }
-+ fs.Close();
-+ delete psFileName;
-+
-+}
-+
-+
-+void LayoutList::readFromFile()
-+{
-+ const Reference<XMultiServiceFactory> xServiceFactory( vcl::unohelper::GetMultiServiceFactory(), UNO_QUERY );
-+ rtl::OUString sServName = rtl::OUString::createFromAscii("com.sun.star.xml.dom.DocumentBuilder");
-+ Reference<XDocumentBuilder> xDb( xServiceFactory->createInstance(sServName), UNO_QUERY);
-+
-+ String* psFileName = getConfigFile();
-+ StreamMode eMode = STREAM_READ;
-+ SvFileStream fs(*psFileName, eMode);
-+
-+ utl::OInputStreamWrapper* isw = new utl::OInputStreamWrapper(fs);
-+ const Reference<XInputStream> xIs(isw);
-+
-+ if(psFileName)
-+ OSL_TRACE("READ: %s", STRTOCHAR(*psFileName));
-+ else
-+ OSL_TRACE("READ: no file name");
-+
-+ const Reference<XDocument> xDom(xDb->parse(xIs), UNO_QUERY_THROW );
-+ const Reference<XElement> xElem( xDom->getDocumentElement(), UNO_QUERY_THROW );
-+
-+
-+ const Reference<XNodeList> topllist(xElem->getElementsByTagName(CHARTOOUSTR(sLListTag)));
-+ const Reference<XNode> llist = topllist->item(0);
-+ const Reference<XNodeList> layouts = llist->getChildNodes();
-+
-+ sal_Int32 lngth = layouts->getLength();
-+ sal_Int32 index;
-+
-+ maLayoutList.resize(lngth, NULL);
-+
-+ for(sal_Int32 i=0; i < lngth; i++)
-+ {
-+ LayoutType* layout = new LayoutType();
-+ Reference<XNode> alayout = layouts->item(i);
-+ index = layout->readLayoutFromFile(alayout);
-+ //TODO: disable putting into the list until
-+ // I have a chance to debug this more
-+ // thoroughly
-+ // if((index >= 0)&&(index < lngth)) maLayoutList[index] = layout;
-+ }
-+
-+}
-+
-+
-+bool LayoutList::addLayout(LayoutType* pLayout,
-+ const sal_Int32& menuIndex, const PageKind& eMenu)
-+{
-+ sal_Int32 idx;
-+
-+ LString name = pLayout->getName();
-+ idx = getLayoutIndex(name);
-+ if(idx != LL_NOT_FOUND)
-+ {
-+ //DBG_ERROR("sd::LayoutList::addLayout(), given layout name already part of list!");
-+ return false;
-+ }
-+
-+ // push onto the back of the list
-+ maLayoutList.push_back(pLayout);
-+
-+ //now, find where it was put
-+ idx = getLayoutIndex(name);
-+ // add this value to the given menu at the given location
-+ addToMenuList(menuIndex, (AutoLayout) idx, eMenu);
-+
-+ return true;
-+}
-+
-+
-+void LayoutList::removeLayoutFromList(const LString& sName)
-+{
-+ sal_Int32 index;
-+
-+ index = getLayoutIndex(sName);
-+ if(index >= 0) // name in list
-+ {
-+ // Since the indices will change if
-+ // I use erase (the item get move up
-+ // by one) and I don't want to reorder
-+ // the list. I'll just, set the space to
-+ // to NULL
-+ maLayoutList[index] = NULL;
-+ // take out of the menu lists.
-+ removeFromMenuList((AutoLayout) index, PK_STANDARD);
-+ removeFromMenuList((AutoLayout) index, PK_NOTES);
-+ removeFromMenuList((AutoLayout) index, PK_HANDOUT);
-+ }
-+}
-+ void LayoutList::deleteLayout(const LString& sName)
-+ {
-+ LayoutType* layout = getLayoutByName(sName);
-+ if(layout)
-+ {
-+ removeLayoutFromList(sName);
-+ delete layout;
-+ }
-+
-+ }
-+
-+sal_uInt32 LayoutList::length() const
-+{
-+ return maLayoutList.size();
-+}
-+
-+sal_uInt32 LayoutList::numberOfLayouts() const
-+{
-+ sal_uInt32 count = 0;
-+ unsigned int size = (unsigned int) length();
-+
-+ for(unsigned int i=0; i < size; i++)
-+ {
-+ if(maLayoutList[i] != NULL)
-+ count++;
-+ }
-+ return count;
-+}
-+
-+LayoutType* LayoutList::getLayoutByIndex(const sal_uInt32 nIndex)
-+{
-+ // check for valid index (no need to check for less than zero)
-+ if(nIndex > length()-1) return NULL;
-+
-+ return maLayoutList[nIndex];
-+
-+}
-+
-+LayoutType* LayoutList::getLayoutByName(const LString& sName)
-+{
-+ LayoutType* pLayout=NULL;
-+
-+ for(sal_uInt32 i = 0; i < length(); i++)
-+ {
-+ if ((maLayoutList[i])&&(sName == maLayoutList[i]->getName()))
-+ pLayout = maLayoutList[i];
-+ break;
-+ }
-+
-+ return pLayout;
-+}
-+
-+sal_uInt32 LayoutList::getLayoutIndex(const LString& sName)
-+{
-+ sal_uInt32 idx = LL_NOT_FOUND;
-+
-+ for(unsigned int i = 0; i < length(); i++)
-+ {
-+ if((maLayoutList[i])&&(sName == maLayoutList[i]->getName()))
-+ {
-+ idx = (sal_Int32) i;
-+ break;
-+ }
-+ }
-+
-+ return idx;
-+}
-+
-+LayoutType* LayoutList::getLayoutAtMenuIndex(const sal_uInt32& nIndex,
-+ const PageKind& eMenu)
-+{
-+ sal_uInt32 size = getMenuLength(eMenu);
-+ sal_uInt32 index;
-+
-+ if(nIndex >= size) return NULL; //not a valid index
-+
-+ switch (eMenu) {
-+
-+ case PK_STANDARD: index = maStandard[nIndex];
-+ break;
-+ case PK_NOTES: index = maNotes[nIndex];
-+ break;
-+ case PK_HANDOUT: index = maHandout[nIndex];
-+ break;
-+ default: return NULL; // not a valid menu type
-+
-+ }
-+
-+ return maLayoutList[index];
-+
-+}
-+
-+sal_uInt32 LayoutList::getMenuIndex(const AutoLayout& nLayout,
-+ const PageKind& nMenu)
-+{
-+ sal_uInt32 count = getMenuLength(nMenu);
-+ sal_uInt32 idx = LL_NOT_FOUND;
-+ MEListImpl* list = NULL;
-+
-+ for(sal_uInt32 i = 0; i < count; i++)
-+ {
-+ switch (nMenu) {
-+ case PK_STANDARD: list = &maStandard;
-+ break;
-+ case PK_NOTES: list = &maNotes;
-+ break;
-+ case PK_HANDOUT: list = &maHandout;
-+ break;
-+ default: /* leave as NULL */;
-+ }
-+
-+ if(list)
-+ {
-+ if((AutoLayout)(*list)[i] == nLayout)
-+ {
-+ idx = i;
-+ break;
-+ }
-+ }
-+ }
-+
-+ return idx;
-+ }
-+
-+
-+
-+
-+sal_uInt32 LayoutList::getMenuLength(const PageKind& eMenu)
-+{
-+ sal_uInt32 size;
-+
-+ switch (eMenu) {
-+
-+ case PK_STANDARD: size = maStandard.size();
-+ break;
-+ case PK_NOTES: size = maNotes.size();
-+ break;
-+ case PK_HANDOUT: size = maHandout.size();
-+ break;
-+ default: size = 0; // not a valid menu type
-+ }
-+
-+ return size;
-+}
-+
-+void LayoutList::removeFromMenuList(const AutoLayout& lnum,
-+ const PageKind& eMenu)
-+{
-+ sal_uInt32 index = getMenuIndex(lnum, eMenu);
-+
-+ if(index == LL_NOT_FOUND) return;
-+
-+ switch (eMenu)
-+ {
-+ case PK_STANDARD: maStandard.erase(maStandard.begin()+index);
-+ break;
-+ case PK_NOTES: maNotes.erase(maNotes.begin()+index);
-+ break;
-+ case PK_HANDOUT: maHandout.erase(maHandout.begin()+index);
-+ break;
-+ }
-+
-+
-+}
-+
-+void LayoutList::addToMenuList(const sal_Int32& index,
-+ const AutoLayout& lnum,
-+ const PageKind& eMenu)
-+{
-+ sal_Int32 size;
-+ MEListImpl* list = NULL;
-+
-+ switch (eMenu)
-+ {
-+ case PK_STANDARD: list = &maStandard;
-+ break;
-+ case PK_NOTES: list = &maNotes;
-+ break;
-+ case PK_HANDOUT: list = &maHandout;
-+ break;
-+ }
-+
-+ if(list)
-+ {
-+ size = list->size();
-+ if((index < 0)||(index >= size))
-+ {
-+ //if too low or too high an index
-+ // then assign it to the back of
-+ // the list
-+ list->push_back(lnum);
-+ }
-+ else
-+ {
-+ // insert at the given index
-+ list->insert(list->begin() + index, lnum);
-+ }
-+
-+ }
-+
-+}
-+
-+void LayoutList::initializeMenuOrder()
-+{
-+ // this probably would be best store in a file too.
-+ // for keeping track of menu order for builtins
-+
-+ maStandard.resize(25, LL_NOT_FOUND);
-+ maNotes.resize(1, LL_NOT_FOUND);
-+ maHandout.resize(6, LL_NOT_FOUND);
-+
-+ // will put custom layouts on the end:
-+
-+ // for standard view mode:
-+ maStandard[0] = AUTOLAYOUT_NONE;
-+ maStandard[1] = AUTOLAYOUT_TITLE;
-+ maStandard[2] = AUTOLAYOUT_ENUM;
-+ maStandard[3] = AUTOLAYOUT_2TEXT;
-+ maStandard[4] = AUTOLAYOUT_ONLY_TITLE;
-+ maStandard[5] = AUTOLAYOUT_ONLY_TEXT;
-+ maStandard[6] = AUTOLAYOUT_OBJ;
-+ maStandard[7] = AUTOLAYOUT_CHART;
-+ maStandard[8] = AUTOLAYOUT_TAB;
-+ maStandard[9] = AUTOLAYOUT_CLIPTEXT;
-+ maStandard[10] = AUTOLAYOUT_TEXTCHART;
-+ maStandard[11] = AUTOLAYOUT_TEXTCLIP;
-+ maStandard[12] = AUTOLAYOUT_CHARTTEXT;
-+ maStandard[13] = AUTOLAYOUT_TEXTOBJ;
-+ maStandard[14] = AUTOLAYOUT_TEXT2OBJ;
-+ maStandard[15] = AUTOLAYOUT_OBJTEXT;
-+ maStandard[16] = AUTOLAYOUT_OBJOVERTEXT;
-+ maStandard[17] = AUTOLAYOUT_2OBJTEXT;
-+ maStandard[18] = AUTOLAYOUT_2OBJOVERTEXT;
-+ maStandard[19] = AUTOLAYOUT_TEXTOVEROBJ;
-+ maStandard[20] = AUTOLAYOUT_4OBJ;
-+ maStandard[21] = AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART;
-+ maStandard[22] = AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE;
-+ maStandard[23] = AUTOLAYOUT_TITLE_VERTICAL_OUTLINE;
-+ maStandard[24] = AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART;
-+
-+ //for notes view:
-+ maNotes[0] = AUTOLAYOUT_NOTES;
-+
-+ //for handout:
-+ maHandout[0] = AUTOLAYOUT_HANDOUT1;
-+ maHandout[1] = AUTOLAYOUT_HANDOUT2;
-+ maHandout[2] = AUTOLAYOUT_HANDOUT3;
-+ maHandout[3] = AUTOLAYOUT_HANDOUT4;
-+ maHandout[4] = AUTOLAYOUT_HANDOUT6;
-+ maHandout[5] = AUTOLAYOUT_HANDOUT9;
-+
-+}
-+
-+void LayoutList::initializeList()
-+{
-+ LayoutType* pLayout;
-+
-+ initializeMenuOrder();
-+
-+ // eventually, the layouts will be obtained by string name
-+ // for until LayoutMenu is converted, I need to make sure
-+ // the indices match the correct autolayout number.
-+ // resize to more than needed (for adding layouts)
-+ // and initialize all to NULL.
-+
-+ maLayoutList.resize(35,NULL);
-+
-+ // AUTOLAYOUT_TITLE (standard title with text box)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TITLE)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TITLE);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_00_H);
-+ pLayout->setLBitmapId(BMP_FOIL_00);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // text element
-+ pLayout->setKind(1,PRESOBJ_TEXT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TITLE] = pLayout;
-+
-+ // AUTOLAYOUT_ENUM (title and outline)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_ENUM)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_ENUM);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_01_H);
-+ pLayout->setLBitmapId(BMP_FOIL_01);
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_ENUM] = pLayout;
-+
-+ // AUTOLAYOUT_CHART (title and Chart)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_CHART)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_CHART);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_02_H);
-+ pLayout->setLBitmapId(BMP_FOIL_02);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // chart element
-+ pLayout->setKind(1,PRESOBJ_CHART);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_CHART] = pLayout;
-+
-+ // AUTOLAYOUT_2TEXT (title and 2 outlines)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_2TEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_2TEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_03_H);
-+ pLayout->setLBitmapId(BMP_FOIL_03);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline1 element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+
-+ pLayout->createDefaultElement(); // outline2 element
-+ pLayout->setKind(2,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_2TEXT] = pLayout;
-+
-+ // AUTOLAYOUT_TEXTCHART (title, outline and chart)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTCHART)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TEXTCHART);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_04_H);
-+ pLayout->setLBitmapId(BMP_FOIL_04);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+
-+ pLayout->createDefaultElement(); // chart element
-+ pLayout->setKind(2,PRESOBJ_CHART);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TEXTCHART] = pLayout;
-+
-+ // AUTOLAYOUT_ORG (title and org. chart)
-+ // This layout isn't even put into the menu!
-+ // No string resource so for now, I'll borrow chart
-+ // TODO: See if I can eliminate this if not being used.
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString::CreateFromAscii(""));
-+ pLayout->setStrId(0);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_05_H); // guessing here :)
-+ pLayout->setLBitmapId(BMP_FOIL_05);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // organ. chart element
-+ pLayout->setKind(1,PRESOBJ_ORGCHART);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_ORG] = pLayout;
-+
-+ // AUTOLAYOUT_TEXTCLIP (title, outline and clipart (graphic))
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTCLIP)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TEXTCLIP);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_06_H);
-+ pLayout->setLBitmapId(BMP_FOIL_06);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+
-+ pLayout->createDefaultElement(); // picture element
-+ pLayout->setKind(2,PRESOBJ_GRAPHIC);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TEXTCLIP] = pLayout;
-+
-+ // AUTOLAYOUT_CHARTTEXT (title, chart and outline)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_CHARTTEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_CHARTTEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_07_H);
-+ pLayout->setLBitmapId(BMP_FOIL_07);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // chart element
-+ pLayout->setKind(1,PRESOBJ_CHART);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(2,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_CHARTTEXT] = pLayout;
-+
-+ // AUTOLAYOUT_TAB (title and table)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TAB)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TAB);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_08_H);
-+ pLayout->setLBitmapId(BMP_FOIL_08);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // table element
-+ pLayout->setKind(1,PRESOBJ_TABLE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TAB] = pLayout;
-+
-+ // AUTOLAYOUT_CLIPTEXT (title, clipart (graphic) and outline)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_CLIPTEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_CLIPTEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_09_H);
-+ pLayout->setLBitmapId(BMP_FOIL_09);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // picture element
-+ pLayout->setKind(1,PRESOBJ_GRAPHIC);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(2,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_CLIPTEXT] = pLayout;
-+
-+ // AUTOLAYOUT_TEXTOBJ (title, outline and object)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTOBJ)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TEXTOBJ);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_10_H);
-+ pLayout->setLBitmapId(BMP_FOIL_10);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline1 element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+
-+ pLayout->createDefaultElement(); // object element
-+ pLayout->setKind(2,PRESOBJ_OBJECT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TEXTOBJ] = pLayout;
-+
-+ // AUTOLAYOUT_OBJ (title and object)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_OBJ)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_OBJ);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_11_H);
-+ pLayout->setLBitmapId(BMP_FOIL_11);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // object element
-+ pLayout->setKind(1,PRESOBJ_OBJECT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_OBJ] = pLayout;
-+
-+
-+ // AUTOLAYOUT_TEXT2OBJ (title, outline and 2 objects)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXT2OBJ)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TEXT2OBJ);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(2);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_12_H);
-+ pLayout->setLBitmapId(BMP_FOIL_12);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+
-+ pLayout->createDefaultElement(); // object1 element
-+ pLayout->setKind(2,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // object2 element
-+ pLayout->setKind(3,PRESOBJ_OBJECT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TEXT2OBJ] = pLayout;
-+
-+ // AUTOLAYOUT_OBJTEXT (title, object and outline)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_OBJTEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_OBJTEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(1);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_13_H);
-+ pLayout->setLBitmapId(BMP_FOIL_13);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // object element
-+ pLayout->setKind(1,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(2,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_OBJTEXT] = pLayout;
-+
-+ // AUTOLAYOUT_OBJOVERTEXT (title, object over an outline)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_OBJOVERTEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_OBJOVERTEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(4);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_14_H);
-+ pLayout->setLBitmapId(BMP_FOIL_14);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // object element
-+ pLayout->setKind(1,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(2,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_OBJOVERTEXT] = pLayout;
-+
-+ // AUTOLAYOUT_2OBJTEXT (2 objects and an outline)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_2OBJTEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_2OBJTEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(3);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_15_H);
-+ pLayout->setLBitmapId(BMP_FOIL_15);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // object1 element
-+ pLayout->setKind(1,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // object2 element
-+ pLayout->setKind(2,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(3,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_2OBJTEXT] = pLayout;
-+
-+ // AUTOLAYOUT_2OBJOVERTEXT (2 objects over the outline)
-+
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_2OBJOVERTEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_2OBJOVERTEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(5);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_16_H);
-+ pLayout->setLBitmapId(BMP_FOIL_16);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // object1 element
-+ pLayout->setKind(1,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // object2 element
-+ pLayout->setKind(2,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(3,PRESOBJ_OUTLINE);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_2OBJOVERTEXT] = pLayout;
-+
-+ // AUTOLAYOUT_TEXTOVEROBJ (title, an outline over an object)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_TEXTOVEROBJ)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_TEXTOVEROBJ);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(4);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_17_H);
-+ pLayout->setLBitmapId(BMP_FOIL_17);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+
-+ pLayout->createDefaultElement(); // object element
-+ pLayout->setKind(2,PRESOBJ_OBJECT);
-+
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TEXTOVEROBJ] = pLayout;
-+
-+ // AUTOLAYOUT_4OBJ (title and 4 objects)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_4OBJ)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_4OBJ);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(6);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_18_H);
-+ pLayout->setLBitmapId(BMP_FOIL_18);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // object1 element
-+ pLayout->setKind(1,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // object2 element
-+ pLayout->setKind(2,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // object3 element
-+ pLayout->setKind(3,PRESOBJ_OBJECT);
-+
-+ pLayout->createDefaultElement(); // object4 element
-+ pLayout->setKind(4,PRESOBJ_OBJECT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_4OBJ] = pLayout;
-+
-+ // AUTOLAYOUT_ONLY_TITLE (just a title)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_ONLY_TITLE)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_ONLY_TITLE);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_19_H);
-+ pLayout->setLBitmapId(BMP_FOIL_19);
-+
-+ pLayout->createDefaultElement(); // title element
-+ pLayout->initializeRectInfo();
-+
-+ maLayoutList[AUTOLAYOUT_ONLY_TITLE] = pLayout;
-+
-+ // AUTOLAYOUT_NONE (blank page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_NONE)));\
-+ pLayout->setStrId(STR_AUTOLAYOUT_NONE);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_20_H);
-+ pLayout->setLBitmapId(BMP_FOIL_20);
-+
-+ maLayoutList[AUTOLAYOUT_NONE] = pLayout;
-+
-+ // AUTOLAYOUT_NOTES (notes page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_NOTES)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_NOTES);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILN_01_H);
-+ pLayout->setLBitmapId(BMP_FOILN_01);
-+
-+ pLayout->createDefaultElement(); // page element
-+ pLayout->setKind(0,PRESOBJ_PAGE);
-+ pLayout->setRecttype(0, RT_TITLE);
-+
-+ pLayout->createDefaultElement(); // notes element
-+ pLayout->setKind(1,PRESOBJ_NOTES);
-+ pLayout->setRecttype(1,RT_LAYOUT);
-+
-+ maLayoutList[AUTOLAYOUT_NOTES] = pLayout;
-+
-+ // AUTOLAYOUT_HANDOUT1 (1 page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT1)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT1);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILH_01_H);
-+ pLayout->setLBitmapId(BMP_FOILH_01);
-+
-+ maLayoutList[AUTOLAYOUT_HANDOUT1] = pLayout;
-+
-+ // AUTOLAYOUT_HANDOUT2 (2 page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT2)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT2);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILH_02_H);
-+ pLayout->setLBitmapId(BMP_FOILH_02);
-+
-+ maLayoutList[AUTOLAYOUT_HANDOUT2] = pLayout;
-+
-+ // AUTOLAYOUT_HANDOUT3 (3 page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT3)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT3);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILH_03_H);
-+ pLayout->setLBitmapId(BMP_FOILH_03);
-+
-+ maLayoutList[AUTOLAYOUT_HANDOUT3] = pLayout;
-+
-+ // AUTOLAYOUT_HANDOUT4 (4 page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT4)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT4);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILH_04_H);
-+ pLayout->setLBitmapId(BMP_FOILH_04);
-+
-+ maLayoutList[AUTOLAYOUT_HANDOUT4] = pLayout;
-+
-+ // AUTOLAYOUT_HANDOUT6 (6 page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT6)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT6);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILH_06_H);
-+ pLayout->setLBitmapId(BMP_FOILH_06);
-+
-+ maLayoutList[AUTOLAYOUT_HANDOUT6] = pLayout;
-+
-+ // AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART (vertical title
-+ // and outline with chart)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AL_VERT_TITLE_TEXT_CHART)));
-+ pLayout->setStrId(STR_AL_VERT_TITLE_TEXT_CHART);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(7);
-+ pLayout->setWritingMode(WritingMode_TB_RL);
-+ pLayout->setHBitmapId(BMP_FOIL_21_H);
-+ pLayout->setLBitmapId(BMP_FOIL_21);
-+
-+ pLayout->createDefaultElement(); // title element
-+ pLayout->setVertical(0,true);
-+ pLayout->setRecttype(0, RT_VERTICAL_TITLE);
-+
-+ pLayout->createDefaultElement(); // outline1 element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+ pLayout->setVertical(1, true);
-+ pLayout->setRecttype(1, RT_VERTICAL_LAYOUT);
-+
-+ pLayout->createDefaultElement(); // chart element
-+ pLayout->setKind(2,PRESOBJ_CHART);
-+ pLayout->setRecttype(2, RT_VERTICAL_LAYOUT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART] = pLayout;
-+
-+ // AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AL_VERT_TITLE_VERT_OUTLINE)));
-+ pLayout->setStrId(STR_AL_VERT_TITLE_VERT_OUTLINE);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(8);
-+ pLayout->setWritingMode(WritingMode_TB_RL);
-+ pLayout->setHBitmapId(BMP_FOIL_22_H);
-+ pLayout->setLBitmapId(BMP_FOIL_22);
-+
-+ pLayout->createDefaultElement(); // title element
-+ pLayout->setVertical(0,true);
-+ pLayout->setRecttype(0,RT_VERTICAL_TITLE);
-+
-+ pLayout->createDefaultElement(); // outline1 element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+ pLayout->setVertical(1, true);
-+ pLayout->setRecttype(1, RT_VERTICAL_LAYOUT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE] = pLayout;
-+
-+ // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AL_TITLE_VERT_OUTLINE)));
-+ pLayout->setStrId(STR_AL_TITLE_VERT_OUTLINE);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_TB_RL);
-+ pLayout->setHBitmapId(BMP_FOIL_23_H);
-+ pLayout->setLBitmapId(BMP_FOIL_23);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(1,PRESOBJ_OUTLINE);
-+ pLayout->setVertical(1, true);
-+ pLayout->setRecttype(1,RT_VERTICAL_LAYOUT);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TITLE_VERTICAL_OUTLINE] = pLayout;
-+
-+
-+ // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AL_TITLE_VERT_OUTLINE_CLIPART)));
-+ pLayout->setStrId(STR_AL_TITLE_VERT_OUTLINE_CLIPART);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(9);
-+ pLayout->setWritingMode(WritingMode_TB_RL);
-+ pLayout->setHBitmapId(BMP_FOIL_24_H);
-+ pLayout->setLBitmapId(BMP_FOIL_24);
-+
-+ pLayout->createDefaultElement(); // title element
-+
-+ pLayout->createDefaultElement(); // picture element
-+ pLayout->setKind(1,PRESOBJ_GRAPHIC);
-+ pLayout->setRecttype(1,RT_LAYOUT);
-+
-+ pLayout->createDefaultElement(); // outline element
-+ pLayout->setKind(2,PRESOBJ_OUTLINE);
-+ pLayout->setRecttype(2, RT_LAYOUT);
-+ pLayout->setVertical(2, true);
-+ pLayout->initializeRectInfo(); // initialize each element
-+
-+ maLayoutList[AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART] = pLayout;
-+
-+ // AUTOLAYOUT_HANDOUT9 (9 per page)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_HANDOUT9)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_HANDOUT9);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(0);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOILH_09_H);
-+ pLayout->setLBitmapId(BMP_FOILH_09);
-+
-+ maLayoutList[AUTOLAYOUT_HANDOUT9] = pLayout;
-+
-+ // AUTOLAYOUT_ONLY_TEXT (just a text box)
-+ pLayout = new LayoutType();
-+ pLayout->setName(LString(SdResId(STR_AUTOLAYOUT_ONLY_TEXT)));
-+ pLayout->setStrId(STR_AUTOLAYOUT_ONLY_TEXT);
-+ //This is the case number to get the bounding rectangle
-+ // for this layout. Will eventually be taken out in the future
-+ pLayout->setLayoutNumber(10);
-+ pLayout->setWritingMode(WritingMode_LR_TB);
-+ pLayout->setHBitmapId(BMP_FOIL_25_H);
-+ pLayout->setLBitmapId(BMP_FOIL_25);
-+
-+ pLayout->createDefaultElement(); // text element
-+ pLayout->setKind(0,PRESOBJ_TEXT);
-+ pLayout->setRecttype(0,RT_TEXT_ONLY);
-+ pLayout->initializeRectInfo();
-+
-+ maLayoutList[AUTOLAYOUT_ONLY_TEXT] = pLayout;
-+
-+}
-+
-diff -Nrup sd-m15/source/core/layouttype.cxx sd/source/core/layouttype.cxx
---- sd-m15/source/core/layouttype.cxx 1969-12-31 16:00:00.000000000 -0800
-+++ sd/source/core/layouttype.cxx 2009-07-18 23:21:35.000000000 -0700
-@@ -0,0 +1,844 @@
-+/*************************************************************************
-+ *
-+ * 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: layouttype.cxx,v $
-+ * $Revision: 0.1 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_sd.hxx"
-+#include <tools/debug.hxx>
-+#include <stdio.h>
-+#include <com/sun/star/uno/Reference.hxx>
-+#include <com/sun/star/xml/dom/XDocumentBuilder.hpp>
-+#include "sdresid.hxx"
-+#include "layouttype.hxx"
-+
-+#define CHARTOOUSTR(x) rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( x ) )
-+#define CHATTOSTR(x) String::createFromAscii(x);
-+#define STRTOCHAR(x) (char*) ByteString(x, RTL_TEXTENCODING_UTF8).GetBuffer()
-+#define OUSTRTOCHAR(x) (OUStringToOString(x, RTL_TEXTENCODING_UTF8)).getStr()
-+
-+using namespace sd;
-+using namespace ::sax_fastparser;
-+using namespace ::com::sun::star::uno;
-+using namespace ::com::sun::star::xml;
-+
-+/** xml tags used by the layoutlist class
-+ * for reading and writing to the
-+ * configuration file.
-+ */
-+
-+static char sElemTag[] = "Element";
-+static char sKindTag[] = "PresObjKind";
-+static char sVerticalTag[] = "IsVertical";
-+static char sFxTag[] = "XFactor";
-+static char sFyTag[] = "YFactor";
-+static char sFhtTag[] = "HtFactor";
-+static char sFwtTag[] = "WtFactor";
-+static char sRectTag[] = "RectType";
-+static char sLayoutTag[] = "layout";
-+static char sNumberTag[] = "number";
-+static char sNameTag[] = "Name";
-+static char sStrIdTag[] = "StrId";
-+static char sWmTag[] = "WritingMode";
-+static char sHBitmapTag[] = "HBitmapId";
-+static char sLBitmapTag[] = "LBitmapId";
-+static char sElemListTag[] = "ElementList";
-+
-+
-+
-+LayoutType::LayoutType()
-+{
-+ elemList.reserve(20);
-+}
-+
-+LayoutType::~LayoutType()
-+{
-+ sal_uInt32 size = elemList.size();
-+
-+ for(sal_uInt32 i = 0; i < size; i++)
-+ {
-+ deleteElement(i);
-+ }
-+
-+ elemList.clear();
-+}
-+
-+/** writes the element list for this layout to the config file */
-+
-+void LayoutType::writeElementTofile(FastSerializerHelper& fsh,
-+ const sal_uInt32 i,
-+ const char* sNumber,
-+ const ElemType* elem)
-+{
-+
-+
-+ static char sElemNumber[10];
-+ static char sKind[10];
-+ static char sVertical[10];
-+ static char sRect[10];
-+ static char sFx[10];
-+ static char sFy[10];
-+ static char sHt[10];
-+ static char sWt[10];
-+
-+
-+ sprintf(sElemNumber,"%d", (int) i);
-+ sprintf(sKind, "%d", (int) elem->kind); // the type of pres. object
-+ sprintf(sVertical, "%d", ((elem->isVertical) ? 1 : 0));
-+ sprintf(sFx, "%f", elem->factorX); // factor for finding topleft x value
-+ sprintf(sFy,"%f", elem->factorY); // factor for finding topleft y value
-+ sprintf(sHt,"%f", elem->factorHt); // factor for finding height
-+ sprintf(sWt,"%f", elem->factorWt); // factor for finding width
-+ sprintf(sRect, "%d", (int) elem->recttype); // type of standard rect to use
-+
-+ fsh.singleElement(sLayoutTag,
-+ sElemTag, sElemNumber,
-+ sNumberTag, sNumber,
-+ sKindTag, sKind,
-+ sVerticalTag, sVertical,
-+ sFxTag, sFx,
-+ sFyTag, sFy,
-+ sFhtTag, sHt,
-+ sFwtTag, sWt,
-+ sRectTag, sRect, NULL);
-+
-+
-+}
-+
-+/** writes this layout to a xml configuration file */
-+
-+void LayoutType::writeLayoutToFile(FastSerializerHelper& fsh, const sal_Int32 autolayout)
-+{
-+ static char sNumber[10];
-+ static char sName[40];
-+ static char sStrId[10];
-+ static char sWm[10];
-+ static char sHBitmap[10];
-+ static char sLBitmap[10];
-+
-+ // write out layout information
-+ sprintf(sNumber,"%d", (int) autolayout);
-+ sprintf(sName,"%s", (char*) ByteString(name, RTL_TEXTENCODING_UTF8).GetBuffer());
-+ sprintf(sStrId,"%d", (int) nStrId);
-+ sprintf(sWm, "%d", (int) nWritingMode);
-+ sprintf(sHBitmap, "%d", (int) nHBitmapId);
-+ sprintf(sLBitmap, "%d", (int) nLBitmapId);
-+
-+ fsh.startElement(sLayoutTag, NULL);
-+
-+ fsh.singleElement(sLayoutTag, sNameTag, sName,
-+ sNumberTag, sNumber,
-+ sStrIdTag, sStrId,
-+ sWmTag, sWm,
-+ sHBitmapTag, sHBitmap,
-+ sLBitmapTag, sLBitmap, NULL);
-+
-+
-+ // write out element list
-+ ElemType* elem;
-+
-+ fsh.startElement(sElemListTag, NULL);
-+
-+ for(sal_uInt32 i=0; i<length();i++)
-+ {
-+ elem = getElemByIndex(i);
-+ if(elem) writeElementTofile(fsh, i, sNumber, elem);
-+ }
-+
-+ fsh.endElement(sElemListTag);
-+
-+ fsh.endElement(sLayoutTag);
-+
-+}
-+
-+sal_Int32 LayoutType::getIntValue(const Reference<dom::XNode>& node)
-+{
-+ sal_Int32 num=0;
-+
-+ if(node.is())
-+ {
-+ rtl::OUString sStr= node->getNodeValue();
-+ num = sStr.toInt32();
-+ }
-+
-+ return num;
-+}
-+
-+double LayoutType::getDoubleValue(const Reference<dom::XNode>& node)
-+{
-+ double dnum=0.0;
-+
-+ if(node.is())
-+ {
-+ rtl::OUString sStr= node->getNodeValue();
-+ dnum = sStr.toDouble();
-+ }
-+
-+ return dnum;
-+
-+}
-+
-+/** reads in the layout information from
-+ * the configuration file
-+ */
-+
-+sal_Int32 LayoutType::readLayoutFromFile(const Reference<dom::XNode>& node)
-+{
-+ sal_Int32 lnum=-1;
-+ sal_Int32 num;
-+ double dnum;
-+ Reference<dom::XNodeList> topnodes = node->getChildNodes();
-+ Reference<dom::XNode> layoutattrnode = topnodes->item(0);
-+
-+ if(layoutattrnode->hasAttributes())
-+ {
-+ Reference<dom::XNamedNodeMap> attrlist = layoutattrnode->getAttributes();
-+
-+ Reference<dom::XNode> anode = attrlist->getNamedItem(CHARTOOUSTR(sStrIdTag));
-+ num = getIntValue(anode);
-+ if(num > 0)
-+ {
-+ nStrId = num;
-+ name = (LString) SdResId(num);
-+ } else
-+ {
-+ nStrId = -1;
-+ Reference<dom::XNode> nameNode = attrlist->getNamedItem(CHARTOOUSTR(sNameTag));
-+ rtl::OUString sName = nameNode->getNodeValue();
-+ name = LString::CreateFromAscii(OUSTRTOCHAR(sName));
-+ }
-+ OSL_TRACE("AUTOLAYOUT NAME: %s", STRTOCHAR(name));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sWmTag));
-+ nWritingMode = (WritingMode) getIntValue(anode);
-+ OSL_TRACE(" writing mode %d", (int) nWritingMode);
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sNumberTag));
-+ lnum = getIntValue(anode);
-+ OSL_TRACE(" AutoLayout number %d", (int) lnum);
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sHBitmapTag));
-+ nHBitmapId = getIntValue(anode);
-+ OSL_TRACE(" HBitmap ID: %d", (int) nHBitmapId);
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sLBitmapTag));
-+ nLBitmapId = getIntValue(anode);
-+ OSL_TRACE(" LBitmap ID: %d", (int) nLBitmapId);
-+
-+ }
-+
-+ Reference<dom::XNode> elemlistnode = topnodes->item(1);
-+ Reference<dom::XNodeList> elemnodes = elemlistnode->getChildNodes();
-+ sal_Int32 elemsize;
-+
-+ elemsize = elemnodes->getLength();
-+ OSL_TRACE("NUMBER OF ELEM %d", elemsize);
-+ for(sal_Int32 i=0; i < elemsize;i++)
-+ {
-+ Reference<dom::XNode> elemnode = elemnodes->item(i);
-+ OSL_TRACE("ELEMENT: %i", i);
-+ if(elemnode->hasAttributes())
-+ {
-+ Reference<dom::XNamedNodeMap> attrlist = elemnode->getAttributes();
-+
-+ createDefaultElement();
-+ Reference<dom::XNode> anode = attrlist->getNamedItem(CHARTOOUSTR(sKindTag));
-+ num = getIntValue(anode);
-+ setKind(i, (PresObjKind) num);
-+ OSL_TRACE(" Kind = %l", (long) getKind(i));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sVerticalTag));
-+ num = getIntValue(anode);
-+ bool bVert = (num ? true : false);
-+ setVertical(i, bVert);
-+ OSL_TRACE(" isvertical = %d", (isVertical(i) ? 1 : 0));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sFxTag));
-+ dnum = getDoubleValue(anode);
-+ setFactorX(i, dnum);
-+ OSL_TRACE(" X = %f", factorX(i));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sFyTag));
-+ dnum = getDoubleValue(anode);
-+ setFactorY(i, dnum);
-+ OSL_TRACE(" Y = %f", factorY(i));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sFhtTag));
-+ dnum = getDoubleValue(anode);
-+ setFactorHt(i, dnum);
-+ OSL_TRACE(" Ht = %f", factorHt(i));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sFwtTag));
-+ dnum = getDoubleValue(anode);
-+ setFactorWt(i, dnum);
-+ OSL_TRACE(" Wt = %f", factorWt(i));
-+
-+ anode = attrlist->getNamedItem(CHARTOOUSTR(sRectTag));
-+ num = getIntValue(anode);
-+ setRecttype(i, (RectType) num);
-+ OSL_TRACE(" recttype = %d", recttype(i));
-+
-+ }
-+
-+ }
-+ return lnum;
-+
-+}
-+
-+/** creates an element of type TITLE
-+ * with default rect bounds.
-+ * and puts it in the elem list
-+ * at the end.
-+ */
-+
-+void LayoutType::createDefaultElement()
-+{
-+ ElemType* elem = new ElemType;
-+
-+ elem->kind = PRESOBJ_TITLE;
-+ elem->isVertical = false;
-+ elem->factorX = 0.0;
-+ elem->factorY = 0.0;
-+ elem->factorHt = 1.0;
-+ elem->factorWt = 1.0;
-+ elem->recttype = RT_TITLE;
-+
-+ addElemToList(*elem);
-+
-+}
-+
-+/** Get functions for layout information */
-+
-+LString LayoutType::getName()
-+{
-+ return name;
-+}
-+
-+sal_uInt32 LayoutType::getStrId()
-+{
-+ return nStrId;
-+}
-+
-+sal_uInt32 LayoutType::getLayoutNumber()
-+{
-+ return nLayout;
-+}
-+
-+WritingMode LayoutType::getWritingMode()
-+ {
-+ return nWritingMode;
-+ }
-+
-+sal_uInt32 LayoutType::getHBitmapId()
-+{
-+ return nHBitmapId;
-+}
-+
-+sal_uInt32 LayoutType::getLBitmapId()
-+{
-+ return nLBitmapId;
-+}
-+
-+
-+/** gets the element at the given index
-+ * into the elem list
-+ */
-+
-+ElemType* LayoutType::getElemByIndex(const sal_uInt32& nIndex)
-+{
-+ // check for valid index (no need to check for negative)
-+ if(nIndex >= length()) return NULL;
-+
-+ return elemList[nIndex];
-+}
-+
-+/** gets length of elem list. */
-+
-+sal_uInt32 LayoutType::length()
-+{
-+ return elemList.size();
-+}
-+
-+/** these are get functions for the element list
-+ * They require passing in the index at which
-+ * the element is located in the list
-+ */
-+
-+ PresObjKind LayoutType::getKind(const sal_uInt32& nIndex)
-+ {
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->kind;
-+ return PRESOBJ_NONE;
-+
-+ }
-+
-+
-+bool LayoutType::isVertical(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->isVertical;
-+ return false;
-+}
-+
-+double LayoutType::factorX(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->factorX;
-+ return 0.0;
-+}
-+
-+double LayoutType::factorY(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->factorY;
-+ return 0.0;
-+}
-+
-+double LayoutType::factorHt(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->factorHt;
-+ return 1.0;
-+}
-+
-+double LayoutType::factorWt(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->factorWt;
-+ return 1.0;
-+}
-+
-+RectType LayoutType::recttype(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) return elem->recttype;
-+ return RT_ERROR;
-+}
-+
-+/** Set functions for the layout */
-+
-+void LayoutType::setName(const LString& sName)
-+{
-+ name = sName;
-+}
-+
-+void LayoutType::setStrId(const sal_uInt32 id)
-+{
-+ nStrId = id;
-+}
-+
-+void LayoutType::setLayoutNumber(const sal_uInt32& number)
-+{
-+ nLayout = number;
-+}
-+
-+
-+void LayoutType::setWritingMode(const WritingMode& wmode)
-+{
-+ nWritingMode = wmode;
-+}
-+
-+void LayoutType::setHBitmapId(const sal_uInt32& id)
-+{
-+ nHBitmapId = id;
-+}
-+
-+void LayoutType::setLBitmapId(const sal_uInt32& id)
-+{
-+ nLBitmapId = id;
-+}
-+
-+/** set functions for the elements in the
-+ * list. Requires passing in the index
-+ * in the list where the element is
-+ * located
-+ */
-+
-+void LayoutType::setKind(const sal_uInt32& nIndex, PresObjKind nKind)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->kind = nKind;
-+}
-+
-+
-+void LayoutType::setVertical(const sal_uInt32& nIndex, bool bVertical)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->isVertical = bVertical;
-+}
-+
-+void LayoutType::setFactorX(const sal_uInt32& nIndex, double fx)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->factorX = fx;
-+}
-+
-+void LayoutType::setFactorY(const sal_uInt32& nIndex, double fy)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->factorY = fy;
-+}
-+
-+void LayoutType::setFactorHt(const sal_uInt32& nIndex, double ht)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->factorHt = ht;
-+}
-+
-+void LayoutType::setFactorWt(const sal_uInt32& nIndex, double wt)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->factorWt = wt;
-+}
-+
-+void LayoutType::setRecttype(const sal_uInt32& nIndex, RectType rect)
-+{
-+ ElemType* elem;
-+ elem = getElemByIndex(nIndex);
-+ if(elem) elem->recttype = rect;
-+}
-+
-+/** adds a passed in element object to the
-+ * back of the list
-+ */
-+
-+void LayoutType::addElemToList(ElemType& rElement)
-+{
-+ elemList.push_back(&rElement);
-+
-+}
-+
-+/** deletes an element from the list
-+ * This will move elements up
-+ * from where they are
-+ */
-+
-+void LayoutType::deleteElement(const sal_uInt32& nIndex)
-+{
-+ ElemType* elem;
-+ if(nIndex > length()) return;
-+ elem = elemList[nIndex];
-+ elemList.erase(elemList.begin() + nIndex);
-+ if(elem) delete elem;
-+}
-+
-+/** Helper function for initializing builtins
-+ * based on a given number. To possibly be
-+ * removed when the configuration files
-+ * are created
-+ */
-+
-+void LayoutType::initFromLayoutNumber(ElemType* elem,
-+ const sal_uInt32& i)
-+{
-+ Point ncpos(0,0); //no changes to position
-+ Size ncsize(1,1); //no changes to size
-+ Size size;
-+ Point pos;
-+
-+ switch (nLayout)
-+
-+ {
-+ case 9: // title and 2 vertical side by side layouts
-+ case 1: // TITLE AND 2 side by side LAYOUTS
-+ // for right to left switching if needed.
-+ if(nLayout != 9) elem->recttype = RT_LAYOUT_SWITCH;
-+ elem->factorWt = .488;
-+ if(i == 2) elem->factorX = .5124;
-+ break;
-+ case 2: // TITLE on top, 1 right, 2 left layouts
-+ elem->recttype = RT_LAYOUT_SWITCH; // for right to left switching
-+ // if needed.
-+ elem->factorWt = .488;
-+ if((i == 2)||(i == 3)) //2 top to bot.
-+ {
-+ elem->factorHt = .477;
-+ elem->factorX = .5124;
-+ if(i == 3) elem->factorY = .5223;
-+ }
-+ break;
-+ case 3: //TITLE, 2 right, 1 left layouts
-+ elem->recttype = RT_LAYOUT_SWITCH; // for right to left switching
-+ // if needed.
-+ elem->factorWt = .488;
-+ if((i == 1)||(i == 2)) //2 top to bot.
-+ {
-+ elem->factorHt = .477;
-+ if(i == 2) elem->factorY = .5223;
-+ }
-+ if(i == 3) elem->factorX = .5124;
-+ break;
-+ case 4: //TITLE, 2 layouts top to bot.
-+ elem->factorHt = .477;
-+ if(i == 2) elem->factorY = .5223;
-+ break;
-+ case 5: //TITLE, 2 layouts above 1 layout
-+ elem->factorHt = .477;
-+ if(i != 3) elem->factorWt = .488;
-+ if(i == 2) elem->factorX = .5124;
-+ if(i == 3) elem->factorY = .5223;
-+ break;
-+ case 6: // 4 layouts (in a square)
-+ elem->factorHt = .477;
-+ elem->factorWt = .488;
-+ if((i == 2)||(i == 3)) elem->factorX = .5124;
-+ if((i == 3)||(i == 4)) elem->factorY = .5223;
-+ break;
-+ case 7: // a vertical title and two layouts (top to bottom)
-+ elem->recttype = RT_VERTICAL_LAYOUT;
-+ elem->factorHt = .47;
-+ elem->factorWt = .7;
-+ if(i == 2) elem->factorY = .53;
-+ break;
-+ case 8: // a vertical title and one shape
-+ elem->recttype = RT_VERTICAL_LAYOUT;
-+ elem->factorWt = .7;
-+ break;
-+ case 0:
-+ default: break; /* do nothing */
-+ } // switch nLayout
-+
-+}
-+
-+/** to be used when the user customizes
-+ * an autolayout. It sets rect bounds
-+ * factors based on the sizes of a standard
-+ * title (for titles) or layout
-+ * rectangle.
-+ */
-+
-+
-+void LayoutType::setCustomRectInfo(const sal_uInt32& nIndex,
-+ const RectType& rType,
-+ const Rectangle& rRect,
-+ const Rectangle& rStandard)
-+{
-+ ElemType* elem;
-+ double x, y, ht, wt;
-+ double sx, sy, sht, swt;
-+
-+ // the actual rectangle
-+ x = rRect.TopLeft().X();
-+ y = rRect.TopLeft().Y();
-+ ht = rRect.getHeight();
-+ wt = rRect.getWidth();
-+
-+ // the standard to use
-+ // to get rel. size factors
-+ sx = rStandard.TopLeft().X();
-+ sy = rStandard.TopLeft().Y();
-+ sht = rStandard.getHeight();
-+ swt = rStandard.getWidth();
-+
-+ elem = getElemByIndex(nIndex);
-+ if(elem)
-+ {
-+ elem->recttype = rType;
-+ elem->factorHt = ht/sht;
-+ elem->factorWt = wt/swt;
-+ elem->factorX = (x - sx)/swt;
-+ elem->factorY = (y - sy)/sht;
-+ }
-+
-+}
-+
-+/** for initializing rect bounds factors
-+ * for builtins. To be removed once the
-+ * configuration file is implemented.
-+ */
-+
-+void LayoutType::initializeRectInfo()
-+{
-+ ElemType* elem;
-+ //Point ncpos(0,0); //no changes to position
-+ //Size ncsize(1,1); //no changes to size
-+ //Size size;
-+ //Point pos;
-+
-+ for(sal_uInt32 i=0; i < length();i++)
-+ {
-+ elem = getElemByIndex(i);
-+ if(!elem) continue;
-+ if(elem->kind == PRESOBJ_NONE) continue;
-+ // default to doing nothing with
-+ // the position and size.
-+ // this will work for 1/2 the
-+ // builtins (ones with 0 )
-+ // and works with some values
-+ // for the others.
-+ elem->factorX = 0.0;
-+ elem->factorY = 0.0;
-+ elem->factorHt = 1.0;
-+ elem->factorWt = 1.0;
-+ switch(elem->kind) {
-+ case PRESOBJ_TITLE:
-+ if(elem->isVertical)
-+ {
-+ elem->recttype = RT_VERTICAL_TITLE;
-+ }
-+ else
-+ {
-+ elem->recttype = RT_TITLE;
-+ }
-+ break;
-+ case PRESOBJ_TEXT:
-+ if(nLayout == 10) //TEXT_ONLY
-+ {
-+ elem->recttype = RT_TEXT_ONLY;
-+ break;
-+ }
-+ case PRESOBJ_OUTLINE:
-+ case PRESOBJ_GRAPHIC:
-+ case PRESOBJ_OBJECT:
-+ case PRESOBJ_CHART:
-+ case PRESOBJ_TABLE:
-+ elem->recttype = RT_LAYOUT;
-+ initFromLayoutNumber(elem,i);
-+ break;
-+ case PRESOBJ_NONE:
-+ case PRESOBJ_ORGCHART:
-+ case PRESOBJ_IMAGE:
-+ case PRESOBJ_BACKGROUND:
-+ case PRESOBJ_PAGE:
-+ case PRESOBJ_HANDOUT:
-+ case PRESOBJ_NOTES:
-+ case PRESOBJ_HEADER:
-+ case PRESOBJ_FOOTER:
-+ case PRESOBJ_DATETIME:
-+ case PRESOBJ_SLIDENUMBER:
-+ case PRESOBJ_MAX:
-+ default: break; /* do nothing. all the above handled elsewhere */
-+ } //switch nKind
-+ } // for
-+
-+}
-+
-+/** the function called by sdpage.cxx to get rect bounds
-+ * from the factors for each element.
-+ */
-+
-+void LayoutType::calcAutoLayoutRectangles(const Rectangle& aTitleRect,
-+ const Rectangle& aLayoutRect,
-+ const Size& aPageSize,
-+ const bool& bRightToLeft,
-+ Rectangle* rRectangle )
-+{
-+ ElemType* elem;
-+ sal_uInt32 count = length();
-+ long x,y,ht,wt;
-+ long pageHt, pageWt;
-+ long vtx, vty, vtht, vtwt;
-+ long tx, ty, lx, ly;
-+
-+ pageHt = aLayoutRect.BottomLeft().Y() - aTitleRect.TopLeft().Y();
-+ pageWt = aPageSize.getWidth();
-+ vtx = aTitleRect.TopRight().X()-aTitleRect.getHeight();
-+ vty = aTitleRect.TopRight().Y();
-+ vtht = pageHt;
-+ vtwt = aTitleRect.getHeight();
-+ tx = aTitleRect.TopLeft().X();
-+ ty = aTitleRect.TopLeft().Y();
-+ lx = aLayoutRect.TopLeft().X();
-+ ly = aLayoutRect.TopLeft().Y();
-+
-+ for(sal_uInt32 i=0; i < count;i++)
-+ {
-+ elem = getElemByIndex(i);
-+ if(!elem) continue;
-+ if(elem->kind == PRESOBJ_NONE) continue;
-+ switch (elem->recttype)
-+ {
-+ case RT_TITLE:
-+ x = (long) tx + aTitleRect.getWidth()*elem->factorX;
-+ y = (long) ty + aTitleRect.getHeight()*elem->factorY;
-+ ht = (long) aTitleRect.getHeight()*elem->factorHt;
-+ wt = (long) aTitleRect.getWidth()*elem->factorWt;
-+ break;
-+ case RT_VERTICAL_TITLE:
-+ x = vtx;
-+ y = vty;
-+ ht = vtht;
-+ wt = vtwt;
-+ break;
-+ case RT_VERTICAL_LAYOUT: // need vertical title
-+ ht = vtht*elem->factorHt;
-+ wt = pageWt*elem->factorWt;
-+ x = tx + vtwt*elem->factorX;
-+ y = ty + vtht*elem->factorY;
-+ break;
-+ case RT_TEXT_ONLY: // this takes up the whole page.
-+ ht = pageHt;
-+ wt = aTitleRect.getWidth();
-+ x = tx;
-+ y = ty;
-+ break;
-+ case RT_LAYOUT:
-+ case RT_LAYOUT_SWITCH:
-+ default: // use layout as default
-+ x = (long) lx + aLayoutRect.getWidth()*elem->factorX;
-+ y = (long) ly + aLayoutRect.getHeight()*elem->factorY;
-+ ht = (long) aLayoutRect.getHeight()*elem->factorHt;
-+ wt = (long) aLayoutRect.getWidth()*elem->factorWt;
-+ }
-+
-+ rRectangle[i] = Rectangle(Point(x,y), Size(wt, ht));
-+ }
-+
-+ if((bRightToLeft)&&(elem->recttype == RT_LAYOUT_SWITCH))
-+ {
-+ switch (count)
-+ {
-+ case 3: //2 shapes, switch these
-+ ::std::swap< Rectangle >( rRectangle[1], rRectangle[2] );
-+ break;
-+ case 4: //3 shapes, rotate
-+ ::std::swap< long >( rRectangle[1].Left(), rRectangle[2].Left() );
-+ rRectangle[3].Left() = rRectangle[2].Left();
-+ break;
-+ default: break; /* do nothing */
-+ }
-+
-+ }
-+
-+
-+}
-+
-+
-diff -Nrup sd-m15/source/core/makefile.mk sd/source/core/makefile.mk
---- sd-m15/source/core/makefile.mk 2009-07-15 21:39:20.000000000 -0700
-+++ sd/source/core/makefile.mk 2009-07-18 23:21:36.000000000 -0700
-@@ -57,6 +57,8 @@ SLOFILES = $(SLO)$/stlsheet.obj \
- $(SLO)$/drawdoc3.obj \
- $(SLO)$/drawdoc4.obj \
- $(SLO)$/drawdoc_animations.obj\
-+ $(SLO)$/layoutlist.obj \
-+ $(SLO)$/layouttype.obj \
- $(SLO)$/sdpage.obj \
- $(SLO)$/sdpage2.obj \
- $(SLO)$/sdattr.obj \
-diff -Nrup sd-m15/source/core/sdpage.cxx sd/source/core/sdpage.cxx
---- sd-m15/source/core/sdpage.cxx 2009-07-15 21:39:20.000000000 -0700
-+++ sd/source/core/sdpage.cxx 2009-07-18 23:21:35.000000000 -0700
-@@ -1058,261 +1058,14 @@ Rectangle SdPage::GetLayoutRect() const
- |*
- \*************************************************************************/
-
--const int MAX_PRESOBJS = 5; // maximum number of presentation objects per layout
-+const int MAX_PRESOBJS = 5; // TODO eliminate this
- const int VERTICAL = 0x8000;
-
--struct LayoutDescriptor
--{
-- int mnLayout;
-- PresObjKind meKind[MAX_PRESOBJS];
-- bool mbVertical[MAX_PRESOBJS];
--
-- LayoutDescriptor( int nLayout, int k0 = 0, int k1 = 0, int k2 = 0, int k3 = 0, int k4 = 0 );
--};
--
--LayoutDescriptor::LayoutDescriptor( int nLayout, int k0, int k1, int k2, int k3, int k4 )
--: mnLayout( nLayout )
--{
-- meKind[0] = static_cast<PresObjKind>(k0 & (~VERTICAL)); mbVertical[0] = (k0 & VERTICAL) == VERTICAL;
-- meKind[1] = static_cast<PresObjKind>(k1 & (~VERTICAL)); mbVertical[1] = (k1 & VERTICAL) == VERTICAL;
-- meKind[2] = static_cast<PresObjKind>(k2 & (~VERTICAL)); mbVertical[2] = (k2 & VERTICAL) == VERTICAL;
-- meKind[3] = static_cast<PresObjKind>(k3 & (~VERTICAL)); mbVertical[3] = (k3 & VERTICAL) == VERTICAL;
-- meKind[4] = static_cast<PresObjKind>(k4 & (~VERTICAL)); mbVertical[4] = (k4 & VERTICAL) == VERTICAL;
--}
--
--static const LayoutDescriptor& GetLayoutDescriptor( AutoLayout eLayout )
--{
-- static LayoutDescriptor aLayouts[AUTOLAYOUT__END-AUTOLAYOUT__START] =
-- {
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_TEXT ), // AUTOLAYOUT_TITLE
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OUTLINE ), // AUTOLAYOUT_ENUM
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_CHART ), // AUTOLAYOUT_CHART
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OUTLINE ), // AUTOLAYOUT_2TEXT
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_CHART ), // AUTOLAYOUT_TEXTCHART
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_ORGCHART ), // AUTOLAYOUT_ORG
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_GRAPHIC ), // AUTOLAYOUT_TEXTCLbIP
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_CHART, PRESOBJ_OUTLINE ), // AUTOLAYOUT_CHARTTEXT
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_TABLE ), // AUTOLAYOUT_TAB
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_GRAPHIC, PRESOBJ_OUTLINE ), // AUTOLAYOUT_CLIPTEXT
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OBJECT ), // AUTOLAYOUT_TEXTOBJ
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OBJECT ), // AUTOLAYOUT_OBJ
-- LayoutDescriptor( 2, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OBJECT, PRESOBJ_OBJECT ), // AUTOLAYOUT_TEXT2OBJ
-- LayoutDescriptor( 1, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_TEXTOBJ
-- LayoutDescriptor( 4, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_OBJOVERTEXT
-- LayoutDescriptor( 3, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_2OBJTEXT
-- LayoutDescriptor( 5, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OBJECT, PRESOBJ_OUTLINE ), // AUTOLAYOUT_2OBJOVERTEXT
-- LayoutDescriptor( 4, PRESOBJ_TITLE, PRESOBJ_OUTLINE, PRESOBJ_OBJECT ), // AUTOLAYOUT_TEXTOVEROBJ
-- LayoutDescriptor( 6, PRESOBJ_TITLE, PRESOBJ_OBJECT, PRESOBJ_OBJECT, // AUTOLAYOUT_4OBJ
-- PRESOBJ_OBJECT, PRESOBJ_OBJECT ),
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_NONE ), // AUTOLAYOUT_ONLY_TITLE
-- LayoutDescriptor( 0, PRESOBJ_NONE ), // AUTOLAYOUT_NONE
-- LayoutDescriptor( 0, PRESOBJ_PAGE, PRESOBJ_NOTES ), // AUTOLAYOUT_NOTES
-- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT1
-- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT2
-- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT3
-- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT4
-- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT6
-- LayoutDescriptor( 7, PRESOBJ_TITLE|VERTICAL, PRESOBJ_OUTLINE|VERTICAL, PRESOBJ_CHART ),// AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART
-- LayoutDescriptor( 8, PRESOBJ_TITLE|VERTICAL, PRESOBJ_OUTLINE|VERTICAL ), // AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
-- LayoutDescriptor( 0, PRESOBJ_TITLE, PRESOBJ_OUTLINE|VERTICAL ), // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
-- LayoutDescriptor( 9, PRESOBJ_TITLE, PRESOBJ_GRAPHIC, PRESOBJ_OUTLINE|VERTICAL ), // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
-- LayoutDescriptor( 0 ), // AUTOLAYOUT_HANDOUT9
-- LayoutDescriptor( 10, PRESOBJ_TEXT, PRESOBJ_NONE ) // AUTOLAYOUT_ONLY_TEXT
-- };
--
-- if( (eLayout < AUTOLAYOUT__START) || (eLayout >= AUTOLAYOUT__END) )
-- eLayout = AUTOLAYOUT_NONE;
--
-- return aLayouts[ eLayout - AUTOLAYOUT__START ];
--}
--
--static void CalcAutoLayoutRectangles( SdPage& rPage, int nLayout, Rectangle* rRectangle )
--{
-- Rectangle aTitleRect;
-- Rectangle aLayoutRect;
--
-- if( rPage.GetPageKind() != PK_HANDOUT )
-- {
-- SdPage& rMasterPage = static_cast<SdPage&>(rPage.TRG_GetMasterPage());
-- SdrObject* pMasterTitle = rMasterPage.GetPresObj( PRESOBJ_TITLE );
-- SdrObject* pMasterOutline = rMasterPage.GetPresObj( rPage.GetPageKind()==PK_NOTES ? PRESOBJ_NOTES : PRESOBJ_OUTLINE );
--
-- if( pMasterTitle )
-- aTitleRect = pMasterTitle->GetLogicRect();
--
-- if (aTitleRect.IsEmpty() )
-- aTitleRect = rPage.GetTitleRect();
--
-- if( pMasterOutline )
-- aLayoutRect = pMasterOutline->GetLogicRect();
--
-- if (aLayoutRect.IsEmpty() )
-- aLayoutRect = rPage.GetLayoutRect();
-- }
--
-- rRectangle[0] = aTitleRect;
--
-- int i;
-- for( i = 1; i < MAX_PRESOBJS; i++ )
-- rRectangle[i] = aLayoutRect;
--
-- Size aTitleSize( aTitleRect.GetSize() );
-- Point aTitlePos( aTitleRect.TopLeft() );
-- Size aLayoutSize( aLayoutRect.GetSize() );
-- Point aLayoutPos( aLayoutRect.TopLeft() );
-- Size aTempSize;
-- Point aTempPnt;
--
-- sal_Bool bRightToLeft = ( rPage.GetModel() && static_cast< SdDrawDocument* >( rPage.GetModel() )->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB );
--
-- switch( nLayout )
-- {
-- case 0: // default layout using only the title and layout area
-- break; // do nothing
-- case 1: // title, 2 shapes
-- case 9: // title, 2 vertical shapes
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
-- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
--
-- if( bRightToLeft && (nLayout != 9) )
-- ::std::swap< Rectangle >( rRectangle[1], rRectangle[2] );
-- break;
-- case 2: // title, shape, 2 shapes
-- aTempPnt = aLayoutPos;
-- aTempSize = aLayoutSize;
-- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
-- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
-- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos = aTempPnt;
-- aLayoutSize = aTempSize;
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
--
-- if( bRightToLeft )
-- {
-- ::std::swap< long >( rRectangle[1].Left(), rRectangle[2].Left() );
-- rRectangle[3].Left() = rRectangle[2].Left();
-- }
-- break;
-- case 3: // title, 2 shapes, shape
-- aTempPnt = aLayoutPos;
-- aTempSize = aLayoutSize;
-- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
-- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos = aTempPnt;
-- aLayoutSize = aTempSize;
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
-- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
-
-- if( bRightToLeft )
-- {
-- ::std::swap< long >( rRectangle[1].Left(), rRectangle[2].Left() );
-- rRectangle[3].Left() = rRectangle[2].Left();
-- }
-- break;
-- case 4: // title, shape above shape
-- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
-- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
-- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
-- break;
--
-- case 5: // title, 2 shapes above shape
-- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aTempPnt = aLayoutPos;
-- aLayoutPos.X() = long (aLayoutPos.X() + aLayoutSize.Width() * 1.05);
-- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.X() = aTempPnt.X();
-- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
-- aLayoutSize.Width() = long (aLayoutSize.Width() / 0.488);
-- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
-- break;
-- case 6: // title, 4 shapes
-- {
-- ULONG nX = long (aLayoutPos.X());
--
-- aLayoutSize.Height() = long (aLayoutSize.Height() * 0.477);
-- aLayoutSize.Width() = long (aLayoutSize.Width() * 0.488);
-- rRectangle[1] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.X() = long (nX + aLayoutSize.Width() * 1.05);
-- rRectangle[2] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.Y() = long (aLayoutPos.Y() + aLayoutSize.Height() * 1.095);
-- rRectangle[3] = Rectangle (aLayoutPos, aLayoutSize);
--
-- aLayoutPos.X() = nX;
-- rRectangle[4] = Rectangle (aLayoutPos, aLayoutSize);
-- break;
-- }
-- case 7: // vertical title, shape above shape
-- {
-- Size aSize( rRectangle[0].GetSize().Height(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
-- rRectangle[0].SetSize( aSize );
-- rRectangle[0].SetPos( aTitleRect.TopRight() - Point( aSize.Width(), 0 ) );
--
-- Size aPageSize ( rPage.GetSize() );
-- aPageSize.Height() -= rPage.GetUppBorder() + rPage.GetLwrBorder();
-- aSize.Height() = long ( rRectangle[0].GetSize().Height() * 0.47 );
-- aSize.Width() = long( aPageSize.Width() * 0.7 );
-- rRectangle[1].SetPos( aTitleRect.TopLeft() );
-- rRectangle[1].SetSize( aSize );
--
-- aSize.Height() = rRectangle[0].GetSize().Height();
-- Point aPos( aTitleRect.TopLeft() );
-- aPos.Y() += long ( aSize.Height() * 0.53 );
-- rRectangle[2].SetPos( aPos );
-- aSize.Height() = long ( rRectangle[0].GetSize().Height() * 0.47 );
-- rRectangle[2].SetSize( aSize );
-- break;
-- }
-- case 8: // vertical title, shape
-- {
-- Size aSize( rRectangle[0].GetSize().Height(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
-- rRectangle[0].SetSize( aSize );
-- rRectangle[0].SetPos( aTitleRect.TopRight() - Point( aSize.Width(), 0 ) );
--
-- Size aPageSize ( rPage.GetSize() );
-- aPageSize.Height() -= rPage.GetUppBorder() + rPage.GetLwrBorder();
-- aSize.Height() = rRectangle[0].GetSize().Height();
-- aSize.Width() = long( aPageSize.Width() * 0.7 );
-- rRectangle[1].SetPos( aTitleRect.TopLeft() );
-- rRectangle[1].SetSize( aSize );
-- break;
-- }
-- case 10: // onlytext
-- {
-- Size aSize( rRectangle[0].GetSize().Width(), rRectangle[1].BottomLeft().Y() - rRectangle[0].TopLeft().Y() );
-- rRectangle[0].SetSize( aSize );
-- rRectangle[0].SetPos( aTitlePos);
-- break;
-- }
-- }
--}
--
--
--void findAutoLayoutShapesImpl( SdPage& rPage, const LayoutDescriptor& rDescriptor, std::vector< SdrObject* >& rShapes, bool bInit )
-+void findAutoLayoutShapesImpl( SdPage& rPage, LayoutType* layout, std::vector< SdrObject* >& rShapes, bool bInit )
- {
-- int i;
-+ int i, elemcount = layout->length();
-+ PresObjKind eKind;
-
- // init list of indexes for each presentation shape kind
- // this is used to find subsequent shapes with the same presentation shape kind
-@@ -1321,10 +1074,16 @@ void findAutoLayoutShapesImpl( SdPage& r
-
- bool bMissing = false;
-
-- // for each entry in the layoutdescriptor, arrange a presentation shape
-- for( i = 0; (i < PRESOBJ_MAX) && (rDescriptor.meKind[i] != PRESOBJ_NONE); i++ )
-+ if(layout)
- {
-- PresObjKind eKind = rDescriptor.meKind[i];
-+ // for each entry in the element list, arrange a presentation shape
-+ for( i = 0; i < elemcount ; i++ )
-+ {
-+ eKind = layout->getKind(i);
-+ if (eKind == PRESOBJ_NONE)
-+ {
-+ continue;
-+ }
- SdrObject* pObj = rPage.GetPresObj( eKind, PresObjIndex[eKind] );
- if( pObj )
- {
-@@ -1339,14 +1098,17 @@ void findAutoLayoutShapesImpl( SdPage& r
-
- if( bMissing && bInit )
- {
-- // for each entry in the layoutdescriptor, look for an alternative shape
-- for( i = 0; (i < PRESOBJ_MAX) && (rDescriptor.meKind[i] != PRESOBJ_NONE); i++ )
-- {
-+ // for each entry in the element list, look for an alternative shape
-+ for( i = 0; i < elemcount; i++ )
-+ {
-+ eKind = layout->getKind(i);
-+ if(eKind == PRESOBJ_NONE)
-+ {
-+ continue;
-+ }
- if( rShapes[i] )
- continue;
-
-- PresObjKind eKind = rDescriptor.meKind[i];
--
- SdrObject* pObj = 0;
- bool bFound = false;
-
-@@ -1411,10 +1173,10 @@ void findAutoLayoutShapesImpl( SdPage& r
- bFound = true;
- }
- }
-- }
-- }
-- }
-- }
-+ } // if(pPersist...
-+ }// else if (rGetModel...
-+ } // if(pOle2..
-+ }// if(eSdrObjKind...
- break;
- case PRESOBJ_CHART:
- case PRESOBJ_TABLE:
-@@ -1434,7 +1196,7 @@ void findAutoLayoutShapesImpl( SdPage& r
- }
- }
- break;
-- }
-+ }
- break;
- case PRESOBJ_PAGE:
- case PRESOBJ_HANDOUT:
-@@ -1446,13 +1208,14 @@ void findAutoLayoutShapesImpl( SdPage& r
- break;
- default:
- break;
-- }
-- }
-+ } // switch (eKind)...
-+ } // while(nShapesIndex...
-
- if( bFound )
- rShapes[i] = pObj;
-- }
-- }
-+ } // for(i = 0; i < elemcount..
-+ } // if(bMissing && bInit..
-+ } // if(layout)...
- }
-
- void SdPage::SetAutoLayout(AutoLayout eLayout, BOOL bInit, BOOL bCreate )
-@@ -1472,64 +1235,107 @@ void SdPage::SetAutoLayout(AutoLayout eL
- // MasterPage or no layout and no presentation shapes available, noting to do
- return;
- }
--
-- Rectangle aRectangle[MAX_PRESOBJS];
-- const LayoutDescriptor& aDescriptor = GetLayoutDescriptor( meAutoLayout );
-- CalcAutoLayoutRectangles( *this, aDescriptor.mnLayout, aRectangle );
--
-- std::set< SdrObject* > aUsedPresentationObjects;
--
--
-- std::vector< SdrObject* > aLayoutShapes(PRESOBJ_MAX, 0);
-- findAutoLayoutShapesImpl( *this, aDescriptor, aLayoutShapes, bInit );
--
-- int i;
--
-- // for each entry in the layoutdescriptor, arrange a presentation shape
-- for( i = 0; (i < PRESOBJ_MAX) && (aDescriptor.meKind[i] != PRESOBJ_NONE); i++ )
-- {
-- PresObjKind eKind = aDescriptor.meKind[i];
-- SdrObject* pObj = InsertAutoLayoutShape( aLayoutShapes[i], eKind, aDescriptor.mbVertical[i], aRectangle[i], bInit );
-- if( pObj )
-- aUsedPresentationObjects.insert(pObj); // remember that we used this empty shape
-- }
--
-- // now delete all empty presentation objects that are no longer used by the new layout
-- if( bInit )
-- {
-- SdrObject* pObj = maPresentationShapeList.getNextShape(0);
--
-- while( pObj )
-- {
-- SdrObject* pNext = maPresentationShapeList.getNextShape(pObj);
-- if( aUsedPresentationObjects.count(pObj) == 0 )
-- {
--
-- if( pObj->IsEmptyPresObj() )
-- {
-- if( bUndo )
-- pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
--
-- RemoveObject( pObj->GetOrdNum() );
--
-- if( !bUndo )
-- SdrObject::Free( pObj );
-- }
-- else
-- {
-- if( bUndo )
-- {
-- pUndoManager->AddUndoAction( new UndoObjectPresentationKind( *pObj ) );
-- if( pObj->GetUserCall() )
-- pUndoManager->AddUndoAction( new UndoObjectUserCall( *pObj ) );
-- }
-- maPresentationShapeList.removeShape( *pObj );
-- pObj->SetUserCall(0);
-- }
-- }
-- pObj = pNext;
-- }
-- }
-+
-+ // get this layout from list
-+ LayoutList* list = GetLayoutList();
-+ LayoutType* layout = NULL;
-+ layout = list->getLayoutByIndex(meAutoLayout);
-+ if(layout)
-+ {
-+ int i, elemcount = layout->length();
-+ PresObjKind eKind;
-+ PageKind ePKind = GetPageKind();
-+ Rectangle aRectangle[elemcount];
-+ Rectangle aTitleRect;
-+
-+ Rectangle aLayoutRect;
-+ Size aPageSize = GetSize();
-+ bool bRightToLeft = ( GetModel() && static_cast< SdDrawDocument* >( GetModel() )->GetDefaultWritingMode() == ::com::sun::star::text::WritingMode_RL_TB );
-+
-+
-+ if( ePKind != PK_HANDOUT )
-+ {
-+ SdPage& rMasterPage = static_cast<SdPage&>(TRG_GetMasterPage());
-+ SdrObject* pMasterTitle = rMasterPage.GetPresObj( PRESOBJ_TITLE );
-+ SdrObject* pMasterOutline = rMasterPage.GetPresObj( ePKind==PK_NOTES ? PRESOBJ_NOTES : PRESOBJ_OUTLINE );
-+
-+ if( pMasterTitle )
-+ aTitleRect = pMasterTitle->GetLogicRect();
-+
-+
-+ if (aTitleRect.IsEmpty() )
-+ aTitleRect = GetTitleRect();
-+
-+ if( pMasterOutline )
-+ aLayoutRect = pMasterOutline->GetLogicRect();
-+
-+ if (aLayoutRect.IsEmpty() )
-+ aLayoutRect = GetLayoutRect();
-+
-+ }
-+ layout->calcAutoLayoutRectangles(aTitleRect, aLayoutRect,
-+ aPageSize, bRightToLeft, aRectangle );
-+
-+ std::set< SdrObject* > aUsedPresentationObjects;
-+
-+ std::vector< SdrObject* > aLayoutShapes(PRESOBJ_MAX, 0);
-+ findAutoLayoutShapesImpl( *this, layout, aLayoutShapes, bInit );
-+
-+ // for each entry in the element list, arrange a presentation shape
-+ for( i = 0; i < elemcount; i++ )
-+ {
-+ eKind = layout->getKind(i);
-+ if (eKind == PRESOBJ_NONE)
-+ {
-+ continue;
-+ }
-+
-+ SdrObject* pObj = InsertAutoLayoutShape( aLayoutShapes[i], eKind, layout->isVertical(i), aRectangle[i], bInit );
-+
-+ if( pObj )
-+ aUsedPresentationObjects.insert(pObj); // remember that we used this empty shape
-+ }
-+
-+ // now delete all empty presentation objects that are no longer used by the new layout
-+ if( bInit )
-+ {
-+ SdrObject* pObj = maPresentationShapeList.getNextShape(0);
-+
-+ while( pObj )
-+ {
-+ SdrObject* pNext = maPresentationShapeList.getNextShape(pObj);
-+ if( aUsedPresentationObjects.count(pObj) == 0 )
-+ {
-+
-+ if( pObj->IsEmptyPresObj() )
-+ {
-+ if( bUndo )
-+ pUndoManager->AddUndoAction(pModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj));
-+
-+ RemoveObject( pObj->GetOrdNum() );
-+
-+ if( !bUndo )
-+ SdrObject::Free( pObj );
-+ }
-+ else
-+ {
-+ if( bUndo )
-+ {
-+ pUndoManager->AddUndoAction( new UndoObjectPresentationKind( *pObj ) );
-+ if( pObj->GetUserCall() )
-+ pUndoManager->AddUndoAction( new UndoObjectUserCall( *pObj ) );
-+ }
-+ maPresentationShapeList.removeShape( *pObj );
-+ pObj->SetUserCall(0);
-+ }
-+ }
-+ pObj = pNext;
-+ } // while(pObj...
-+ } // if(bInit...
-+
-+ } else { // no autolayout object found.
-+ DBG_ERROR("SetAutoLayout: no autolayout object found.");
-+ }
- }
-
- /*************************************************************************
-diff -Nrup sd-m15/source/filter/ppt/pptin.cxx sd/source/filter/ppt/pptin.cxx
---- sd-m15/source/filter/ppt/pptin.cxx 2009-07-15 21:39:23.000000000 -0700
-+++ sd/source/filter/ppt/pptin.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -1097,7 +1097,7 @@ sal_Bool ImplSdPPTImport::Import()
- ////////////////////
- SetPageNum( i, PPT_SLIDEPAGE );
- SdPage* pPage = mpDoc->GetSdPage( i, PK_STANDARD );
-- AutoLayout eAutoLayout = AUTOLAYOUT_NONE;
-+ sd::AutoLayout eAutoLayout = AUTOLAYOUT_NONE;
- const PptSlideLayoutAtom* pSlideLayout = GetSlideLayoutAtom();
- if ( pSlideLayout )
- {
-diff -Nrup sd-m15/source/filter/ppt/pptin.hxx sd/source/filter/ppt/pptin.hxx
---- sd-m15/source/filter/ppt/pptin.hxx 2009-07-15 21:39:23.000000000 -0700
-+++ sd/source/filter/ppt/pptin.hxx 2009-07-18 23:21:36.000000000 -0700
-@@ -38,6 +38,7 @@
- #include <svx/msfiltertracer.hxx>
- #include <com/sun/star/uno/Any.h>
- #include <boost/shared_ptr.hpp>
-+#include "layoutlist.hxx"
-
- class SdDrawDocument;
- class SfxMedium;
-diff -Nrup sd-m15/source/ui/func/unprlout.cxx sd/source/ui/func/unprlout.cxx
---- sd-m15/source/ui/func/unprlout.cxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/func/unprlout.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -54,8 +54,8 @@ SdPresentationLayoutUndoAction::SdPresen
- SdDrawDocument* pTheDoc,
- String aTheOldLayoutName,
- String aTheNewLayoutName,
-- AutoLayout eTheOldAutoLayout,
-- AutoLayout eTheNewAutoLayout,
-+ sd::AutoLayout eTheOldAutoLayout,
-+ sd::AutoLayout eTheNewAutoLayout,
- BOOL bSet,
- SdPage* pThePage):
- SdUndoAction(pTheDoc)
-diff -Nrup sd-m15/source/ui/inc/unmodpg.hxx sd/source/ui/inc/unmodpg.hxx
---- sd-m15/source/ui/inc/unmodpg.hxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/inc/unmodpg.hxx 2009-07-18 23:21:36.000000000 -0700
-@@ -33,6 +33,7 @@
-
- #include "sdundo.hxx"
- #include "pres.hxx"
-+#include "layoutlist.hxx"
-
- class SdDrawDocument;
- class SdPage;
-@@ -45,8 +46,8 @@ class ModifyPageUndoAction : public SdUn
- SdPage* mpPage;
- String maOldName;
- String maNewName;
-- AutoLayout meOldAutoLayout;
-- AutoLayout meNewAutoLayout;
-+ sd::AutoLayout meOldAutoLayout;
-+ sd::AutoLayout meNewAutoLayout;
- BOOL mbOldBckgrndVisible;
- BOOL mbNewBckgrndVisible;
- BOOL mbOldBckgrndObjsVisible;
-@@ -61,7 +62,7 @@ public:
- SdDrawDocument* pTheDoc,
- SdPage* pThePage,
- String aTheNewName,
-- AutoLayout eTheNewAutoLayout,
-+ sd::AutoLayout eTheNewAutoLayout,
- BOOL bTheNewBckgrndVisible,
- BOOL bTheNewBckgrndObjsVisible);
-
-diff -Nrup sd-m15/source/ui/inc/unprlout.hxx sd/source/ui/inc/unprlout.hxx
---- sd-m15/source/ui/inc/unprlout.hxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/inc/unprlout.hxx 2009-07-18 23:21:36.000000000 -0700
-@@ -32,7 +32,8 @@
- #define _SD_UNPRLOUT_HXX
-
- #include "sdundo.hxx"
--#include "pres.hxx" // enum AutoLayout
-+#include "pres.hxx"
-+#include "layoutlist.hxx"
-
- class SdDrawDocument;
- class SdPage;
-@@ -41,8 +42,8 @@ class SdPresentationLayoutUndoAction : p
- {
- String aOldLayoutName;
- String aNewLayoutName;
-- AutoLayout eOldAutoLayout;
-- AutoLayout eNewAutoLayout;
-+ sd::AutoLayout eOldAutoLayout;
-+ sd::AutoLayout eNewAutoLayout;
- BOOL bSetAutoLayout; // TRUE: AutoLayout aendern
- SdPage* pPage;
- String aComment;
-@@ -52,8 +53,8 @@ public:
- SdPresentationLayoutUndoAction(SdDrawDocument* pTheDoc,
- String aTheOldLayoutName,
- String aTheNewLayoutName,
-- AutoLayout eTheOldAutoLayout,
-- AutoLayout eTheNewAutoLayout,
-+ sd::AutoLayout eTheOldAutoLayout,
-+ sd::AutoLayout eTheNewAutoLayout,
- BOOL bSet,
- SdPage* pThePage);
-
-diff -Nrup sd-m15/source/ui/inc/ViewShellImplementation.hxx sd/source/ui/inc/ViewShellImplementation.hxx
---- sd-m15/source/ui/inc/ViewShellImplementation.hxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/inc/ViewShellImplementation.hxx 2009-07-18 23:21:36.000000000 -0700
-@@ -34,6 +34,7 @@
- #include "ViewShell.hxx"
- #include "ViewShellManager.hxx"
- #include "ToolBarManager.hxx"
-+#include "layoutlist.hxx"
-
- #include <boost/shared_ptr.hpp>
- #include <boost/weak_ptr.hpp>
-@@ -129,7 +130,7 @@ public:
- */
- void AssignLayout (
- SdPage* pPage,
-- AutoLayout aLayout);
-+ sd::AutoLayout aLayout);
-
- /** Determine the view id of the view shell. This corresponds to the
- view id stored in the SfxViewFrame class.
-diff -Nrup sd-m15/source/ui/slidesorter/controller/SlsSlotManager.cxx sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
---- sd-m15/source/ui/slidesorter/controller/SlsSlotManager.cxx 2009-07-15 21:39:22.000000000 -0700
-+++ sd/source/ui/slidesorter/controller/SlsSlotManager.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -248,7 +248,7 @@ void SlotManager::FuTemporary (SfxReques
- pShell->mpImpl->AssignLayout(
- pDocument->GetSdPage((USHORT)pWhatPage->GetValue(),
- mrSlideSorter.GetModel().GetPageType()),
-- (AutoLayout)pWhatLayout->GetValue());
-+ (sd::AutoLayout)pWhatLayout->GetValue());
- rRequest.Done ();
- }
- break;
-diff -Nrup sd-m15/source/ui/toolpanel/LayoutMenu.cxx sd/source/ui/toolpanel/LayoutMenu.cxx
---- sd-m15/source/ui/toolpanel/LayoutMenu.cxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/toolpanel/LayoutMenu.cxx 2009-07-18 23:21:35.000000000 -0700
-@@ -129,99 +129,6 @@ SFX_IMPL_INTERFACE(LayoutMenu, SfxShell,
-
- TYPEINIT1(LayoutMenu, SfxShell);
-
--struct snewfoil_value_info
--{
-- USHORT mnBmpResId;
-- USHORT mnHCBmpResId;
-- USHORT mnStrResId;
-- WritingMode meWritingMode;
-- AutoLayout maAutoLayout;
--};
--
--static snewfoil_value_info notes[] =
--{
-- {BMP_FOILN_01, BMP_FOILN_01_H, STR_AUTOLAYOUT_NOTES, WritingMode_LR_TB,
-- AUTOLAYOUT_NOTES},
-- {0, 0, 0, WritingMode_LR_TB, AUTOLAYOUT_NONE},
--};
--
--static snewfoil_value_info handout[] =
--{
-- {BMP_FOILH_01, BMP_FOILH_01_H, STR_AUTOLAYOUT_HANDOUT1, WritingMode_LR_TB,
-- AUTOLAYOUT_HANDOUT1},
-- {BMP_FOILH_02, BMP_FOILH_02_H, STR_AUTOLAYOUT_HANDOUT2, WritingMode_LR_TB,
-- AUTOLAYOUT_HANDOUT2},
-- {BMP_FOILH_03, BMP_FOILH_03_H, STR_AUTOLAYOUT_HANDOUT3, WritingMode_LR_TB,
-- AUTOLAYOUT_HANDOUT3},
-- {BMP_FOILH_04, BMP_FOILH_04_H, STR_AUTOLAYOUT_HANDOUT4, WritingMode_LR_TB,
-- AUTOLAYOUT_HANDOUT4},
-- {BMP_FOILH_06, BMP_FOILH_06_H, STR_AUTOLAYOUT_HANDOUT6, WritingMode_LR_TB,
-- AUTOLAYOUT_HANDOUT6},
-- {BMP_FOILH_09, BMP_FOILH_09_H, STR_AUTOLAYOUT_HANDOUT9, WritingMode_LR_TB,
-- AUTOLAYOUT_HANDOUT9},
-- {0, 0, 0, WritingMode_LR_TB, AUTOLAYOUT_NONE},
--};
--
--static snewfoil_value_info standard[] =
--{
-- {BMP_FOIL_20, BMP_FOIL_20_H, STR_AUTOLAYOUT_NONE, WritingMode_LR_TB,
-- AUTOLAYOUT_NONE},
-- {BMP_FOIL_00, BMP_FOIL_00_H, STR_AUTOLAYOUT_TITLE, WritingMode_LR_TB,
-- AUTOLAYOUT_TITLE},
-- {BMP_FOIL_01, BMP_FOIL_01_H, STR_AUTOLAYOUT_ENUM, WritingMode_LR_TB,
-- AUTOLAYOUT_ENUM},
-- {BMP_FOIL_03, BMP_FOIL_03_H, STR_AUTOLAYOUT_2TEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_2TEXT},
-- {BMP_FOIL_19, BMP_FOIL_19_H, STR_AUTOLAYOUT_ONLY_TITLE, WritingMode_LR_TB,
-- AUTOLAYOUT_ONLY_TITLE},
-- {BMP_FOIL_25, BMP_FOIL_25_H, STR_AUTOLAYOUT_ONLY_TEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_ONLY_TEXT},
-- {BMP_FOIL_11, BMP_FOIL_11_H, STR_AUTOLAYOUT_OBJ, WritingMode_LR_TB,
-- AUTOLAYOUT_OBJ},
-- {BMP_FOIL_02, BMP_FOIL_02_H, STR_AUTOLAYOUT_CHART, WritingMode_LR_TB,
-- AUTOLAYOUT_CHART},
-- {BMP_FOIL_08, BMP_FOIL_08_H, STR_AUTOLAYOUT_TAB, WritingMode_LR_TB,
-- AUTOLAYOUT_TAB},
-- {BMP_FOIL_09, BMP_FOIL_09_H, STR_AUTOLAYOUT_CLIPTEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_CLIPTEXT},
-- {BMP_FOIL_04, BMP_FOIL_04_H, STR_AUTOLAYOUT_TEXTCHART, WritingMode_LR_TB,
-- AUTOLAYOUT_TEXTCHART},
-- {BMP_FOIL_06, BMP_FOIL_06_H, STR_AUTOLAYOUT_TEXTCLIP, WritingMode_LR_TB,
-- AUTOLAYOUT_TEXTCLIP},
-- {BMP_FOIL_07, BMP_FOIL_07_H, STR_AUTOLAYOUT_CHARTTEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_CHARTTEXT},
-- {BMP_FOIL_10, BMP_FOIL_10_H, STR_AUTOLAYOUT_TEXTOBJ, WritingMode_LR_TB,
-- AUTOLAYOUT_TEXTOBJ},
-- {BMP_FOIL_12, BMP_FOIL_12_H, STR_AUTOLAYOUT_TEXT2OBJ, WritingMode_LR_TB,
-- AUTOLAYOUT_TEXT2OBJ},
-- {BMP_FOIL_13, BMP_FOIL_13_H, STR_AUTOLAYOUT_OBJTEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_OBJTEXT},
-- {BMP_FOIL_14, BMP_FOIL_14_H, STR_AUTOLAYOUT_OBJOVERTEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_OBJOVERTEXT},
-- {BMP_FOIL_15, BMP_FOIL_15_H, STR_AUTOLAYOUT_2OBJTEXT, WritingMode_LR_TB,
-- AUTOLAYOUT_2OBJTEXT},
-- {BMP_FOIL_16, BMP_FOIL_16_H, STR_AUTOLAYOUT_2OBJOVERTEXT,
-- WritingMode_LR_TB, AUTOLAYOUT_2OBJOVERTEXT},
-- {BMP_FOIL_17, BMP_FOIL_17_H, STR_AUTOLAYOUT_TEXTOVEROBJ, WritingMode_LR_TB,
-- AUTOLAYOUT_TEXTOVEROBJ},
-- {BMP_FOIL_18, BMP_FOIL_18_H, STR_AUTOLAYOUT_4OBJ, WritingMode_LR_TB,
-- AUTOLAYOUT_4OBJ},
-- // vertical
-- {BMP_FOIL_21, BMP_FOIL_21_H, STR_AL_VERT_TITLE_TEXT_CHART,
-- WritingMode_TB_RL, AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART},
-- {BMP_FOIL_22, BMP_FOIL_22_H, STR_AL_VERT_TITLE_VERT_OUTLINE,
-- WritingMode_TB_RL, AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE},
-- {BMP_FOIL_23, BMP_FOIL_23_H, STR_AL_TITLE_VERT_OUTLINE, WritingMode_TB_RL,
-- AUTOLAYOUT_TITLE_VERTICAL_OUTLINE},
-- {BMP_FOIL_24, BMP_FOIL_24_H, STR_AL_TITLE_VERT_OUTLINE_CLIPART,
-- WritingMode_TB_RL, AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART},
--
-- {0, 0, 0, WritingMode_LR_TB, AUTOLAYOUT_NONE}
--};
--
--
--
--
- LayoutMenu::LayoutMenu (
- TreeNode* pParent,
- DrawDocShell& rDocumentShell,
-@@ -763,43 +670,70 @@ void LayoutMenu::Fill (void)
- catch (RuntimeException&)
- {}
-
-- snewfoil_value_info* pInfo = NULL;
-+ LayoutList* list = GetLayoutList();
-+ PageKind eMenu;
-+ bool aViewExists = true;
-+ LayoutType* layout;
-+
- if (sCenterPaneViewName.equals(framework::FrameworkHelper::msNotesViewURL))
- {
-- pInfo = notes;
-+ eMenu = PK_NOTES;
- }
- else if (sCenterPaneViewName.equals(framework::FrameworkHelper::msHandoutViewURL))
- {
-- pInfo = handout;
-+ eMenu = PK_HANDOUT;
- }
- else if (sCenterPaneViewName.equals(framework::FrameworkHelper::msImpressViewURL)
- || sCenterPaneViewName.equals(framework::FrameworkHelper::msSlideSorterURL))
- {
-- pInfo = standard;
-+ eMenu = PK_STANDARD;
- }
- else
- {
-- pInfo = NULL;
-+ eMenu = PK_STANDARD;
-+ aViewExists = false;
- }
-
- Clear();
-- int n = 0;
-- for (sal_uInt16 i=1; pInfo!=NULL&&pInfo->mnBmpResId!=0; i++,pInfo++)
-- {
-- if ((WritingMode_TB_RL != pInfo->meWritingMode) || bVertical)
-- {
-- BitmapEx aBmp (SdResId (bHighContrast
-- ? pInfo->mnHCBmpResId
-- : pInfo->mnBmpResId));
--
-- if (bRightToLeft && (WritingMode_TB_RL != pInfo->meWritingMode))
-- aBmp.Mirror (BMP_MIRROR_HORZ);
--
-- InsertItem (i, aBmp, String (SdResId (pInfo->mnStrResId)));
-- SetItemData (i, new AutoLayout(pInfo->maAutoLayout));
-- n++;
-- }
-- }
-+
-+ WritingMode wm;
-+ AutoLayout lnum;
-+ sal_uInt32 index;
-+ sal_uInt32 Hbitmap, Lbitmap;
-+ LString name;
-+ sal_uInt32 size = list->getMenuLength(eMenu);
-+
-+ index = 1;
-+ if (aViewExists) {
-+ for (sal_uInt16 i=0; i < size; i++)
-+ {
-+ layout = list->getLayoutAtMenuIndex(i,eMenu);
-+ if(layout)
-+ {
-+ name = layout->getName();
-+ lnum = list->getLayoutIndex(name);
-+ if(lnum == LL_NOT_FOUND)
-+ {
-+ continue;
-+ }
-+ wm = layout->getWritingMode();
-+ Hbitmap = layout->getHBitmapId();
-+ Lbitmap = layout->getLBitmapId();
-+ if((wm != WritingMode_TB_RL) || bVertical)
-+ {
-+ BitmapEx aBmp (SdResId (bHighContrast
-+ ? Hbitmap
-+ : Lbitmap));
-+ if(bRightToLeft && (wm != WritingMode_TB_RL))
-+ aBmp.Mirror(BMP_MIRROR_HORZ);
-+ InsertItem (index, aBmp, name);
-+ SetItemData (index, new AutoLayout(lnum));
-+ index++;
-+
-+ } //if wm...
-+ } //if layout..
-+ } // for...
-+ } // if (aViewExists...
-
- mbSelectionUpdatePending = true;
- }
-@@ -904,9 +838,7 @@ void LayoutMenu::UpdateSelection (void)
-
- // Get layout of current page.
- AutoLayout aLayout (pCurrentPage->GetAutoLayout());
-- if (aLayout<AUTOLAYOUT__START || aLayout>AUTOLAYOUT__END)
-- break;
--
-+
- // Find the entry of the menu for to the layout.
- USHORT nItemCount (GetItemCount());
- for (USHORT nId=1; nId<=nItemCount; nId++)
-diff -Nrup sd-m15/source/ui/toolpanel/LayoutMenu.hxx sd/source/ui/toolpanel/LayoutMenu.hxx
---- sd-m15/source/ui/toolpanel/LayoutMenu.hxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/toolpanel/LayoutMenu.hxx 2009-07-18 23:21:35.000000000 -0700
-@@ -39,6 +39,7 @@
-
- #include "glob.hxx"
- #include "pres.hxx"
-+#include "layoutlist.hxx"
- #include <vcl/ctrl.hxx>
- #include <svtools/valueset.hxx>
- #include <svtools/transfer.hxx>
-@@ -198,7 +199,7 @@ private:
- If no slide sorter is active then this call is ignored. The slide
- sorter in the center pane is preferred if the choice exists.
- */
-- void AssignLayoutToSelectedSlides (AutoLayout aLayout);
-+ void AssignLayoutToSelectedSlides (sd::AutoLayout aLayout);
-
- /** Insert a new page with the given layout. The page is inserted via
- the main view shell, i.e. its SID_INSERTPAGE slot is called. It it
-@@ -206,7 +207,7 @@ private:
- place. The new page is inserted after the currently active one (the
- one returned by ViewShell::GetActualPage().)
- */
-- void InsertPageWithLayout (AutoLayout aLayout);
-+ void InsertPageWithLayout (sd::AutoLayout aLayout);
-
- /** Create a request structure that can be used with the SID_INSERTPAGE
- and SID_MODIFYPAGE slots. The parameters are set so that the given
-@@ -218,7 +219,7 @@ private:
- */
- SfxRequest CreateRequest (
- USHORT nSlotId,
-- AutoLayout aLayout);
-+ sd::AutoLayout aLayout);
-
- /** Select the layout that is used by the current page.
- */
-diff -Nrup sd-m15/source/ui/unoidl/unopage.cxx sd/source/ui/unoidl/unopage.cxx
---- sd-m15/source/ui/unoidl/unopage.cxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/unoidl/unopage.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -536,7 +536,7 @@ void SAL_CALL SdGenericDrawPage::setProp
- GetPage()->SetPresChange( (PresChange)nValue );
- break;
- case WID_PAGE_LAYOUT:
-- GetPage()->SetAutoLayout( (AutoLayout)nValue, sal_True );
-+ GetPage()->SetAutoLayout( (sd::AutoLayout)nValue, sal_True );
- break;
- case WID_PAGE_DURATION:
- GetPage()->SetTime((sal_uInt32)nValue);
-diff -Nrup sd-m15/source/ui/view/unmodpg.cxx sd/source/ui/view/unmodpg.cxx
---- sd-m15/source/ui/view/unmodpg.cxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/view/unmodpg.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -63,7 +63,7 @@ ModifyPageUndoAction::ModifyPageUndoActi
- SdDrawDocument* pTheDoc,
- SdPage* pThePage,
- String aTheNewName,
-- AutoLayout eTheNewAutoLayout,
-+ sd::AutoLayout eTheNewAutoLayout,
- BOOL bTheNewBckgrndVisible,
- BOOL bTheNewBckgrndObjsVisible)
- : SdUndoAction(pTheDoc),
-diff -Nrup sd-m15/source/ui/view/viewshe3.cxx sd/source/ui/view/viewshe3.cxx
---- sd-m15/source/ui/view/viewshe3.cxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/view/viewshe3.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -293,33 +293,20 @@ SdPage* ViewShell::CreateOrDuplicatePage
- SFX_REQUEST_ARG (rRequest, pIsPageBack, SfxBoolItem, ID_VAL_ISPAGEBACK, FALSE);
- SFX_REQUEST_ARG (rRequest, pIsPageObj, SfxBoolItem, ID_VAL_ISPAGEOBJ, FALSE);
-
-- if (CHECK_RANGE (AUTOLAYOUT__START, (AutoLayout) pLayout->GetValue (), AUTOLAYOUT__END))
-+ if (ePageKind == PK_NOTES)
- {
-- if (ePageKind == PK_NOTES)
-- {
-- aNotesPageName = pPageName->GetValue ();
-- eNotesLayout = (AutoLayout) pLayout->GetValue ();
-- }
-- else
-- {
-- aStandardPageName = pPageName->GetValue ();
-- eStandardLayout = (AutoLayout) pLayout->GetValue ();
-- }
--
-- bIsPageBack = pIsPageBack->GetValue ();
-- bIsPageObj = pIsPageObj->GetValue ();
-+ aNotesPageName = pPageName->GetValue ();
-+ eNotesLayout = (AutoLayout) pLayout->GetValue ();
- }
- else
- {
-- Cancel();
--
-- if(HasCurrentFunction( SID_BEZIER_EDIT ) )
-- GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON);
--
-- StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
-- rRequest.Ignore ();
-- return NULL;
-+ aStandardPageName = pPageName->GetValue ();
-+ eStandardLayout = (AutoLayout) pLayout->GetValue ();
- }
-+
-+ bIsPageBack = pIsPageBack->GetValue ();
-+ bIsPageObj = pIsPageObj->GetValue ();
-+
- }
-
- // 2. Create a new page or duplicate an existing one.
-diff -Nrup sd-m15/source/ui/view/ViewShellImplementation.cxx sd/source/ui/view/ViewShellImplementation.cxx
---- sd-m15/source/ui/view/ViewShellImplementation.cxx 2009-07-15 21:39:21.000000000 -0700
-+++ sd/source/ui/view/ViewShellImplementation.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -227,20 +227,12 @@ void ViewShell::Implementation::ProcessM
- SFX_REQUEST_ARG (rRequest, pBVisible, SfxBoolItem, ID_VAL_ISPAGEBACK, FALSE);
- SFX_REQUEST_ARG (rRequest, pBObjsVisible, SfxBoolItem, ID_VAL_ISPAGEOBJ, FALSE);
- AutoLayout aLayout ((AutoLayout)pNewAutoLayout->GetValue ());
-- if (aLayout >= AUTOLAYOUT__START
-- && aLayout < AUTOLAYOUT__END)
-- {
-- aNewName = pNewName->GetValue ();
-- aNewAutoLayout = (AutoLayout) pNewAutoLayout->GetValue ();
-- bBVisible = pBVisible->GetValue ();
-- bBObjsVisible = pBObjsVisible->GetValue ();
-- }
-- else
-- {
-- StarBASIC::FatalError (SbERR_BAD_PROP_VALUE);
-- rRequest.Ignore ();
-- break;
-- }
-+
-+ aNewName = pNewName->GetValue ();
-+ aNewAutoLayout = (AutoLayout) pNewAutoLayout->GetValue ();
-+ bBVisible = pBVisible->GetValue ();
-+ bBObjsVisible = pBObjsVisible->GetValue ();
-+
- if (ePageKind == PK_HANDOUT)
- {
- bHandoutMode = TRUE;
-diff -Nrup sd-m15/test/export.map sd/test/export.map
---- sd-m15/test/export.map 1969-12-31 16:00:00.000000000 -0800
-+++ sd/test/export.map 2009-07-18 23:21:36.000000000 -0700
-@@ -0,0 +1,38 @@
-+#*************************************************************************
-+#
-+# 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: export.map,v $
-+#
-+# $Revision: 1.4 $
-+#
-+# 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.
-+#
-+#*************************************************************************
-+
-+UDK_3.1 {
-+ global:
-+ registerAllTestFunction;
-+
-+ local:
-+ *;
-+};
-diff -Nrup sd-m15/test/layouttest.cxx sd/test/layouttest.cxx
---- sd-m15/test/layouttest.cxx 1969-12-31 16:00:00.000000000 -0800
-+++ sd/test/layouttest.cxx 2009-07-18 23:21:36.000000000 -0700
-@@ -0,0 +1,271 @@
-+/*************************************************************************
-+ *
-+ * 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: layouttest.cxx,v $
-+ * $Revision: 1.14 $
-+ *
-+ * 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.
-+ *
-+ ************************************************************************/
-+
-+
-+// MARKER(update_precomp.py): autogen include statement, do not remove
-+#include "precompiled_sd.hxx"
-+// autogenerated file with codegen.pl
-+
-+#include <cppunit/simpleheader.hxx>
-+#include <com/sun/star/text/WritingMode.hpp>
-+#include "layoutlist.hxx"
-+
-+using namespace sd;
-+using namespace rtl;
-+
-+class LayoutTest : public CppUnit::TestFixture
-+{
-+public:
-+ LayoutTest() {}
-+
-+ // initialise your test code values here.
-+ void setUp()
-+ {
-+ }
-+
-+ void tearDown()
-+ {
-+ }
-+
-+ // insert your test code here.
-+ void layoutTypeTest()
-+ {
-+ // test values;
-+ LayoutType* aTestType = new LayoutType();
-+ sal_uInt32 layout, listsize;
-+
-+ sal_Int32 kind;
-+ bool vertical;
-+ double fx, fy, ht, wt;
-+ RectType rt;
-+ WritingMode wm;
-+ sal_uInt32 Hbitmap;
-+ sal_uInt32 Lbitmap;
-+
-+ ElemType* elem1 = new ElemType;
-+ ElemType* elem2;
-+ ElemType* elem3 = new ElemType;
-+ ElemType* elem4 = new ElemType;
-+
-+ LString name1(LString::CreateFromAscii("chart"));
-+ LString name2;
-+
-+ // set and get name
-+ aTestType->setName(name1);
-+ name2 = aTestType->getName();
-+ CPPUNIT_ASSERT_MESSAGE("getName/setName", name1 == name2);
-+ aTestType->addElemToList(*elem1);
-+
-+ // set and get layout number
-+ aTestType->setLayoutNumber(1);
-+ layout = aTestType->getLayoutNumber();
-+ CPPUNIT_ASSERT_MESSAGE("getNumber/setNumber", layout == 1);
-+
-+ // set and get kind of 1st element in list
-+ aTestType->setKind(0,PRESOBJ_CHART);
-+ kind = aTestType->getKind(0);
-+ CPPUNIT_ASSERT_MESSAGE("getKind/setKind", PRESOBJ_CHART == kind);
-+
-+ // set and get isvertical for 1st element
-+ aTestType->setVertical(0,true);
-+ vertical = aTestType->isVertical(0);
-+ CPPUNIT_ASSERT_MESSAGE("setVertical/isVertical", vertical);
-+
-+ // set and get writing mode for layout
-+ aTestType->setWritingMode(WritingMode_LR_TB);
-+ wm = aTestType->getWritingMode();
-+ CPPUNIT_ASSERT_MESSAGE("setwritemode/getwritemode", WritingMode_LR_TB == wm);
-+
-+ // set and get High Bitmap
-+ aTestType->setHBitmapId(170);
-+ Hbitmap = aTestType->getHBitmapId();
-+ CPPUNIT_ASSERT_MESSAGE("setHbitmap/getHbitmap", 170 == Hbitmap);
-+
-+ // set and get Low Bitmap
-+ aTestType->setLBitmapId(388);
-+ Lbitmap = aTestType->getLBitmapId();
-+ CPPUNIT_ASSERT_MESSAGE("setLbitmap/getLbitmap", 388 == Lbitmap);
-+
-+ // set and get X factor
-+ aTestType->setFactorX(0, .5);
-+ fx = aTestType->factorX(0);
-+ CPPUNIT_ASSERT_MESSAGE("setfactorx/getfactorx", .5 == fx);
-+
-+ // set and get Y factor
-+ aTestType->setFactorY(0, .75);
-+ fy = aTestType->factorY(0);
-+ CPPUNIT_ASSERT_MESSAGE("setfactory/getfactory", .75 == fy);
-+
-+ // set and get Height factor
-+ aTestType->setFactorHt(0, .84);
-+ ht = aTestType->factorHt(0);
-+ CPPUNIT_ASSERT_MESSAGE("setfactorht/getfactorht", .84 == ht);
-+
-+ // set and get Width factor
-+ aTestType->setFactorWt(0, 1.25);
-+ wt = aTestType->factorWt(0);
-+ CPPUNIT_ASSERT_MESSAGE("setfactorwt/getfactorwt", 1.25 == wt);
-+
-+ // set and get rectangle type
-+ aTestType->setRecttype(0, RT_TITLE);
-+ rt = aTestType->recttype(0);
-+ CPPUNIT_ASSERT_MESSAGE("setrecttype/getrecttype", RT_TITLE == rt);
-+
-+ // set up some elements to add
-+ elem3->kind = PRESOBJ_IMAGE;
-+ elem4->kind = PRESOBJ_OBJECT;
-+
-+ // get an element by its index in the list
-+ elem2 = aTestType->getElemByIndex(0);
-+ CPPUNIT_ASSERT_MESSAGE("addelem/getbyindex0", elem1 == elem2);
-+
-+ // add an element to the list (at the end)
-+ aTestType->addElemToList(*elem3);
-+ listsize = aTestType->length();
-+ CPPUNIT_ASSERT_MESSAGE("addelem/listsize", listsize == 2);
-+
-+ // get an element by index and check to see if equal
-+ elem2 = aTestType->getElemByIndex(1);
-+ CPPUNIT_ASSERT_MESSAGE("addelem/getbyindex1", elem3 == elem2);
-+
-+ // test the creating of a default element
-+ // get it and check to see if set to a title
-+ aTestType->createDefaultElement();
-+ elem2 = aTestType->getElemByIndex(2);
-+ CPPUNIT_ASSERT_MESSAGE("createelement", ((elem2)&&(elem2->kind == PRESOBJ_TITLE)) );
-+
-+ }
-+
-+
-+ // insert your test code here.
-+ void layoutListTest()
-+ {
-+
-+ LayoutType* alayout1 = new LayoutType();
-+ LayoutType* alayout3;
-+ LayoutType* alayout2;
-+ LayoutList* aTestList = new LayoutList();
-+ Rectangle arect;
-+ sal_uInt32 listsize, layoutcnt;
-+ sal_uInt32 start_size = aTestList->length();
-+
-+ // set up a LayoutType
-+ alayout1->setLayoutNumber(1);
-+ LString name1(LString::CreateFromAscii("ateststring"));
-+ LString name2(LString::CreateFromAscii("anotherone"));
-+
-+ alayout1->setName(name1);
-+
-+ alayout1->createDefaultElement();
-+ alayout1->createDefaultElement();
-+ alayout1->setKind(1, PRESOBJ_OUTLINE);
-+
-+ // add the layout to the list at menu index 0
-+ aTestList->addLayout(alayout1, 0, PK_STANDARD);
-+ alayout2 = aTestList->getLayoutByName(name1);
-+ CPPUNIT_ASSERT_MESSAGE("addlayout/getbyname", alayout1 == alayout2);
-+
-+ // get the layout out of the list
-+ alayout2 = aTestList->getLayoutByIndex(start_size);
-+ CPPUNIT_ASSERT_MESSAGE("getbyindex", alayout2->getName() == name1);
-+
-+
-+ // make sure a layout with the same name can't be added
-+ alayout3 = new LayoutType();
-+ alayout3->setName(name1);
-+
-+ CPPUNIT_ASSERT_MESSAGE("insertsamename", !aTestList->addLayout(alayout3, 2, PK_STANDARD));
-+ // make sure a layout with a different name can be added
-+ alayout3->setName(name2);
-+
-+ listsize = aTestList->length();
-+ layoutcnt = aTestList->numberOfLayouts();
-+ CPPUNIT_ASSERT_MESSAGE("insertdiffname", aTestList->addLayout(alayout3, 1, PK_STANDARD));
-+ // check list size and number of layouts.
-+ CPPUNIT_ASSERT_MESSAGE("listsize", (listsize+1) == aTestList->length());
-+ CPPUNIT_ASSERT_MESSAGE("remove/numberoflayouts", (layoutcnt+1) == aTestList->numberOfLayouts());
-+
-+ // remove a layout from the list (number of layouts
-+ // should be different from size of list)
-+ sal_uInt32 origsize = aTestList->length();
-+ sal_uInt32 origcount = aTestList->numberOfLayouts();
-+
-+ aTestList->removeLayoutFromList(name1);
-+ layoutcnt = aTestList->numberOfLayouts();
-+ CPPUNIT_ASSERT_MESSAGE("remove/numberoflayouts", layoutcnt == (origcount-1));
-+ listsize = aTestList->length();
-+ CPPUNIT_ASSERT_MESSAGE("remove/listlength", listsize == origsize);
-+
-+ // test inserting a layout's index in the menu list
-+ alayout2 = aTestList->getLayoutAtMenuIndex(1, PK_STANDARD);
-+ CPPUNIT_ASSERT_MESSAGE("getLayatMenuidx", ((alayout2)&&(alayout2->getName() == alayout3->getName())) );
-+
-+ // test the length of a menu list
-+ sal_uInt32 count = aTestList->getMenuLength(PK_HANDOUT);
-+ CPPUNIT_ASSERT_MESSAGE("getMenuLength", count = 6);
-+
-+ // get a layout's index at the given menu index
-+ // this is for layout3
-+ sal_uInt32 idx = aTestList->getMenuIndex(3, PK_STANDARD);
-+ CPPUNIT_ASSERT_MESSAGE("getMenuIndex", idx = 1);
-+
-+ //remove the layout from the menu
-+ aTestList->removeFromMenuList(1, PK_STANDARD);
-+ CPPUNIT_ASSERT_MESSAGE("removeMenuIndex", idx = 1);
-+
-+ // add a layout to the menu list
-+ aTestList->addToMenuList(0, 6, PK_STANDARD);
-+ CPPUNIT_ASSERT_MESSAGE("addtoMenu", idx = 1);
-+
-+ }
-+
-+ // Change the following lines only, if you add, remove or rename
-+ // member functions of the current class,
-+ // because these macros are need by auto register mechanism.
-+
-+ CPPUNIT_TEST_SUITE(LayoutTest);
-+ CPPUNIT_TEST(layoutListTest);
-+ CPPUNIT_TEST(layoutTypeTest);
-+ CPPUNIT_TEST_SUITE_END();
-+
-+
-+
-+}; // class b2dvector
-+
-+// -----------------------------------------------------------------------------
-+
-+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(LayoutTest, "layout test");
-+
-+// -----------------------------------------------------------------------------
-+
-+// this macro creates an empty function, which will called by the RegisterAllFunctions()
-+// to let the user the possibility to also register some functions by hand.
-+NOADDITIONAL;
-+
-diff -Nrup sd-m15/test/makefile.mk sd/test/makefile.mk
---- sd-m15/test/makefile.mk 1969-12-31 16:00:00.000000000 -0800
-+++ sd/test/makefile.mk 2009-07-18 23:21:36.000000000 -0700
-@@ -0,0 +1,89 @@
-+#*************************************************************************
-+#
-+# 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: makefile.mk,v $
-+#
-+# $Revision: 1.7 $
-+#
-+# 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.
-+#
-+#*************************************************************************
-+
-+PRJ=..
-+
-+PRJNAME=sd
-+TARGET=tests
-+
-+ENABLE_EXCEPTIONS=TRUE
-+
-+# --- Settings -----------------------------------------------------
-+
-+.INCLUDE : settings.mk
-+
-+# --- Common ----------------------------------------------------------
-+
-+SHL1OBJS= \
-+ $(SLO)$/layouttest.obj \
-+ $(SLO)$/layoutlist.obj \
-+ $(SLO)$/layouttype.obj
-+
-+# linking statically against sd parts
-+#SHL1LIBS=$(SLB)$/core.lib
-+
-+SHL1TARGET= sd_tests
-+SHL1STDLIBS= \
-+ $(CPPUHELPERLIB) \
-+ $(CPPULIB) \
-+ $(CPPUNITLIB) \
-+ $(TOOLSLIB) \
-+ $(SALLIB) \
-+ $(ISDLIB) \
-+ $(SAXLIB) \
-+
-+
-+SHL1IMPLIB= i$(SHL1TARGET)
-+
-+DEF1NAME =$(SHL1TARGET)
-+SHL1VERSIONMAP = export.map
-+
-+# END ------------------------------------------------------------------
-+
-+#------------------------------- All object files -------------------------------
-+# do this here, so we get correct dependencies
-+SLOFILES=$(SHL1OBJS)
-+
-+# --- Targets ------------------------------------------------------
-+
-+.INCLUDE : target.mk
-+.INCLUDE : _cppunit.mk
-+
-+# --- Enable testshl2 execution in normal build ------------------------
-+
-+$(MISC)$/unittest_succeeded : $(SHL1TARGETN)
-+ @echo ----------------------------------------------------------
-+ @echo - start unit test on library $(SHL1TARGETN)
-+ @echo ----------------------------------------------------------
-+ testshl2 -sf $(mktmp ) -forward $(BIN)$/ $(SHL1TARGETN)
-+ $(TOUCH) $@
-+
-+ALLTAR : $(MISC)$/unittest_succeeded
-diff -Nrup sd-m15/util/makefile.mk sd/util/makefile.mk
---- sd-m15/util/makefile.mk 2009-07-15 21:39:04.000000000 -0700
-+++ sd/util/makefile.mk 2009-07-18 23:21:36.000000000 -0700
-@@ -90,7 +90,8 @@ SHL1STDLIBS+= \
- $(VOSLIB) \
- $(CANVASLIB) \
- $(SALLIB) \
-- $(AVMEDIALIB)
-+ $(AVMEDIALIB) \
-+ $(SAXLIB)
-
- SHL1LIBS= $(LIB3TARGET) $(LIB5TARGET) $(LIB6TARGET)
- SHL1DEPN+= makefile.mk
More information about the ooo-build-commit
mailing list