[Libreoffice-commits] core.git: include/svtools include/svx svtools/source svx/source

2022-08-08 Thread Caolán McNamara (via logerrit)
 include/svtools/brwbox.hxx|2 ++
 include/svx/gridctrl.hxx  |1 -
 svtools/source/brwbox/brwbox1.cxx |8 ++--
 svx/source/fmcomp/gridctrl.cxx|2 +-
 4 files changed, 9 insertions(+), 4 deletions(-)

New commits:
commit ba394d2c9a2584ab9745b1b4f3deee3d7aa44636
Author: Caolán McNamara 
AuthorDate: Mon Aug 8 11:50:02 2022 +0100
Commit: Caolán McNamara 
CommitDate: Mon Aug 8 17:33:49 2022 +0200

move m_bNavigationBar to BrowseBox so it knows best scroll/status bar height

to use, so databrowser with it (view data sources) has the tall case,
while bases, create table in design view has the short case

Change-Id: If3269d2ab2ce62f09acac624e5ef7e91ff91eaea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137953
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 

diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx
index bba7585a0ba1..b2a7233874c0 100644
--- a/include/svtools/brwbox.hxx
+++ b/include/svtools/brwbox.hxx
@@ -389,6 +389,8 @@ protected:
 ::vcl::IAccessibleFactory&   getAccessibleFactory();
 
 protected:
+boolm_bNavigationBar;
+
 sal_uInt16  ColCount() const;
 
 // software plug for database access
diff --git a/include/svx/gridctrl.hxx b/include/svx/gridctrl.hxx
index e029b8e23f8a..54a99269cf7f 100644
--- a/include/svx/gridctrl.hxx
+++ b/include/svx/gridctrl.hxx
@@ -292,7 +292,6 @@ private:
 
 boolm_bDesignMode : 1;  // default = sal_False
 boolm_bRecordCountFinal : 1;
-boolm_bNavigationBar  : 1;
 
 boolm_bSynchDisplay : 1;
 boolm_bHandle : 1;
diff --git a/svtools/source/brwbox/brwbox1.cxx 
b/svtools/source/brwbox/brwbox1.cxx
index 72cf3aba9ae2..509d1265649f 100644
--- a/svtools/source/brwbox/brwbox1.cxx
+++ b/svtools/source/brwbox/brwbox1.cxx
@@ -148,13 +148,16 @@ public:
 
 tools::Long BrowseBox::GetBarHeight() const
 {
+tools::Long nScrollBarSize = 
GetSettings().GetStyleSettings().GetScrollBarSize();
+if (!m_bNavigationBar)
+return nScrollBarSize;
+
 // tdf#115941 because some platforms have things like overlay scrollbars, 
take a max
 // of a statusbar height and a scrollbar height as the control area height
 
 // (we can't ask the scrollbars for their size cause if we're zoomed they 
still have to be
 // resized - which is done in UpdateScrollbars)
-
-return std::max(aStatusBarHeight->GetSizePixel().Height(), 
static_cast(GetSettings().GetStyleSettings().GetScrollBarSize()));
+return std::max(aStatusBarHeight->GetSizePixel().Height(), nScrollBarSize);
 }
 
 BrowseBox::BrowseBox( vcl::Window* pParent, WinBits nBits, BrowserMode nMode )
@@ -167,6 +170,7 @@ BrowseBox::BrowseBox( vcl::Window* pParent, WinBits nBits, 
BrowserMode nMode )
 ,m_nCornerHeight(0)
 ,m_nCornerWidth(0)
 ,m_nActualCornerWidth(0)
+,m_bNavigationBar(false)
 {
 ConstructImpl( nMode );
 }
diff --git a/svx/source/fmcomp/gridctrl.cxx b/svx/source/fmcomp/gridctrl.cxx
index ab8f128a7b29..f55b3c846f09 100644
--- a/svx/source/fmcomp/gridctrl.cxx
+++ b/svx/source/fmcomp/gridctrl.cxx
@@ -707,7 +707,6 @@ DbGridControl::DbGridControl(
 ,m_nLastRowId(-1)
 ,m_bDesignMode(false)
 ,m_bRecordCountFinal(false)
-,m_bNavigationBar(true)
 ,m_bSynchDisplay(true)
 ,m_bHandle(true)
 ,m_bFilterMode(false)
@@ -716,6 +715,7 @@ DbGridControl::DbGridControl(
 ,m_bHideScrollbars( false )
 ,m_bUpdating(false)
 {
+m_bNavigationBar = true;
 
 OUString sName(SvxResId(RID_STR_NAVIGATIONBAR));
 m_aBar->SetAccessibleName(sName);


[Libreoffice-commits] core.git: include/svtools include/svx svtools/source svx/source

2019-11-27 Thread Caolán McNamara (via logerrit)
 include/svtools/ctrlbox.hxx|1 +
 include/svx/colorbox.hxx   |3 +++
 include/svx/colorwindow.hxx|3 ++-
 svtools/source/control/ctrlbox.cxx |   13 +++--
 svx/source/tbxctrls/tbcontrl.cxx   |   16 +---
 5 files changed, 26 insertions(+), 10 deletions(-)

New commits:
commit e55a1dc163165cb79fc9113101d16ee8d3db7298
Author: Caolán McNamara 
AuthorDate: Wed Nov 27 14:58:00 2019 +
Commit: Caolán McNamara 
CommitDate: Wed Nov 27 20:22:48 2019 +0100

don't put focus into unmapped windows

defer until the color selectors are activated to grab focus, otherwise
esc doesn't work to close a dialog under gtk3 until focus is put
into some visible widget

Change-Id: I297c2738c4103024bbefd70bbcb5d72b8429dd3e
Reviewed-on: https://gerrit.libreoffice.org/83917
Tested-by: Jenkins
Reviewed-by: Caolán McNamara 
Tested-by: Caolán McNamara 

diff --git a/include/svtools/ctrlbox.hxx b/include/svtools/ctrlbox.hxx
index e023a399e2bb..1de4677ffb77 100644
--- a/include/svtools/ctrlbox.hxx
+++ b/include/svtools/ctrlbox.hxx
@@ -254,6 +254,7 @@ private:
 voidUpdatePaintLineColor();   // returns sal_True if 
maPaintCol has changed
 DECL_LINK(ValueSelectHdl, SvtValueSet*, void);
 DECL_LINK(FocusHdl, weld::Widget&, void);
+DECL_LINK(ToggleHdl, weld::ToggleButton&, void);
 DECL_LINK(NoneHdl, weld::Button&, void);
 
 voidUpdateEntries();
diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx
index b61443ce0b61..5bbc7e45dbde 100644
--- a/include/svx/colorbox.hxx
+++ b/include/svx/colorbox.hxx
@@ -104,6 +104,9 @@ private:
 void createColorWindow();
 void LockWidthRequest();
 ColorWindow* getColorWindow() const;
+
+DECL_LINK(ToggleHdl, weld::ToggleButton&, void);
+
 public:
 ColorListBox(std::unique_ptr pControl, weld::Window* 
pWindow);
 ~ColorListBox();
diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx
index c7ff6d52c054..acc18149e2ca 100644
--- a/include/svx/colorwindow.hxx
+++ b/include/svx/colorwindow.hxx
@@ -154,7 +154,6 @@ private:
 DECL_LINK(SelectPaletteHdl, weld::ComboBox&, void);
 DECL_LINK(AutoColorClickHdl, weld::Button&, void);
 DECL_LINK(OpenPickerClickHdl, weld::Button&, void);
-DECL_LINK(FocusHdl, weld::Widget&, void);
 
 static bool SelectValueSetEntry(ColorValueSet* pColorSet, const Color& 
rColor);
 static NamedColor GetSelectEntryColor(SvtValueSet const * pColorSet);
@@ -176,6 +175,8 @@ public:
 voidSelectEntry(const Color& rColor);
 NamedColor  GetSelectEntryColor() const;
 
+DECL_LINK(FocusHdl, weld::Widget&, void);
+
 virtual voidstatusChanged( const css::frame::FeatureStateEvent& 
rEvent ) override;
 
 };
diff --git a/svtools/source/control/ctrlbox.cxx 
b/svtools/source/control/ctrlbox.cxx
index 397524b934da..f186d39785f5 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -1536,6 +1536,7 @@ 
SvtLineListBox::SvtLineListBox(std::unique_ptr pControl)
 
 m_xTopLevel->connect_focus_in(LINK(this, SvtLineListBox, FocusHdl));
 m_xControl->set_popover(m_xTopLevel.get());
+m_xControl->connect_toggled(LINK(this, SvtLineListBox, ToggleHdl));
 
 // lock size to these maxes height/width so it doesn't jump around in size
 m_xControl->set_label(GetLineStyleName(SvxBorderLineStyle::NONE));
@@ -1563,6 +1564,12 @@ IMPL_LINK_NOARG(SvtLineListBox, FocusHdl, weld::Widget&, 
void)
 m_xLineSet->GrabFocus();
 }
 
+IMPL_LINK(SvtLineListBox, ToggleHdl, weld::ToggleButton&, rButton, void)
+{
+if (rButton.get_active())
+FocusHdl(*m_xTopLevel);
+}
+
 IMPL_LINK_NOARG(SvtLineListBox, NoneHdl, weld::Button&, void)
 {
 SelectEntry(SvxBorderLineStyle::NONE);
@@ -1595,15 +1602,9 @@ sal_Int32 SvtLineListBox::GetStylePos( sal_Int32 
nListPos )
 void SvtLineListBox::SelectEntry(SvxBorderLineStyle nStyle)
 {
 if (nStyle == SvxBorderLineStyle::NONE)
-{
 m_xLineSet->SetNoSelection();
-m_xNoneButton->grab_focus();
-}
 else
-{
 m_xLineSet->SelectItem(static_cast(nStyle) + 1);
-m_xLineSet->GrabFocus();
-}
 UpdatePreview();
 }
 
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 564f7f43b2e2..f1830385a87f 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -1880,7 +1880,10 @@ ColorWindow::ColorWindow(std::shared_ptr 
const & rPaletteManager
 
 IMPL_LINK_NOARG(ColorWindow, FocusHdl, weld::Widget&, void)
 {
-mxColorSet->GrabFocus();
+if (mxColorSet->IsNoSelection() && mpDefaultButton)
+mpDefaultButton->grab_focus();
+else
+mxColorSet->GrabFocus();
 }
 
 void ColorWindow::ShowNoneButton()
@@ -2081,7 +2084,9 @@ IMPL_LINK(ColorWindow, AutoColorClickHdl, weld::Button&, 
rButton, void)
 {
 NamedColor aNamedColor =  == mxButtonAutoColor.get() ? 

[Libreoffice-commits] core.git: include/svtools include/svx svtools/source svx/source

2018-09-11 Thread Libreoffice Gerrit user
 include/svtools/asynclink.hxx  |   
 4 ---
 include/svtools/editbrowsebox.hxx  |   
 3 --
 include/svx/hlnkitem.hxx   |   
 2 -
 svtools/source/contnr/imivctl1.cxx |   
 3 --
 svtools/source/hatchwindow/documentcloser.cxx  |   
 3 --
 svtools/source/misc/embedhlp.cxx   |   
 2 -
 svtools/source/misc/templatefoldercache.cxx|   
 3 --
 svtools/source/misc/transfer2.cxx  |   
 3 --
 svtools/source/uno/treecontrolpeer.cxx |   
 1 
 svx/source/accessibility/AccessibleShape.cxx   |   
 2 -
 svx/source/accessibility/AccessibleTextHelper.cxx  |   
 1 
 svx/source/accessibility/ChildrenManagerImpl.cxx   |   
 4 ---
 svx/source/customshapes/EnhancedCustomShapeFontWork.cxx|   
 2 -
 svx/source/dialog/connctrl.cxx |   
 1 
 svx/source/dialog/ctredlin.cxx |   
 1 
 svx/source/dialog/dlgctl3d.cxx |   
 2 -
 svx/source/dialog/dlgctrl.cxx  |   
 2 -
 svx/source/dialog/graphctl.cxx |   
 4 ---
 svx/source/dialog/hdft.cxx |   
 1 
 svx/source/dialog/langbox.cxx  |   
 3 --
 svx/source/dialog/srchdlg.cxx  |   
 5 
 svx/source/engine3d/e3dsceneupdater.cxx|   
 3 --
 svx/source/engine3d/float3d.cxx|   
 5 
 svx/source/engine3d/scene3d.cxx|   
 1 
 svx/source/fmcomp/fmgridif.cxx |   
 2 -
 svx/source/fmcomp/gridcell.cxx |   
 2 -
 svx/source/fmcomp/gridctrl.cxx |   
 3 --
 svx/source/form/filtnav.cxx|   
 1 
 svx/source/form/fmmodel.cxx|   
 1 
 svx/source/form/fmscriptingenv.cxx |   
 3 --
 svx/source/form/navigatortree.cxx  |   
 1 
 svx/source/gallery2/galbrws1.cxx   |   
 1 
 svx/source/gallery2/galmisc.cxx|   
 4 ---
 svx/source/inc/gridcell.hxx|   
 3 --
 svx/source/items/drawitem.cxx  |   
 3 --
 svx/source/sdr/contact/viewobjectcontact.cxx   |   
 1 
 svx/source/sdr/contact/viewobjectcontactofsdrmediaobj.cxx  |   
 3 --
 svx/source/sdr/properties/defaultproperties.cxx|   
 3 --
 svx/source/sdr/properties/emptyproperties.cxx  |   
 3 --
 svx/source/svdraw/sdrmasterpagedescriptor.cxx  |   
 3 --
 svx/source/svdraw/sdrpaintwindow.cxx   |   
 1 
 svx/source/svdraw/svdfmtf.cxx  |   
 3 --
 svx/source/svdraw/svdobj.cxx   |   
 5 
 svx/source/svdraw/svdobjplusdata.cxx   |   
 5 
 svx/source/svdraw/svdopath.cxx |   
 1 
 svx/source/svdraw/svdorect.cxx |   
12 +++---
 svx/source/svdraw/svdotext.cxx |   
 4 ---
 svx/source/svdraw/svdotxln.cxx |   
 1 
 svx/source/svdraw/svdpage.cxx  |   
 3 --
 svx/source/svdraw/svdpdf.cxx   |   
 3 --
 svx/source/svdraw/svdtext.cxx  |   
 3 --
 svx/source/svdraw/svdundo.cxx  |   
 3 --
 svx/source/table/accessiblecell.cxx|   
 1 
 svx/source/table/svdotable.cxx |   
 1 
 svx/source/table/tablecontroller.cxx   |   
 1 
 svx/source/table/tablertfimporter.cxx  |   
 3 --
 svx/source/tbxctrls/linectrl.cxx   |   
 2 -
 

[Libreoffice-commits] core.git: include/svtools include/svx svtools/source svx/source

2013-07-25 Thread Tomaž Vajngerl
 include/svtools/ruler.hxx|3 +
 include/svx/ruler.hxx|4 -
 svtools/source/control/ruler.cxx |   38 ++---
 svx/source/dialog/svxruler.cxx   |   85 +--
 4 files changed, 92 insertions(+), 38 deletions(-)

New commits:
commit bfa3f8584b2f2492f5c0573f22e4ebd96d9a8af5
Author: Tomaž Vajngerl qui...@gmail.com
Date:   Thu Jul 25 23:55:05 2013 +0200

fdo#38144 Enhance snapping to markers, also snap to frame margins

Change-Id: I5de4f8bafecabf84224a0518d9515295d23d7321

diff --git a/include/svtools/ruler.hxx b/include/svtools/ruler.hxx
index 04237df..b37aa81 100644
--- a/include/svtools/ruler.hxx
+++ b/include/svtools/ruler.hxx
@@ -771,6 +771,9 @@ public:
 voidSetMargin2( long nPos, sal_uInt16 nMarginStyle = 
RULER_MARGIN_SIZEABLE );
 longGetMargin2() const;
 
+voidSetLeftFrameMargin( long nPos );
+voidSetRightFrameMargin( long nPos );
+
 voidSetLines( sal_uInt16 n = 0, const RulerLine* pLineAry 
= NULL );
 
 voidSetBorders( sal_uInt16 n = 0, const RulerBorder* 
pBrdAry = NULL );
diff --git a/include/svx/ruler.hxx b/include/svx/ruler.hxx
index a6faad7..f017daf 100644
--- a/include/svx/ruler.hxx
+++ b/include/svx/ruler.hxx
@@ -124,8 +124,8 @@ class SVX_DLLPUBLIC SvxRuler: public Ruler, public 
SfxListener
 void UpdateColumns();
 void UpdateObject();
 
-// Normalize position to the ruler's tick value
-void NormalizePosition(long rValue) const;
+// Convert position to stick to ruler ticks
+long MakePositionSticky(long rValue, bool aSnapToFrameMargin = true) const;
 
 long PixelHAdjust(long lPos, long lPos2) const;
 long PixelVAdjust(long lPos, long lPos2) const;
diff --git a/svtools/source/control/ruler.cxx b/svtools/source/control/ruler.cxx
index d128975..e25452a 100644
--- a/svtools/source/control/ruler.cxx
+++ b/svtools/source/control/ruler.cxx
@@ -90,6 +90,8 @@ private:
 longnNullOff;
 longnMargin1;
 longnMargin2;
+longnLeftFrameMargin;
+longnRightFrameMargin;
 sal_uInt16  nLines;
 sal_uInt16  nBorders;
 sal_uInt16  nIndents;
@@ -1032,11 +1034,12 @@ void Ruler::ImplFormat()
 if ( mbCalc )
 ImplCalc();
 mpData-nNullVirOff = mnWinOff+mpData-nPageOff+mpData-nNullOff-mnVirOff;
+
 nNullVirOff = mpData-nNullVirOff;
 nVirLeft= mpData-nRulVirOff;
-nVirRight   = nVirLeft+mpData-nRulWidth-1;
+nVirRight   = nVirLeft + mpData-nRulWidth - 1;
 nVirTop = 0;
-nVirBottom  = mnVirHeight-1;
+nVirBottom  = mnVirHeight - 1;
 
 if ( !IsReallyVisible() )
 return;
@@ -1138,10 +1141,15 @@ void Ruler::ImplFormat()
 }
 
 // Lineal-Beschriftung (nur wenn keine Bemassungspfeile)
-longnMin = nVirLeft;
-longnMax = nP2;
-longnStart = mpData-bTextRTL ? mpData-nMargin2 + nNullVirOff : 
nNullVirOff;
-longnCenter = nVirTop+((nVirBottom-nVirTop)/2);
+long nMin = nVirLeft;
+long nMax = nP2;
+long nCenter = nVirTop + ((nVirBottom - nVirTop) / 2);
+long nStart = 0;
+
+if (mpData-bTextRTL)
+nStart = mpData-nRightFrameMargin + nNullVirOff;
+else
+nStart = mpData-nLeftFrameMargin + nNullVirOff;
 
 // Nicht Schatten uebermalen
 if ( nP1  nVirLeft )
@@ -2497,6 +2505,24 @@ void Ruler::SetNullOffset( long nPos )
 }
 }
 
+void Ruler::SetLeftFrameMargin( long nPos )
+{
+if ( (mpData-nLeftFrameMargin != nPos) )
+{
+mpData-nLeftFrameMargin  = nPos;
+ImplUpdate();
+}
+}
+
+void Ruler::SetRightFrameMargin( long nPos )
+{
+if ( (mpData-nRightFrameMargin != nPos) )
+{
+mpData-nRightFrameMargin  = nPos;
+ImplUpdate();
+}
+}
+
 // ---
 
 void Ruler::SetMargin1( long nPos, sal_uInt16 nMarginStyle )
diff --git a/svx/source/dialog/svxruler.cxx b/svx/source/dialog/svxruler.cxx
index d5ab943..41e377f 100644
--- a/svx/source/dialog/svxruler.cxx
+++ b/svx/source/dialog/svxruler.cxx
@@ -432,14 +432,34 @@ SvxRuler::~SvxRuler()
 pBindings-LeaveRegistrations();
 }
 
-/* Internal conversion routines */
-
-void SvxRuler::NormalizePosition(long rValue) const
+long SvxRuler::MakePositionSticky(long aPosition, bool aSnapToFrameMargin) 
const
 {
-long aNewPositionLogic = pEditWin-PixelToLogic(Size(0, rValue), 
GetCurrentMapMode()).Height();
-long aTickDivider = GetCurrentRulerUnit().nTick1;
-aNewPositionLogic = (aNewPositionLogic / aTickDivider) * aTickDivider;
-rValue = pEditWin-LogicToPixel(Size(0, aNewPositionLogic), 
GetCurrentMapMode()).Height();
+long aLeftFramePosition = ConvertHPosPixel(GetLeftFrameMargin());
+long aRightFramePosition = ConvertHPosPixel(GetRightFrameMargin());
+long aTick = 

[Libreoffice-commits] core.git: include/svtools include/svx svtools/source svx/source sw/source

2013-07-11 Thread Ciorba Edmond
 include/svtools/htmlout.hxx|2 
 include/svx/xoutbmp.hxx|1 
 svtools/source/svhtml/htmlout.cxx  |8 -
 svx/source/xoutdev/_xoutbmp.cxx|   43 +
 sw/source/filter/html/css1atr.cxx  |  107 +++-
 sw/source/filter/html/htmlatr.cxx  |5 -
 sw/source/filter/html/htmlfly.cxx  |  161 +
 sw/source/filter/html/htmlnum.cxx  |5 -
 sw/source/filter/html/htmlplug.cxx |   23 -
 sw/source/filter/html/htmltabw.cxx |9 --
 sw/source/filter/html/wrthtml.cxx  |   60 ++---
 sw/source/filter/html/wrthtml.hxx  |   12 +-
 12 files changed, 149 insertions(+), 287 deletions(-)

New commits:
commit 5dd1b3da57862a6577717544dde56482add89170
Author: Ciorba Edmond edmond_cio...@yahoo.com
Date:   Wed Jul 3 16:14:45 2013 +0300

fdo#63211 - embed images in HTML export.

Change-Id: I585c85d2cee13ee8954623bd981cb372d78b7952

diff --git a/include/svtools/htmlout.hxx b/include/svtools/htmlout.hxx
index 33c76fe..90c3208 100644
--- a/include/svtools/htmlout.hxx
+++ b/include/svtools/htmlout.hxx
@@ -68,7 +68,7 @@ struct HTMLOutFuncs
 SVT_DLLPUBLIC static SvStream Out_Char( SvStream, sal_Unicode cChar,
 HTMLOutContext rContext,
 String *pNonConvertableChars = 0 );
-SVT_DLLPUBLIC static SvStream Out_String( SvStream, const String,
+SVT_DLLPUBLIC static SvStream Out_String( SvStream, const OUString,
 rtl_TextEncoding eDestEnc = RTL_TEXTENCODING_MS_1252,
 String *pNonConvertableChars = 0 );
 SVT_DLLPUBLIC static SvStream Out_Hex( SvStream, sal_uLong nHex, 
sal_uInt8 nLen,
diff --git a/include/svx/xoutbmp.hxx b/include/svx/xoutbmp.hxx
index 0c614b9..3bb51cf 100644
--- a/include/svx/xoutbmp.hxx
+++ b/include/svx/xoutbmp.hxx
@@ -54,6 +54,7 @@ public:
 static sal_uInt16   WriteGraphic( const Graphic rGraphic, String 
rFileName,
   const String rFilterName, const 
sal_uIntPtr nFlags = 0L,
   const Size* pMtfSize_100TH_MM = NULL );
+static sal_uLongGraphicToBase64(const Graphic rGraphic,OUString 
rOUString);
 
 static sal_uInt16   ExportGraphic( const Graphic rGraphic, const 
INetURLObject rURL,
GraphicFilter rFilter, const 
sal_uInt16 nFormat,
diff --git a/svtools/source/svhtml/htmlout.cxx 
b/svtools/source/svhtml/htmlout.cxx
index a23638f..f384c4b 100644
--- a/svtools/source/svhtml/htmlout.cxx
+++ b/svtools/source/svhtml/htmlout.cxx
@@ -532,14 +532,14 @@ SvStream HTMLOutFuncs::Out_Char( SvStream rStream, 
sal_Unicode c,
 return rStream;
 }
 
-SvStream HTMLOutFuncs::Out_String( SvStream rStream, const String rStr,
+SvStream HTMLOutFuncs::Out_String( SvStream rStream, const OUString rOUStr,
 rtl_TextEncoding eDestEnc,
 String *pNonConvertableChars )
 {
 HTMLOutContext aContext( eDestEnc );
-xub_StrLen nLen = rStr.Len();
-for( xub_StrLen n = 0; n  nLen; n++ )
-HTMLOutFuncs::Out_Char( rStream, rStr.GetChar( (xub_StrLen)n ),
+sal_Int32 nLen = rOUStr.getLength();
+for( sal_Int32 n = 0; n  nLen; n++ )
+HTMLOutFuncs::Out_Char( rStream, rOUStr[n],
 aContext, pNonConvertableChars );
 HTMLOutFuncs::FlushToAscii( rStream, aContext );
 return rStream;
diff --git a/svx/source/xoutdev/_xoutbmp.cxx b/svx/source/xoutdev/_xoutbmp.cxx
index 535d6b3..40f9f7f 100644
--- a/svx/source/xoutdev/_xoutbmp.cxx
+++ b/svx/source/xoutdev/_xoutbmp.cxx
@@ -29,6 +29,9 @@
 #include vcl/dibtools.hxx
 #include vcl/FilterConfigItem.hxx
 #include vcl/graphicfilter.hxx
+#include vcl/cvtgrf.hxx
+#include sax/tools/converter.hxx
+#include svtools/htmlkywd.hxx
 
 #define FORMAT_BMP  OUString(bmp)
 #define FORMAT_GIF  OUString(gif)
@@ -314,6 +317,46 @@ sal_uInt16 XOutBitmap::WriteGraphic( const Graphic 
rGraphic, String rFileName,
 }
 }
 
+sal_uLong XOutBitmap::GraphicToBase64(const Graphic rGraphic, OUString 
rOUString)
+{
+SvMemoryStream aOStm;
+OUString aMimeType;
+GfxLink aLink = rGraphic.GetLink();
+sal_uLong aCvtType;
+switch(  aLink.GetType() )
+{
+case( GFX_LINK_TYPE_NATIVE_JPG ):
+aCvtType = CVT_JPG;
+aMimeType = image/jpeg;
+break;
+case( GFX_LINK_TYPE_NATIVE_PNG ):
+aCvtType = CVT_PNG;
+aMimeType = image/png;
+break;
+case( GFX_LINK_TYPE_NATIVE_SVG ):
+aCvtType = CVT_SVG;
+aMimeType = image/svg+xml;
+break;
+default:
+// save everything else (including gif) into png
+aCvtType = CVT_PNG;
+aMimeType = image/png;
+break;
+}
+sal_uLong nErr = GraphicConverter::Export(aOStm,rGraphic,aCvtType);
+if ( nErr )
+{
+SAL_WARN(svx,