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);