Kaydet (Commit) d85412e0 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

refactor SvxPageWindow & SvxXMeasurePreview to use RenderContext

Change-Id: Ic6f4d1238c0a4c8f4632cf26099ef406caf5dbda
üst 9a81ba66
......@@ -22,23 +22,17 @@
#include <vcl/ctrl.hxx>
#include <svx/svxdllapi.h>
class SfxItemSet;
class SdrMeasureObj;
class SdrModel;
/*************************************************************************
|*
|* SvxXMeasurePreview
|*
\************************************************************************/
class SVX_DLLPUBLIC SvxXMeasurePreview : public Control
{
friend class SvxMeasurePage;
private:
SdrMeasureObj* pMeasureObj;
SdrModel* pModel;
SdrMeasureObj* pMeasureObj;
SdrModel* pModel;
public:
SvxXMeasurePreview(vcl::Window* pParent, WinBits nStyle);
......@@ -47,12 +41,12 @@ public:
virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE;
virtual void Resize() SAL_OVERRIDE;
virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
virtual void MouseButtonDown(const MouseEvent& rMEvt) SAL_OVERRIDE;
virtual Size GetOptimalSize() const SAL_OVERRIDE;
void SetAttributes( const SfxItemSet& rInAttrs );
void SetAttributes(const SfxItemSet& rInAttrs);
virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
virtual void DataChanged(const DataChangedEvent& rDCEvt) SAL_OVERRIDE;
};
#endif
......
This diff is collapsed.
......@@ -27,26 +27,27 @@
#include <vcl/settings.hxx>
#include <boost/scoped_ptr.hpp>
SvxXMeasurePreview::SvxXMeasurePreview( vcl::Window* pParent, WinBits nStyle)
SvxXMeasurePreview::SvxXMeasurePreview(vcl::Window* pParent, WinBits nStyle)
: Control(pParent, nStyle)
{
SetMapMode( MAP_100TH_MM );
SetMapMode(MAP_100TH_MM);
// Scale: 1:2
MapMode aMapMode = GetMapMode();
aMapMode.SetScaleX( Fraction( 1, 2 ) );
aMapMode.SetScaleY( Fraction( 1, 2 ) );
SetMapMode( aMapMode );
aMapMode.SetScaleX(Fraction(1, 2));
aMapMode.SetScaleY(Fraction(1, 2));
SetMapMode(aMapMode);
Size aSize = GetOutputSize();
Point aPt1 = Point( aSize.Width() / 5, (long) ( aSize.Height() / 2 ) );
Point aPt2 = Point( aSize.Width() * 4 / 5, (long) ( aSize.Height() / 2 ) );
Point aPt1 = Point(aSize.Width() / 5, (long) (aSize.Height() / 2));
Point aPt2 = Point(aSize.Width() * 4 / 5, (long) (aSize.Height() / 2));
pMeasureObj = new SdrMeasureObj( aPt1, aPt2 );
pMeasureObj = new SdrMeasureObj(aPt1, aPt2);
pModel = new SdrModel();
pMeasureObj->SetModel( pModel );
pMeasureObj->SetModel(pModel);
SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR );
bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
SetDrawMode(bHighContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
Invalidate();
}
......@@ -56,9 +57,9 @@ void SvxXMeasurePreview::Resize()
Control::Resize();
Size aSize = GetOutputSize();
Point aPt1 = Point( aSize.Width() / 5, (long) ( aSize.Height() / 2 ) );
Point aPt1 = Point(aSize.Width() / 5, (long) (aSize.Height() / 2));
pMeasureObj->SetPoint(aPt1, 0);
Point aPt2 = Point( aSize.Width() * 4 / 5, (long) ( aSize.Height() / 2 ) );
Point aPt2 = Point(aSize.Width() * 4 / 5, (long) (aSize.Height() / 2));
pMeasureObj->SetPoint(aPt2, 1);
}
......@@ -94,80 +95,80 @@ void SvxXMeasurePreview::dispose()
Control::dispose();
}
void SvxXMeasurePreview::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& )
void SvxXMeasurePreview::Paint(vcl::RenderContext& rRenderContext, const Rectangle&)
{
pMeasureObj->SingleObjectPainter(*this);
pMeasureObj->SingleObjectPainter(rRenderContext);
}
void SvxXMeasurePreview::SetAttributes( const SfxItemSet& rInAttrs )
void SvxXMeasurePreview::SetAttributes(const SfxItemSet& rInAttrs)
{
pMeasureObj->SetMergedItemSetAndBroadcast(rInAttrs);
Invalidate();
}
void SvxXMeasurePreview::MouseButtonDown( const MouseEvent& rMEvt )
void SvxXMeasurePreview::MouseButtonDown(const MouseEvent& rMEvt)
{
bool bZoomIn = rMEvt.IsLeft() && !rMEvt.IsShift();
bool bZoomOut = rMEvt.IsRight() || rMEvt.IsShift();
bool bCtrl = rMEvt.IsMod1();
if( bZoomIn || bZoomOut )
if (bZoomIn || bZoomOut)
{
MapMode aMapMode = GetMapMode();
Fraction aXFrac = aMapMode.GetScaleX();
Fraction aYFrac = aMapMode.GetScaleY();
boost::scoped_ptr<Fraction> pMultFrac;
if( bZoomIn )
if (bZoomIn)
{
if( bCtrl )
pMultFrac.reset(new Fraction( 3, 2 ));
if (bCtrl)
pMultFrac.reset(new Fraction(3, 2));
else
pMultFrac.reset(new Fraction( 11, 10 ));
pMultFrac.reset(new Fraction(11, 10));
}
else
{
if( bCtrl )
pMultFrac.reset(new Fraction( 2, 3 ));
if (bCtrl)
pMultFrac.reset(new Fraction(2, 3));
else
pMultFrac.reset(new Fraction( 10, 11 ));
pMultFrac.reset(new Fraction(10, 11));
}
aXFrac *= *pMultFrac;
aYFrac *= *pMultFrac;
if( (double)aXFrac > 0.001 && (double)aXFrac < 1000.0 &&
(double)aYFrac > 0.001 && (double)aYFrac < 1000.0 )
if (double(aXFrac) > 0.001 && double(aXFrac) < 1000.0 &&
double(aYFrac) > 0.001 && double(aYFrac) < 1000.0)
{
aMapMode.SetScaleX( aXFrac );
aMapMode.SetScaleY( aYFrac );
SetMapMode( aMapMode );
aMapMode.SetScaleX(aXFrac);
aMapMode.SetScaleY(aYFrac);
SetMapMode(aMapMode);
Size aOutSize( GetOutputSize() );
Size aOutSize(GetOutputSize());
Point aPt( aMapMode.GetOrigin() );
long nX = (long)( ( (double)aOutSize.Width() - ( (double)aOutSize.Width() * (double)*pMultFrac ) ) / 2.0 + 0.5 );
long nY = (long)( ( (double)aOutSize.Height() - ( (double)aOutSize.Height() * (double)*pMultFrac ) ) / 2.0 + 0.5 );
aPt.X() += nX;
aPt.Y() += nY;
Point aPt(aMapMode.GetOrigin());
long nX = long((double(aOutSize.Width()) - (double(aOutSize.Width()) * double(*pMultFrac))) / 2.0 + 0.5);
long nY = long((double(aOutSize.Height()) - (double(aOutSize.Height()) * double(*pMultFrac))) / 2.0 + 0.5);
aPt.X() += nX;
aPt.Y() += nY;
aMapMode.SetOrigin( aPt );
SetMapMode( aMapMode );
aMapMode.SetOrigin(aPt);
SetMapMode(aMapMode);
Invalidate();
}
}
}
void SvxXMeasurePreview::DataChanged( const DataChangedEvent& rDCEvt )
{
Control::DataChanged( rDCEvt );
if ( (rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE) )
if ((rDCEvt.GetType() == DataChangedEventType::SETTINGS) && (rDCEvt.GetFlags() & AllSettingsFlags::STYLE))
{
SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR );
bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
SetDrawMode(bHighContrast ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR);
}
}
......
This diff is collapsed.
......@@ -206,33 +206,30 @@ void SwPageExample::UpdateExample( const SfxItemSet& rSet )
Invalidate();
}
void SwColExample::DrawPage( const Point& rOrg,
const bool bSecond,
const bool bEnabled )
void SwColExample::DrawPage(vcl::RenderContext& rRenderContext, const Point& rOrg,
const bool bSecond, const bool bEnabled)
{
SwPageExample::DrawPage( rOrg, bSecond, bEnabled );
SwPageExample::DrawPage(rRenderContext, rOrg, bSecond, bEnabled);
sal_uInt16 nColumnCount;
if( pColMgr && 0 != (nColumnCount = pColMgr->GetCount()))
if (pColMgr && 0 != (nColumnCount = pColMgr->GetCount()))
{
long nL = GetLeft();
long nR = GetRight();
if ( GetUsage() == SVX_PAGE_MIRROR && !bSecond )
if (GetUsage() == SVX_PAGE_MIRROR && !bSecond)
{
// rotate for mirrored
nL = GetRight();
nR = GetLeft();
}
SetFillColor( Color( COL_LIGHTGRAY ) );
rRenderContext.SetFillColor(Color(COL_LIGHTGRAY));
Rectangle aRect;
aRect.Right() = rOrg.X() + GetSize().Width() - nR;
aRect.Left() = rOrg.X() + nL;
aRect.Top() = rOrg.Y() + GetTop()
+ GetHdHeight() + GetHdDist();
aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom()
- GetFtHeight() - GetFtDist();
DrawRect(aRect);
aRect.Top() = rOrg.Y() + GetTop() + GetHdHeight() + GetHdDist();
aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom() - GetFtHeight() - GetFtDist();
rRenderContext.DrawRect(aRect);
//UUUU
const Rectangle aDefineRect(aRect);
......@@ -240,54 +237,53 @@ void SwColExample::DrawPage( const Point& rOrg,
//UUUU
const drawinglayer::attribute::SdrAllFillAttributesHelperPtr& rFillAttributes = getPageFillAttributes();
if(!rFillAttributes.get() || !rFillAttributes->isUsed())
if (!rFillAttributes.get() || !rFillAttributes->isUsed())
{
//UUUU If there is no fill, use fallback color
const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
const Color& rFieldColor = rStyleSettings.GetFieldColor();
setPageFillAttributes(
drawinglayer::attribute::SdrAllFillAttributesHelperPtr(
new drawinglayer::attribute::SdrAllFillAttributesHelper(
rFieldColor)));
new drawinglayer::attribute::SdrAllFillAttributesHelper(rFieldColor)));
}
// #97495# make sure that the automatic column width's are always equal
bool bAutoWidth = pColMgr->IsAutoWidth();
sal_Int32 nAutoColWidth = 0;
if(bAutoWidth)
if (bAutoWidth)
{
sal_Int32 nColumnWidthSum = 0;
sal_uInt16 i;
for(i = 0; i < nColumnCount; ++i)
for (i = 0; i < nColumnCount; ++i)
nColumnWidthSum += pColMgr->GetColWidth( i );
nAutoColWidth = nColumnWidthSum / nColumnCount;
}
sal_uInt16 i;
for( i = 0; i < nColumnCount; i++)
for (i = 0; i < nColumnCount; i++)
{
if(!bAutoWidth)
nAutoColWidth = pColMgr->GetColWidth( i );
if (!bAutoWidth)
nAutoColWidth = pColMgr->GetColWidth(i);
aRect.Right() = aRect.Left() + nAutoColWidth;
//UUUU use primitive draw command
drawFillAttributes(getPageFillAttributes(), aRect, aDefineRect);
drawFillAttributes(rRenderContext, getPageFillAttributes(), aRect, aDefineRect);
if(i < nColumnCount - 1)
if (i < nColumnCount - 1)
aRect.Left() = aRect.Right() + pColMgr->GetGutterWidth(i);
}
if(pColMgr->HasLine())
if (pColMgr->HasLine())
{
Point aUp( rOrg.X() + nL, rOrg.Y() + GetTop() );
Point aDown( rOrg.X() + nL, rOrg.Y() + GetSize().Height()
- GetBottom() - GetFtHeight() - GetFtDist() );
Point aUp(rOrg.X() + nL, rOrg.Y() + GetTop());
Point aDown(rOrg.X() + nL,
rOrg.Y() + GetSize().Height() - GetBottom() - GetFtHeight() - GetFtDist());
if( pColMgr->GetLineHeightPercent() != 100 )
if (pColMgr->GetLineHeightPercent() != 100)
{
long nLength = aDown.Y() - aUp.Y();
nLength -= nLength * pColMgr->GetLineHeightPercent() / 100;
switch(pColMgr->GetAdjust())
switch (pColMgr->GetAdjust())
{
case COLADJ_BOTTOM: aUp.Y() += nLength; break;
case COLADJ_TOP: aDown.Y() -= nLength; break;
......@@ -299,17 +295,14 @@ void SwColExample::DrawPage( const Point& rOrg,
}
}
for( i = 0; i < nColumnCount - 1; i++)
for (i = 0; i < nColumnCount - 1; i++)
{
int nGutter = pColMgr->GetGutterWidth(i);
int nDist = pColMgr->GetColWidth( i ) + nGutter;
nDist -= (i == 0) ?
nGutter/2 :
0;
nDist -= (i == 0) ? nGutter / 2 : 0;
aUp.X() += nDist;
aDown.X() += nDist;
DrawLine( aUp, aDown );
rRenderContext.DrawLine(aUp, aDown);
}
}
}
......@@ -491,25 +484,24 @@ void SwPageGridExample::dispose()
SwPageExample::dispose();
}
void SwPageGridExample::DrawPage( const Point& rOrg,
const bool bSecond,
const bool bEnabled )
void SwPageGridExample::DrawPage(vcl::RenderContext& rRenderContext, const Point& rOrg,
const bool bSecond, const bool bEnabled)
{
SwPageExample::DrawPage(rOrg, bSecond, bEnabled);
if(pGridItem && pGridItem->GetGridType())
SwPageExample::DrawPage(rRenderContext, rOrg, bSecond, bEnabled);
if (pGridItem && pGridItem->GetGridType())
{
//paint the grid now
Color aLineColor = pGridItem->GetColor();
if(aLineColor.GetColor() == COL_AUTO)
if (aLineColor.GetColor() == COL_AUTO)
{
aLineColor = GetFillColor();
aLineColor = rRenderContext.GetFillColor();
aLineColor.Invert();
}
SetLineColor(aLineColor);
rRenderContext.SetLineColor(aLineColor);
long nL = GetLeft();
long nR = GetRight();
if ( GetUsage() == SVX_PAGE_MIRROR && !bSecond )
if (GetUsage() == SVX_PAGE_MIRROR && !bSecond)
{
// rotate for mirrored
nL = GetRight();
......@@ -519,10 +511,8 @@ void SwPageGridExample::DrawPage( const Point& rOrg,
Rectangle aRect;
aRect.Right() = rOrg.X() + GetSize().Width() - nR;
aRect.Left() = rOrg.X() + nL;
aRect.Top() = rOrg.Y() + GetTop()
+ GetHdHeight() + GetHdDist();
aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom()
- GetFtHeight() - GetFtDist();
aRect.Top() = rOrg.Y() + GetTop() + GetHdHeight() + GetHdDist();
aRect.Bottom()= rOrg.Y() + GetSize().Height() - GetBottom() - GetFtHeight() - GetFtDist();
//increase the values to get a 'viewable' preview
sal_Int32 nBaseHeight = pGridItem->GetBaseHeight() * 3;
......@@ -542,19 +532,19 @@ void SwPageGridExample::DrawPage( const Point& rOrg,
//detect count of rectangles
sal_Int32 nLines = (m_bVertical ? aRect.GetWidth(): aRect.GetHeight()) / nLineHeight;
if(nLines > pGridItem->GetLines())
if (nLines > pGridItem->GetLines())
nLines = pGridItem->GetLines();
// determine start position
if(m_bVertical)
if (m_bVertical)
{
sal_Int16 nXStart = static_cast< sal_Int16 >(aRect.GetWidth() / 2 - nLineHeight * nLines /2);
sal_Int16 nXStart = static_cast<sal_Int16>(aRect.GetWidth() / 2 - nLineHeight * nLines /2);
aRubyRect.Move(nXStart, 0);
aCharRect.Move(nXStart, 0);
}
else
{
sal_Int16 nYStart = static_cast< sal_Int16 >(aRect.GetHeight() / 2 - nLineHeight * nLines /2);
sal_Int16 nYStart = static_cast<sal_Int16>(aRect.GetHeight() / 2 - nLineHeight * nLines /2);
aRubyRect.Move(0, nYStart);
aCharRect.Move(0, nYStart);
}
......@@ -566,20 +556,20 @@ void SwPageGridExample::DrawPage( const Point& rOrg,
//vertical lines
bool bBothLines = pGridItem->GetGridType() == GRID_LINES_CHARS;
SetFillColor( Color( COL_TRANSPARENT ) );
rRenderContext.SetFillColor(Color(COL_TRANSPARENT));
sal_Int32 nXMove = m_bVertical ? nLineHeight : 0;
sal_Int32 nYMove = m_bVertical ? 0 : nLineHeight;
for(sal_Int32 nLine = 0; nLine < nLines; nLine++)
for (sal_Int32 nLine = 0; nLine < nLines; nLine++)
{
DrawRect(aRubyRect);
DrawRect(aCharRect);
if(bBothLines)
rRenderContext.DrawRect(aRubyRect);
rRenderContext.DrawRect(aCharRect);
if (bBothLines)
{
Point aStart = aCharRect.TopLeft();
Point aEnd = m_bVertical ? aCharRect.TopRight() : aCharRect.BottomLeft();
while(m_bVertical ? aStart.Y() < aRect.Bottom(): aStart.X() < aRect.Right())
{
DrawLine(aStart, aEnd);
rRenderContext.DrawLine(aStart, aEnd);
if(m_bVertical)
aStart.Y() = aEnd.Y() += nBaseHeight;
else
......
......@@ -47,14 +47,16 @@ class SW_DLLPUBLIC SwPageGridExample : public SwPageExample
SwTextGridItem* pGridItem;
bool m_bVertical;
protected:
virtual void DrawPage( const Point& rPoint,
const bool bSecond,
const bool bEnabled ) SAL_OVERRIDE;
virtual void DrawPage(vcl::RenderContext& rRenderContext,
const Point& rPoint,
const bool bSecond,
const bool bEnabled) SAL_OVERRIDE;
public:
SwPageGridExample(vcl::Window* pPar) :
SwPageExample(pPar),
pGridItem(0),
m_bVertical(false){}
SwPageGridExample(vcl::Window* pPar)
: SwPageExample(pPar)
, pGridItem(0)
, m_bVertical(false)
{}
virtual ~SwPageGridExample();
virtual void dispose() SAL_OVERRIDE;
......@@ -68,9 +70,10 @@ class SW_DLLPUBLIC SwColExample : public SwPageExample
using SwPageExample::UpdateExample;
protected:
virtual void DrawPage( const Point& rPoint,
const bool bSecond,
const bool bEnabled ) SAL_OVERRIDE;
virtual void DrawPage(vcl::RenderContext& rRenderContext,
const Point& rPoint,
const bool bSecond,
const bool bEnabled) SAL_OVERRIDE;
public:
SwColExample(vcl::Window* pPar)
......@@ -95,7 +98,7 @@ private:
SwFmtCol m_aCols;
protected:
virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect ) SAL_OVERRIDE;
virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE;
public:
SwColumnOnlyExample(vcl::Window*);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment