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
d4b5b8bf
Kaydet (Commit)
d4b5b8bf
authored
May 29, 2013
tarafından
Armin Le Grand
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
i121591 Corrected some transparent printing stuff for windows
üst
8c142809
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
2 deletions
+35
-2
outdev6.cxx
vcl/source/gdi/outdev6.cxx
+8
-2
salgdi_gdiplus.cxx
vcl/win/source/gdi/salgdi_gdiplus.cxx
+27
-0
No files found.
vcl/source/gdi/outdev6.cxx
Dosyayı görüntüle @
d4b5b8bf
...
...
@@ -302,8 +302,14 @@ void OutputDevice::DrawTransparent( const PolyPolygon& rPolyPoly,
const
double
fTransparency
=
0.01
*
nTransparencePercent
;
if
(
mbFillColor
)
{
// draw the transparent polygon
// NOTE: filled polygons are assumed to be drawn as if they were always closed
// #121591#
// CAUTION: Only non printing (pixel-renderer) VCL commands from OutputDevices
// should be used when printing. Normally this is avoided by the printer being
// non-AAed and thus e.g. on WIN GdiPlus calls are not used. It may be necessary
// to add (OUTDEV_PRINTER != meOutDevType) to the entering if statement, thus
// using the fallbacl some lines below (which is not very good, though). For
// now, WinSalGraphics::drawPolyPolygon will detect printer usage and correct
// the wrong mapping (see there for details)
bDrawn
=
mpGraphics
->
DrawPolyPolygon
(
aB2DPolyPolygon
,
fTransparency
,
this
);
}
...
...
vcl/win/source/gdi/salgdi_gdiplus.cxx
Dosyayı görüntüle @
d4b5b8bf
...
...
@@ -178,6 +178,33 @@ bool WinSalGraphics::drawPolyPolygon( const ::basegfx::B2DPolyPolygon& rPolyPoly
aGraphics
.
SetSmoothingMode
(
Gdiplus
::
SmoothingModeNone
);
}
if
(
mbPrinter
)
{
// #121591#
// Normally GdiPlus should not be used for printing at all since printers cannot
// print transparent filled polygon geometry and normally this does not happen
// since OutputDevice::RemoveTransparenciesFromMetaFile is used as preparation
// and no transparent parts should remain for printing. But this can be overriden
// by the user and thus happens. This call can only come (currently) from
// OutputDevice::DrawTransparent, see comments sthere with the same TaskID.
// If it is used, the mapping for the printer is wrong and needs to be corrected. I
// checked that there is *no* transformation set (testcode commented out below) and
// estimated that a stable factor dependent of the printer's DPI is used. Create
// and set a transformation here to correct this
const
Gdiplus
::
REAL
aDpiX
(
aGraphics
.
GetDpiX
());
const
Gdiplus
::
REAL
aDpiY
(
aGraphics
.
GetDpiY
());
// test code to check the current transformation at the graphics device
//Gdiplus::Matrix matrix;
//aGraphics.GetTransform(&matrix);
//Gdiplus::REAL elements[6];
//matrix.GetElements(elements);
Gdiplus
::
Matrix
aPrinterTransform
;
aPrinterTransform
.
Scale
(
Gdiplus
::
REAL
(
100.0
)
/
aDpiX
,
Gdiplus
::
REAL
(
100.0
)
/
aDpiY
);
aGraphics
.
SetTransform
(
&
aPrinterTransform
);
}
aGraphics
.
FillPath
(
&
aTestBrush
,
&
aPath
);
}
...
...
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