[Libreoffice-commits] core.git: Branch 'private/ajrhunt/c4' - 1210 commits - accessibility/inc accessibility/source android/abs-lib android/Bootstrap android/CustomTarget_android_desktop.mk android/CustomTarget_lo4android.mk android/experimental android/Module_android.mk avmedia/inc avmedia/Module_avmedia.mk avmedia/source basctl/source basctl/uiconfig basegfx/source basic/qa basic/source bean/com bean/Jar_officebean.mk bean/test binaryurp/source bin/count-todo-dialogs bin/distro-install-file-lists bin/find-german-comments bin/gbuild-to-ide bin/get-bugzilla-attachments-by-mimetype bridges/Library_cpp_uno.mk bridges/source bridges/test canvas/source canvas/workben chart2/inc chart2/Library_chartcore.mk chart2/opengl chart2/qa chart2/source chart2/uiconfig codemaker/source comphelper/source compilerplugins/clang config_host/config_features.h.in config_host/config_global.h.in config_host.mk.in configure.ac connectivity/Jar_sdbc_hsqldb.mk connectivity/Library_odbc.mk connectivity/Package_postgresql-s dbc.mk connectivity/qa connectivity/source connectivity/workben cppcanvas/qa cppcanvas/source cppuhelper/source cppu/source cui/Library_cui.mk cui/source cui/uiconfig cui/UIConfig_cui.mk dbaccess/CppunitTest_dbaccess_empty_stdlib_save.mk dbaccess/CppunitTest_dbaccess_nolib_save.mk dbaccess/Library_dbu.mk dbaccess/Module_dbaccess.mk dbaccess/qa dbaccess/source dbaccess/uiconfig desktop/source desktop/test desktop/uiconfig dictionaries distro-configs/OxygenOfficeLinux.conf download.lst drawinglayer/README drawinglayer/source editeng/source extensions/Executable_nsplugin.mk extensions/Library_npsoplugin.mk extensions/Module_extensions.mk extensions/Package_mdibundle.mk extensions/source extensions/StaticLibrary_npsoenv.mk extensions/uiconfig extensions/WinResTarget_npsoplugin.mk external/boost external/coinmp external/collada2gltf external/firebird external/hunspell external/libgltf external/libmariadb external/Module_external.mk external/mysqlcppconn external/neon external/np_sdk exte rnal/python3 extras/source filter/Configuration_filter.mk filter/source filter/uiconfig forms/source formula/source fpicker/source fpicker/test framework/inc framework/qa framework/source .gitignore helpcompiler/inc helpcontent2 hwpfilter/inc hwpfilter/source i18nlangtag/source i18npool/inc i18npool/source icon-themes/galaxy icon-themes/sifr icon-themes/tango idlc/inc idlc/source idl/inc idl/source include/avmedia include/basegfx include/basic include/canvas include/codemaker include/com include/comphelper include/connectivity include/cppcanvas include/cppuhelper include/dbaccess include/drawinglayer include/editeng include/filter include/formula include/i18nlangtag include/o3tl include/oox include/osl include/postx.h include/prex.h include/rtl include/sal include/salhelper include/sfx2 include/sot include/svl include/svtools include/svx include/toolkit include/tools include/ucbhelper include/uno include/unotools include/vbahelper include/vcl include/xmloff instsetoo_native/CustomTa rget_setup.mk instsetoo_native/Module_instsetoo_native.mk instsetoo_native/Package_setup.mk instsetoo_native/Package_setup_ure.mk javaunohelper/com javaunohelper/JunitTest_juh.mk javaunohelper/Module_javaunohelper.mk javaunohelper/test jurt/com jurt/Library_jpipe.mk jurt/source jurt/test jvmfwk/Package_jreproperties.mk jvmfwk/plugins jvmfwk/source l10ntools/inc l10ntools/source lingucomponent/source lotuswordpro/source Makefile.in mysqlc/README mysqlc/source o3tl/CppunitTest_o3tl_tests.mk o3tl/qa o3tl/README odk/config odk/CppunitTest_odk_checkapi.mk odk/examples odk/qa odk/settings offapi/com officecfg/registry officecfg/util oox/CppunitTest_oox_tokenmap.mk oox/inc oox/Module_oox.mk oox/qa oox/README oox/source package/source postprocess/Rdb_services.mk pyuno/CustomTarget_python_shell.mk pyuno/source qadevOOo/runner qadevOOo/tests registry/source reportbuilder/java reportdesign/inc reportdesign/source reportdesign/uiconfig reportdesign/UIConfig_dbreport.mk Repository.mk RepositoryM odule_build.mk RepositoryModule_host.mk ridljar/com ridljar/test rsc/inc rsc/source sal/Library_sal.mk sal/osl sal/qa sal/rtl sal/textenc sax/CppunitTest_sax.mk sax/CppunitTest_sax_parser.mk sax/Library_expwrap.mk sax/Library_sax.mk sax/qa sax/source sc/CppunitTest_sc_ucalc.mk sc/inc sc/Library_vbaobj.mk scp2/AutoInstall.mk scp2/inc scp2/InstallModule_base.mk scp2/InstallModule_calc.mk scp2/InstallModule_draw.mk scp2/InstallModule_graphicfilter.mk scp2/InstallModule_impress.mk scp2/InstallModule_math.mk scp2/InstallModule_ooo.mk scp2/InstallModule_python.mk scp2/InstallModule_ure.mk scp2/InstallModule_winexplorerext.mk scp2/InstallModule_writer.mk scp2/source sc/qa scripting/astyle.options scripting/Format_java_code.sh scripting/java scripting/README scripting/source scripting/workben sc/source sc/uiconfig sc/workben sd/AllLangResTarget_sd.mk sdext/source sd/inc sd/Library_sd.mk sd/qa sd/sdi sd/source sd/uiconfig setup_native/source sfx2/inc sfx2/Library_sfx.mk sfx2/sdi sfx2/source sfx2/uiconfig shell/source slideshow/source slideshow/test smoketest/data solenv/bin solenv/gbuild solenv/inc soltools/mkdepend sot/source starmath/inc starmath/source starmath/uiconfig starmath/UIConfig_smath.mk stoc/source svl/Library_svl.mk svl/source svtools/inc svtools/qa svtools/source svtools/uiconfig svx/AllLangResTarget_svx.mk svx/CppunitTest_svx_unit.mk svx/inc svx/Library_svxcore.mk svx/Library_svx.mk svx/Module_svx.mk svx/qa svx/README svx/sdi svx/source svx/uiconfig svx/UIConfig_svx.mk svx/workben sw/CppunitTest_sw_htmlimport.mk sw/CppunitTest_sw_tox.mk swext/mediawiki sw/inc sw/Module_sw.mk sw/qa sw/sdi sw/source sw/uiconfig sw/UIConfig_swriter.mk sysui/CustomTarget_share.mk sysui/desktop sysui/Package_osxicons.mk test/source testtools/CustomTarget_uno_test.mk toolkit/inc toolkit/qa toolkit/source tools/inc tools/qa tools/source ucbhelper/source ucb/source ucb/workben UnoControls/source unotools/CppunitTest_unotools_fontdefs.mk unotools/Module_unotools.mk unotools/qa u notools/source unoxml/CppunitTest_unoxml_domtest.mk unoxml/Module_unoxml.mk unoxml/qa unoxml/source unoxml/test unusedcode.easy ure/Module_ure.mk ure/Package_builddir_install.mk ure/Package_install.mk ure/source uui/source uui/uiconfig vbahelper/source vcl/android vcl/CppunitTest_vcl_timer.mk vcl/generic vcl/headless vcl/inc vcl/ios vcl/Library_vcl.mk vcl/Module_vcl.mk vcl/osx vcl/qa vcl/quartz vcl/source vcl/uiconfig vcl/unx vcl/win vcl/workben winaccessibility/source wizards/com wizards/Jar_commonwizards.mk wizards/source writerfilter/documentation writerfilter/inc writerfilter/source writerperfect/inc writerperfect/Library_wpftcalc.mk writerperfect/Library_wpftdraw.mk writerperfect/source xmerge/source xmlhelp/source xmloff/source xmlscript/source xmlscript/test xmlsecurity/inc xmlsecurity/source xmlsecurity/test_docs xmlsecurity/workben
Andrzej Hunt
andrzej.hunt at collabora.com
Sun Sep 28 22:31:50 PDT 2014
Rebased ref, commits from common ancestor:
commit 713d6b45bb3141db12777b5bc068a9a7719ae458
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Aug 27 14:29:07 2014 +0200
Use GetScrPos so that col/row-headers match the grid.
Without this we can still get single pixel errors which can sum
up over multiple columns/row.
Change-Id: Id428dafab1ca771c123c84d815261263a7d33fed
diff --git a/sc/source/ui/view/colrowba.cxx b/sc/source/ui/view/colrowba.cxx
index e560855..ad61654 100644
--- a/sc/source/ui/view/colrowba.cxx
+++ b/sc/source/ui/view/colrowba.cxx
@@ -81,9 +81,18 @@ sal_uInt16 ScColBar::GetEntrySize( SCCOLROW nEntryNo ) const
ScDocument* pDoc = pViewData->GetDocument();
SCTAB nTab = pViewData->GetTabNo();
if (pDoc->ColHidden(static_cast<SCCOL>(nEntryNo), nTab))
+ {
return 0;
+ }
else
- return (sal_uInt16) ScViewData::ToPixel( pDoc->GetColWidth( static_cast<SCCOL>(nEntryNo), nTab ), pViewData->GetPPTX() );
+ {
+ Point aBefore = pViewData->GetScrPos( nEntryNo, 0, SC_SPLIT_BOTTOMLEFT );
+ Point aAfter = pViewData->GetScrPos( nEntryNo + 1, 0, SC_SPLIT_BOTTOMLEFT );
+
+ bool bLayoutRTL = IsLayoutRTL();
+ long nLayoutSign = bLayoutRTL ? -1 : 1;
+ return ( aAfter.getX() - aBefore.getX() ) * nLayoutSign;
+ }
}
OUString ScColBar::GetEntryText( SCCOLROW nEntryNo ) const
@@ -236,10 +245,16 @@ sal_uInt16 ScRowBar::GetEntrySize( SCCOLROW nEntryNo ) const
SCTAB nTab = pViewData->GetTabNo();
SCROW nLastRow = -1;
if (pDoc->RowHidden(nEntryNo, nTab, NULL, &nLastRow))
+ {
return 0;
+ }
else
- return (sal_uInt16) ScViewData::ToPixel( pDoc->GetOriginalHeight( nEntryNo,
- nTab ), pViewData->GetPPTY() );
+ {
+ Point aBefore = pViewData->GetScrPos( 0, nEntryNo, SC_SPLIT_BOTTOMLEFT );
+ Point aAfter = pViewData->GetScrPos( 0, nEntryNo + 1, SC_SPLIT_BOTTOMLEFT );
+
+ return aAfter.getY() - aBefore.getY();
+ }
}
OUString ScRowBar::GetEntryText( SCCOLROW nEntryNo ) const
commit 503f504dc53d9d488e60920877405cc8264bfabd
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Aug 27 20:52:09 2014 +0200
Match TiledRendering scaling to the new ViewData PaintMapMode.
This is a bit hacky, still need to figure out what's going
wrong that we need this weird conversion.
Change-Id: Id1c62401f9f85c6d436bdd73b51ccf126100cbc4
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 58f7fe3..4281693 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -964,21 +964,30 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
// that VirtualDevices use a DPI of 96. We might as well do this
// calculation now, rather than after another dimension conversion,
// to minimise errors.
- Fraction scaleX = Fraction( nOutputWidth, 96 ) * Fraction(1440L) /
+ // TODO: width wise we need the print scaling compensation stuff?
+ Fraction scaleX = Fraction( 100*nOutputWidth, 96*96 ) * Fraction(1440L) /
Fraction( nTileWidth);
- Fraction scaleY = Fraction( nOutputHeight, 96 ) * Fraction(1440L) /
+ if ( pViewData->GetDocShell() )
+ {
+ scaleX *= pViewData->GetDocShell()->GetOutputFactor();
+ }
+ Fraction scaleY = Fraction( 100*nOutputHeight, 96*96 ) * Fraction(1440L) /
Fraction( nTileHeight);
rDevice.SetOutputSizePixel( Size( nOutputWidth, nOutputHeight ) );
- MapMode aMapMode( rDevice.GetMapMode() );
- aMapMode.SetMapUnit( MAP_TWIP );
- aMapMode.SetOrigin( Point( -nTilePosX, -nTilePosY ) );
- aMapMode.SetScaleX( scaleX );
- aMapMode.SetScaleY( scaleY );
+ pViewData->SetZoom( scaleX, scaleY, false );
+ // We now need to force a recalculation of PaintMapMode, which
+ // happens when ScViewData::CalcPPT is called by RefreshZoom.
+ pViewData->RefreshZoom();
- maPaintMapMode = aMapMode;
-// rDevice.SetMapMode( aMapMode );
+ // We only need to propagate the origin through to Draw()
+ // through the device.
+ MapMode aMapMode( rDevice.GetMapMode() );
+ aMapMode.SetOrigin( rDevice.LogicToPixel(
+ Point(-nTilePosX, -nTilePosY ),
+ pViewData->GetPaintMapMode() ) );
+ rDevice.SetMapMode( aMapMode );
ScTabViewShell* pTabViewSh = pViewData->GetViewShell();
SdrView* pDrawView = pTabViewSh->GetScDrawView();
commit f3e1e93df5fe7290b9486cb2d06feb40fae4bbe6
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Aug 27 20:42:48 2014 +0200
Don't use UpdateVisibleRange for calc tiled rendering.
Change-Id: Iaba02741acc280dfc4c500e0d08271b39560149b
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index cae7e98..58f7fe3 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -464,7 +464,13 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
OSL_ENSURE( ValidCol(nX2) && ValidRow(nY2), "GridWin Draw Bereich zu gross" );
- UpdateVisibleRange();
+ // We can only do this for non-tiled rendering as it manipulates
+ // maVisibleRange on the basis of what pViewData thinks is on screen,
+ // whereas for tiled rendering we are completely independent of our
+ // usual screen-rendering assumptions and therefore have already
+ // set maVisibleRange as appropriate in Paint().
+ if ( pOutDev == this )
+ UpdateVisibleRange();
if (nX2 < maVisibleRange.mnCol1 || nY2 < maVisibleRange.mnRow1)
return;
commit e87d0e50777c9c5e0f6922b97cfcdf60b47610df
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Aug 27 20:37:45 2014 +0200
Set visible range from origin for Calc Tiled Rendering.
Change-Id: I255b8865786088751c5d71da9db2ba38defed3bd
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 040fd17..cae7e98 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -380,7 +380,21 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev )
// We specifically need to set the visible range here -- by default it is
// set in UpdateVisibleRange which however uses the viewdata, which is
// completely irrelevant for tiled rendering.
- maVisibleRange.set( nX1, nY1, nX2, nY2 );
+ // However we don't want to fiddle with the visible range for normal
+ // rendering (i.e. pOutDev == this).
+ if ( pOutDev != this )
+ {
+ // We need to iterate positions from the origin when doing tiled
+ // rendering to ensure that tile edges actually match -- the
+ // visible area is used for FillData which is used for the
+ // position determination.
+ // However ultimately we probably want to kill the use of FillData
+ // for position determination since we no longer scale the values
+ // that we put in there?
+ nX1 = 0;
+ nY1 = 0;
+ maVisibleRange.set( nX1, nY1, nX2, nY2 );
+ }
Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS, pOutDev ); // nicht weiterzeichnen
bIsInPaint = false;
}
commit b1a031d50d3de4b722ca6b8f2afe4a8c13b79897
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Aug 27 14:46:06 2014 +0200
Allow PaintMapMode retrieval.
We need this for conversions elsewhere (outside of ScViewData).
Conflicts:
sc/source/ui/inc/viewdata.hxx
Change-Id: I86ce18a22095488d3d3750bd13a5fab46a352be5
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 4623b24..fd3cf26 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -482,6 +482,8 @@ public:
static inline long ToPixel( sal_uInt16 nTwips, double nFactor );
+ MapMode& GetPaintMapMode() { return maPaintMapMode; }
+
/** while (rScrY <= nEndPixels && rPosY <= nEndRow) add pixels of row
heights converted with nPPTY to rScrY, optimized for row height
segments. Upon return rPosY is the last row evaluated <= nEndRow, rScrY
commit 40a1470c8a6947bcbb46116f135462227255421e
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Aug 15 16:48:01 2014 +0200
Use MapMode instead of nPPTX/nPPTY.
This is far from complete: we need to replace all uses of
nPPTX/nPPTY for things to work correctly.
Change-Id: I7c8aca62c537d8770903f4a6ae0a164479af3fc1
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 683e985..4623b24 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -156,6 +156,7 @@ class SC_DLLPUBLIC ScViewData
{
private:
double nPPTX, nPPTY; // Scaling factors
+ MapMode maPaintMapMode;
::std::vector<ScViewDataTable*> maTabData;
boost::scoped_ptr<ScMarkData> mpMarkData;
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index d7c25b2..6db5e56 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2151,42 +2151,16 @@ void ScViewData::UpdateScreenZoom( const Fraction& rNewX, const Fraction& rNewY
void ScViewData::CalcPPT()
{
- nPPTX = ScGlobal::nScreenPPTX * (double) GetZoomX();
- if (pDocShell)
- nPPTX = nPPTX / pDocShell->GetOutputFactor(); // Faktor ist Drucker zu Bildschirm
- nPPTY = ScGlobal::nScreenPPTY * (double) GetZoomY();
-
- // if detective objects are present,
- // try to adjust horizontal scale so the most common column width has minimal rounding errors,
- // to avoid differences between cell and drawing layer output
+ maPaintMapMode.SetMapUnit( MAP_TWIP );
- if ( pDoc && pDoc->HasDetectiveObjects(nTabNo) )
+ Fraction aScaleX = GetZoomX() * Fraction(0.96);
+ if ( pDocShell )
{
- SCCOL nEndCol = 0;
- SCROW nDummy = 0;
- pDoc->GetTableArea( nTabNo, nEndCol, nDummy );
- if (nEndCol<20)
- nEndCol = 20; // same end position as when determining draw scale
-
- sal_uInt16 nTwips = pDoc->GetCommonWidth( nEndCol, nTabNo );
- if ( nTwips )
- {
- double fOriginal = nTwips * nPPTX;
- if ( fOriginal < static_cast<double>(nEndCol) )
- {
- // if one column is smaller than the column count,
- // rounding errors are likely to add up to a whole column.
-
- double fRounded = ::rtl::math::approxFloor( fOriginal + 0.5 );
- if ( fRounded > 0.0 )
- {
- double fScale = fRounded / fOriginal + 1E-6;
- if ( fScale >= 0.9 && fScale <= 1.1 )
- nPPTX *= fScale;
- }
- }
- }
+ aScaleX /= pDocShell->GetOutputFactor();
}
+
+ maPaintMapMode.SetScaleX( aScaleX );
+ maPaintMapMode.SetScaleY( GetZoomY() * Fraction(0.96) );
}
#define SC_OLD_TABSEP '/'
commit 332f911c9f04e0497f61d8b59738c6b5d1332599
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Aug 15 16:46:11 2014 +0200
ScOutputData needs ScViewData for scaling.
Change-Id: I14cd3e835ba8233478514d5f6832737aa2c99bf9
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
index e7dd3d5..760883b 100644
--- a/sc/source/ui/inc/output.hxx
+++ b/sc/source/ui/inc/output.hxx
@@ -48,6 +48,7 @@ class ScTabViewShell;
class ScPageBreakData;
class FmFormView;
class ScFieldEditEngine;
+class ScViewData;
class SdrPaintWindow;
#define SC_SCENARIO_HSPACE 60
@@ -143,6 +144,11 @@ private:
OutputDevice* mpDev; // Device
OutputDevice* mpRefDevice; // printer if used for preview
OutputDevice* pFmtDevice; // reference for text formatting
+
+ // This may be NULL -- i.e. it should be used when available,
+ // but otherwise ignored.
+ ScViewData* mpViewData;
+
ScTableInfo& mrTabInfo;
RowInfo* pRowInfo; // Info block
SCSIZE nArrCount; // occupied lines in info block
@@ -258,6 +264,7 @@ private:
public:
ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
+ ScViewData* pViewData,
ScTableInfo& rTabInfo, ScDocument* pNewDoc,
SCTAB nNewTab, long nNewScrX, long nNewScrY,
SCCOL nNewX1, SCROW nNewY1, SCCOL nNewX2, SCROW nNewY2,
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index e777df8..4d5ad0a 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -4627,7 +4627,7 @@ void ScGridWindow::UpdateFormulas()
Fraction aZoomX = pViewData->GetZoomX();
Fraction aZoomY = pViewData->GetZoomY();
- ScOutputData aOutputData( this, OUTTYPE_WINDOW, aTabInfo, &rDoc, nTab,
+ ScOutputData aOutputData( this, OUTTYPE_WINDOW, pViewData, aTabInfo, &rDoc, nTab,
nScrX, nScrY, nX1, nY1, nX2, nY2, nPPTX, nPPTY,
&aZoomX, &aZoomY );
aOutputData.SetMirrorWidth( nMirrorWidth );
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 022f6e3..040fd17 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -533,7 +533,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
Fraction aZoomX = pViewData->GetZoomX();
Fraction aZoomY = pViewData->GetZoomY();
- ScOutputData aOutputData( pOutDev, OUTTYPE_WINDOW, aTabInfo, &rDoc, nTab,
+ ScOutputData aOutputData( pOutDev, OUTTYPE_WINDOW, pViewData, aTabInfo, &rDoc, nTab,
nScrX, nScrY, nX1, nY1, nX2, nY2, nPPTX, nPPTY,
&aZoomX, &aZoomY );
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index 6b19602..97bb09c 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -141,6 +141,7 @@ void ScActionColorChanger::Update( const ScChangeAction& rAction )
}
ScOutputData::ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
+ ScViewData* pViewData,
ScTableInfo& rTabInfo, ScDocument* pNewDoc,
SCTAB nNewTab, long nNewScrX, long nNewScrY,
SCCOL nNewX1, SCROW nNewY1, SCCOL nNewX2, SCROW nNewY2,
@@ -149,6 +150,7 @@ ScOutputData::ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
mpDev( pNewDev ),
mpRefDevice( pNewDev ), // default is output device
pFmtDevice( pNewDev ), // default is output device
+ mpViewData( pViewData ),
mrTabInfo( rTabInfo ),
pRowInfo( rTabInfo.mpRowInfo ),
nArrCount( rTabInfo.mnArrCount ),
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
index 4869702..e78545a 100644
--- a/sc/source/ui/view/printfun.cxx
+++ b/sc/source/ui/view/printfun.cxx
@@ -509,7 +509,7 @@ void ScPrintFunc::DrawToDev( ScDocument* pDoc, OutputDevice* pDev, double /* nPr
long nAddY = (long)( aLines.Top() * nScaleY );
nScrY += ( nAddY ? nAddY : 1 );
- ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, aTabInfo, pDoc, nTab,
+ ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, pViewData, aTabInfo, pDoc, nTab,
nScrX, nScrY, nX1, nY1, nX2, nY2, nScaleX, nScaleY );
aOutputData.SetMetaFileMode(bMetaFile);
aOutputData.SetShowNullValues(bNullVal);
@@ -1344,7 +1344,7 @@ void ScPrintFunc::DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH,
aTabInfo.mpRowInfo[0].pCellInfo[1].nWidth =
aTabInfo.mpRowInfo[1].pCellInfo[1].nWidth = (sal_uInt16) nEffWidth;
- ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, aTabInfo, pBorderDoc.get(), 0,
+ ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, 0, aTabInfo, pBorderDoc.get(), 0,
nScrX+nLeft, nScrY+nTop, 0,0, 0,0, nScaleX, nScaleY );
aOutputData.SetUseStyleColor( bUseStyleColor );
@@ -1559,7 +1559,7 @@ void ScPrintFunc::PrintArea( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2,
if (bEmbed)
pDoc->SetEmbedded(aERange);
- ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, aTabInfo, pDoc, nPrintTab,
+ ScOutputData aOutputData( pDev, OUTTYPE_PRINTER, 0, aTabInfo, pDoc, nPrintTab,
nScrX, nScrY, nX1, nY1, nX2, nY2, nScaleX, nScaleY );
// #114135#
commit ab0ccff829847653f2d745acfc1aa56528dca0b9
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Aug 15 16:06:06 2014 +0200
Make nPrtToScreenFactor and GetOutputFactor fractions.
These are then used for our output MapMode which required
Fractions too.
Change-Id: Icbfd9f808a6efe297096c94dc4043cef88c0ba0b
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 0db4a22e..b42155f 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -1458,7 +1458,8 @@ bool ScDocShell::ConvertFrom( SfxMedium& rMedium )
if ( bRet && (bSetColWidths || bSetRowHeights) )
{ // Adjust column width/row height; base 100% zoom
Fraction aZoom( 1, 1 );
- double nPPTX = ScGlobal::nScreenPPTX * (double) aZoom / GetOutputFactor(); // Factor is printer display ratio
+ double nPPTX = ScGlobal::nScreenPPTX * (double) aZoom /
+ static_cast< double >( GetOutputFactor() ); // Factor is printer display ratio
double nPPTY = ScGlobal::nScreenPPTY * (double) aZoom;
VirtualDevice aVirtDev;
// all sheets (for Excel import)
@@ -2633,7 +2634,7 @@ ScDocShell::ScDocShell( const ScDocShell& rShell ) :
SfxListener(),
aDocument ( SCDOCMODE_DOCUMENT, this ),
aDdeTextFmt(OUString("TEXT")),
- nPrtToScreenFactor( 1.0 ),
+ nPrtToScreenFactor( 1, 1 ),
pImpl ( new DocShell_Impl ),
bHeaderOn ( true ),
bFooterOn ( true ),
@@ -2678,7 +2679,7 @@ ScDocShell::ScDocShell( const sal_uInt64 i_nSfxCreationFlags ) :
SfxObjectShell( i_nSfxCreationFlags ),
aDocument ( SCDOCMODE_DOCUMENT, this ),
aDdeTextFmt(OUString("TEXT")),
- nPrtToScreenFactor( 1.0 ),
+ nPrtToScreenFactor( 1, 1 ),
pImpl ( new DocShell_Impl ),
bHeaderOn ( true ),
bFooterOn ( true ),
diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx
index 74ed306..f59c068 100644
--- a/sc/source/ui/docshell/docsh3.cxx
+++ b/sc/source/ui/docshell/docsh3.cxx
@@ -338,14 +338,14 @@ void ScDocShell::CalcOutputFactor()
{
if (bIsInplace)
{
- nPrtToScreenFactor = 1.0; // passt sonst nicht zur inaktiven Darstellung
+ nPrtToScreenFactor = Fraction( 1, 1 ); // passt sonst nicht zur inaktiven Darstellung
return;
}
bool bTextWysiwyg = SC_MOD()->GetInputOptions().GetTextWysiwyg();
if (bTextWysiwyg)
{
- nPrtToScreenFactor = 1.0;
+ nPrtToScreenFactor = Fraction( 1, 1 );
return;
}
@@ -376,11 +376,13 @@ void ScDocShell::CalcOutputFactor()
nWindowWidth = (long) ( nWindowWidth / ScGlobal::nScreenPPTX * HMM_PER_TWIPS );
if (nPrinterWidth && nWindowWidth)
- nPrtToScreenFactor = nPrinterWidth / (double) nWindowWidth;
+ {
+ nPrtToScreenFactor = Fraction( nPrinterWidth, nWindowWidth );
+ }
else
{
OSL_FAIL("GetTextSize gibt 0 ??");
- nPrtToScreenFactor = 1.0;
+ nPrtToScreenFactor = Fraction( 1, 1 );
}
}
diff --git a/sc/source/ui/docshell/sizedev.cxx b/sc/source/ui/docshell/sizedev.cxx
index e0ff33c..99524b6 100644
--- a/sc/source/ui/docshell/sizedev.cxx
+++ b/sc/source/ui/docshell/sizedev.cxx
@@ -49,7 +49,7 @@ ScSizeDeviceProvider::ScSizeDeviceProvider( ScDocShell* pDocSh )
nPPTY = aLogic.Y() / 1000.0;
if ( !bTextWysiwyg )
- nPPTX /= pDocSh->GetOutputFactor();
+ nPPTX /= static_cast< double >( pDocSh->GetOutputFactor() );
}
ScSizeDeviceProvider::~ScSizeDeviceProvider()
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index 98f7109..7ea78b6 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -88,7 +88,7 @@ class SC_DLLPUBLIC ScDocShell: public SfxObjectShell, public SfxListener
OUString aDdeTextFmt;
- double nPrtToScreenFactor;
+ Fraction nPrtToScreenFactor;
DocShell_Impl* pImpl;
ScDocFunc* pDocFunc;
@@ -372,7 +372,7 @@ public:
void SetInUndo(bool bSet);
void CalcOutputFactor();
- double GetOutputFactor() const { return nPrtToScreenFactor;}
+ Fraction GetOutputFactor() const { return nPrtToScreenFactor;}
void GetPageOnFromPageStyleSet( const SfxItemSet* pStyleSet,
SCTAB nCurTab,
bool& rbHeader,
diff --git a/sc/source/ui/view/drawvie4.cxx b/sc/source/ui/view/drawvie4.cxx
index c2f7370..2dc2e3b 100644
--- a/sc/source/ui/view/drawvie4.cxx
+++ b/sc/source/ui/view/drawvie4.cxx
@@ -443,7 +443,7 @@ void ScDrawView::CalcNormScale( Fraction& rFractX, Fraction& rFractY ) const
double nPPTY = ScGlobal::nScreenPPTY;
if (pViewData)
- nPPTX /= pViewData->GetDocShell()->GetOutputFactor();
+ nPPTX /= static_cast< double >( pViewData->GetDocShell()->GetOutputFactor() );
SCCOL nEndCol = 0;
SCROW nEndRow = 0;
diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx
index dbd970d..911b0ec 100644
--- a/sc/source/ui/view/preview.cxx
+++ b/sc/source/ui/view/preview.cxx
@@ -345,7 +345,9 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
}
Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom /
+ static_cast< double>( pDocShell->GetOutputFactor() ) ),
+ 10000 );
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
bool bDoPrint = ( pFillLocation == NULL );
@@ -733,7 +735,9 @@ void ScPreview::SetZoom(sal_uInt16 nNewZoom)
// apply new MapMode and call UpdateScrollBars to update aOffset
Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom /
+ static_cast< double >( pDocShell->GetOutputFactor() ) ),
+ 10000 );
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
SetMapMode( aMMMode );
@@ -802,7 +806,8 @@ static Size lcl_GetDocPageSize( ScDocument* pDoc, SCTAB nTab )
sal_uInt16 ScPreview::GetOptimalZoom(bool bWidthOnly)
{
- double nWinScaleX = ScGlobal::nScreenPPTX / pDocShell->GetOutputFactor();
+ double nWinScaleX = ScGlobal::nScreenPPTX /
+ static_cast< double >( pDocShell->GetOutputFactor() );
double nWinScaleY = ScGlobal::nScreenPPTY;
Size aWinSize = GetOutputSizePixel();
@@ -962,7 +967,9 @@ void ScPreview::DataChanged( const DataChangedEvent& rDCEvt )
void ScPreview::MouseButtonDown( const MouseEvent& rMEvt )
{
Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom /
+ static_cast< double >( pDocShell->GetOutputFactor() ) ),
+ 10000 );
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
aButtonDownChangePoint = PixelToLogic( rMEvt.GetPosPixel(),aMMMode );
@@ -1045,7 +1052,9 @@ void ScPreview::MouseButtonDown( const MouseEvent& rMEvt )
void ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
{
Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom /
+ static_cast< double >( pDocShell->GetOutputFactor() ) ),
+ 10000 );
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
aButtonUpPt = PixelToLogic( rMEvt.GetPosPixel(),aMMMode );
@@ -1295,7 +1304,9 @@ void ScPreview::MouseButtonUp( const MouseEvent& rMEvt )
void ScPreview::MouseMove( const MouseEvent& rMEvt )
{
Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom /
+ static_cast< double >( pDocShell->GetOutputFactor() ) ),
+ 10000 );
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
Point aMouseMovePoint = PixelToLogic( rMEvt.GetPosPixel(), aMMMode );
@@ -1541,7 +1552,9 @@ void ScPreview::SwitchView()
void ScPreview::DragMove( long nDragMovePos, sal_uInt16 nFlags )
{
Fraction aPreviewZoom( nZoom, 100 );
- Fraction aHorPrevZoom( (long)( 100 * nZoom / pDocShell->GetOutputFactor() ), 10000 );
+ Fraction aHorPrevZoom( (long)( 100 * nZoom /
+ static_cast< double >( pDocShell->GetOutputFactor() ) ),
+ 10000 );
MapMode aMMMode( MAP_100TH_MM, Point(), aHorPrevZoom, aPreviewZoom );
SetMapMode( aMMMode );
long nPos = nDragMovePos;
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index c79d356..01f7c2a 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -1238,7 +1238,8 @@ sal_uInt16 ScTabView::CalcZoom( SvxZoomType eType, sal_uInt16 nOldZoom )
aWinSize.Height() += GetGridHeight( SC_SPLIT_TOP );
ScDocShell* pDocSh = aViewData.GetDocShell();
- double nPPTX = ScGlobal::nScreenPPTX / pDocSh->GetOutputFactor();
+ double nPPTX = ScGlobal::nScreenPPTX /
+ static_cast< double >( pDocSh->GetOutputFactor() );
double nPPTY = ScGlobal::nScreenPPTY;
sal_uInt16 nMin = MINZOOM;
@@ -1331,7 +1332,8 @@ sal_uInt16 ScTabView::CalcZoom( SvxZoomType eType, sal_uInt16 nOldZoom )
aWinSize.Height() = nOtherHeight;
}
- double nPPTX = ScGlobal::nScreenPPTX / aViewData.GetDocShell()->GetOutputFactor();
+ double nPPTX = ScGlobal::nScreenPPTX /
+ static_cast< double >( aViewData.GetDocShell()->GetOutputFactor() );
double nPPTY = ScGlobal::nScreenPPTY;
long nZoomX = (long) ( aWinSize.Width() * 100 /
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index da88b3b..d7c25b2 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2404,7 +2404,8 @@ void ScViewData::WriteExtOptions( ScExtDocOptions& rDocOpt ) const
rSplitPos = Point( bHSplit ? pViewTab->nHSplitPos : 0, bVSplit ? pViewTab->nVSplitPos : 0 );
rSplitPos = Application::GetDefaultDevice()->PixelToLogic( rSplitPos, MapMode( MAP_TWIP ) );
if( pDocShell )
- rSplitPos.X() = (long)((double)rSplitPos.X() / pDocShell->GetOutputFactor());
+ rSplitPos.X() = (long)((double)rSplitPos.X() /
+ static_cast< double >( pDocShell->GetOutputFactor()) );
}
else if( bFrozen )
{
@@ -2534,7 +2535,7 @@ void ScViewData::ReadExtOptions( const ScExtDocOptions& rDocOpt )
// effectively results in the nFactor = 1.0 regardless of the Option setting.
if( pDocShell && SC_MOD()->GetInputOptions().GetTextWysiwyg())
{
- double nFactor = pDocShell->GetOutputFactor();
+ double nFactor = static_cast< double >( pDocShell->GetOutputFactor() );
aPixel.X() = (long)( aPixel.X() * nFactor + 0.5 );
}
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index c3782e4..179cc1c 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -2308,7 +2308,9 @@ void ScViewFunc::ModifyCellSize( ScDirection eDir, bool bOptimal )
nMargin = sal::static_int_cast<sal_uInt16>(
nMargin + ((const SfxUInt16Item&)pPattern->GetItem(ATTR_INDENT)).GetValue() );
- nWidth = (sal_uInt16)(nEdit * pDocSh->GetOutputFactor() / HMM_PER_TWIPS)
+ nWidth = (sal_uInt16)( nEdit *
+ static_cast< double>( pDocSh->GetOutputFactor() ) /
+ HMM_PER_TWIPS )
+ nMargin + STD_EXTRA_WIDTH;
}
}
commit 6a7051c30b57ba86f8847587f7f74cc93307288b
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Aug 15 09:54:58 2014 +0200
ScViewData::GetActiveWin can be const.
We need to reuse this in other const methods, so lets make it const
too.
Change-Id: I6d96fa2370081d515f8629998d8a1e218bec643a
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index fff44d9..683e985 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -241,7 +241,7 @@ public:
const ScMarkData& GetMarkData() const;
vcl::Window* GetDialogParent(); // forwarded from tabvwsh
- ScGridWindow* GetActiveWin(); // from View
+ ScGridWindow* GetActiveWin() const; // from View
ScDrawView* GetScDrawView(); // from View
bool IsMinimized(); // from View
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 2702966..da88b3b 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2112,7 +2112,7 @@ vcl::Window* ScViewData::GetDialogParent()
return pViewShell->GetDialogParent();
}
-ScGridWindow* ScViewData::GetActiveWin()
+ScGridWindow* ScViewData::GetActiveWin() const
{
OSL_ENSURE( pView, "GetActiveWin() ohne View" );
return pView->GetActiveWin();
commit 79b1d94c66dd5166276e88a7625c6ee5ea03cfdf
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Aug 15 09:53:56 2014 +0200
Allow overriding limits for SetZoom for Tiled Rendering.
Change-Id: Ic656012921408ce5c8dc691933a71a9e0ac78e5d
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index e187ec0..fff44d9 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -305,8 +305,13 @@ public:
void SetZoomType( SvxZoomType eNew, bool bAll );
void SetZoomType( SvxZoomType eNew, std::vector< SCTAB >& tabs );
- void SetZoom( const Fraction& rNewX, const Fraction& rNewY, std::vector< SCTAB >& tabs );
- void SetZoom( const Fraction& rNewX, const Fraction& rNewY, bool bAll );
+ // bIgnoreLimits in this context disables checking that our zoom is within the
+ // range of 20%-400% -- i.e. should be used for tiled rendering where such checks
+ // should be done by the client.
+ void SetZoom( const Fraction& rNewX, const Fraction& rNewY,
+ std::vector< SCTAB >& tabs, const bool bIgnoreLimits = false );
+ void SetZoom( const Fraction& rNewX, const Fraction& rNewY,
+ bool bAll, const bool bIgnoreLimits = false );
void RefreshZoom();
void SetSelCtrlMouseClick( bool bTmp ) { bSelCtrlMouseClick = bTmp; }
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 0940d61..2702966 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -616,25 +616,34 @@ void ScViewData::SetZoomType( SvxZoomType eNew, bool bAll )
SetZoomType( eNew, vTabs );
}
-void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY, std::vector< SCTAB >& tabs )
+void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY,
+ std::vector< SCTAB >& tabs,
+ const bool bIgnoreLimits )
{
bool bAll = ( tabs.empty() );
if ( !bAll ) // create associated table data
CreateTabData( tabs );
- Fraction aFrac20( 1,5 );
- Fraction aFrac400( 4,1 );
Fraction aValidX = rNewX;
- if (aValidX<aFrac20)
- aValidX = aFrac20;
- if (aValidX>aFrac400)
- aValidX = aFrac400;
-
Fraction aValidY = rNewY;
- if (aValidY<aFrac20)
- aValidY = aFrac20;
- if (aValidY>aFrac400)
- aValidY = aFrac400;
+
+ // We probably don't want these limits for tiled rendering, hence
+ // we make them optional.
+ if ( !bIgnoreLimits )
+ {
+ const Fraction aFrac20( 1, 5 );
+ const Fraction aFrac400( 4, 1 );
+
+ if ( aValidX < aFrac20 )
+ aValidX = aFrac20;
+ else if ( aValidX > aFrac400 )
+ aValidX = aFrac400;
+
+ if ( aValidY < aFrac20 )
+ aValidY = aFrac20;
+ else if ( aValidY > aFrac400 )
+ aValidY = aFrac400;
+ }
if ( bAll )
{
@@ -690,7 +699,8 @@ void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY, std::vec
RefreshZoom();
}
-void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY, bool bAll )
+void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY,
+ bool bAll, const bool bIgnoreLimits )
{
std::vector< SCTAB > vTabs;
if ( !bAll ) // get selected tabs
@@ -698,7 +708,7 @@ void ScViewData::SetZoom( const Fraction& rNewX, const Fraction& rNewY, bool bAl
ScMarkData::iterator itr = mpMarkData->begin(), itrEnd = mpMarkData->end();
vTabs.insert(vTabs.begin(), itr, itrEnd);
}
- SetZoom( rNewX, rNewY, vTabs );
+ SetZoom( rNewX, rNewY, vTabs, bIgnoreLimits );
}
void ScViewData::SetShowGrid( bool bShow )
commit 86e7595b39914fd5b0809bee4d9eccac6e2ae594
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Fri Aug 15 09:52:58 2014 +0200
aScrSize should be mutable.
Change-Id: I7376ea17aa4f66c9d9085757b84fb69dd0ad71cb
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 515bc67..e187ec0 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -170,7 +170,7 @@ private:
Size aScenButSize;
- Size aScrSize;
+ mutable Size aScrSize;
MapMode aLogicMode; // skalierter 1/100mm-MapMode
SvxZoomType eDefZoomType; // default zoom and type for missing TabData
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 688813c..0940d61 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -1518,8 +1518,8 @@ Point ScViewData::GetScrPos( SCCOL nWhereX, SCROW nWhereY, ScSplitPos eWhich,
if (pView)
{
- ((ScViewData*)this)->aScrSize.Width() = pView->GetGridWidth(eWhichX);
- ((ScViewData*)this)->aScrSize.Height() = pView->GetGridHeight(eWhichY);
+ aScrSize.Width() = pView->GetGridWidth(eWhichX);
+ aScrSize.Height() = pView->GetGridHeight(eWhichY);
}
sal_uInt16 nTSize;
@@ -1612,7 +1612,7 @@ SCCOL ScViewData::CellsAtX( SCsCOL nPosX, SCsCOL nDir, ScHSplitPos eWhichX, sal_
OSL_ENSURE( nDir==1 || nDir==-1, "falscher CellsAt Aufruf" );
if (pView)
- ((ScViewData*)this)->aScrSize.Width() = pView->GetGridWidth(eWhichX);
+ aScrSize.Width() = pView->GetGridWidth(eWhichX);
SCsCOL nX;
sal_uInt16 nScrPosX = 0;
@@ -1654,7 +1654,7 @@ SCROW ScViewData::CellsAtY( SCsROW nPosY, SCsROW nDir, ScVSplitPos eWhichY, sal_
OSL_ENSURE( nDir==1 || nDir==-1, "falscher CellsAt Aufruf" );
if (pView)
- ((ScViewData*)this)->aScrSize.Height() = pView->GetGridHeight(eWhichY);
+ aScrSize.Height() = pView->GetGridHeight(eWhichY);
if (nScrSizeY == SC_SIZE_NONE) nScrSizeY = (sal_uInt16) aScrSize.Height();
commit 05ff705e3a9a3b2f4d257efc4773951a07b74abc
Author: Andrzej Hunt <andrzej at ahunt.org>
Date: Tue Sep 9 06:12:44 2014 +0200
Fix PaintTile scaling preparation.
Change-Id: I0a725fd5c030f3c089c2bbd25947088c321eb2d4
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index a890abc..022f6e3 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -940,21 +940,25 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
int nTilePosX, int nTilePosY,
long nTileWidth, long nTileHeight )
{
+ // Scaling. Must convert from pixels to TWIPs. We know
+ // that VirtualDevices use a DPI of 96. We might as well do this
+ // calculation now, rather than after another dimension conversion,
+ // to minimise errors.
+ Fraction scaleX = Fraction( nOutputWidth, 96 ) * Fraction(1440L) /
+ Fraction( nTileWidth);
+ Fraction scaleY = Fraction( nOutputHeight, 96 ) * Fraction(1440L) /
+ Fraction( nTileHeight);
+
rDevice.SetOutputSizePixel( Size( nOutputWidth, nOutputHeight ) );
- // setup the output device to draw the tile
MapMode aMapMode( rDevice.GetMapMode() );
aMapMode.SetMapUnit( MAP_TWIP );
aMapMode.SetOrigin( Point( -nTilePosX, -nTilePosY ) );
- // Scaling. Must convert from pixels to twips. We know
- // that VirtualDevises use a DPI of 96.
- Fraction scaleX = Fraction( nOutputWidth, 96 ) * Fraction(1440L) /
- Fraction( nTileWidth);
- Fraction scaleY = Fraction( nOutputHeight, 96 ) * Fraction(1440L) /
- Fraction( nTileHeight);
aMapMode.SetScaleX( scaleX );
aMapMode.SetScaleY( scaleY );
- rDevice.SetMapMode( aMapMode );
+
+ maPaintMapMode = aMapMode;
+// rDevice.SetMapMode( aMapMode );
ScTabViewShell* pTabViewSh = pViewData->GetViewShell();
SdrView* pDrawView = pTabViewSh->GetScDrawView();
commit 678434a7426b27e068691cf5ae2f82374ddb0a59
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Thu Jun 26 17:06:58 2014 +0100
Ensure we actually render all cells in the selected area.
Only cells within maVisibleRange are rendered, even if we request
a larger area (and maVisibleRange is otherwise not updated for tiled
rendering). Hence we should explicitly set it here.
Change-Id: I399be9df1f266a2b3d32a95483960b21f561c6b3
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 7a8e10a..a890abc 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -377,6 +377,10 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev )
ScViewData::AddPixelsWhile( nScrY, aPixRect.Bottom(), nY2, MAXROW, nPPTY, pDoc, nTab);
}
+ // We specifically need to set the visible range here -- by default it is
+ // set in UpdateVisibleRange which however uses the viewdata, which is
+ // completely irrelevant for tiled rendering.
+ maVisibleRange.set( nX1, nY1, nX2, nY2 );
Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS, pOutDev ); // nicht weiterzeichnen
bIsInPaint = false;
}
commit 0684631240cfeba65c78657cbac946feb92eaf35
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Thu Jun 26 14:30:08 2014 +0100
Take into account drawing layer for data area size.
The drawing layer could potentially have items that are outwith
the data area, but we probably want to have them included for
tiled rendering.
Change-Id: I958c4fa29491cdb0fd80392dfcfa033306f2b76c
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index c9a0cfee7..7a8e10a 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -29,6 +29,7 @@
#include <sfx2/printer.hxx>
#include <vcl/settings.hxx>
+#include <svx/svdpage.hxx>
#include <svx/svdview.hxx>
#include "tabvwsh.hxx"
@@ -388,17 +389,32 @@ Size ScGridWindow::GetDataAreaSize()
SCTAB nTab = pViewData->GetTabNo();
+ // Actual data area
pDoc->ShrinkToDataArea( nTab,
nStartCol, nStartRow, nEndCol, nEndRow );
+ // Drawing layer area -- is completely independent of the data area.
+ ScTabViewShell* pTabViewShell = pViewData->GetViewShell();
+ SdrView* pDrawView = pTabViewShell->GetSdrView();
+ SdrPageView* pPageView = pDrawView->GetSdrPageView();
+ SdrPage* pPage = pPageView->GetPage();
+ Rectangle aDrawDataArea = pPage->GetAllObjBoundRect();
+ // Draw layer works in 100th mm, whereas we're working with TWIPs.
+ aDrawDataArea.SetPos( aDrawDataArea.TopLeft() * 1440 / 2540 );
+ aDrawDataArea.SetSize( Size( aDrawDataArea.GetSize().Width() * 1440 / 2540,
+ aDrawDataArea.GetSize().Height() * 1440 / 2540 ) );
+
+ // We specifically keep iterating until we have covered both the
+ // data area AND the drawing layer area. We also make sure that
+ // we return an area corresponding to a whole number of cells.
long nX = 0;
- for ( SCCOL i = 0; i <= nEndCol; i++ )
+ for ( SCCOL i = 0; i <= nEndCol || nX < aDrawDataArea.Right(); i++ )
{
nX += pDoc->GetColWidth( i, nTab );
}
long nY = 0;
- for ( SCROW i = 0; i <= nEndRow; i++ )
+ for ( SCROW i = 0; i <= nEndRow || nY < aDrawDataArea.Bottom(); i++ )
{
nY += pDoc->GetRowHeight( i, nTab );
}
commit db30bfa2249b951f522c50935eda12a1f7ecd4bd
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Jun 18 09:33:16 2014 +0100
Implement data area size retrieval.
Cell dimensions appear to be in TWIPs (but the drawing layer is in 100th mm).
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index d099a10..fb42fff 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -321,10 +321,19 @@ public:
virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE;
virtual void Tracking( const TrackingEvent& rTEvt ) SAL_OVERRIDE;
+ // Paint a tile -- all tile dimensions are in TWIPS.
+ // It is possible to request an infinitely large area, i.e. you are not
+ // restricted to the area in GetDataAreaSize.
void PaintTile( VirtualDevice& rDevice,
int nOutputWidth, int nOutputHeight,
int nTilePosX, int nTilePosY,
long nTileWidth, long nTileHeight );
+ // Get the area in the document that contains renderable content. This
+ // is primarily a guide as to the area that should be rendered for read
+ // only documents, however for writeable documents you probably want to
+ // dynamically grab more cells in case the user wants to write to them etc.
+ // This returns a size in TWIPS, suitable for use in PaintTile.
+ Size GetDataAreaSize();
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 0bf4d85..8687ef1 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -481,10 +481,15 @@ int ScModelObj::getPart()
Size ScModelObj::getDocumentSize()
{
- // TODO: not sure what we want to do here, maybe just return the size for a certain
- // default minimum number of cells, e.g. 100x100 and more if more cells have
- // content?
- return Size( 3200, 3200 );
+ // There seems to be no clear way of getting the grid window for this
+ // particular document, hence we need to hope we get the right window.
+ ScViewData* pViewData = ScDocShell::GetViewData();
+ ScGridWindow* pGridWindow = pViewData->GetActiveWin();
+
+ // We simply return the data area -- it is however possible to request
+ // tiles to be rendered outside this area, ie this is the minimum that
+ // the client should allow the user to see.
+ return pGridWindow->GetDataAreaSize();
}
uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType )
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 94f2c51..c9a0cfee7 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -380,6 +380,36 @@ void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev )
bIsInPaint = false;
}
+Size ScGridWindow::GetDataAreaSize()
+{
+ ScDocument* pDoc = pViewData->GetDocument();
+ SCCOL nStartCol = 0, nEndCol = MAXCOL;
+ SCROW nStartRow = 0, nEndRow = MAXROW;
+
+ SCTAB nTab = pViewData->GetTabNo();
+
+ pDoc->ShrinkToDataArea( nTab,
+ nStartCol, nStartRow, nEndCol, nEndRow );
+
+ long nX = 0;
+ for ( SCCOL i = 0; i <= nEndCol; i++ )
+ {
+ nX += pDoc->GetColWidth( i, nTab );
+ }
+
+ long nY = 0;
+ for ( SCROW i = 0; i <= nEndRow; i++ )
+ {
+ nY += pDoc->GetRowHeight( i, nTab );
+ }
+
+ // TODO: this ignores any images / etc., which could be outside
+ // the data area.
+
+ // This doesn't include the final (bottom & right) borders...
+ return Size( nX, nY );
+}
+
// Draw ----------------------------------------------------------------
void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMode eMode,
OutputDevice* pOutDev )
@@ -482,6 +512,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
Fraction aZoomX = pViewData->GetZoomX();
Fraction aZoomY = pViewData->GetZoomY();
+
ScOutputData aOutputData( pOutDev, OUTTYPE_WINDOW, aTabInfo, &rDoc, nTab,
nScrX, nScrY, nX1, nY1, nX2, nY2, nPPTX, nPPTY,
&aZoomX, &aZoomY );
commit 1916b4112f04fd009ef57d7a8ad00adbcbd1efb1
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Wed Jun 18 08:28:04 2014 +0100
Allow overriding of device for Paint, and use that for Tiles.
Paint handles figuring out which cells are within the visible area
for us etc.
Gridwin being a Window which paints to itself is a bit of a pain,
since we now need to be able to reroute painting calls to alternative
output devices, however these changes seem to be sufficient to at least
get the cells in the desired tile rendered.
Change-Id: I7bd1434c97acc6e9ef6e1e63cbcf039b987c88e4
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 696232f..d099a10 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -291,6 +291,7 @@ protected:
virtual void Resize( const Size& rSize );
virtual void PrePaint() SAL_OVERRIDE;
virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
+ virtual void Paint( const Rectangle& rRect, OutputDevice* pOutDev);
virtual void KeyInput(const KeyEvent& rKEvt) SAL_OVERRIDE;
virtual void GetFocus() SAL_OVERRIDE;
virtual void LoseFocus() SAL_OVERRIDE;
@@ -360,7 +361,7 @@ public:
using Window::Draw;
void Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2,
ScUpdateMode eMode = SC_UPDATE_ALL,
- OutputDevice* pOutDev = 0 );
+ OutputDevice* pOutDev = 0);
void CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress);
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 4b586d7..94f2c51 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -301,6 +301,11 @@ void ScGridWindow::PrePaint()
void ScGridWindow::Paint( const Rectangle& rRect )
{
+ Paint( rRect, this );
+}
+
+void ScGridWindow::Paint( const Rectangle& rRect, OutputDevice* pOutDev )
+{
ScDocument* pDoc = pViewData->GetDocument();
if ( pDoc->IsInInterpreter() )
{
@@ -330,7 +335,7 @@ void ScGridWindow::Paint( const Rectangle& rRect )
bIsInPaint = true;
- Rectangle aPixRect = LogicToPixel( rRect );
+ Rectangle aPixRect = pOutDev->LogicToPixel( rRect );
SCCOL nX1 = pViewData->GetPosX(eHWhich);
SCROW nY1 = pViewData->GetPosY(eVWhich);
@@ -371,8 +376,7 @@ void ScGridWindow::Paint( const Rectangle& rRect )
ScViewData::AddPixelsWhile( nScrY, aPixRect.Bottom(), nY2, MAXROW, nPPTY, pDoc, nTab);
}
- Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS ); // nicht weiterzeichnen
-
+ Draw( nX1,nY1,nX2,nY2, SC_UPDATE_MARKS, pOutDev ); // nicht weiterzeichnen
bIsInPaint = false;
}
@@ -590,7 +594,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
}
// get logic positions
- aDrawingRectLogic = PixelToLogic(aDrawingRectPixel, aDrawMode);
+ aDrawingRectLogic = pOutDev->PixelToLogic(aDrawingRectPixel, aDrawMode);
}
// device for document content, used by overlay manager
@@ -848,7 +852,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
DrawRect( Rectangle( aStart,aEnd ) );
SetMapMode(pViewData->GetLogicMode());
- pEditView->Paint( PixelToLogic( Rectangle( Point( nScrX, nScrY ),
+ pEditView->Paint( pOutDev->PixelToLogic( Rectangle( Point( nScrX, nScrY ),
Size( aOutputData.GetScrW(), aOutputData.GetScrH() ) ) ) );
SetMapMode(MAP_PIXEL);
}
@@ -908,7 +912,9 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
pDrawView->AddWindowToPaintView( &rDevice );
}
- Draw( 0, 0, 3, 3, SC_UPDATE_ALL, &rDevice );
+ Paint( Rectangle( Point(nTilePosX, nTilePosY),
+ rDevice.PixelToLogic(Size(nOutputWidth, nOutputHeight))),
+ &rDevice );
if ( pDrawView )
{
commit 258ed8a3a4690feff5ed387a3e8b4d2ee4497814
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Mon Jun 16 16:19:56 2014 +0100
Calc: Add tiled rendering device to the paint view.
This prevents the previous warnings of
SdrPageView::DrawLayer: Creating temporary SdrPageWindow (ObjectContact), \
this should never be needed
Change-Id: I76cb7c9ed4d45bfcbd297f697314309b4e036f80
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 3a4d945..4b586d7 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -34,6 +34,7 @@
#include "gridwin.hxx"
#include "viewdata.hxx"
+#include "drawview.hxx"
#include "output.hxx"
#include "document.hxx"
#include "attrib.hxx"
@@ -900,7 +901,19 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
aMapMode.SetScaleY( scaleY );
rDevice.SetMapMode( aMapMode );
+ ScTabViewShell* pTabViewSh = pViewData->GetViewShell();
+ SdrView* pDrawView = pTabViewSh->GetScDrawView();
+ if ( pDrawView )
+ {
+ pDrawView->AddWindowToPaintView( &rDevice );
+ }
+
Draw( 0, 0, 3, 3, SC_UPDATE_ALL, &rDevice );
+
+ if ( pDrawView )
+ {
+ pDrawView->DeleteWindowFromPaintView( &rDevice );
+ }
}
void ScGridWindow::CheckNeedsRepaint()
commit f8ca48f943b0195f5a80f71607b4b0f3d2e26e5f
Author: Andrzej Hunt <andrzej.hunt at collabora.com>
Date: Mon Jun 16 15:00:02 2014 +0100
Render tiles from calc.
Currently the document size and number of cells to be rendered
is hardcoded, this will need some more work to select the correct
cells for a given tile (i.e. cells from location). Also, there
isn't really a "size" for a calc sheet, so presumably we'd need
to instead return the area containing cells that aren't empty,
whilst still being able to render larger tiles? (And in any case
the client will need to be aware of this and provide an appropriate
interface, i.e. the current LO UI simply extends the sheet ad-infinitum.)
We also currently get some warnings most likely related to the way
we push our OutputDevice into the rendering methods:
SdrPageView::DrawLayer: Creating temporary SdrPageWindow (ObjectContact), \
this should never be needed
Change-Id: Ia9d64d7de6c22d5b401350f88497a7ec106f1973
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 05f9994..696232f 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -359,7 +359,8 @@ public:
using Window::Draw;
void Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2,
- ScUpdateMode eMode = SC_UPDATE_ALL );
+ ScUpdateMode eMode = SC_UPDATE_ALL,
+ OutputDevice* pOutDev = 0 );
void CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress);
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index c4c5b0a..0bf4d85 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -484,7 +484,7 @@ Size ScModelObj::getDocumentSize()
// TODO: not sure what we want to do here, maybe just return the size for a certain
// default minimum number of cells, e.g. 100x100 and more if more cells have
// content?
- return Size();
+ return Size( 3200, 3200 );
}
uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType )
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index cbdd99d..3a4d945 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -376,9 +376,14 @@ void ScGridWindow::Paint( const Rectangle& rRect )
}
// Draw ----------------------------------------------------------------
-
-void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMode eMode )
+void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMode eMode,
+ OutputDevice* pOutDev )
{
+ if ( !pOutDev )
+ {
+ pOutDev = this;
+ }
+
ScModule* pScMod = SC_MOD();
bool bTextWysiwyg = pScMod->GetInputOptions().GetTextWysiwyg();
@@ -472,7 +477,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
Fraction aZoomX = pViewData->GetZoomX();
Fraction aZoomY = pViewData->GetZoomY();
- ScOutputData aOutputData( this, OUTTYPE_WINDOW, aTabInfo, &rDoc, nTab,
+ ScOutputData aOutputData( pOutDev, OUTTYPE_WINDOW, aTabInfo, &rDoc, nTab,
nScrX, nScrY, nX1, nY1, nX2, nY2, nPPTX, nPPTY,
&aZoomX, &aZoomY );
@@ -587,7 +592,9 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
aDrawingRectLogic = PixelToLogic(aDrawingRectPixel, aDrawMode);
}
- OutputDevice* pContentDev = this; // device for document content, used by overlay manager
+ // device for document content, used by overlay manager
+ // We usually paint to ourselves, but allow other devices for tiled rendering.
+ OutputDevice* pContentDev = pOutDev;
SdrPaintWindow* pTargetPaintWindow = 0; // #i74769# work with SdrPaintWindow directly
{
@@ -604,7 +611,7 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
{
// #i74769# Use new BeginDrawLayers() interface
Region aDrawingRegion(aDrawingRectLogic);
- pTargetPaintWindow = pDrawView->BeginDrawLayers(this, aDrawingRegion);
+ pTargetPaintWindow = pDrawView->BeginDrawLayers(pOutDev, aDrawingRegion);
OSL_ENSURE(pTargetPaintWindow, "BeginDrawLayers: Got no SdrPaintWindow (!)");
// #i74769# get target device from SdrPaintWindow, this may be the prerender
@@ -877,13 +884,23 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
int nTilePosX, int nTilePosY,
long nTileWidth, long nTileHeight )
{
- (void) rDevice;
- (void) nOutputWidth;
- (void) nOutputHeight;
- (void) nTilePosX;
- (void) nTilePosY;
- (void) nTileWidth;
- (void) nTileHeight;
+ rDevice.SetOutputSizePixel( Size( nOutputWidth, nOutputHeight ) );
+ // setup the output device to draw the tile
+ MapMode aMapMode( rDevice.GetMapMode() );
+ aMapMode.SetMapUnit( MAP_TWIP );
+ aMapMode.SetOrigin( Point( -nTilePosX, -nTilePosY ) );
+
+ // Scaling. Must convert from pixels to twips. We know
+ // that VirtualDevises use a DPI of 96.
+ Fraction scaleX = Fraction( nOutputWidth, 96 ) * Fraction(1440L) /
+ Fraction( nTileWidth);
+ Fraction scaleY = Fraction( nOutputHeight, 96 ) * Fraction(1440L) /
+ Fraction( nTileHeight);
+ aMapMode.SetScaleX( scaleX );
+ aMapMode.SetScaleY( scaleY );
+ rDevice.SetMapMode( aMapMode );
+
+ Draw( 0, 0, 3, 3, SC_UPDATE_ALL, &rDevice );
}
void ScGridWindow::CheckNeedsRepaint()
commit 8730974f3da0ce385cac84b81b8ae3169001399c
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Sun Sep 28 22:33:50 2014 +1000
vcl: cleanup headers - remove comments, tabify
Change-Id: I718832960abe07450bc9fdda15297cb5e56f84e4
Reviewed-on: https://gerrit.libreoffice.org/11674
Reviewed-by: Chris Sherlock <chris.sherlock79 at gmail.com>
Tested-by: Chris Sherlock <chris.sherlock79 at gmail.com>
diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx
index d877e6d..2b31b1b 100644
--- a/include/vcl/abstdlg.hxx
+++ b/include/vcl/abstdlg.hxx
@@ -29,50 +29,52 @@ class Link;
class VCL_DLLPUBLIC VclAbstractDialog
{
public:
- virtual short Execute() = 0;
- virtual ~VclAbstractDialog();
+ virtual ~VclAbstractDialog();
+
+ virtual short Execute() = 0;
};
class VCL_DLLPUBLIC VclAbstractDialog2
{
public:
- virtual void StartExecuteModal( const Link& rEndDialogHdl ) = 0;
- virtual long GetResult() = 0;
- virtual ~VclAbstractDialog2();
+ virtual ~VclAbstractDialog2();
+
+ virtual void StartExecuteModal( const Link& rEndDialogHdl ) = 0;
+ virtual long GetResult() = 0;
};
class VCL_DLLPUBLIC VclAbstractTerminatedDialog : public VclAbstractDialog
{
public:
- virtual void EndDialog(long nResult =0) = 0;
+ virtual void EndDialog(long nResult =0) = 0;
};
class VCL_DLLPUBLIC VclAbstractRefreshableDialog : public VclAbstractDialog
{
public:
- virtual void Update() = 0;
- virtual void Sync() = 0;
+ virtual void Update() = 0;
+ virtual void Sync() = 0;
};
class VCL_DLLPUBLIC AbstractPasswordToOpenModifyDialog : public VclAbstractDialog
{
public:
- virtual OUString GetPasswordToOpen() const = 0;
- virtual OUString GetPasswordToModify() const = 0;
- virtual bool IsRecommendToOpenReadonly() const = 0;
+ virtual OUString GetPasswordToOpen() const = 0;
+ virtual OUString GetPasswordToModify() const = 0;
+ virtual bool IsRecommendToOpenReadonly() const = 0;
};
class VCL_DLLPUBLIC VclAbstractDialogFactory
{
public:
- virtual ~VclAbstractDialogFactory(); // needed for export of vtable
- static VclAbstractDialogFactory* Create();
+ virtual ~VclAbstractDialogFactory(); // needed for export of vtable
+ static VclAbstractDialogFactory* Create();
// nDialogId was previously a ResId without ResMgr; the ResourceId is now
// an implementation detail of the factory
- virtual VclAbstractDialog* CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) = 0;
+ virtual VclAbstractDialog* CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) = 0;
// creates instance of PasswordToOpenModifyDialog from cui
- virtual AbstractPasswordToOpenModifyDialog * CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMinPasswdLen, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) = 0;
+ virtual AbstractPasswordToOpenModifyDialog* CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMinPasswdLen, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) = 0;
};
#endif
diff --git a/include/vcl/accel.hxx b/include/vcl/accel.hxx
index 2e6e26d..5088dc5 100644
--- a/include/vcl/accel.hxx
+++ b/include/vcl/accel.hxx
@@ -34,65 +34,69 @@ class VCL_DLLPUBLIC Accelerator : public Resource
friend class ImplAccelManager;
private:
- ImplAccelData* mpData;
- OUString maHelpStr;
- Link maActivateHdl;
- Link maDeactivateHdl;
- Link maSelectHdl;
+ ImplAccelData* mpData;
+ OUString maHelpStr;
+ Link maActivateHdl;
+ Link maDeactivateHdl;
+ Link maSelectHdl;
// Will be set by AcceleratorManager
- vcl::KeyCode maCurKeyCode;
- sal_uInt16 mnCurId;
- sal_uInt16 mnCurRepeat;
- bool mbIsCancel;
- bool* mpDel;
-
- SAL_DLLPRIVATE void ImplInit();
- SAL_DLLPRIVATE void ImplCopyData( ImplAccelData& rAccelData );
- SAL_DLLPRIVATE void ImplDeleteData();
- SAL_DLLPRIVATE void ImplInsertAccel( sal_uInt16 nItemId, const vcl::KeyCode& rKeyCode,
- bool bEnable, Accelerator* pAutoAccel );
-
- SAL_DLLPRIVATE ImplAccelEntry* ImplGetAccelData( const vcl::KeyCode& rKeyCode ) const;
+ vcl::KeyCode maCurKeyCode;
+ sal_uInt16 mnCurId;
+ sal_uInt16 mnCurRepeat;
+ bool mbIsCancel;
+ bool* mpDel;
+
+ SAL_DLLPRIVATE void ImplInit();
+ SAL_DLLPRIVATE void ImplCopyData( ImplAccelData& rAccelData );
+ SAL_DLLPRIVATE void ImplDeleteData();
+ SAL_DLLPRIVATE void ImplInsertAccel(
+ sal_uInt16 nItemId,
+ const vcl::KeyCode& rKeyCode,
+ bool bEnable,
+ Accelerator* pAutoAccel );
+
+ SAL_DLLPRIVATE ImplAccelEntry*
+ ImplGetAccelData( const vcl::KeyCode& rKeyCode ) const;
protected:
- SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
+ SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId );
public:
- Accelerator();
- Accelerator( const Accelerator& rAccel );
- Accelerator( const ResId& rResId );
- virtual ~Accelerator();
+ Accelerator();
+ Accelerator( const Accelerator& rAccel );
+ Accelerator( const ResId& rResId );
+ virtual ~Accelerator();
- virtual void Activate();
- virtual void Deactivate();
- virtual void Select();
+ virtual void Activate();
+ virtual void Deactivate();
+ virtual void Select();
- void InsertItem( sal_uInt16 nItemId, const vcl::KeyCode& rKeyCode );
- void InsertItem( const ResId& rResId );
+ void InsertItem( sal_uInt16 nItemId, const vcl::KeyCode& rKeyCode );
+ void InsertItem( const ResId& rResId );
- sal_uInt16 GetCurItemId() const { return mnCurId; }
- const vcl::KeyCode& GetCurKeyCode() const { return maCurKeyCode; }
- sal_uInt16 GetCurRepeat() const { return mnCurRepeat; }
- bool IsCancel() const { return mbIsCancel; }
+ sal_uInt16 GetCurItemId() const { return mnCurId; }
+ const vcl::KeyCode& GetCurKeyCode() const { return maCurKeyCode; }
+ sal_uInt16 GetCurRepeat() const { return mnCurRepeat; }
+ bool IsCancel() const { return mbIsCancel; }
- sal_uInt16 GetItemCount() const;
- sal_uInt16 GetItemId( sal_uInt16 nPos ) const;
- vcl::KeyCode GetKeyCode( sal_uInt16 nItemId ) const;
+ sal_uInt16 GetItemCount() const;
+ sal_uInt16 GetItemId( sal_uInt16 nPos ) const;
+ vcl::KeyCode GetKeyCode( sal_uInt16 nItemId ) const;
- Accelerator* GetAccel( sal_uInt16 nItemId ) const;
+ Accelerator* GetAccel( sal_uInt16 nItemId ) const;
- void SetHelpText( const OUString& rHelpText ) { maHelpStr = rHelpText; }
- const OUString& GetHelpText() const { return maHelpStr; }
+ void SetHelpText( const OUString& rHelpText ) { maHelpStr = rHelpText; }
+ const OUString& GetHelpText() const { return maHelpStr; }
- void SetActivateHdl( const Link& rLink ) { maActivateHdl = rLink; }
- const Link& GetActivateHdl() const { return maActivateHdl; }
- void SetDeactivateHdl( const Link& rLink ) { maDeactivateHdl = rLink; }
- const Link& GetDeactivateHdl() const { return maDeactivateHdl; }
- void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
- const Link& GetSelectHdl() const { return maSelectHdl; }
+ void SetActivateHdl( const Link& rLink ) { maActivateHdl = rLink; }
+ const Link& GetActivateHdl() const { return maActivateHdl; }
+ void SetDeactivateHdl( const Link& rLink ) { maDeactivateHdl = rLink; }
+ const Link& GetDeactivateHdl() const { return maDeactivateHdl; }
+ void SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
+ const Link& GetSelectHdl() const { return maSelectHdl; }
- Accelerator& operator=( const Accelerator& rAccel );
+ Accelerator& operator=( const Accelerator& rAccel );
};
#endif // INCLUDED_VCL_ACCEL_HXX
diff --git a/include/vcl/alpha.hxx b/include/vcl/alpha.hxx
index bd8ce8a..fd84765 100644
--- a/include/vcl/alpha.hxx
+++ b/include/vcl/alpha.hxx
@@ -24,108 +24,60 @@
#include <vcl/bitmap.hxx>
-// - AlphaMask -
-
-
class ImageList;
class BitmapEx;
class VCL_DLLPUBLIC AlphaMask : private Bitmap
{
-private:
- friend class BitmapEx;
- friend class OutputDevice;
- friend bool VCL_DLLPUBLIC ReadDIBBitmapEx(BitmapEx& rTarget, SvStream& rIStm);
-
- SAL_DLLPRIVATE const Bitmap& ImplGetBitmap() const;
- SAL_DLLPRIVATE void ImplSetBitmap( const Bitmap& rBitmap );
-
public:
- AlphaMask();
- AlphaMask( const Bitmap& rBitmap );
- AlphaMask( const AlphaMask& rAlphaMask );
- AlphaMask( const Size& rSizePixel, sal_uInt8* pEraseTransparency = NULL );
- virtual ~AlphaMask();
+ AlphaMask();
+ AlphaMask( const Bitmap& rBitmap );
+ AlphaMask( const AlphaMask& rAlphaMask );
+ AlphaMask( const Size& rSizePixel, sal_uInt8* pEraseTransparency = NULL );
+ virtual ~AlphaMask();
AlphaMask& operator=( const Bitmap& rBitmap );
- AlphaMask& operator=( const AlphaMask& rAlphaMask )
- {
- return static_cast<AlphaMask&>( Bitmap::operator=( rAlphaMask ) );
- }
-
- bool operator!() const
- {
- return Bitmap::operator!();
- }
-
- bool operator==( const AlphaMask& rAlphaMask ) const
- {
- return Bitmap::operator==( rAlphaMask );
- }
-
- bool operator!=( const AlphaMask& rAlphaMask ) const
- {
- return Bitmap::operator!=( rAlphaMask );
- }
-
- const MapMode& GetPrefMapMode() const
- {
- return Bitmap::GetPrefMapMode();
- }
-
- void SetPrefMapMode( const MapMode& rMapMode )
- {
- Bitmap::SetPrefMapMode( rMapMode );
- }
-
- const Size& GetPrefSize() const
- {
- return Bitmap::GetPrefSize();
- }
-
- void SetPrefSize( const Size& rSize )
- {
- Bitmap::SetPrefSize( rSize );
- }
-
- Size GetSizePixel() const
- {
- return Bitmap::GetSizePixel();
- }
-
- sal_uLong GetSizeBytes() const
- {
- return Bitmap::GetSizeBytes();
- }
- sal_uLong GetChecksum() const
- {
- return Bitmap::GetChecksum();
- }
-
- Bitmap GetBitmap() const;
-
- bool Erase( sal_uInt8 cTransparency );
- bool Replace( const Bitmap& rMask, sal_uInt8 rReplaceTransparency );
- bool Replace( sal_uInt8 cSearchTransparency, sal_uInt8 cReplaceTransparency,
- sal_uLong nTol = 0UL );
-
- BitmapReadAccess* AcquireReadAccess()
- {
- return Bitmap::AcquireReadAccess();
- }
-
- BitmapWriteAccess* AcquireWriteAccess()
- {
- return Bitmap::AcquireWriteAccess();
- }
-
- void ReleaseAccess( BitmapReadAccess* pAccess );
+ AlphaMask& operator=( const AlphaMask& rAlphaMask ) { return static_cast<AlphaMask&>( Bitmap::operator=( rAlphaMask ) ); }
+ bool operator!() const { return Bitmap::operator!(); }
+ bool operator==( const AlphaMask& rAlphaMask ) const { return Bitmap::operator==( rAlphaMask ); }
+ bool operator!=( const AlphaMask& rAlphaMask ) const { return Bitmap::operator!=( rAlphaMask ); }
+
+ const MapMode& GetPrefMapMode() const { return Bitmap::GetPrefMapMode(); }
+ void SetPrefMapMode( const MapMode& rMapMode ) { Bitmap::SetPrefMapMode( rMapMode ); }
+
+ const Size& GetPrefSize() const { return Bitmap::GetPrefSize(); }
+ void SetPrefSize( const Size& rSize ) { Bitmap::SetPrefSize( rSize ); }
+
+ Size GetSizePixel() const { return Bitmap::GetSizePixel(); }
+ sal_uLong GetSizeBytes() const { return Bitmap::GetSizeBytes(); }
+
+ sal_uLong GetChecksum() const { return Bitmap::GetChecksum(); }
+
+ Bitmap GetBitmap() const;
+
+ bool Erase( sal_uInt8 cTransparency );
+ bool Replace( const Bitmap& rMask, sal_uInt8 rReplaceTransparency );
+ bool Replace( sal_uInt8 cSearchTransparency, sal_uInt8 cReplaceTransparency, sal_uLong nTol = 0UL );
+
+ BitmapReadAccess* AcquireReadAccess() { return Bitmap::AcquireReadAccess(); }
+ BitmapWriteAccess* AcquireWriteAccess() { return Bitmap::AcquireWriteAccess(); }
+
+ void ReleaseAccess( BitmapReadAccess* pAccess );
typedef vcl::ScopedBitmapAccess< BitmapReadAccess, AlphaMask, &AlphaMask::AcquireReadAccess >
ScopedReadAccess;
typedef vcl::ScopedBitmapAccess< BitmapWriteAccess, AlphaMask, &AlphaMask::AcquireWriteAccess >
ScopedWriteAccess;
+
+private:
+ friend class BitmapEx;
+ friend class OutputDevice;
+ friend bool VCL_DLLPUBLIC ReadDIBBitmapEx(BitmapEx& rTarget, SvStream& rIStm);
+
+ SAL_DLLPRIVATE const Bitmap& ImplGetBitmap() const;
+ SAL_DLLPRIVATE void ImplSetBitmap( const Bitmap& rBitmap );
+
};
#endif // INCLUDED_VCL_ALPHA_HXX
diff --git a/include/vcl/animate.hxx b/include/vcl/animate.hxx
index f75caf6..25f10f0 100644
--- a/include/vcl/animate.hxx
+++ b/include/vcl/animate.hxx
@@ -45,59 +45,58 @@ enum CycleMode
struct VCL_DLLPUBLIC AnimationBitmap
{
- BitmapEx aBmpEx;
- Point aPosPix;
- Size aSizePix;
- long nWait;
- Disposal eDisposal;
- bool bUserInput;
-
- AnimationBitmap()
- : nWait(0)
- , eDisposal(DISPOSE_NOT)
- , bUserInput(false)
- {
- }
-
- AnimationBitmap(
- const BitmapEx& rBmpEx,
- const Point& rPosPix,
- const Size& rSizePix,
- long _nWait = 0L,
- Disposal _eDisposal = DISPOSE_NOT
- ) :
- aBmpEx ( rBmpEx ),
- aPosPix ( rPosPix ),
- aSizePix ( rSizePix ),
- nWait ( _nWait ),
- eDisposal ( _eDisposal ),
- bUserInput ( false )
- {}
-
- bool operator==( const AnimationBitmap& rAnimBmp ) const
- {
- return( rAnimBmp.aBmpEx == aBmpEx &&
- rAnimBmp.aPosPix == aPosPix &&
- rAnimBmp.aSizePix == aSizePix &&
- rAnimBmp.nWait == nWait &&
- rAnimBmp.eDisposal == eDisposal &&
- rAnimBmp.bUserInput == bUserInput );
- }
-
- bool operator!=( const AnimationBitmap& rAnimBmp ) const
- { return !( *this == rAnimBmp ); }
-
- bool IsEqual( const AnimationBitmap& rAnimBmp ) const
- {
- return( rAnimBmp.aPosPix == aPosPix &&
- rAnimBmp.aSizePix == aSizePix &&
- rAnimBmp.nWait == nWait &&
- rAnimBmp.eDisposal == eDisposal &&
- rAnimBmp.bUserInput == bUserInput &&
- rAnimBmp.aBmpEx.IsEqual( aBmpEx ) );
- }
-
- sal_uLong GetChecksum() const;
+ BitmapEx aBmpEx;
+ Point aPosPix;
+ Size aSizePix;
+ long nWait;
+ Disposal eDisposal;
+ bool bUserInput;
+
+ AnimationBitmap()
+ : nWait(0)
+ , eDisposal(DISPOSE_NOT)
+ , bUserInput(false)
+ {}
+
+ AnimationBitmap(
+ const BitmapEx& rBmpEx,
+ const Point& rPosPix,
+ const Size& rSizePix,
+ long _nWait = 0L,
+ Disposal _eDisposal = DISPOSE_NOT
+ ) :
+ aBmpEx ( rBmpEx ),
+ aPosPix ( rPosPix ),
+ aSizePix ( rSizePix ),
+ nWait ( _nWait ),
+ eDisposal ( _eDisposal ),
+ bUserInput ( false )
+ {}
+
+ bool operator==( const AnimationBitmap& rAnimBmp ) const
+ {
+ return( rAnimBmp.aBmpEx == aBmpEx &&
+ rAnimBmp.aPosPix == aPosPix &&
+ rAnimBmp.aSizePix == aSizePix &&
+ rAnimBmp.nWait == nWait &&
+ rAnimBmp.eDisposal == eDisposal &&
+ rAnimBmp.bUserInput == bUserInput );
+ }
+
+ bool operator!=( const AnimationBitmap& rAnimBmp ) const
+ { return !( *this == rAnimBmp ); }
+
+ bool IsEqual( const AnimationBitmap& rAnimBmp ) const
+ {
+ return( rAnimBmp.aPosPix == aPosPix &&
+ rAnimBmp.aSizePix == aSizePix &&
+ rAnimBmp.nWait == nWait &&
+ rAnimBmp.eDisposal == eDisposal &&
+ rAnimBmp.bUserInput == bUserInput &&
+ rAnimBmp.aBmpEx.IsEqual( aBmpEx ) );
+ }
+
+ sal_uLong GetChecksum() const;
};
struct AInfo
@@ -112,8 +111,8 @@ struct AInfo
OutputDevice* pOutDev;
void* pViewData;
long nExtraData;
- bool bWithSize;
- bool bPause;
+ bool bWithSize;
+ bool bPause;
AInfo() : pOutDev( NULL ),
pViewData( NULL ),
@@ -128,111 +127,115 @@ typedef ::std::vector< ImplAnimView* > AnimViewList_impl;
class VCL_DLLPUBLIC Animation
{
- SAL_DLLPRIVATE static sal_uLong mnAnimCount;
-
- AnimationBitmapList_impl maList;
- AnimViewList_impl maViewList;
- Link maNotifyLink;
- BitmapEx maBitmapEx;
- Timer maTimer;
- Size maGlobalSize;
- long mnLoopCount;
- long mnLoops;
- size_t mnPos;
- CycleMode meCycleMode;
- bool mbIsInAnimation;
- bool mbLoopTerminated;
- bool mbIsWaiting;
-
-
- SAL_DLLPRIVATE void ImplRestartTimer( sal_uLong nTimeout );
- DECL_DLLPRIVATE_LINK( ImplTimeoutHdl, void* );
-
public:
+ Animation();
+ Animation( const Animation& rAnimation );
+ ~Animation();
- SAL_DLLPRIVATE static void ImplIncAnimCount() { mnAnimCount++; }
- SAL_DLLPRIVATE static void ImplDecAnimCount() { mnAnimCount--; }
- SAL_DLLPRIVATE sal_uLong ImplGetCurPos() const { return mnPos; }
+ Animation& operator=( const Animation& rAnimation );
+ bool operator==( const Animation& rAnimation ) const;
+ bool operator!=( const Animation& rAnimation ) const
+ { return !(*this==rAnimation); }
+ void Clear();
-public:
- Animation();
- Animation( const Animation& rAnimation );
- ~Animation();
+ bool Start(
+ OutputDevice* pOutDev,
+ const Point& rDestPt,
+ const Size& rDestSz,
+ long nExtraData = 0,
+ OutputDevice* pFirstFrameOutDev = NULL);
- Animation& operator=( const Animation& rAnimation );
- bool operator==( const Animation& rAnimation ) const;
- bool operator!=( const Animation& rAnimation ) const
- { return !(*this==rAnimation); }
+ void Stop( OutputDevice* pOutDev = NULL, long nExtraData = 0 );
- void Clear();
+ void Draw( OutputDevice* pOutDev, const Point& rDestPt ) const;
+ void Draw( OutputDevice* pOutDev, const Point& rDestPt, const Size& rDestSz ) const;
- bool Start(
- OutputDevice* pOutDev,
- const Point& rDestPt,
- const Size& rDestSz,
- long nExtraData = 0,
- OutputDevice* pFirstFrameOutDev = NULL
- );
- void Stop( OutputDevice* pOutDev = NULL, long nExtraData = 0 );
+ bool IsInAnimation() const { return mbIsInAnimation; }
+ bool IsTransparent() const;
+ bool IsTerminated() const { return mbLoopTerminated; }
- void Draw( OutputDevice* pOutDev, const Point& rDestPt ) const;
- void Draw( OutputDevice* pOutDev, const Point& rDestPt, const Size& rDestSz ) const;
+ const Size& GetDisplaySizePixel() const { return maGlobalSize; }
+ void SetDisplaySizePixel( const Size& rSize ) { maGlobalSize = rSize; }
- bool IsInAnimation() const { return mbIsInAnimation; }
- bool IsTransparent() const;
- bool IsTerminated() const { return mbLoopTerminated; }
+ const BitmapEx& GetBitmapEx() const { return maBitmapEx; }
+ void SetBitmapEx( const BitmapEx& rBmpEx ) { maBitmapEx = rBmpEx; }
- const Size& GetDisplaySizePixel() const { return maGlobalSize; }
- void SetDisplaySizePixel( const Size& rSize ) { maGlobalSize = rSize; }
+ sal_uLong GetLoopCount() const { return mnLoopCount; }
+ void SetLoopCount( const sal_uLong nLoopCount );
+ void ResetLoopCount();
- const BitmapEx& GetBitmapEx() const { return maBitmapEx; }
- void SetBitmapEx( const BitmapEx& rBmpEx ) { maBitmapEx = rBmpEx; }
+ void SetCycleMode( CycleMode eMode );
+ CycleMode GetCycleMode() const { return meCycleMode; }
- sal_uLong GetLoopCount() const { return mnLoopCount; }
- void SetLoopCount( const sal_uLong nLoopCount );
- void ResetLoopCount();
+ void SetNotifyHdl( const Link& rLink ) { maNotifyLink = rLink; }
+ const Link& GetNotifyHdl() const { return maNotifyLink; }
- void SetCycleMode( CycleMode eMode );
- CycleMode GetCycleMode() const { return meCycleMode; }
+ size_t Count() const { return maList.size(); }
+ bool Insert( const AnimationBitmap& rAnimationBitmap );
+ const AnimationBitmap&
+ Get( sal_uInt16 nAnimation ) const;
+ void Replace( const AnimationBitmap& rNewAnimationBmp, sal_uInt16 nAnimation );
- void SetNotifyHdl( const Link& rLink ) { maNotifyLink = rLink; }
- const Link& GetNotifyHdl() const { return maNotifyLink; }
+ sal_uLong GetSizeBytes() const;
+ sal_uLong GetChecksum() const;
- size_t Count() const { return maList.size(); }
- bool Insert( const AnimationBitmap& rAnimationBitmap );
- const AnimationBitmap& Get( sal_uInt16 nAnimation ) const;
- void Replace( const AnimationBitmap& rNewAnimationBmp, sal_uInt16 nAnimation );
+public:
- sal_uLong GetSizeBytes() const;
- sal_uLong GetChecksum() const;
+ bool Convert( BmpConversion eConversion );
+ bool ReduceColors(
+ sal_uInt16 nNewColorCount,
+ BmpReduce eReduce = BMP_REDUCE_SIMPLE );
+
+ bool Invert();
+ bool Mirror( sal_uLong nMirrorFlags );
+ bool Adjust(
+ short nLuminancePercent = 0,
+ short nContrastPercent = 0,
+ short nChannelRPercent = 0,
+ short nChannelGPercent = 0,
+ short nChannelBPercent = 0,
+ double fGamma = 1.0,
+ bool bInvert = false );
+
+ bool Filter(
+ BmpFilter eFilter,
+ const BmpFilterParam* pFilterParam = NULL,
+ const Link* pProgress = NULL );
+
+ friend VCL_DLLPUBLIC SvStream& ReadAnimation( SvStream& rIStream, Animation& rAnimation );
+ friend VCL_DLLPUBLIC SvStream& WriteAnimation( SvStream& rOStream, const Animation& rAnimation );
public:
- bool Convert( BmpConversion eConversion );
- bool ReduceColors(
- sal_uInt16 nNewColorCount,
- BmpReduce eReduce = BMP_REDUCE_SIMPLE
- );
- bool Invert();
- bool Mirror( sal_uLong nMirrorFlags );
- bool Adjust(
- short nLuminancePercent = 0,
- short nContrastPercent = 0,
- short nChannelRPercent = 0,
- short nChannelGPercent = 0,
- short nChannelBPercent = 0,
- double fGamma = 1.0,
- bool bInvert = false
- );
- bool Filter(
- BmpFilter eFilter,
- const BmpFilterParam* pFilterParam = NULL,
- const Link* pProgress = NULL
- );
-
- friend VCL_DLLPUBLIC SvStream& ReadAnimation( SvStream& rIStream, Animation& rAnimation );
- friend VCL_DLLPUBLIC SvStream& WriteAnimation( SvStream& rOStream, const Animation& rAnimation );
+ SAL_DLLPRIVATE static void
+ ImplIncAnimCount() { mnAnimCount++; }
+ SAL_DLLPRIVATE static void
+ ImplDecAnimCount() { mnAnimCount--; }
+ SAL_DLLPRIVATE sal_uLong
+ ImplGetCurPos() const { return mnPos; }
+
+private:
+ SAL_DLLPRIVATE static sal_uLong mnAnimCount;
+
+ AnimationBitmapList_impl maList;
+ AnimViewList_impl maViewList;
+
+ Link maNotifyLink;
+ BitmapEx maBitmapEx;
+ Timer maTimer;
+ Size maGlobalSize;
+ long mnLoopCount;
+ long mnLoops;
+ size_t mnPos;
+ CycleMode meCycleMode;
+ bool mbIsInAnimation;
+ bool mbLoopTerminated;
+ bool mbIsWaiting;
+
+ SAL_DLLPRIVATE void ImplRestartTimer( sal_uLong nTimeout );
+ DECL_DLLPRIVATE_LINK( ImplTimeoutHdl, void* );
+
};
#endif // INCLUDED_VCL_ANIMATE_HXX
diff --git a/include/vcl/apptypes.hxx b/include/vcl/apptypes.hxx
index 60ead54..bc0307c 100644
--- a/include/vcl/apptypes.hxx
+++ b/include/vcl/apptypes.hxx
@@ -23,13 +23,13 @@
#include <vcl/dllapi.h>
#include <tools/rtti.hxx>
-#define EXC_RSCNOTLOADED ((sal_uInt16)0x0100)
-#define EXC_SYSTEM ((sal_uInt16)0x0300)
-#define EXC_DISPLAY ((sal_uInt16)0x0400)
-#define EXC_REMOTE ((sal_uInt16)0x0500)
-#define EXC_USER ((sal_uInt16)0x1000)
-#define EXC_MAJORTYPE ((sal_uInt16)0xFF00)
-#define EXC_MINORTYPE ((sal_uInt16)0x00FF)
+#define EXC_RSCNOTLOADED ((sal_uInt16)0x0100)
+#define EXC_SYSTEM ((sal_uInt16)0x0300)
+#define EXC_DISPLAY ((sal_uInt16)0x0400)
+#define EXC_REMOTE ((sal_uInt16)0x0500)
+#define EXC_USER ((sal_uInt16)0x1000)
+#define EXC_MAJORTYPE ((sal_uInt16)0xFF00)
+#define EXC_MINORTYPE ((sal_uInt16)0x00FF)
#define VCL_INPUT_MOUSE 0x0001
#define VCL_INPUT_KEYBOARD 0x0002
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx
index d2f0cac..6f66f9c 100644
--- a/include/vcl/bitmap.hxx
+++ b/include/vcl/bitmap.hxx
@@ -60,7 +60,7 @@
#define BMP_VECTORIZE_BOUND_ONLY 0x00000004UL
#define BMP_VECTORIZE_REDUCE_EDGES 0x00000008UL
-#define BMP_COL_TRANS Color( 252, 3, 251 )
+#define BMP_COL_TRANS Color( 252, 3, 251 )
enum BmpConversion
{
@@ -127,39 +127,6 @@ enum BmpFilter
class VCL_DLLPUBLIC BmpFilterParam
{
- friend class Bitmap;
- friend class BitmapEx;
- friend class Animation;
-
-private:
- BmpFilter meFilter;
- sal_uLong mnProgressStart;
- sal_uLong mnProgressEnd;
-
-public:
- struct MosaicTileSize
- {
- sal_uLong mnTileWidth;
- sal_uLong mnTileHeight;
- };
-
- struct EmbossAngles
- {
- sal_uInt16 mnAzimuthAngle100;
- sal_uInt16 mnElevationAngle100;
- };
-
-private:
- union
- {
- sal_uInt16 mnSepiaPercent;
- sal_uInt8 mcSolarGreyThreshold;
- double mnRadius;
-
- MosaicTileSize maMosaicTileSize;
- EmbossAngles maEmbossAngles;
- };
-
public:
BmpFilterParam( sal_uLong nProgressStart = 0, sal_uLong nProgressEnd = 0 ) :
@@ -190,36 +157,68 @@ public:
maEmbossAngles.mnAzimuthAngle100 = nEmbossAzimuthAngle100;
maEmbossAngles.mnElevationAngle100 = nEmbossElevationAngle100;
}
-};
+private:
+ friend class Bitmap;
+ friend class BitmapEx;
+ friend class Animation;
-// Resample kernels
+private:
+ BmpFilter meFilter;
+ sal_uLong mnProgressStart;
+ sal_uLong mnProgressEnd;
+
+public:
+ struct MosaicTileSize
+ {
+ sal_uLong mnTileWidth;
+ sal_uLong mnTileHeight;
+ };
+
+ struct EmbossAngles
+ {
+ sal_uInt16 mnAzimuthAngle100;
+ sal_uInt16 mnElevationAngle100;
+ };
+
+private:
+ union
+ {
+ sal_uInt16 mnSepiaPercent;
+ sal_uInt8 mcSolarGreyThreshold;
+ double mnRadius;
+
+ MosaicTileSize maMosaicTileSize;
+ EmbossAngles maEmbossAngles;
+ };
+};
+
+// Resample kernels
class Kernel
{
public:
- Kernel () {}
- virtual ~Kernel() {}
+ Kernel () {}
+ virtual ~Kernel() {}
- virtual double GetWidth() const = 0;
- virtual double Calculate( double x ) const = 0;
+ virtual double GetWidth() const = 0;
+ virtual double Calculate( double x ) const = 0;
};
class Lanczos3Kernel : public Kernel
{
- typedef boost::math::policies::policy<
- boost::math::policies::promote_double<false> > SincPolicy;
public:
- Lanczos3Kernel() : Kernel () {}
- virtual double GetWidth() const SAL_OVERRIDE { return 3.0; }
- virtual double Calculate (double x) const SAL_OVERRIDE
+ Lanczos3Kernel() : Kernel () {}
+
+ virtual double GetWidth() const SAL_OVERRIDE { return 3.0; }
+ virtual double Calculate (double x) const SAL_OVERRIDE
{
return (-3.0 <= x && x < 3.0) ? SincFilter(x) * SincFilter( x / 3.0 ) : 0.0;
}
- inline double SincFilter(double x) const
+ inline double SincFilter(double x) const
{
if (x == 0.0)
{
@@ -228,14 +227,20 @@ public:
x = x * M_PI;
return boost::math::sinc_pi(x, SincPolicy());
}
+
+private:
+ typedef boost::math::policies::policy<
+ boost::math::policies::promote_double<false> > SincPolicy;
};
-class BicubicKernel : public Kernel {
+class BicubicKernel : public Kernel
+{
public:
- BicubicKernel() : Kernel () {}
+ BicubicKernel() : Kernel () {}
+
private:
- virtual double GetWidth() const SAL_OVERRIDE { return 2.0; }
- virtual double Calculate (double x) const SAL_OVERRIDE
+ virtual double GetWidth() const SAL_OVERRIDE { return 2.0; }
+ virtual double Calculate (double x) const SAL_OVERRIDE
{
if (x < 0.0)
{
@@ -254,12 +259,13 @@ private:
}
};
-class BilinearKernel : public Kernel {
+class BilinearKernel : public Kernel
+{
public:
- BilinearKernel() : Kernel () {}
+ BilinearKernel() : Kernel () {}
private:
- virtual double GetWidth() const SAL_OVERRIDE { return 1.0; }
- virtual double Calculate (double x) const SAL_OVERRIDE
+ virtual double GetWidth() const SAL_OVERRIDE { return 1.0; }
+ virtual double Calculate (double x) const SAL_OVERRIDE
{
if (x < 0.0)
{
@@ -273,12 +279,14 @@ private:
}
};
-class BoxKernel : public Kernel {
+class BoxKernel : public Kernel
+{
public:
- BoxKernel() : Kernel () {}
+ BoxKernel() : Kernel () {}
+
private:
- virtual double GetWidth() const SAL_OVERRIDE { return 0.5; }
- virtual double Calculate (double x) const SAL_OVERRIDE
+ virtual double GetWidth() const SAL_OVERRIDE { return 0.5; }
+ virtual double Calculate (double x) const SAL_OVERRIDE
{
if (-0.5 <= x && x < 0.5)
return 1.0;
@@ -313,67 +321,14 @@ struct BitmapSystemData
class VCL_DLLPUBLIC Bitmap
{
-private:
-
- ImpBitmap* mpImpBmp;
- MapMode maPrefMapMode;
- Size maPrefSize;
-
-public:
-
- SAL_DLLPRIVATE void ImplReleaseRef();
- SAL_DLLPRIVATE void ImplMakeUnique();
- ImpBitmap* ImplGetImpBitmap() const { return mpImpBmp;}
- SAL_DLLPRIVATE void ImplSetImpBitmap( ImpBitmap* pImpBmp );
- SAL_DLLPRIVATE void ImplAssignWithSize( const Bitmap& rBitmap );
-
- SAL_DLLPRIVATE void ImplAdaptBitCount(Bitmap& rNew) const;
- SAL_DLLPRIVATE bool ImplScaleFast( const double& rScaleX, const double& rScaleY );
- SAL_DLLPRIVATE bool ImplScaleInterpolate( const double& rScaleX, const double& rScaleY );
- SAL_DLLPRIVATE bool ImplScaleSuper( const double& rScaleX, const double& rScaleY );
- SAL_DLLPRIVATE bool ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const Kernel& aKernel);
-
- SAL_DLLPRIVATE bool ImplConvolutionPass( Bitmap& aNewBitmap, const int nNewSize, BitmapReadAccess* pReadAcc,
- int aNumberOfContributions, double* pWeights, int* pPixels, int* pCount );
-
- SAL_DLLPRIVATE bool ImplMakeMono( sal_uInt8 cThreshold );
- SAL_DLLPRIVATE bool ImplMakeMonoDither();
- SAL_DLLPRIVATE bool ImplMakeGreyscales( sal_uInt16 nGreyscales );
- SAL_DLLPRIVATE bool ImplConvertUp( sal_uInt16 nBitCount, Color* pExtColor = NULL );
- SAL_DLLPRIVATE bool ImplConvertDown( sal_uInt16 nBitCount, Color* pExtColor = NULL );
- SAL_DLLPRIVATE bool ImplConvertGhosted();
- SAL_DLLPRIVATE bool ImplDitherMatrix();
- SAL_DLLPRIVATE bool ImplDitherFloyd();
- SAL_DLLPRIVATE bool ImplDitherFloyd16();
- SAL_DLLPRIVATE bool ImplReduceSimple( sal_uInt16 nColorCount );
- SAL_DLLPRIVATE bool ImplReducePopular( sal_uInt16 nColorCount );
- SAL_DLLPRIVATE bool ImplReduceMedian( sal_uInt16 nColorCount );
- SAL_DLLPRIVATE void ImplMedianCut( sal_uLong* pColBuf, BitmapPalette& rPal,
- long nR1, long nR2, long nG1, long nG2, long nB1, long nB2,
- long nColors, long nPixels, long& rIndex );
- SAL_DLLPRIVATE bool ImplConvolute3( const long* pMatrix, long nDivisor,
- const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplMedianFilter( const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplSobelGrey( const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplEmbossGrey( const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplSolarize( const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplSepia( const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplMosaic( const BmpFilterParam* pFilterParam, const Link* pProgress );
- SAL_DLLPRIVATE bool ImplPopArt( const BmpFilterParam* pFilterParam, const Link* pProgress );
-
- SAL_DLLPRIVATE bool ImplSeparableBlurFilter( const double aRadius = 0.7 );
- SAL_DLLPRIVATE bool ImplSeparableUnsharpenFilter( const double aRadius = 0.7 );
- SAL_DLLPRIVATE bool ImplDuotoneFilter( const sal_uLong nColorOne, sal_uLong nColorTwo );
- SAL_DLLPRIVATE void ImplBlurContributions( const int aSize, const int aNumberOfContributions,
- double* pBlurVector, double*& pWeights, int*& pPixels, int*& pCount );
public:
- Bitmap();
- Bitmap( const Bitmap& rBitmap );
- Bitmap( const Size& rSizePixel, sal_uInt16 nBitCount, const BitmapPalette* pPal = NULL );
- Bitmap( const ResId& rResId );
- Bitmap( SalBitmap* pSalBitmap );
- virtual ~Bitmap();
+ Bitmap();
+ Bitmap( const Bitmap& rBitmap );
+ Bitmap( const Size& rSizePixel, sal_uInt16 nBitCount, const BitmapPalette* pPal = NULL );
+ Bitmap( const ResId& rResId );
+ Bitmap( SalBitmap* pSalBitmap );
+ virtual ~Bitmap();
Bitmap& operator=( const Bitmap& rBitmap );
inline bool operator!() const;
@@ -394,9 +349,9 @@ public:
Size GetSizePixel() const;
- sal_uInt16 GetBitCount() const;
- inline sal_uLong GetColorCount() const;
- inline sal_uLong GetSizeBytes() const;
+ sal_uInt16 GetBitCount() const;
+ inline sal_uLong GetColorCount() const;
+ inline sal_uLong GetSizeBytes() const;
bool HasGreyPalette() const;
/** get system dependent bitmap data
@@ -407,16 +362,17 @@ public:
*/
bool GetSystemData( BitmapSystemData& rData ) const;
- sal_uLong GetChecksum() const;
+ sal_uLong GetChecksum() const;
Bitmap CreateDisplayBitmap( OutputDevice* pDisplay );
Bitmap GetColorTransformedBitmap() const;
- static const BitmapPalette& GetGreyPalette( int nEntries );
+ static const BitmapPalette&
+ GetGreyPalette( int nEntries );
public:
- bool MakeMono( sal_uInt8 cThreshold );
+ bool MakeMono( sal_uInt8 cThreshold );
/** Convert bitmap format
@@ -438,8 +394,9 @@ public:
@return true, if the color reduction operation was completed successfully.
*/
- bool ReduceColors( sal_uInt16 nNewColorCount,
- BmpReduce eReduce = BMP_REDUCE_SIMPLE );
+ bool ReduceColors(
+ sal_uInt16 nNewColorCount,
+ BmpReduce eReduce = BMP_REDUCE_SIMPLE );
/** Apply a dither algorithm to the bitmap
@@ -483,8 +440,9 @@ public:
not only returned when the operation failed, but also if
nothing had to be done, e.g. because nDX and nDY were zero.
*/
- bool Expand( sal_uLong nDX, sal_uLong nDY,
- const Color* pInitColor = NULL );
+ bool Expand(
+ sal_uLong nDX, sal_uLong nDY,
+ const Color* pInitColor = NULL );
/** Copy a rectangular area from another bitmap
@@ -508,12 +466,15 @@ public:
nothing had to be done, e.g. because one of the rectangles are
empty.
*/
- bool CopyPixel( const Rectangle& rRectDst,
- const Rectangle& rRectSrc,
- const Bitmap* pBmpSrc = NULL );
+ bool CopyPixel(
+ const Rectangle& rRectDst,
+ const Rectangle& rRectSrc,
+ const Bitmap* pBmpSrc = NULL );
- bool CopyPixel_AlphaOptimized( const Rectangle& rRectDst, const Rectangle& rRectSrc,
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list