| // Copyright 2013 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/pwg_encoder/bitmap_image.h" |
| |
| #include "base/containers/span.h" |
| |
| namespace pwg_encoder { |
| |
| BitmapImage::BitmapImage(const gfx::Size& size, Colorspace colorspace) |
| : size_(size), |
| colorspace_(colorspace), |
| data_(base::HeapArray<uint32_t>::Uninit(size.GetArea())) {} |
| |
| BitmapImage::~BitmapImage() = default; |
| |
| base::span<uint32_t> BitmapImage::pixels() { |
| return data_; |
| } |
| |
| base::span<const uint32_t> BitmapImage::GetRow(size_t row, bool flip_y) const { |
| size_t actual_row = flip_y ? size_.height() - 1 - row : row; |
| return data_.subspan(size_.width() * actual_row, size_.width()); |
| } |
| |
| static_assert(BitmapImage::channels() * sizeof(uint8_t) == sizeof(uint32_t), |
| "Underlying storage type of `BitmapImage` is conceptually tied " |
| "to the raster being 4 channels"); |
| |
| } // namespace pwg_encoder |