1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
21 #include "tmpdevice.hxx"
23 #include <vcl/window.hxx>
26 // Allows for font and color changes. The original settings will be restored
28 // It's main purpose is to allow for the "const" in the 'OutputDevice'
29 // argument in the 'Arrange' functions and restore changes made in the 'Draw'
31 // Usually a MapMode of 1/100th mm will be used.
33 SmTmpDevice::SmTmpDevice(OutputDevice
&rTheDev
, bool bUseMap100th_mm
) :
36 rOutDev
.Push( PushFlags::FONT
| PushFlags::MAPMODE
|
37 PushFlags::LINECOLOR
| PushFlags::FILLCOLOR
| PushFlags::TEXTCOLOR
);
38 if (bUseMap100th_mm
&& MAP_100TH_MM
!= rOutDev
.GetMapMode().GetMapUnit())
40 SAL_WARN("starmath", "incorrect MapMode?");
41 rOutDev
.SetMapMode( MAP_100TH_MM
); //format for 100% always
46 Color
SmTmpDevice::Impl_GetColor( const Color
& rColor
)
48 ColorData nNewCol
= rColor
.GetColor();
49 if (COL_AUTO
== nNewCol
)
51 if (OUTDEV_PRINTER
== rOutDev
.GetOutDevType())
55 Color
aBgCol( rOutDev
.GetBackground().GetColor() );
56 if (OUTDEV_WINDOW
== rOutDev
.GetOutDevType())
57 aBgCol
= static_cast<vcl::Window
&>(rOutDev
).GetDisplayBackground().GetColor();
59 nNewCol
= SM_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR
).nColor
;
61 Color
aTmpColor( nNewCol
);
62 if (aBgCol
.IsDark() && aTmpColor
.IsDark())
64 else if (aBgCol
.IsBright() && aTmpColor
.IsBright())
68 return Color( nNewCol
);
72 void SmTmpDevice::SetFont(const vcl::Font
&rNewFont
)
74 rOutDev
.SetFont( rNewFont
);
75 rOutDev
.SetTextColor( Impl_GetColor( rNewFont
.GetColor() ) );
78 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */