// SPDX-FileCopyrightText: 2026 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include class ImagePreprocessorBuffer { protected: std::vector buffer; public: explicit ImagePreprocessorBuffer(size_t npixels); virtual ~ImagePreprocessorBuffer() = default; // Standard CPU operation std::vector &getBuffer(); const std::vector &getBuffer() const; int32_t &operator[](size_t i); const int32_t &operator[](size_t i) const; size_t size() const; int32_t *data(); const int32_t *data() const; // GPU operations (overriden in ImagePreprocessorBufferGPU virtual int32_t *getGPUBuffer(); virtual const int32_t *getGPUBuffer() const; };