Kaydet (Commit) e7ed9523 authored tarafından Noel Grandin's avatar Noel Grandin

use VirtualDevice/BitmapEx in CreateColorDropper

part of making Bitmap an internal detail of vcl

Change-Id: Ieec5df8976ee0e117a2388dda8ef86b018274915
Reviewed-on: https://gerrit.libreoffice.org/49666Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 6b4d3815
...@@ -255,7 +255,7 @@ class SVX_DLLPUBLIC SdrHdlColor : public SdrHdl ...@@ -255,7 +255,7 @@ class SVX_DLLPUBLIC SdrHdlColor : public SdrHdl
SVX_DLLPRIVATE virtual void CreateB2dIAObject() override; SVX_DLLPRIVATE virtual void CreateB2dIAObject() override;
// help functions // help functions
SVX_DLLPRIVATE Bitmap CreateColorDropper(Color aCol); SVX_DLLPRIVATE BitmapEx CreateColorDropper(Color aCol);
SVX_DLLPRIVATE static Color GetLuminance(const Color& rCol); SVX_DLLPRIVATE static Color GetLuminance(const Color& rCol);
public: public:
......
...@@ -1114,12 +1114,12 @@ void SdrHdlColor::CreateB2dIAObject() ...@@ -1114,12 +1114,12 @@ void SdrHdlColor::CreateB2dIAObject()
rtl::Reference< sdr::overlay::OverlayManager > xManager = rPageWindow.GetOverlayManager(); rtl::Reference< sdr::overlay::OverlayManager > xManager = rPageWindow.GetOverlayManager();
if (xManager.is()) if (xManager.is())
{ {
Bitmap aBmpCol(CreateColorDropper(aMarkerColor)); BitmapEx aBmpCol(CreateColorDropper(aMarkerColor));
basegfx::B2DPoint aPosition(aPos.X(), aPos.Y()); basegfx::B2DPoint aPosition(aPos.X(), aPos.Y());
sdr::overlay::OverlayObject* pNewOverlayObject = new sdr::overlay::OverlayObject* pNewOverlayObject = new
sdr::overlay::OverlayBitmapEx( sdr::overlay::OverlayBitmapEx(
aPosition, aPosition,
BitmapEx(aBmpCol), aBmpCol,
static_cast<sal_uInt16>(aBmpCol.GetSizePixel().Width() - 1) >> 1, static_cast<sal_uInt16>(aBmpCol.GetSizePixel().Width() - 1) >> 1,
static_cast<sal_uInt16>(aBmpCol.GetSizePixel().Height() - 1) >> 1 static_cast<sal_uInt16>(aBmpCol.GetSizePixel().Height() - 1) >> 1
); );
...@@ -1135,49 +1135,44 @@ void SdrHdlColor::CreateB2dIAObject() ...@@ -1135,49 +1135,44 @@ void SdrHdlColor::CreateB2dIAObject()
} }
} }
Bitmap SdrHdlColor::CreateColorDropper(Color aCol) BitmapEx SdrHdlColor::CreateColorDropper(Color aCol)
{ {
// get the Bitmap // get the Bitmap
Bitmap aRetval(aMarkerSize, 24); VclPtr<VirtualDevice> pWrite(VclPtr<VirtualDevice>::Create());
aRetval.Erase(aCol); pWrite->SetOutputSizePixel(aMarkerSize);
pWrite->SetBackground(aCol);
// get write access pWrite->Erase();
std::unique_ptr<BitmapWriteAccess> pWrite(aRetval.AcquireWriteAccess());
DBG_ASSERT(pWrite, "Got NO write access to a new Bitmap!"); // draw outer border
sal_Int32 nWidth = aMarkerSize.Width();
if(pWrite) sal_Int32 nHeight = aMarkerSize.Height();
{
// draw outer border pWrite->SetLineColor(Color(COL_LIGHTGRAY));
sal_Int32 nWidth = aMarkerSize.Width(); pWrite->DrawLine(Point(0, 0), Point(0, nHeight - 1));
sal_Int32 nHeight = aMarkerSize.Height(); pWrite->DrawLine(Point(1, 0), Point(nWidth - 1, 0));
pWrite->SetLineColor(Color(COL_GRAY));
pWrite->SetLineColor(Color(COL_LIGHTGRAY)); pWrite->DrawLine(Point(1, nHeight - 1), Point(nWidth - 1, nHeight - 1));
pWrite->DrawLine(Point(0, 0), Point(0, nHeight - 1)); pWrite->DrawLine(Point(nWidth - 1, 1), Point(nWidth - 1, nHeight - 2));
pWrite->DrawLine(Point(1, 0), Point(nWidth - 1, 0));
pWrite->SetLineColor(Color(COL_GRAY)); // draw lighter UpperLeft
pWrite->DrawLine(Point(1, nHeight - 1), Point(nWidth - 1, nHeight - 1)); const Color aLightColor(
pWrite->DrawLine(Point(nWidth - 1, 1), Point(nWidth - 1, nHeight - 2)); static_cast<sal_uInt8>(::std::min(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetRed()) + sal_Int16(0x0040)), sal_Int16(0x00ff))),
static_cast<sal_uInt8>(::std::min(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetGreen()) + sal_Int16(0x0040)), sal_Int16(0x00ff))),
// draw lighter UpperLeft static_cast<sal_uInt8>(::std::min(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetBlue()) + sal_Int16(0x0040)), sal_Int16(0x00ff))));
const Color aLightColor( pWrite->SetLineColor(aLightColor);
static_cast<sal_uInt8>(::std::min(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetRed()) + sal_Int16(0x0040)), sal_Int16(0x00ff))), pWrite->DrawLine(Point(1, 1), Point(1, nHeight - 2));
static_cast<sal_uInt8>(::std::min(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetGreen()) + sal_Int16(0x0040)), sal_Int16(0x00ff))), pWrite->DrawLine(Point(2, 1), Point(nWidth - 2, 1));
static_cast<sal_uInt8>(::std::min(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetBlue()) + sal_Int16(0x0040)), sal_Int16(0x00ff))));
pWrite->SetLineColor(aLightColor); // draw darker LowerRight
pWrite->DrawLine(Point(1, 1), Point(1, nHeight - 2)); const Color aDarkColor(
pWrite->DrawLine(Point(2, 1), Point(nWidth - 2, 1)); static_cast<sal_uInt8>(::std::max(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetRed()) - sal_Int16(0x0040)), sal_Int16(0x0000))),
static_cast<sal_uInt8>(::std::max(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetGreen()) - sal_Int16(0x0040)), sal_Int16(0x0000))),
// draw darker LowerRight static_cast<sal_uInt8>(::std::max(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetBlue()) - sal_Int16(0x0040)), sal_Int16(0x0000))));
const Color aDarkColor( pWrite->SetLineColor(aDarkColor);
static_cast<sal_uInt8>(::std::max(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetRed()) - sal_Int16(0x0040)), sal_Int16(0x0000))), pWrite->DrawLine(Point(2, nHeight - 2), Point(nWidth - 2, nHeight - 2));
static_cast<sal_uInt8>(::std::max(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetGreen()) - sal_Int16(0x0040)), sal_Int16(0x0000))), pWrite->DrawLine(Point(nWidth - 2, 2), Point(nWidth - 2, nHeight - 3));
static_cast<sal_uInt8>(::std::max(static_cast<sal_Int16>(static_cast<sal_Int16>(aCol.GetBlue()) - sal_Int16(0x0040)), sal_Int16(0x0000))));
pWrite->SetLineColor(aDarkColor); return pWrite->GetBitmapEx(Point(0,0), aMarkerSize);
pWrite->DrawLine(Point(2, nHeight - 2), Point(nWidth - 2, nHeight - 2));
pWrite->DrawLine(Point(nWidth - 2, 2), Point(nWidth - 2, nHeight - 3));
}
return aRetval;
} }
Color SdrHdlColor::GetLuminance(const Color& rCol) Color SdrHdlColor::GetLuminance(const Color& rCol)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment