1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // Copyright 2015 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef CC_PAINT_DRAW_IMAGE_H_
- #define CC_PAINT_DRAW_IMAGE_H_
- #include "cc/paint/paint_export.h"
- #include "cc/paint/paint_flags.h"
- #include "cc/paint/paint_image.h"
- #include "cc/paint/target_color_params.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "third_party/skia/include/core/SkImage.h"
- #include "third_party/skia/include/core/SkM44.h"
- #include "third_party/skia/include/core/SkRect.h"
- #include "third_party/skia/include/core/SkRefCnt.h"
- #include "ui/gfx/color_space.h"
- #include "ui/gfx/geometry/size_f.h"
- namespace cc {
- // A DrawImage is a logical snapshot in time and space of a PaintImage. It
- // includes decisions about scaling, animation frame, final colorspace, etc.
- // It has not been decoded yet. DrawImage turns into DecodedDrawImage via
- // ImageDecodeCache::GetDecodedImageForDraw during playback.
- class CC_PAINT_EXPORT DrawImage {
- public:
- DrawImage();
- explicit DrawImage(PaintImage image);
- DrawImage(PaintImage image,
- bool use_dark_mode,
- const SkIRect& src_rect,
- PaintFlags::FilterQuality filter_quality,
- const SkM44& matrix,
- absl::optional<size_t> frame_index = absl::nullopt);
- DrawImage(PaintImage image,
- bool use_dark_mode,
- const SkIRect& src_rect,
- PaintFlags::FilterQuality filter_quality,
- const SkM44& matrix,
- absl::optional<size_t> frame_index,
- const TargetColorParams& target_color_params);
- // Constructs a DrawImage from |other| by adjusting its scale and setting new
- // color params.
- DrawImage(const DrawImage& other,
- float scale_adjustment,
- size_t frame_index,
- const TargetColorParams& target_color_params);
- DrawImage(const DrawImage& other);
- DrawImage(DrawImage&& other);
- ~DrawImage();
- DrawImage& operator=(DrawImage&& other);
- DrawImage& operator=(const DrawImage& other);
- bool operator==(const DrawImage& other) const;
- const PaintImage& paint_image() const { return paint_image_; }
- bool use_dark_mode() const { return use_dark_mode_; }
- const SkSize& scale() const { return scale_; }
- const SkIRect& src_rect() const { return src_rect_; }
- PaintFlags::FilterQuality filter_quality() const { return filter_quality_; }
- bool matrix_is_decomposable() const { return matrix_is_decomposable_; }
- PaintImage::FrameKey frame_key() const {
- return paint_image_.GetKeyForFrame(frame_index());
- }
- size_t frame_index() const {
- DCHECK(frame_index_.has_value());
- return frame_index_.value();
- }
- const TargetColorParams& target_color_params() const {
- DCHECK(target_color_params_.has_value());
- return *target_color_params_;
- }
- const gfx::ColorSpace& target_color_space() const {
- DCHECK(target_color_params_.has_value());
- return target_color_params_->color_space;
- }
- float sdr_white_level() const {
- DCHECK(target_color_params_.has_value());
- return target_color_params_->sdr_max_luminance_nits;
- }
- private:
- PaintImage paint_image_;
- bool use_dark_mode_;
- SkIRect src_rect_;
- PaintFlags::FilterQuality filter_quality_;
- SkSize scale_;
- bool matrix_is_decomposable_;
- absl::optional<size_t> frame_index_;
- absl::optional<TargetColorParams> target_color_params_;
- };
- } // namespace cc
- #endif // CC_PAINT_DRAW_IMAGE_H_
|