summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2015-05-18 11:12:59 +0900
committerTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2015-05-18 11:22:49 +0900
commita97fc29f726b7fcc5ab36496e117e2a1aec9747d (patch)
tree5b1b244ba1c3dc64e1d857a7448dfee1a8ff1c35 /extensions
parentb4bbb5e5d7b31caad2fbcc00382ad27df3c81001 (diff)
refactor scanner ext. to use RenderContext
Change-Id: I31e4ea09b3a7bd65e589481c4c128275a8a7c1b7
Diffstat (limited to 'extensions')
-rw-r--r--extensions/source/scanner/grid.cxx110
-rw-r--r--extensions/source/scanner/sanedlg.cxx139
2 files changed, 132 insertions, 117 deletions
diff --git a/extensions/source/scanner/grid.cxx b/extensions/source/scanner/grid.cxx
index 682839b85570..6fa2dc7b88bc 100644
--- a/extensions/source/scanner/grid.cxx
+++ b/extensions/source/scanner/grid.cxx
@@ -50,10 +50,10 @@ class GridWindow : public vcl::Window
return (maPos.X() < rComp.maPos.X());
}
- void draw(vcl::Window& rWin, const BitmapEx& rBitmapEx)
+ void draw(vcl::RenderContext& rRenderContext, const BitmapEx& rBitmapEx)
{
- const Point aOffset(rWin.PixelToLogic(Point(mnOffX, mnOffY)));
- rWin.DrawBitmapEx(maPos - aOffset, rBitmapEx);
+ const Point aOffset(rRenderContext.PixelToLogic(Point(mnOffX, mnOffY)));
+ rRenderContext.DrawBitmapEx(maPos - aOffset, rBitmapEx);
}
bool isHit(vcl::Window& rWin, const Point& rPos)
@@ -100,10 +100,10 @@ class GridWindow : public vcl::Window
double findMaxX();
double findMaxY();
- void drawGrid();
- void drawOriginal();
- void drawNew();
- void drawHandles();
+ void drawGrid(vcl::RenderContext& rRenderContext);
+ void drawOriginal(vcl::RenderContext& rRenderContext);
+ void drawNew(vcl::RenderContext& rRenderContext);
+ void drawHandles(vcl::RenderContext& rRenderContext);
void computeExtremes();
static void computeChunk( double fMin, double fMax, double& fChunkOut, double& fMinChunkOut );
@@ -116,7 +116,7 @@ class GridWindow : public vcl::Window
void onResize();
virtual void Resize() SAL_OVERRIDE;
virtual Size GetOptimalSize() const SAL_OVERRIDE;
- void drawLine( double x1, double y1, double x2, double y2 );
+ void drawLine(vcl::RenderContext& rRenderContext, double x1, double y1, double x2, double y2);
public:
GridWindow(vcl::Window* pParent);
void Init(double* pXValues, double* pYValues, int nValues, bool bCutValues, const BitmapEx &rMarkerBitmap);
@@ -336,9 +336,9 @@ void GridWindow::transform( const Point& rOriginal, double& x, double& y )
y = ( m_aGridArea.Bottom() - rOriginal.Y() ) * (m_fMaxY - m_fMinY) / (double)nHeight + m_fMinY;
}
-void GridWindow::drawLine( double x1, double y1, double x2, double y2 )
+void GridWindow::drawLine(vcl::RenderContext& rRenderContext, double x1, double y1, double x2, double y2 )
{
- DrawLine( transform( x1, y1 ), transform( x2, y2 ) );
+ rRenderContext.DrawLine(transform(x1, y1), transform(x2, y2));
}
void GridWindow::computeChunk( double fMin, double fMax, double& fChunkOut, double& fMinChunkOut )
@@ -455,87 +455,89 @@ void GridWindow::setBoundings(double fMinX, double fMinY, double fMaxX, double f
computeChunk( m_fMinY, m_fMaxY, m_fChunkY, m_fMinChunkY );
}
-void GridWindow::drawGrid()
+void GridWindow::drawGrid(vcl::RenderContext& rRenderContext)
{
char pBuf[256];
- SetLineColor( Color( COL_BLACK ) );
+ rRenderContext.SetLineColor(Color(COL_BLACK));
// draw vertical lines
- for( double fX = m_fMinChunkX; fX < m_fMaxX; fX += m_fChunkX )
+ for (double fX = m_fMinChunkX; fX < m_fMaxX; fX += m_fChunkX)
{
- drawLine( fX, m_fMinY, fX, m_fMaxY );
+ drawLine(rRenderContext, fX, m_fMinY, fX, m_fMaxY);
// draw tickmarks
- Point aPt = transform( fX, m_fMinY );
- std::sprintf( pBuf, "%g", fX );
- OUString aMark( pBuf, strlen(pBuf), osl_getThreadTextEncoding() );
- Size aTextSize( GetTextWidth( aMark ), GetTextHeight() );
- aPt.X() -= aTextSize.Width()/2;
- aPt.Y() += aTextSize.Height()/2;
- DrawText( aPt, aMark );
+ Point aPt = transform(fX, m_fMinY);
+ std::sprintf(pBuf, "%g", fX);
+ OUString aMark(pBuf, strlen(pBuf), osl_getThreadTextEncoding());
+ Size aTextSize(rRenderContext.GetTextWidth(aMark), rRenderContext.GetTextHeight());
+ aPt.X() -= aTextSize.Width() / 2;
+ aPt.Y() += aTextSize.Height() / 2;
+ rRenderContext.DrawText(aPt, aMark);
}
// draw horizontal lines
- for( double fY = m_fMinChunkY; fY < m_fMaxY; fY += m_fChunkY )
+ for (double fY = m_fMinChunkY; fY < m_fMaxY; fY += m_fChunkY)
{
- drawLine( m_fMinX, fY, m_fMaxX, fY );
+ drawLine(rRenderContext, m_fMinX, fY, m_fMaxX, fY);
// draw tickmarks
- Point aPt = transform( m_fMinX, fY );
- std::sprintf( pBuf, "%g", fY );
- OUString aMark( pBuf, strlen(pBuf), osl_getThreadTextEncoding() );
- Size aTextSize( GetTextWidth( aMark ), GetTextHeight() );
+ Point aPt = transform(m_fMinX, fY);
+ std::sprintf(pBuf, "%g", fY);
+ OUString aMark(pBuf, strlen(pBuf), osl_getThreadTextEncoding());
+ Size aTextSize(rRenderContext.GetTextWidth(aMark), rRenderContext.GetTextHeight());
aPt.X() -= aTextSize.Width() + 2;
- aPt.Y() -= aTextSize.Height()/2;
- DrawText( aPt, aMark );
+ aPt.Y() -= aTextSize.Height() / 2;
+ rRenderContext.DrawText(aPt, aMark);
}
// draw boundings
- drawLine( m_fMinX, m_fMinY, m_fMaxX, m_fMinY );
- drawLine( m_fMinX, m_fMaxY, m_fMaxX, m_fMaxY );
- drawLine( m_fMinX, m_fMinY, m_fMinX, m_fMaxY );
- drawLine( m_fMaxX, m_fMinY, m_fMaxX, m_fMaxY );
+ drawLine(rRenderContext, m_fMinX, m_fMinY, m_fMaxX, m_fMinY);
+ drawLine(rRenderContext, m_fMinX, m_fMaxY, m_fMaxX, m_fMaxY);
+ drawLine(rRenderContext, m_fMinX, m_fMinY, m_fMinX, m_fMaxY);
+ drawLine(rRenderContext, m_fMaxX, m_fMinY, m_fMaxX, m_fMaxY);
}
-void GridWindow::drawOriginal()
+void GridWindow::drawOriginal(vcl::RenderContext& rRenderContext)
{
- if( m_nValues && m_pXValues && m_pOrigYValues )
+ if (m_nValues && m_pXValues && m_pOrigYValues)
{
- SetLineColor( Color( COL_RED ) );
- for( int i = 0; i < m_nValues-1; i++ )
+ rRenderContext.SetLineColor(Color(COL_RED));
+ for (int i = 0; i < m_nValues - 1; i++)
{
- drawLine( m_pXValues[ i ], m_pOrigYValues[ i ],
- m_pXValues[ i+1 ], m_pOrigYValues[ i+1 ] );
+ drawLine(rRenderContext,
+ m_pXValues[i], m_pOrigYValues[i],
+ m_pXValues[i + 1], m_pOrigYValues[i + 1]);
}
}
}
-void GridWindow::drawNew()
+void GridWindow::drawNew(vcl::RenderContext& rRenderContext)
{
- if( m_nValues && m_pXValues && m_pNewYValues )
+ if (m_nValues && m_pXValues && m_pNewYValues)
{
- SetClipRegion(vcl::Region(m_aGridArea));
- SetLineColor( Color( COL_YELLOW ) );
- for( int i = 0; i < m_nValues-1; i++ )
+ rRenderContext.SetClipRegion(vcl::Region(m_aGridArea));
+ rRenderContext.SetLineColor(Color(COL_YELLOW));
+ for (int i = 0; i < m_nValues - 1; i++)
{
- drawLine( m_pXValues[ i ], m_pNewYValues[ i ],
- m_pXValues[ i+1 ], m_pNewYValues[ i+1 ] );
+ drawLine(rRenderContext,
+ m_pXValues[i], m_pNewYValues[i],
+ m_pXValues[i + 1], m_pNewYValues[i + 1]);
}
- SetClipRegion();
+ rRenderContext.SetClipRegion();
}
}
-void GridWindow::drawHandles()
+void GridWindow::drawHandles(vcl::RenderContext& rRenderContext)
{
for(sal_uInt32 i(0L); i < m_aHandles.size(); i++)
{
- m_aHandles[i].draw(*this, m_aMarkerBitmap);
+ m_aHandles[i].draw(rRenderContext, m_aMarkerBitmap);
}
}
-void GridWindow::Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect )
+void GridWindow::Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect)
{
Window::Paint(rRenderContext, rRect);
- drawGrid();
- drawOriginal();
- drawNew();
- drawHandles();
+ drawGrid(rRenderContext);
+ drawOriginal(rRenderContext);
+ drawNew(rRenderContext);
+ drawHandles(rRenderContext);
}
void GridWindow::MouseMove( const MouseEvent& rEvt )
diff --git a/extensions/source/scanner/sanedlg.cxx b/extensions/source/scanner/sanedlg.cxx
index 8ebcf690112b..3d743a3ca6bd 100644
--- a/extensions/source/scanner/sanedlg.cxx
+++ b/extensions/source/scanner/sanedlg.cxx
@@ -50,7 +50,7 @@ private:
bool mbDragDrawn;
bool mbIsDragging;
- void DrawRectangles(Point& rUL, Point& rBR);
+ void DrawRectangles(vcl::RenderContext& rRenderContext, Point& rUL, Point& rBR);
public:
ScanPreview(vcl::Window* pParent, WinBits nStyle)
: Window(pParent, nStyle)
@@ -62,16 +62,23 @@ public:
, mbIsDragging(false)
{
}
- virtual ~ScanPreview() { disposeOnce(); }
+
+ virtual ~ScanPreview()
+ {
+ disposeOnce();
+ }
+
virtual void dispose() SAL_OVERRIDE
{
mpParentDialog.clear();
vcl::Window::dispose();
}
+
void Init(SaneDlg *pParent)
{
mpParentDialog = pParent;
}
+
void ResetForNewScanner()
{
maTopLeft = Point();
@@ -79,15 +86,27 @@ public:
maMinTopLeft = Point();
maMaxBottomRight = Point(PREVIEW_WIDTH, PREVIEW_HEIGHT);
}
- void EnableDrag() { mbDragEnable = true; }
- void DisableDrag() { mbDragEnable = false; }
- bool IsDragEnabled() { return mbDragEnable; }
- virtual void Paint(vcl::RenderContext& /*rRenderContext*/, const Rectangle& rRect) SAL_OVERRIDE;
+
+ void EnableDrag()
+ {
+ mbDragEnable = true;
+ }
+ void DisableDrag()
+ {
+ mbDragEnable = false;
+ }
+ bool IsDragEnabled()
+ {
+ return mbDragEnable;
+ }
+
+ virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE;
virtual void MouseButtonDown(const MouseEvent& rMEvt) SAL_OVERRIDE;
virtual void MouseMove(const MouseEvent& rMEvt) SAL_OVERRIDE;
virtual void MouseButtonUp(const MouseEvent& rMEvt) SAL_OVERRIDE;
Point GetPixelPos(const Point& rIn) const;
Point GetLogicPos(const Point& rIn) const;
+
void GetPreviewLogicRect(Point& rTopLeft, Point &rBottomRight) const
{
rTopLeft = GetLogicPos(maTopLeft);
@@ -127,17 +146,16 @@ public:
{
maTopLeft = GetPixelPos(rTopLeft);
maBottomRight = GetPixelPos(rBottomRight);
- maPreviewRect = Rectangle( maTopLeft,
- Size( maBottomRight.X() - maTopLeft.X(),
- maBottomRight.Y() - maTopLeft.Y() )
- );
+ maPreviewRect = Rectangle(maTopLeft,
+ Size(maBottomRight.X() - maTopLeft.X(),
+ maBottomRight.Y() - maTopLeft.Y()));
}
void SetPreviewMaxRect(const Point& rTopLeft, const Point &rBottomRight)
{
maMinTopLeft = rTopLeft;
maMaxBottomRight = rBottomRight;
}
- void DrawDrag();
+ void DrawDrag(vcl::RenderContext& rRenderContext);
void UpdatePreviewBounds();
void SetBitmap(SvStream &rStream)
{
@@ -233,14 +251,10 @@ SaneDlg::SaneDlg( vcl::Window* pParent, Sane& rSane, bool bScanEnabled ) :
maOldLink = mrSane.SetReloadOptionsHdl( LINK( this, SaneDlg, ReloadSaneOptionsHdl ) );
mpOptionBox->SetNodeBitmaps(get<FixedImage>("plus")->GetImage(),
- get<FixedImage>("minus")->GetImage());
- mpOptionBox->SetStyle( mpOptionBox->GetStyle()|
- WB_HASLINES |
- WB_HASBUTTONS |
- WB_NOINITIALSELECTION |
- WB_HASBUTTONSATROOT |
- WB_HASLINESATROOT
- );
+ get<FixedImage>("minus")->GetImage());
+ mpOptionBox->SetStyle(mpOptionBox->GetStyle() |
+ WB_HASLINES | WB_HASBUTTONS | WB_NOINITIALSELECTION |
+ WB_HASBUTTONSATROOT | WB_HASLINESATROOT);
}
SaneDlg::~SaneDlg()
@@ -250,7 +264,7 @@ SaneDlg::~SaneDlg()
void SaneDlg::dispose()
{
- mrSane.SetReloadOptionsHdl( maOldLink );
+ mrSane.SetReloadOptionsHdl(maOldLink);
mpOKButton.clear();
mpCancelButton.clear();
mpDeviceInfoButton.clear();
@@ -811,22 +825,22 @@ IMPL_LINK( SaneDlg, ModifyHdl, Edit*, pEdit )
else if( pEdit == mpTopField )
{
mpPreview->ChangePreviewLogicTopLeftY(mpTopField->GetValue());
- mpPreview->DrawDrag();
+ mpPreview->Invalidate();
}
else if( pEdit == mpLeftField )
{
mpPreview->ChangePreviewLogicTopLeftX(mpLeftField->GetValue());
- mpPreview->DrawDrag();
+ mpPreview->Invalidate();
}
else if( pEdit == mpBottomField )
{
mpPreview->ChangePreviewLogicBottomRightY(mpBottomField->GetValue());
- mpPreview->DrawDrag();
+ mpPreview->Invalidate();
}
else if( pEdit == mpRightField )
{
mpPreview->ChangePreviewLogicBottomRightX(mpRightField->GetValue());
- mpPreview->DrawDrag();
+ mpPreview->Invalidate();
}
}
return 0;
@@ -918,18 +932,17 @@ void ScanPreview::UpdatePreviewBounds()
void ScanPreview::Paint(vcl::RenderContext& rRenderContext, const Rectangle& rRect)
{
Window::Paint(rRenderContext, rRect);
- SetMapMode(MAP_APPFONT);
- SetFillColor( Color( COL_WHITE ) );
- SetLineColor( Color( COL_WHITE ) );
- DrawRect( Rectangle( Point( 0, 0 ),
- Size( PREVIEW_WIDTH, PREVIEW_HEIGHT ) ) );
- SetMapMode( MapMode( MAP_PIXEL ) );
+ rRenderContext.SetMapMode(MAP_APPFONT);
+ rRenderContext.SetFillColor(Color(COL_WHITE));
+ rRenderContext.SetLineColor(Color(COL_WHITE));
+ rRenderContext.DrawRect(Rectangle(Point(0, 0),
+ Size(PREVIEW_WIDTH, PREVIEW_HEIGHT)));
+ rRenderContext.SetMapMode(MapMode(MAP_PIXEL));
// check for sane values
- DrawBitmap( maPreviewRect.TopLeft(), maPreviewRect.GetSize(),
- maPreviewBitmap );
+ rRenderContext.DrawBitmap(maPreviewRect.TopLeft(), maPreviewRect.GetSize(), maPreviewBitmap);
mbDragDrawn = false;
- DrawDrag();
+ DrawDrag(rRenderContext);
}
void SaneDlg::DisableOption()
@@ -1102,7 +1115,7 @@ void ScanPreview::MouseMove(const MouseEvent& rMEvt)
maTopLeft.Y() = maBottomRight.Y();
maBottomRight.Y() = nSwap;
}
- DrawDrag();
+ Invalidate();
mpParentDialog->UpdateScanArea(false);
}
Window::MouseMove( rMEvt );
@@ -1188,7 +1201,7 @@ void ScanPreview::MouseButtonDown( const MouseEvent& rMEvt )
if( mbIsDragging )
{
SetPointerPosPixel( aMousePixel );
- DrawDrag();
+ Invalidate();
}
Window::MouseButtonDown( rMEvt );
}
@@ -1204,51 +1217,51 @@ void ScanPreview::MouseButtonUp( const MouseEvent& rMEvt )
Window::MouseButtonUp( rMEvt );
}
-void ScanPreview::DrawRectangles( Point& rUL, Point& rBR )
+void ScanPreview::DrawRectangles(vcl::RenderContext& rRenderContext, Point& rUL, Point& rBR)
{
int nMiddleX, nMiddleY;
Point aBL, aUR;
- aUR = Point( rBR.X(), rUL.Y() );
- aBL = Point( rUL.X(), rBR.Y() );
- nMiddleX = ( rBR.X() - rUL.X() ) / 2 + rUL.X();
- nMiddleY = ( rBR.Y() - rUL.Y() ) / 2 + rUL.Y();
-
- DrawLine( rUL, aBL );
- DrawLine( aBL, rBR );
- DrawLine( rBR, aUR );
- DrawLine( aUR, rUL );
- DrawRect( Rectangle( rUL, Size( RECT_SIZE_PIX,RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( aBL, Size( RECT_SIZE_PIX, -RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( rBR, Size( -RECT_SIZE_PIX, -RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( aUR, Size( -RECT_SIZE_PIX, RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( Point( nMiddleX - RECT_SIZE_PIX/2, rUL.Y() ), Size( RECT_SIZE_PIX, RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( Point( nMiddleX - RECT_SIZE_PIX/2, rBR.Y() ), Size( RECT_SIZE_PIX, -RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( Point( rUL.X(), nMiddleY - RECT_SIZE_PIX/2 ), Size( RECT_SIZE_PIX, RECT_SIZE_PIX ) ) );
- DrawRect( Rectangle( Point( rBR.X(), nMiddleY - RECT_SIZE_PIX/2 ), Size( -RECT_SIZE_PIX, RECT_SIZE_PIX ) ) );
+ aUR = Point(rBR.X(), rUL.Y());
+ aBL = Point(rUL.X(), rBR.Y());
+ nMiddleX = (rBR.X() - rUL.X()) / 2 + rUL.X();
+ nMiddleY = (rBR.Y() - rUL.Y()) / 2 + rUL.Y();
+
+ rRenderContext.DrawLine(rUL, aBL);
+ rRenderContext.DrawLine(aBL, rBR);
+ rRenderContext.DrawLine(rBR, aUR);
+ rRenderContext.DrawLine(aUR, rUL);
+ rRenderContext.DrawRect(Rectangle(rUL, Size(RECT_SIZE_PIX,RECT_SIZE_PIX)));
+ rRenderContext.DrawRect(Rectangle(aBL, Size(RECT_SIZE_PIX, -RECT_SIZE_PIX)));
+ rRenderContext.DrawRect(Rectangle(rBR, Size(-RECT_SIZE_PIX, -RECT_SIZE_PIX)));
+ rRenderContext.DrawRect(Rectangle(aUR, Size(-RECT_SIZE_PIX, RECT_SIZE_PIX )));
+ rRenderContext.DrawRect(Rectangle(Point(nMiddleX - RECT_SIZE_PIX / 2, rUL.Y()), Size(RECT_SIZE_PIX, RECT_SIZE_PIX)));
+ rRenderContext.DrawRect(Rectangle(Point(nMiddleX - RECT_SIZE_PIX / 2, rBR.Y()), Size(RECT_SIZE_PIX, -RECT_SIZE_PIX)));
+ rRenderContext.DrawRect(Rectangle(Point(rUL.X(), nMiddleY - RECT_SIZE_PIX / 2), Size(RECT_SIZE_PIX, RECT_SIZE_PIX)));
+ rRenderContext.DrawRect(Rectangle(Point(rBR.X(), nMiddleY - RECT_SIZE_PIX / 2), Size(-RECT_SIZE_PIX, RECT_SIZE_PIX)));
}
-void ScanPreview::DrawDrag()
+void ScanPreview::DrawDrag(vcl::RenderContext& rRenderContext)
{
static Point aLastUL, aLastBR;
- if( ! mbDragEnable )
+ if (!mbDragEnable)
return;
- RasterOp eROP = GetRasterOp();
- SetRasterOp( ROP_INVERT );
- SetMapMode( MapMode( MAP_PIXEL ) );
+ RasterOp eROP = rRenderContext.GetRasterOp();
+ rRenderContext.SetRasterOp(ROP_INVERT);
+ rRenderContext.SetMapMode(MapMode(MAP_PIXEL));
- if( mbDragDrawn )
- DrawRectangles( aLastUL, aLastBR );
+ if (mbDragDrawn)
+ DrawRectangles(rRenderContext, aLastUL, aLastBR);
aLastUL = maTopLeft;
aLastBR = maBottomRight;
- DrawRectangles( maTopLeft, maBottomRight );
+ DrawRectangles(rRenderContext, maTopLeft, maBottomRight);
mbDragDrawn = true;
- SetRasterOp( eROP );
- SetMapMode(MAP_APPFONT);
+ rRenderContext.SetRasterOp(eROP);
+ rRenderContext.SetMapMode(MAP_APPFONT);
}
Point ScanPreview::GetPixelPos( const Point& rIn) const