Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
f64588a9
Kaydet (Commit)
f64588a9
authored
Haz 03, 2015
tarafından
Tomaž Vajngerl
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
tdf#91677 fix flickering ruler
Change-Id: Ia14be98fbfd46871b2ac9bd42a07951d86722a8a
üst
cd5d3c40
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
116 additions
and
141 deletions
+116
-141
ruler.hxx
include/svtools/ruler.hxx
+4
-5
ruler.cxx
svtools/source/control/ruler.cxx
+112
-136
No files found.
include/svtools/ruler.hxx
Dosyayı görüntüle @
f64588a9
...
...
@@ -663,9 +663,10 @@ private:
SvtRulerAccessible
*
pAccContext
;
SVT_DLLPRIVATE
void
ImplVDrawLine
(
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
);
SVT_DLLPRIVATE
void
ImplVDrawRect
(
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
);
SVT_DLLPRIVATE
void
ImplVDrawText
(
long
nX
,
long
nY
,
const
OUString
&
rText
,
long
nMin
=
LONG_MIN
,
long
nMax
=
LONG_MAX
);
SVT_DLLPRIVATE
void
ImplVDrawLine
(
vcl
::
RenderContext
&
rRenderContext
,
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
);
SVT_DLLPRIVATE
void
ImplVDrawRect
(
vcl
::
RenderContext
&
rRenderContext
,
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
);
SVT_DLLPRIVATE
void
ImplVDrawText
(
vcl
::
RenderContext
&
rRenderContext
,
long
nX
,
long
nY
,
const
OUString
&
rText
,
long
nMin
=
LONG_MIN
,
long
nMax
=
LONG_MAX
);
SVT_DLLPRIVATE
void
ImplDrawTicks
(
vcl
::
RenderContext
&
rRenderContext
,
long
nMin
,
long
nMax
,
long
nStart
,
long
nVirTop
,
long
nVirBottom
);
...
...
@@ -702,8 +703,6 @@ private:
SVT_DLLPRIVATE
void
ImplDrag
(
const
Point
&
rPos
);
SVT_DLLPRIVATE
void
ImplEndDrag
();
DECL_DLLPRIVATE_LINK
(
ImplUpdateHdl
,
void
*
);
Ruler
(
const
Ruler
&
)
SAL_DELETED_FUNCTION
;
Ruler
&
operator
=
(
const
Ruler
&
)
SAL_DELETED_FUNCTION
;
...
...
svtools/source/control/ruler.cxx
Dosyayı görüntüle @
f64588a9
...
...
@@ -45,7 +45,6 @@ using namespace ::com::sun::star::accessibility;
#define RULER_VAR_SIZE 8
#define RULER_UPDATE_LINES 0x01
#define RULER_UPDATE_DRAW 0x02
#define RULER_CLIP 150
...
...
@@ -343,7 +342,7 @@ void Ruler::dispose()
Window
::
dispose
();
}
void
Ruler
::
ImplVDrawLine
(
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
)
void
Ruler
::
ImplVDrawLine
(
vcl
::
RenderContext
&
rRenderContext
,
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
)
{
if
(
nX1
<
-
RULER_CLIP
)
{
...
...
@@ -360,12 +359,12 @@ void Ruler::ImplVDrawLine( long nX1, long nY1, long nX2, long nY2 )
}
if
(
mnWinStyle
&
WB_HORZ
)
maVirDev
->
DrawLine
(
Point
(
nX1
,
nY1
),
Point
(
nX2
,
nY2
)
);
rRenderContext
.
DrawLine
(
Point
(
nX1
,
nY1
),
Point
(
nX2
,
nY2
)
);
else
maVirDev
->
DrawLine
(
Point
(
nY1
,
nX1
),
Point
(
nY2
,
nX2
)
);
rRenderContext
.
DrawLine
(
Point
(
nY1
,
nX1
),
Point
(
nY2
,
nX2
)
);
}
void
Ruler
::
ImplVDrawRect
(
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
)
void
Ruler
::
ImplVDrawRect
(
vcl
::
RenderContext
&
rRenderContext
,
long
nX1
,
long
nY1
,
long
nX2
,
long
nY2
)
{
if
(
nX1
<
-
RULER_CLIP
)
{
...
...
@@ -382,15 +381,15 @@ void Ruler::ImplVDrawRect( long nX1, long nY1, long nX2, long nY2 )
}
if
(
mnWinStyle
&
WB_HORZ
)
maVirDev
->
DrawRect
(
Rectangle
(
nX1
,
nY1
,
nX2
,
nY2
)
);
rRenderContext
.
DrawRect
(
Rectangle
(
nX1
,
nY1
,
nX2
,
nY2
)
);
else
maVirDev
->
DrawRect
(
Rectangle
(
nY1
,
nX1
,
nY2
,
nX2
)
);
rRenderContext
.
DrawRect
(
Rectangle
(
nY1
,
nX1
,
nY2
,
nX2
)
);
}
void
Ruler
::
ImplVDrawText
(
long
nX
,
long
nY
,
const
OUString
&
rText
,
long
nMin
,
long
nMax
)
void
Ruler
::
ImplVDrawText
(
vcl
::
RenderContext
&
rRenderContext
,
long
nX
,
long
nY
,
const
OUString
&
rText
,
long
nMin
,
long
nMax
)
{
Rectangle
aRect
;
maVirDev
->
GetTextBoundRect
(
aRect
,
rText
);
rRenderContext
.
GetTextBoundRect
(
aRect
,
rText
);
long
nShiftX
=
(
aRect
.
GetWidth
()
/
2
)
+
aRect
.
Left
();
long
nShiftY
=
(
aRect
.
GetHeight
()
/
2
)
+
aRect
.
Top
();
...
...
@@ -398,9 +397,9 @@ void Ruler::ImplVDrawText( long nX, long nY, const OUString& rText, long nMin, l
if
(
(
nX
>
-
RULER_CLIP
)
&&
(
nX
<
mnVirWidth
+
RULER_CLIP
)
&&
(
nX
<
nMax
-
nShiftX
)
&&
(
nX
>
nMin
+
nShiftX
)
)
{
if
(
mnWinStyle
&
WB_HORZ
)
maVirDev
->
DrawText
(
Point
(
nX
-
nShiftX
,
nY
-
nShiftY
),
rText
);
rRenderContext
.
DrawText
(
Point
(
nX
-
nShiftX
,
nY
-
nShiftY
),
rText
);
else
maVirDev
->
DrawText
(
Point
(
nY
-
nShiftX
,
nX
-
nShiftY
),
rText
);
rRenderContext
.
DrawText
(
Point
(
nY
-
nShiftX
,
nX
-
nShiftY
),
rText
);
}
}
...
...
@@ -463,6 +462,7 @@ void Ruler::ImplInvertLines(vcl::RenderContext& rRenderContext, bool bErase)
Invert
(
aRect
);
}
}
mnUpdateFlags
=
0
;
}
}
...
...
@@ -486,7 +486,7 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
double
nAcceptanceDelta
=
0.0001
;
Size
aPixSize
=
maVirDev
->
LogicToPixel
(
Size
(
nTick4
,
nTick4
),
maMapMode
);
Size
aPixSize
=
rRenderContext
.
LogicToPixel
(
Size
(
nTick4
,
nTick4
),
maMapMode
);
if
(
mnUnitIndex
==
RULER_UNIT_CHAR
)
{
...
...
@@ -518,11 +518,11 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
aFont
.
SetOrientation
(
2700
);
else
aFont
.
SetOrientation
(
900
);
maVirDev
->
SetFont
(
aFont
);
rRenderContext
.
SetFont
(
aFont
);
nTickWidth
=
aPixSize
.
Height
();
}
long
nMaxWidth
=
maVirDev
->
PixelToLogic
(
Size
(
mpData
->
nPageWidth
,
0
),
maMapMode
).
Width
();
long
nMaxWidth
=
rRenderContext
.
PixelToLogic
(
Size
(
mpData
->
nPageWidth
,
0
),
maMapMode
).
Width
();
if
(
nMaxWidth
<
0
)
nMaxWidth
=
-
nMaxWidth
;
...
...
@@ -532,7 +532,7 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
nMaxWidth
/=
aImplRulerUnitTab
[
mnUnitIndex
].
nTickUnit
;
OUString
aNumString
=
OUString
::
number
(
nMaxWidth
);
long
nTxtWidth
=
GetTextWidth
(
aNumString
);
long
nTxtWidth
=
rRenderContext
.
GetTextWidth
(
aNumString
);
const
long
nTextOff
=
4
;
// Determine the number divider for ruler drawn numbers - means which numbers
...
...
@@ -566,7 +566,7 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
}
nTick4
=
nOrgTick4
*
nMulti
;
aPixSize
=
maVirDev
->
LogicToPixel
(
Size
(
nTick4
,
nTick4
),
maMapMode
);
aPixSize
=
rRenderContext
.
LogicToPixel
(
Size
(
nTick4
,
nTick4
),
maMapMode
);
if
(
mnWinStyle
&
WB_HORZ
)
nTickWidth
=
aPixSize
.
Width
();
else
...
...
@@ -576,7 +576,7 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
}
else
{
maVirDev
->
SetLineColor
(
rRenderContext
.
GetSettings
().
GetStyleSettings
().
GetShadowColor
());
rRenderContext
.
SetLineColor
(
rRenderContext
.
GetSettings
().
GetStyleSettings
().
GetShadowColor
());
}
if
(
!
bNoTicks
)
...
...
@@ -593,11 +593,11 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
Size
nTickGapSize
;
nTickGapSize
=
maVirDev
->
LogicToPixel
(
Size
(
nTickCount
,
nTickCount
),
maMapMode
);
nTickGapSize
=
rRenderContext
.
LogicToPixel
(
Size
(
nTickCount
,
nTickCount
),
maMapMode
);
long
nTickGap1
=
mnWinStyle
&
WB_HORZ
?
nTickGapSize
.
Width
()
:
nTickGapSize
.
Height
();
nTickGapSize
=
maVirDev
->
LogicToPixel
(
Size
(
nTick2
,
nTick2
),
maMapMode
);
nTickGapSize
=
rRenderContext
.
LogicToPixel
(
Size
(
nTick2
,
nTick2
),
maMapMode
);
long
nTickGap2
=
mnWinStyle
&
WB_HORZ
?
nTickGapSize
.
Width
()
:
nTickGapSize
.
Height
();
nTickGapSize
=
maVirDev
->
LogicToPixel
(
Size
(
nTick3
,
nTick3
),
maMapMode
);
nTickGapSize
=
rRenderContext
.
LogicToPixel
(
Size
(
nTick3
,
nTick3
),
maMapMode
);
long
nTickGap3
=
mnWinStyle
&
WB_HORZ
?
nTickGapSize
.
Width
()
:
nTickGapSize
.
Height
();
while
(((
nStart
-
n
)
>=
nMin
)
||
((
nStart
+
n
)
<=
nMax
))
...
...
@@ -611,13 +611,13 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
if
((
mpData
->
nMargin1Style
&
RULER_STYLE_INVISIBLE
)
||
(
mpData
->
nMargin1
!=
0
))
{
aNumString
=
"0"
;
ImplVDrawText
(
nStart
,
nCenter
,
aNumString
);
ImplVDrawText
(
rRenderContext
,
nStart
,
nCenter
,
aNumString
);
}
}
}
else
{
aPixSize
=
maVirDev
->
LogicToPixel
(
Size
(
nTick
,
nTick
),
maMapMode
);
aPixSize
=
rRenderContext
.
LogicToPixel
(
Size
(
nTick
,
nTick
),
maMapMode
);
if
(
mnWinStyle
&
WB_HORZ
)
n
=
aPixSize
.
Width
();
...
...
@@ -636,21 +636,23 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
aNumString
=
OUString
::
number
(
nTick
/
aImplRulerUnitTab
[
mnUnitIndex
].
nTickUnit
);
long
nHorizontalLocation
=
nStart
+
n
;
ImplVDrawText
(
nHorizontalLocation
,
nCenter
,
aNumString
,
nMin
,
nMax
);
ImplVDrawText
(
rRenderContext
,
nHorizontalLocation
,
nCenter
,
aNumString
,
nMin
,
nMax
);
if
(
nMin
<
nHorizontalLocation
&&
nHorizontalLocation
<
nMax
)
{
ImplVDrawRect
(
nHorizontalLocation
,
nBottom
,
nHorizontalLocation
+
DPIOffset
,
nBottom
-
1
*
nScale
);
ImplVDrawRect
(
nHorizontalLocation
,
nTop
,
nHorizontalLocation
+
DPIOffset
,
nTop
+
1
*
nScale
);
ImplVDrawRect
(
rRenderContext
,
nHorizontalLocation
,
nBottom
,
nHorizontalLocation
+
DPIOffset
,
nBottom
-
1
*
nScale
);
ImplVDrawRect
(
rRenderContext
,
nHorizontalLocation
,
nTop
,
nHorizontalLocation
+
DPIOffset
,
nTop
+
1
*
nScale
);
}
nHorizontalLocation
=
nStart
-
n
;
ImplVDrawText
(
nHorizontalLocation
,
nCenter
,
aNumString
,
nMin
,
nMax
);
ImplVDrawText
(
rRenderContext
,
nHorizontalLocation
,
nCenter
,
aNumString
,
nMin
,
nMax
);
if
(
nMin
<
nHorizontalLocation
&&
nHorizontalLocation
<
nMax
)
{
ImplVDrawRect
(
nHorizontalLocation
,
nBottom
,
nHorizontalLocation
+
DPIOffset
,
nBottom
-
1
*
nScale
);
ImplVDrawRect
(
nHorizontalLocation
,
nTop
,
nHorizontalLocation
+
DPIOffset
,
nTop
+
1
*
nScale
);
ImplVDrawRect
(
rRenderContext
,
nHorizontalLocation
,
nBottom
,
nHorizontalLocation
+
DPIOffset
,
nBottom
-
1
*
nScale
);
ImplVDrawRect
(
rRenderContext
,
nHorizontalLocation
,
nTop
,
nHorizontalLocation
+
DPIOffset
,
nTop
+
1
*
nScale
);
}
}
// Tick/Tick2 - Output (Strokes)
...
...
@@ -679,10 +681,10 @@ void Ruler::ImplDrawTicks(vcl::RenderContext& rRenderContext, long nMin, long nM
nT
=
nStart
+
n
;
if
(
nT
<
nMax
)
ImplVDrawRect
(
nT
,
nT1
,
nT
+
DPIOffset
,
nT2
);
ImplVDrawRect
(
rRenderContext
,
nT
,
nT1
,
nT
+
DPIOffset
,
nT2
);
nT
=
nStart
-
n
;
if
(
nT
>
nMin
)
ImplVDrawRect
(
nT
,
nT1
,
nT
+
DPIOffset
,
nT2
);
ImplVDrawRect
(
rRenderContext
,
nT
,
nT1
,
nT
+
DPIOffset
,
nT2
);
}
}
}
...
...
@@ -713,21 +715,21 @@ void Ruler::ImplDrawBorders(vcl::RenderContext& rRenderContext, long nMin, long
{
if
((
n2
-
n1
)
>
3
)
{
maVirDev
->
SetLineColor
();
maVirDev
->
SetFillColor
(
rStyleSettings
.
GetFaceColor
());
ImplVDrawRect
(
n1
,
nVirTop
,
n2
,
nVirBottom
);
rRenderContext
.
SetLineColor
();
rRenderContext
.
SetFillColor
(
rStyleSettings
.
GetFaceColor
());
ImplVDrawRect
(
rRenderContext
,
n1
,
nVirTop
,
n2
,
nVirBottom
);
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetLightColor
());
ImplVDrawLine
(
n1
+
1
,
nVirTop
,
n1
+
1
,
nVirBottom
);
ImplVDrawLine
(
n1
,
nVirTop
,
n2
,
nVirTop
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetLightColor
());
ImplVDrawLine
(
rRenderContext
,
n1
+
1
,
nVirTop
,
n1
+
1
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n1
,
nVirTop
,
n2
,
nVirTop
);
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
n1
,
nVirTop
,
n1
,
nVirBottom
);
ImplVDrawLine
(
n1
,
nVirBottom
,
n2
,
nVirBottom
);
ImplVDrawLine
(
n2
-
1
,
nVirTop
,
n2
-
1
,
nVirBottom
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
rRenderContext
,
n1
,
nVirTop
,
n1
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n1
,
nVirBottom
,
n2
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n2
-
1
,
nVirTop
,
n2
-
1
,
nVirBottom
);
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetDarkShadowColor
());
ImplVDrawLine
(
n2
,
nVirTop
,
n2
,
nVirBottom
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetDarkShadowColor
());
ImplVDrawLine
(
rRenderContext
,
n2
,
nVirTop
,
n2
,
nVirBottom
);
if
(
mpData
->
pBorders
[
i
].
nStyle
&
RULER_BORDER_VARIABLE
)
{
...
...
@@ -739,18 +741,18 @@ void Ruler::ImplDrawBorders(vcl::RenderContext& rRenderContext, long nMin, long
long
nTemp4
=
nTemp2
+
RULER_VAR_SIZE
-
1
;
long
nTempY
=
nTemp2
;
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetLightColor
());
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetLightColor
());
while
(
nTempY
<=
nTemp4
)
{
ImplVDrawLine
(
nTemp1
,
nTempY
,
nTemp3
,
nTempY
);
ImplVDrawLine
(
rRenderContext
,
nTemp1
,
nTempY
,
nTemp3
,
nTempY
);
nTempY
+=
2
;
}
nTempY
=
nTemp2
+
1
;
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
while
(
nTempY
<=
nTemp4
)
{
ImplVDrawLine
(
nTemp1
,
nTempY
,
nTemp3
,
nTempY
);
ImplVDrawLine
(
rRenderContext
,
nTemp1
,
nTempY
,
nTemp3
,
nTempY
);
nTempY
+=
2
;
}
}
...
...
@@ -760,31 +762,31 @@ void Ruler::ImplDrawBorders(vcl::RenderContext& rRenderContext, long nMin, long
{
if
(
n2
-
n1
>
RULER_VAR_SIZE
+
10
)
{
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
n1
+
4
,
nVirTop
+
3
,
n1
+
4
,
nVirBottom
-
3
);
ImplVDrawLine
(
n2
-
5
,
nVirTop
+
3
,
n2
-
5
,
nVirBottom
-
3
);
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetLightColor
());
ImplVDrawLine
(
n1
+
5
,
nVirTop
+
3
,
n1
+
5
,
nVirBottom
-
3
);
ImplVDrawLine
(
n2
-
4
,
nVirTop
+
3
,
n2
-
4
,
nVirBottom
-
3
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
rRenderContext
,
n1
+
4
,
nVirTop
+
3
,
n1
+
4
,
nVirBottom
-
3
);
ImplVDrawLine
(
rRenderContext
,
n2
-
5
,
nVirTop
+
3
,
n2
-
5
,
nVirBottom
-
3
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetLightColor
());
ImplVDrawLine
(
rRenderContext
,
n1
+
5
,
nVirTop
+
3
,
n1
+
5
,
nVirBottom
-
3
);
ImplVDrawLine
(
rRenderContext
,
n2
-
4
,
nVirTop
+
3
,
n2
-
4
,
nVirBottom
-
3
);
}
}
}
else
{
n
=
n1
+
((
n2
-
n1
)
/
2
);
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
if
(
mpData
->
pBorders
[
i
].
nStyle
&
RULER_BORDER_SNAP
)
ImplVDrawLine
(
n
,
nVirTop
,
n
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n
,
nVirTop
,
n
,
nVirBottom
);
else
if
(
mpData
->
pBorders
[
i
].
nStyle
&
RULER_BORDER_MARGIN
)
ImplVDrawLine
(
n
,
nVirTop
,
n
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n
,
nVirTop
,
n
,
nVirBottom
);
else
{
ImplVDrawLine
(
n
-
1
,
nVirTop
,
n
-
1
,
nVirBottom
);
ImplVDrawLine
(
n
+
1
,
nVirTop
,
n
+
1
,
nVirBottom
);
maVirDev
->
SetLineColor
();
maVirDev
->
SetFillColor
(
rStyleSettings
.
GetWindowColor
());
ImplVDrawRect
(
n
,
nVirTop
,
n
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n
-
1
,
nVirTop
,
n
-
1
,
nVirBottom
);
ImplVDrawLine
(
rRenderContext
,
n
+
1
,
nVirTop
,
n
+
1
,
nVirBottom
);
rRenderContext
.
SetLineColor
();
rRenderContext
.
SetFillColor
(
rStyleSettings
.
GetWindowColor
());
ImplVDrawRect
(
rRenderContext
,
n
,
nVirTop
,
n
,
nVirBottom
);
}
}
}
...
...
@@ -798,9 +800,9 @@ void Ruler::ImplDrawIndent(vcl::RenderContext& rRenderContext, const Polygon& rP
if
(
nStyle
&
RULER_STYLE_INVISIBLE
)
return
;
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetDarkShadowColor
());
maVirDev
->
SetFillColor
(
bIsHit
?
rStyleSettings
.
GetDarkShadowColor
()
:
rStyleSettings
.
GetWorkspaceColor
());
maVirDev
->
DrawPolygon
(
rPoly
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetDarkShadowColor
());
rRenderContext
.
SetFillColor
(
bIsHit
?
rStyleSettings
.
GetDarkShadowColor
()
:
rStyleSettings
.
GetWorkspaceColor
());
rRenderContext
.
DrawPolygon
(
rPoly
);
}
void
Ruler
::
ImplDrawIndents
(
vcl
::
RenderContext
&
rRenderContext
,
long
nMin
,
long
nMax
,
long
nVirTop
,
long
nVirBottom
)
...
...
@@ -827,8 +829,8 @@ void Ruler::ImplDrawIndents(vcl::RenderContext& rRenderContext, long nMin, long
if
(
nIndentStyle
==
RULER_INDENT_BORDER
)
{
const
StyleSettings
&
rStyleSettings
=
rRenderContext
.
GetSettings
().
GetStyleSettings
();
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
n
,
nVirTop
+
1
,
n
,
nVirBottom
-
1
);
rRenderContext
.
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
rRenderContext
,
n
,
nVirTop
+
1
,
n
,
nVirBottom
-
1
);
}
else
if
(
nIndentStyle
==
RULER_INDENT_BOTTOM
)
{
...
...
@@ -1020,7 +1022,7 @@ void Ruler::ImplDrawTab(vcl::RenderContext& rRenderContext, const Point& rPos, s
ImplDrawRulerTab
(
rRenderContext
,
rPos
,
nStyle
,
GetStyle
());
}
void
Ruler
::
ImplDrawTabs
(
vcl
::
RenderContext
&
/*rRenderContext*/
,
long
nMin
,
long
nMax
,
long
nVirTop
,
long
nVirBottom
)
void
Ruler
::
ImplDrawTabs
(
vcl
::
RenderContext
&
rRenderContext
,
long
nMin
,
long
nMax
,
long
nVirTop
,
long
nVirBottom
)
{
for
(
size_t
i
=
0
;
i
<
mpData
->
pTabs
.
size
();
i
++
)
{
...
...
@@ -1032,7 +1034,7 @@ void Ruler::ImplDrawTabs(vcl::RenderContext& /*rRenderContext*/, long nMin, long
aPosition
+=
+
mpData
->
nNullVirOff
;
long
nTopBottom
=
(
GetStyle
()
&
WB_RIGHT_ALIGNED
)
?
nVirTop
:
nVirBottom
;
if
(
nMin
<=
aPosition
&&
aPosition
<=
nMax
)
ImplDrawTab
(
*
maVirDev
.
get
()
,
Point
(
aPosition
,
nTopBottom
),
mpData
->
pTabs
[
i
].
nStyle
);
ImplDrawTab
(
rRenderContext
,
Point
(
aPosition
,
nTopBottom
),
mpData
->
pTabs
[
i
].
nStyle
);
}
}
...
...
@@ -1245,8 +1247,8 @@ void Ruler::ImplFormat(vcl::RenderContext& rRenderContext)
// top/bottom border
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
ImplVDrawLine
(
nVirLeft
,
nVirTop
+
1
,
nM1
,
nVirTop
+
1
);
//top left line
ImplVDrawLine
(
nM2
,
nVirTop
+
1
,
nP2
-
1
,
nVirTop
+
1
);
//top right line
ImplVDrawLine
(
*
maVirDev
.
get
(),
nVirLeft
,
nVirTop
+
1
,
nM1
,
nVirTop
+
1
);
//top left line
ImplVDrawLine
(
*
maVirDev
.
get
(),
nM2
,
nVirTop
+
1
,
nP2
-
1
,
nVirTop
+
1
);
//top right line
nVirTop
++
;
nVirBottom
--
;
...
...
@@ -1255,31 +1257,31 @@ void Ruler::ImplFormat(vcl::RenderContext& rRenderContext)
maVirDev
->
SetLineColor
();
maVirDev
->
SetFillColor
(
rStyleSettings
.
GetDialogColor
());
if
(
nM1
>
nVirLeft
)
ImplVDrawRect
(
nP1
,
nVirTop
+
1
,
nM1
,
nVirBottom
);
//left gray rectangle
ImplVDrawRect
(
*
maVirDev
.
get
(),
nP1
,
nVirTop
+
1
,
nM1
,
nVirBottom
);
//left gray rectangle
if
(
nM2
<
nP2
)
ImplVDrawRect
(
nM2
,
nVirTop
+
1
,
nP2
,
nVirBottom
);
//right gray rectangle
ImplVDrawRect
(
*
maVirDev
.
get
(),
nM2
,
nVirTop
+
1
,
nP2
,
nVirBottom
);
//right gray rectangle
if
(
nM2
-
nM1
>
0
)
{
maVirDev
->
SetFillColor
(
rStyleSettings
.
GetWindowColor
());
ImplVDrawRect
(
nM1
+
1
,
nVirTop
,
nM2
-
1
,
nVirBottom
);
//center rectangle
ImplVDrawRect
(
*
maVirDev
.
get
(),
nM1
+
1
,
nVirTop
,
nM2
-
1
,
nVirBottom
);
//center rectangle
}
maVirDev
->
SetLineColor
(
rStyleSettings
.
GetShadowColor
());
if
(
nM1
>
nVirLeft
)
{
ImplVDrawLine
(
nM1
,
nVirTop
+
1
,
nM1
,
nVirBottom
);
//right line of the left rectangle
ImplVDrawLine
(
nP1
,
nVirBottom
,
nM1
,
nVirBottom
);
//bottom line of the left rectangle
ImplVDrawLine
(
*
maVirDev
.
get
(),
nM1
,
nVirTop
+
1
,
nM1
,
nVirBottom
);
//right line of the left rectangle
ImplVDrawLine
(
*
maVirDev
.
get
(),
nP1
,
nVirBottom
,
nM1
,
nVirBottom
);
//bottom line of the left rectangle
if
(
nP1
>=
nVirLeft
)
{
ImplVDrawLine
(
nP1
,
nVirTop
+
1
,
nP1
,
nVirBottom
);
//left line of the left rectangle
ImplVDrawLine
(
nP1
,
nVirBottom
,
nP1
+
1
,
nVirBottom
);
//?
ImplVDrawLine
(
*
maVirDev
.
get
(),
nP1
,
nVirTop
+
1
,
nP1
,
nVirBottom
);
//left line of the left rectangle
ImplVDrawLine
(
*
maVirDev
.
get
(),
nP1
,
nVirBottom
,
nP1
+
1
,
nVirBottom
);
//?
}
}
if
(
nM2
<
nP2
)
{
ImplVDrawLine
(
nM2
,
nVirBottom
,
nP2
-
1
,
nVirBottom
);
//bottom line of the right rectangle
ImplVDrawLine
(
nM2
,
nVirTop
+
1
,
nM2
,
nVirBottom
);
//left line of the right rectangle
ImplVDrawLine
(
*
maVirDev
.
get
(),
nM2
,
nVirBottom
,
nP2
-
1
,
nVirBottom
);
//bottom line of the right rectangle
ImplVDrawLine
(
*
maVirDev
.
get
(),
nM2
,
nVirTop
+
1
,
nM2
,
nVirBottom
);
//left line of the right rectangle
if
(
nP2
<=
nVirRight
+
1
)
ImplVDrawLine
(
nP2
-
1
,
nVirTop
+
1
,
nP2
-
1
,
nVirBottom
);
//right line of the right rectangle
ImplVDrawLine
(
*
maVirDev
.
get
(),
nP2
-
1
,
nVirTop
+
1
,
nP2
-
1
,
nVirBottom
);
//right line of the right rectangle
}
long
nMin
=
nVirLeft
;
...
...
@@ -1298,19 +1300,19 @@ void Ruler::ImplFormat(vcl::RenderContext& rRenderContext)
nMax
--
;
// Draw captions
ImplDrawTicks
(
rRenderContext
,
nMin
,
nMax
,
nStart
,
nVirTop
,
nVirBottom
);
ImplDrawTicks
(
*
maVirDev
.
get
()
,
nMin
,
nMax
,
nStart
,
nVirTop
,
nVirBottom
);
// Draw borders
if
(
!
mpData
->
pBorders
.
empty
())
ImplDrawBorders
(
rRenderContext
,
nVirLeft
,
nP2
,
nVirTop
,
nVirBottom
);
ImplDrawBorders
(
*
maVirDev
.
get
()
,
nVirLeft
,
nP2
,
nVirTop
,
nVirBottom
);
// Draw indents
if
(
!
mpData
->
pIndents
.
empty
())
ImplDrawIndents
(
rRenderContext
,
nVirLeft
,
nP2
,
nVirTop
-
1
,
nVirBottom
+
1
);
ImplDrawIndents
(
*
maVirDev
.
get
()
,
nVirLeft
,
nP2
,
nVirTop
-
1
,
nVirBottom
+
1
);
// Tabs
if
(
!
mpData
->
pTabs
.
empty
())
ImplDrawTabs
(
rRenderContext
,
nVirLeft
,
nP2
,
nVirTop
-
1
,
nVirBottom
+
1
);
ImplDrawTabs
(
*
maVirDev
.
get
()
,
nVirLeft
,
nP2
,
nVirTop
-
1
,
nVirBottom
+
1
);
mbFormat
=
false
;
}
...
...
@@ -1467,7 +1469,7 @@ void Ruler::ImplUpdate( bool bMustCalc )
{
// clear lines in this place so they aren't considered at recalculation
if
(
!
mbFormat
)
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
// set flags
if
(
bMustCalc
)
...
...
@@ -1481,9 +1483,7 @@ void Ruler::ImplUpdate( bool bMustCalc )
// otherwise trigger update
if
(
IsReallyVisible
()
&&
IsUpdateMode
())
{
mnUpdateFlags
|=
RULER_UPDATE_DRAW
;
if
(
!
mnUpdateEvtId
)
mnUpdateEvtId
=
Application
::
PostUserEvent
(
LINK
(
this
,
Ruler
,
ImplUpdateHdl
),
NULL
,
true
);
Invalidate
(
InvalidateFlags
::
NoErase
);
}
}
...
...
@@ -1876,10 +1876,10 @@ bool Ruler::ImplStartDrag( RulerSelection* pHitTest, sal_uInt16 nModifier )
if
(
StartDrag
())
{
// if the handler allows dragging, initialize dragging
Invalidate
();
mbDrag
=
true
;
mnStartDragPos
=
mnDragPos
;
StartTracking
();
Invalidate
(
InvalidateFlags
::
NoErase
);
return
true
;
}
else
...
...
@@ -1946,7 +1946,7 @@ void Ruler::ImplDrag( const Point& rPos )
Drag
();
// and redraw
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
// reset the data as before cancel
*
mpDragData
=
aTempData
;
...
...
@@ -1966,8 +1966,8 @@ void Ruler::ImplDrag( const Point& rPos )
Drag
();
// redraw
if
(
mbFormat
)
Invalidate
();
if
(
mbFormat
)
Invalidate
(
InvalidateFlags
::
NoErase
);
}
}
...
...
@@ -1996,26 +1996,7 @@ void Ruler::ImplEndDrag()
mnStartDragPos
=
0
;
// redraw
Invalidate
();
}
IMPL_LINK_NOARG
(
Ruler
,
ImplUpdateHdl
)
{
mnUpdateEvtId
=
0
;
// what should be updated
if
(
mnUpdateFlags
&
RULER_UPDATE_DRAW
)
{
mnUpdateFlags
=
0
;
Invalidate
();
}
else
if
(
mnUpdateFlags
&
RULER_UPDATE_LINES
)
{
mnUpdateFlags
=
0
;
Invalidate
();
}
return
0
;
Invalidate
(
InvalidateFlags
::
NoErase
);
}
void
Ruler
::
MouseButtonDown
(
const
MouseEvent
&
rMEvt
)
...
...
@@ -2029,8 +2010,7 @@ void Ruler::MouseButtonDown( const MouseEvent& rMEvt )
// update ruler
if
(
mbFormat
)
{
Invalidate
();
mnUpdateFlags
&=
~
RULER_UPDATE_DRAW
;
Invalidate
(
InvalidateFlags
::
NoErase
);
}
if
(
maExtraRect
.
IsInside
(
aMousePos
)
)
...
...
@@ -2090,6 +2070,8 @@ void Ruler::MouseMove( const MouseEvent& rMEvt )
{
PointerStyle
ePtrStyle
=
PointerStyle
::
Arrow
;
mxPreviousHitTest
.
swap
(
mxCurrentHitTest
);
mxCurrentHitTest
.
reset
(
new
RulerSelection
);
maHoverSelection
.
eType
=
RULER_TYPE_DONTKNOW
;
...
...
@@ -2128,19 +2110,17 @@ void Ruler::MouseMove( const MouseEvent& rMEvt )
}
}
if
(
mxPreviousHitTest
.
get
()
!=
NULL
&&
mxPreviousHitTest
->
eType
!=
mxCurrentHitTest
->
eType
)
if
(
mxPreviousHitTest
.
get
()
!=
NULL
&&
mxPreviousHitTest
->
eType
!=
mxCurrentHitTest
->
eType
)
{
mbFormat
=
true
;
}
SetPointer
(
Pointer
(
ePtrStyle
)
);
if
(
mbFormat
)
if
(
mbFormat
)
{
Invalidate
();
mnUpdateFlags
&=
~
RULER_UPDATE_DRAW
;
Invalidate
(
InvalidateFlags
::
NoErase
);
}
mxPreviousHitTest
.
swap
(
mxCurrentHitTest
);
}
void
Ruler
::
Tracking
(
const
TrackingEvent
&
rTEvt
)
...
...
@@ -2189,16 +2169,15 @@ void Ruler::Resize()
nNewHeight
=
0
;
}
mbFormat
=
true
;
// clear lines
bool
bVisible
=
IsReallyVisible
();
if
(
bVisible
&&
!
mpData
->
pLines
.
empty
()
)
{
Invalidate
();
mnUpdateFlags
|=
RULER_UPDATE_LINES
;
if
(
!
mnUpdateEvtId
)
mnUpdateEvtId
=
Application
::
PostUserEvent
(
LINK
(
this
,
Ruler
,
ImplUpdateHdl
),
NULL
,
true
);
Invalidate
(
InvalidateFlags
::
NoErase
);
}
mbFormat
=
true
;
// recalculate some values if the height/width changes
// extra field should always be updated
...
...
@@ -2220,7 +2199,7 @@ void Ruler::Resize()
if
(
bVisible
)
{
if
(
nNewHeight
)
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
else
if
(
mpData
->
bAutoPageWidth
)
{
// only at AutoPageWidth muss we redraw
...
...
@@ -2247,7 +2226,7 @@ void Ruler::Resize()
aRect
.
Right
()
=
RULER_OFF
+
mnVirHeight
;
}
Invalidate
(
aRect
);
Invalidate
(
aRect
,
InvalidateFlags
::
NoErase
);
}
}
...
...
@@ -2339,14 +2318,13 @@ void Ruler::Activate()
// update positionlies - draw is delayed
mnUpdateFlags
|=
RULER_UPDATE_LINES
;
if
(
!
mnUpdateEvtId
)
mnUpdateEvtId
=
Application
::
PostUserEvent
(
LINK
(
this
,
Ruler
,
ImplUpdateHdl
),
NULL
,
true
);
Invalidate
(
InvalidateFlags
::
NoErase
);
}
void
Ruler
::
Deactivate
()
{
// clear positionlines
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
mbActive
=
false
;
}
...
...
@@ -2366,8 +2344,7 @@ bool Ruler::StartDocDrag( const MouseEvent& rMEvt, RulerType eDragType )
// update ruler
if
(
mbFormat
)
{
Invalidate
();
mnUpdateFlags
&=
~
RULER_UPDATE_DRAW
;
Invalidate
(
InvalidateFlags
::
NoErase
);
}
if
(
nMouseClicks
==
1
)
...
...
@@ -2432,8 +2409,7 @@ RulerType Ruler::GetType( const Point& rPos, sal_uInt16* pAryPos )
// update ruler
if
(
IsReallyVisible
()
&&
mbFormat
)
{
Invalidate
();
mnUpdateFlags
&=
~
RULER_UPDATE_DRAW
;
Invalidate
(
InvalidateFlags
::
NoErase
);
}
(
void
)
ImplHitTest
(
rPos
,
&
aHitTest
);
...
...
@@ -2483,7 +2459,7 @@ void Ruler::SetBorderPos( long nOff )
mnBorderOff
=
nOff
;
if
(
IsReallyVisible
()
&&
IsUpdateMode
()
)
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
}
}
}
...
...
@@ -2558,7 +2534,7 @@ void Ruler::SetExtraType( RulerExtra eNewExtraType, sal_uInt16 nStyle )
meExtraType
=
eNewExtraType
;
mnExtraStyle
=
nStyle
;
if
(
IsReallyVisible
()
&&
IsUpdateMode
())
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
}
}
...
...
@@ -2644,7 +2620,7 @@ void Ruler::SetLines( sal_uInt32 aLineArraySize, const RulerLine* pLineArray )
// Delete old lines
if
(
bMustUpdate
)
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
// New data set
if
(
!
aLineArraySize
||
!
pLineArray
)
...
...
@@ -2665,7 +2641,7 @@ void Ruler::SetLines( sal_uInt32 aLineArraySize, const RulerLine* pLineArray )
mpData
->
pLines
.
begin
()
);
if
(
bMustUpdate
)
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
}
}
...
...
@@ -2857,7 +2833,7 @@ RulerUnitData Ruler::GetCurrentRulerUnit() const
void
Ruler
::
DrawTicks
()
{
mbFormat
=
true
;
Invalidate
();
Invalidate
(
InvalidateFlags
::
NoErase
);
}
uno
::
Reference
<
XAccessible
>
Ruler
::
CreateAccessible
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment