Move write APIs from CFX_DIBBase to CFX_DIBitmap Moves the GetWritableBuffer() and GetWritableScanline() APIs from CFX_DIBBase to CFX_DIBitmap. Callers that need writable pixel memory always have a CFX_DIBitmap, rather than just a CFX_DIBBase, so we can remove these APIs from CFX_DIBBase and make CFX_DIBBase read-only. Bug: pdfium:2034 Change-Id: Iaeda5786b88edd16a9a7d4276f5a7f661d4778a6 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/108372 Reviewed-by: Nigi <nigi@chromium.org> Commit-Queue: K. Moon <kmoon@chromium.org>
diff --git a/core/fxge/dib/cfx_dibbase.h b/core/fxge/dib/cfx_dibbase.h index 589e20d..bfe4534 100644 --- a/core/fxge/dib/cfx_dibbase.h +++ b/core/fxge/dib/cfx_dibbase.h
@@ -33,17 +33,7 @@ static constexpr uint32_t kPaletteSize = 256; virtual pdfium::span<const uint8_t> GetBuffer() const; - pdfium::span<uint8_t> GetWritableBuffer() { - pdfium::span<const uint8_t> src = GetBuffer(); - return {const_cast<uint8_t*>(src.data()), src.size()}; - } - virtual pdfium::span<const uint8_t> GetScanline(int line) const = 0; - pdfium::span<uint8_t> GetWritableScanline(int line) { - pdfium::span<const uint8_t> src = GetScanline(line); - return {const_cast<uint8_t*>(src.data()), src.size()}; - } - virtual bool SkipToScanline(int line, PauseIndicatorIface* pPause) const; virtual size_t GetEstimatedImageMemoryBurden() const;
diff --git a/core/fxge/dib/cfx_dibitmap.h b/core/fxge/dib/cfx_dibitmap.h index 5abf34b..206ebcc 100644 --- a/core/fxge/dib/cfx_dibitmap.h +++ b/core/fxge/dib/cfx_dibitmap.h
@@ -13,6 +13,7 @@ #include "core/fxge/dib/cfx_dibbase.h" #include "core/fxge/dib/fx_dib.h" #include "third_party/abseil-cpp/absl/types/optional.h" +#include "third_party/base/span.h" class CFX_DIBitmap final : public CFX_DIBBase { public: @@ -37,6 +38,16 @@ pdfium::span<const uint8_t> GetScanline(int line) const override; size_t GetEstimatedImageMemoryBurden() const override; + pdfium::span<uint8_t> GetWritableBuffer() { + pdfium::span<const uint8_t> src = GetBuffer(); + return {const_cast<uint8_t*>(src.data()), src.size()}; + } + + pdfium::span<uint8_t> GetWritableScanline(int line) { + pdfium::span<const uint8_t> src = GetScanline(line); + return {const_cast<uint8_t*>(src.data()), src.size()}; + } + void TakeOver(RetainPtr<CFX_DIBitmap>&& pSrcBitmap); bool ConvertFormat(FXDIB_Format format); void Clear(uint32_t color);