29 , mFncGetPixel(nullptr)
30 , mFncSetPixel(nullptr)
56 return pBackendCapabilities->mbSupportsBitmap32;
156 if (
mpBuffer && fX >= 0.0 && fY >= 0.0)
158 const sal_Int64 nX(static_cast<sal_Int64>(fX));
159 const sal_Int64 nY(static_cast<sal_Int64>(fY));
167 sal_Int16 nDeltaX((fX - (nX + 0.5)) * 255.0);
168 sal_Int16 nDeltaY((fY - (nY + 0.5)) * 255.0);
195 if (nDeltaX && nIndX >= 0 && nIndX < mpBuffer->
mnWidth)
203 if (nDeltaY && nIndY >= 0 && nIndY < mpBuffer->mnHeight)
211 if (nDeltaX && nDeltaY && nIndX >= 0 && nIndY >= 0 && nIndX < mpBuffer->mnWidth
212 && nIndY < mpBuffer->mnHeight)
218 if (aXCol != aRetval)
220 aRetval.
Merge(aXCol, 255 - nDeltaX);
226 aYCol.
Merge(aXYCol, 255 - nDeltaX);
230 if (aRetval != aYCol)
232 aRetval.
Merge(aYCol, 255 - nDeltaY);
247 if (
mpBuffer && fX >= 0.0 && fY >= 0.0)
249 const sal_Int32 nX(static_cast<sal_Int32>(fX));
250 const sal_Int32 nY(static_cast<sal_Int32>(fY));
264 return BitmapColor(pScanline[nX >> 3] & (1 << (7 - (nX & 7))) ? 1 : 0);
273 rByte |= 1 << (7 - (nX & 7));
275 rByte &= ~(1 << (7 - (nX & 7)));
281 return BitmapColor(pScanline[nX >> 3] & (1 << (nX & 7)) ? 1 : 0);
290 rByte |= 1 << (nX & 7);
292 rByte &= ~(1 << (nX & 7));
298 return BitmapColor((pScanline[nX >> 1] >> (nX & 1 ? 0 : 4)) & 0x0f);
309 rByte |= (rBitmapColor.
GetIndex() & 0x0f);
314 rByte |= (rBitmapColor.
GetIndex() << 4);
321 return BitmapColor((pScanline[nX >> 1] >> (nX & 1 ? 4 : 0)) & 0x0f);
332 rByte |= (rBitmapColor.
GetIndex() << 4);
337 rByte |= (rBitmapColor.
GetIndex() & 0x0f);
350 pScanline[nX] = rBitmapColor.
GetIndex();
358 pScanline = pScanline + nX * 3;
359 aBitmapColor.
SetBlue(*pScanline++);
360 aBitmapColor.
SetGreen(*pScanline++);
361 aBitmapColor.
SetRed(*pScanline);
369 pScanline = pScanline + nX * 3;
370 *pScanline++ = rBitmapColor.
GetBlue();
371 *pScanline++ = rBitmapColor.
GetGreen();
372 *pScanline = rBitmapColor.
GetRed();
380 pScanline = pScanline + nX * 3;
381 aBitmapColor.
SetRed(*pScanline++);
382 aBitmapColor.
SetGreen(*pScanline++);
383 aBitmapColor.
SetBlue(*pScanline);
391 pScanline = pScanline + nX * 3;
392 *pScanline++ = rBitmapColor.
GetRed();
393 *pScanline++ = rBitmapColor.
GetGreen();
394 *pScanline = rBitmapColor.
GetBlue();
400 pScanline = pScanline + nX * 4;
416 pScanline = pScanline + (nX << 2) + 1;
417 aBitmapColor.
SetBlue(*pScanline++);
418 aBitmapColor.
SetGreen(*pScanline++);
419 aBitmapColor.
SetRed(*pScanline);
427 pScanline = pScanline + nX * 4;
430 *pScanline++ = alpha;
439 pScanline = pScanline + (nX << 2);
441 *pScanline++ = rBitmapColor.
GetBlue();
442 *pScanline++ = rBitmapColor.
GetGreen();
443 *pScanline = rBitmapColor.
GetRed();
449 pScanline = pScanline + nX * 4;
465 pScanline = pScanline + (nX << 2) + 1;
466 aBitmapColor.
SetRed(*pScanline++);
467 aBitmapColor.
SetGreen(*pScanline++);
468 aBitmapColor.
SetBlue(*pScanline);
476 pScanline = pScanline + nX * 4;
479 *pScanline++ = alpha;
488 pScanline = pScanline + (nX << 2);
490 *pScanline++ = rBitmapColor.
GetRed();
491 *pScanline++ = rBitmapColor.
GetGreen();
492 *pScanline = rBitmapColor.
GetBlue();
498 pScanline = pScanline + nX * 4;
514 pScanline = pScanline + (nX << 2);
515 aBitmapColor.
SetBlue(*pScanline++);
516 aBitmapColor.
SetGreen(*pScanline++);
517 aBitmapColor.
SetRed(*pScanline);
525 pScanline = pScanline + nX * 4;
537 pScanline = pScanline + (nX << 2);
538 *pScanline++ = rBitmapColor.
GetBlue();
539 *pScanline++ = rBitmapColor.
GetGreen();
540 *pScanline++ = rBitmapColor.
GetRed();
547 pScanline = pScanline + nX * 4;
563 pScanline = pScanline + (nX << 2);
564 aBitmapColor.
SetRed(*pScanline++);
565 aBitmapColor.
SetGreen(*pScanline++);
566 aBitmapColor.
SetBlue(*pScanline);
574 pScanline = pScanline + nX * 4;
586 pScanline = pScanline + (nX << 2);
587 *pScanline++ = rBitmapColor.
GetRed();
588 *pScanline++ = rBitmapColor.
GetGreen();
589 *pScanline++ = rBitmapColor.
GetBlue();
sal_uInt8 premultiply(sal_uInt8 c, sal_uInt8 a)
static BitmapColor GetPixelForN1BitMsbPal(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static void SetPixelForN32BitTcBgra(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static BitmapColor GetPixelForN4BitLsnPal(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
sal_uInt8 GetIndex() const
sal_uInt8 GetAlpha() const
static BitmapColor GetPixelForN32BitTcRgbx(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static BitmapColor GetPixelForN32BitTcXbgr(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
void SetBlue(sal_uInt8 nBlue)
static void SetPixelForN32BitTcArgb(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static FncSetPixel SetPixelFunction(ScanlineFormat nFormat)
BitmapAccessMode mnAccessMode
void Merge(const Color &rMergeColor, sal_uInt8 cTransparency)
BitmapColor GetColorWithFallback(double fY, double fX, const BitmapColor &rFallback) const
Get the color at coordinates fY, fX; if outside, return rFallback.
virtual ~BitmapReadAccess() override
static void SetPixelForN32BitTcXbgr(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
sal_uInt8 unpremultiply(sal_uInt8 c, sal_uInt8 a)
const std::shared_ptr< SalBitmap > & ImplGetSalBitmap() const
void SetColorFor32Bit(const BitmapColor &rColor, sal_uInt8 *pPixel) const
static BitmapColor GetPixelForN32BitTcXrgb(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static void SetPixelForN1BitMsbPal(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
BitmapReadAccess(Bitmap &rBitmap, BitmapAccessMode nMode=BitmapAccessMode::Read)
BitmapColor GetInterpolatedColorWithFallback(double fY, double fX, const BitmapColor &rFallback) const
Get the interpolated color at coordinates fY, fX; if outside, return rFallback.
void(* FncSetPixel)(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static void SetPixelForN32BitTcBgrx(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static void SetPixelForN32BitTcMask(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
sal_uInt8 GetBlue() const
static void SetPixelForN4BitMsnPal(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
ImplSVData * ImplGetSVData()
static BitmapColor GetPixelForN4BitMsnPal(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static BitmapColor GetPixelForN24BitTcBgr(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static void SetPixelForN1BitLsbPal(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static BitmapColor GetPixelForN32BitTcBgrx(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
BitmapColor GetColor(tools::Long nY, tools::Long nX) const
virtual std::shared_ptr< vcl::BackendCapabilities > GetBackendCapabilities()
static BitmapColor GetPixelForN32BitTcMask(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static BitmapColor GetPixelForN32BitTcRgba(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
void SetRed(sal_uInt8 nRed)
static void SetPixelForN32BitTcRgbx(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static BitmapColor GetPixelForN1BitLsbPal(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
bool Bitmap32IsPreMultipled()
static BitmapColor GetPixelForN32BitTcAbgr(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
const sal_uInt8 * ConstScanline
static BitmapColor GetPixelForN8BitPal(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
sal_uInt8 GetGreen() const
static FncGetPixel GetPixelFunction(ScanlineFormat nFormat)
static BitmapColor GetPixelForN32BitTcBgra(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static void SetPixelForN32BitTcXrgb(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
void SetGreen(sal_uInt8 nGreen)
static BitmapColor GetPixelForN24BitTcRgb(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
void GetColorFor32Bit(BitmapColor &rColor, const sal_uInt8 *pPixel) const
ScanlineFormat RemoveScanline(ScanlineFormat nFormat)
BitmapColor(* FncGetPixel)(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static void SetPixelForN8BitPal(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static void SetPixelForN4BitLsnPal(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static void SetPixelForN24BitTcRgb(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static void SetPixelForN24BitTcBgr(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static BitmapColor GetPixelForN32BitTcArgb(ConstScanline pScanline, tools::Long nX, const ColorMask &rMask)
static void SetPixelForN32BitTcAbgr(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)
static void SetPixelForN32BitTcRgba(Scanline pScanline, tools::Long nX, const BitmapColor &rBitmapColor, const ColorMask &rMask)