Lines 40-45
Link Here
|
40 |
{ |
40 |
{ |
41 |
namespace overlay |
41 |
namespace overlay |
42 |
{ |
42 |
{ |
|
|
43 |
void implExpandRectangle(basegfx::B2IPoint nTopLeftOffset, basegfx::B2IPoint nBottomOffset, Rectangle& rRect) |
44 |
{ |
45 |
rRect.Left() -= nTopLeftOffset.getX(); |
46 |
rRect.Top() -= nTopLeftOffset.getY(); |
47 |
rRect.Right() += nBottomOffset.getX(); |
48 |
rRect.Bottom() += nBottomOffset.getY(); |
49 |
} |
50 |
|
43 |
void OverlayManagerBuffered::ImpPrepareBufferDevice() |
51 |
void OverlayManagerBuffered::ImpPrepareBufferDevice() |
44 |
{ |
52 |
{ |
45 |
// compare size of maBufferDevice with size of visible area |
53 |
// compare size of maBufferDevice with size of visible area |
Lines 91-96
Link Here
|
91 |
const basegfx::B2IPoint aNewMaximum(maBufferRememberedRangePixel.getMaximum() + aIPointDestinationOffsetPixel); |
99 |
const basegfx::B2IPoint aNewMaximum(maBufferRememberedRangePixel.getMaximum() + aIPointDestinationOffsetPixel); |
92 |
maBufferRememberedRangePixel = basegfx::B2IRange(aNewMinimum, aNewMaximum); |
100 |
maBufferRememberedRangePixel = basegfx::B2IRange(aNewMinimum, aNewMaximum); |
93 |
} |
101 |
} |
|
|
102 |
|
103 |
mnTopLeftOffset = basegfx::B2IPoint(0,0); |
104 |
mnBottomRightOffset = basegfx::B2IPoint(0,0); |
94 |
} |
105 |
} |
95 |
} |
106 |
} |
96 |
|
107 |
|
Lines 197-202
Link Here
|
197 |
|
208 |
|
198 |
while(aRegion.GetEnumRects(aRegionHandle, aRegionRectanglePixel)) |
209 |
while(aRegion.GetEnumRects(aRegionHandle, aRegionRectanglePixel)) |
199 |
{ |
210 |
{ |
|
|
211 |
if( mbUseOffset ) |
212 |
{ |
213 |
implExpandRectangle( mnTopLeftOffset, mnBottomRightOffset, aRegionRectanglePixel); |
214 |
aRegionRectanglePixel.Intersection(aBufferDeviceRectanglePixel); |
215 |
} |
216 |
|
200 |
// for each rectangle, save the area |
217 |
// for each rectangle, save the area |
201 |
Point aTopLeft(aRegionRectanglePixel.TopLeft()); |
218 |
Point aTopLeft(aRegionRectanglePixel.TopLeft()); |
202 |
Size aSize(aRegionRectanglePixel.GetSize()); |
219 |
Size aSize(aRegionRectanglePixel.GetSize()); |
Lines 424-430
Link Here
|
424 |
OverlayManager* pOldOverlayManager, |
441 |
OverlayManager* pOldOverlayManager, |
425 |
bool bRefreshWithPreRendering) |
442 |
bool bRefreshWithPreRendering) |
426 |
: OverlayManager(rOutputDevice, pOldOverlayManager), |
443 |
: OverlayManager(rOutputDevice, pOldOverlayManager), |
427 |
mbRefreshWithPreRendering(bRefreshWithPreRendering) |
444 |
mbRefreshWithPreRendering(bRefreshWithPreRendering), |
|
|
445 |
mnTopLeftOffset(0, 0), |
446 |
mnBottomRightOffset(0, 0), |
447 |
mbUseOffset( false ) |
428 |
{ |
448 |
{ |
429 |
// Init timer |
449 |
// Init timer |
430 |
maBufferTimer.SetTimeout(1); |
450 |
maBufferTimer.SetTimeout(1); |
Lines 480-486
Link Here
|
480 |
|
500 |
|
481 |
void OverlayManagerBuffered::invalidateRange(const basegfx::B2DRange& rRange) |
501 |
void OverlayManagerBuffered::invalidateRange(const basegfx::B2DRange& rRange) |
482 |
{ |
502 |
{ |
483 |
if(!rRange.isEmpty()) |
503 |
if(!rRange.isEmpty() && rRange.getWidth() !=0 && rRange.getHeight() != 0) |
484 |
{ |
504 |
{ |
485 |
// buffered output, do not invalidate but use the timer |
505 |
// buffered output, do not invalidate but use the timer |
486 |
// to trigger a timer event for refresh |
506 |
// to trigger a timer event for refresh |
Lines 506-511
Link Here
|
506 |
(sal_Int32)ceil(aDiscreteRange.getMaxX() + fDiscreteOne), |
526 |
(sal_Int32)ceil(aDiscreteRange.getMaxX() + fDiscreteOne), |
507 |
(sal_Int32)ceil(aDiscreteRange.getMaxY() + fDiscreteOne)); |
527 |
(sal_Int32)ceil(aDiscreteRange.getMaxY() + fDiscreteOne)); |
508 |
|
528 |
|
|
|
529 |
mnTopLeftOffset = basegfx::B2IPoint (floor(fDiscreteOne), floor(fDiscreteOne) ); |
530 |
mnBottomRightOffset = basegfx::B2IPoint( ceil(fDiscreteOne), ceil(fDiscreteOne)); |
531 |
|
509 |
maBufferRememberedRangePixel.expand(aTopLeft); |
532 |
maBufferRememberedRangePixel.expand(aTopLeft); |
510 |
maBufferRememberedRangePixel.expand(aBottomRight); |
533 |
maBufferRememberedRangePixel.expand(aBottomRight); |
511 |
} |
534 |
} |
Lines 514-519
Link Here
|
514 |
const basegfx::B2IPoint aTopLeft((sal_Int32)floor(aDiscreteRange.getMinX()), (sal_Int32)floor(aDiscreteRange.getMinY())); |
537 |
const basegfx::B2IPoint aTopLeft((sal_Int32)floor(aDiscreteRange.getMinX()), (sal_Int32)floor(aDiscreteRange.getMinY())); |
515 |
const basegfx::B2IPoint aBottomRight((sal_Int32)ceil(aDiscreteRange.getMaxX()), (sal_Int32)ceil(aDiscreteRange.getMaxY())); |
538 |
const basegfx::B2IPoint aBottomRight((sal_Int32)ceil(aDiscreteRange.getMaxX()), (sal_Int32)ceil(aDiscreteRange.getMaxY())); |
516 |
|
539 |
|
|
|
540 |
mnTopLeftOffset = basegfx::B2IPoint(0,0); |
541 |
mnBottomRightOffset = basegfx::B2IPoint(ceil(aDiscreteRange.getMaxX()) - floor(aDiscreteRange.getMaxX()), |
542 |
ceil(aDiscreteRange.getMaxY()) - floor(aDiscreteRange.getMaxY())); |
517 |
maBufferRememberedRangePixel.expand(aTopLeft); |
543 |
maBufferRememberedRangePixel.expand(aTopLeft); |
518 |
maBufferRememberedRangePixel.expand(aBottomRight); |
544 |
maBufferRememberedRangePixel.expand(aBottomRight); |
519 |
} |
545 |
} |