// Copyright 2022 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CORE_FXGE_CALCULATE_PITCH_H_ #define CORE_FXGE_CALCULATE_PITCH_H_ #include <stdint.h> #include <optional> namespace fxge { // Returns the bytes between successive rows of an image where rows are aligned // on a byte boundary and there is no additional padding beyond that, or nullopt // if the result can not fit in a uint32_t. std::optional<uint32_t> CalculatePitch8(uint32_t bits_per_component, uint32_t components_per_pixel, int width_in_pixels); // Returns the bytes between successive rows of an image where rows are aligned // on a 32-bit word boundary and there is no additional padding beyond that, or // nullopt if the result can not fit in a uint32_t. std::optional<uint32_t> CalculatePitch32(int bits_per_pixel, int width_in_pixels); // Same as above, but terminate if the result can not fit in a uint32_t. uint32_t CalculatePitch8OrDie(uint32_t bits_per_component, uint32_t components_per_pixel, int width_in_pixels); uint32_t CalculatePitch32OrDie(int bits_per_pixel, int width_in_pixels); } // namespace fxge #endif // CORE_FXGE_CALCULATE_PITCH_H_