/src/mozilla-central/image/SurfacePipe.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* vim: set ts=8 sts=2 et sw=2 tw=80: */ |
3 | | /* This Source Code Form is subject to the terms of the Mozilla Public |
4 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
5 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
6 | | |
7 | | /** |
8 | | * A SurfacePipe is a pipeline that consists of a series of SurfaceFilters |
9 | | * terminating in a SurfaceSink. Each SurfaceFilter transforms the image data in |
10 | | * some way before the SurfaceSink ultimately writes it to the surface. This |
11 | | * design allows for each transformation to be tested independently, for the |
12 | | * transformations to be combined as needed to meet the needs of different |
13 | | * situations, and for all image decoders to share the same code for these |
14 | | * transformations. |
15 | | * |
16 | | * Writing to the SurfacePipe is done using lambdas that act as generator |
17 | | * functions. Because the SurfacePipe machinery controls where the writes take |
18 | | * place, a bug in an image decoder cannot cause a buffer overflow of the |
19 | | * underlying surface. |
20 | | */ |
21 | | |
22 | | #ifndef mozilla_image_SurfacePipe_h |
23 | | #define mozilla_image_SurfacePipe_h |
24 | | |
25 | | #include <stdint.h> |
26 | | |
27 | | #include "nsDebug.h" |
28 | | |
29 | | #include "mozilla/Likely.h" |
30 | | #include "mozilla/Maybe.h" |
31 | | #include "mozilla/Move.h" |
32 | | #include "mozilla/Tuple.h" |
33 | | #include "mozilla/UniquePtr.h" |
34 | | #include "mozilla/Unused.h" |
35 | | #include "mozilla/Variant.h" |
36 | | #include "mozilla/gfx/2D.h" |
37 | | |
38 | | #include "AnimationParams.h" |
39 | | |
40 | | namespace mozilla { |
41 | | namespace image { |
42 | | |
43 | | class Decoder; |
44 | | |
45 | | /** |
46 | | * An invalid rect for a surface. Results are given both in the space of the |
47 | | * input image (i.e., before any SurfaceFilters are applied) and in the space |
48 | | * of the output surface (after all SurfaceFilters). |
49 | | */ |
50 | | struct SurfaceInvalidRect |
51 | | { |
52 | | gfx::IntRect mInputSpaceRect; /// The invalid rect in pre-SurfacePipe space. |
53 | | gfx::IntRect mOutputSpaceRect; /// The invalid rect in post-SurfacePipe space. |
54 | | }; |
55 | | |
56 | | /** |
57 | | * An enum used to allow the lambdas passed to WritePixels() to communicate |
58 | | * their state to the caller. |
59 | | */ |
60 | | enum class WriteState : uint8_t |
61 | | { |
62 | | NEED_MORE_DATA, /// The lambda ran out of data. |
63 | | |
64 | | FINISHED, /// The lambda is done writing to the surface; future writes |
65 | | /// will fail. |
66 | | |
67 | | FAILURE /// The lambda encountered an error. The caller may recover |
68 | | /// if possible and continue to write. (This never indicates |
69 | | /// an error in the SurfacePipe machinery itself; it's only |
70 | | /// generated by the lambdas.) |
71 | | }; |
72 | | |
73 | | /** |
74 | | * A template alias used to make the return value of WritePixels() lambdas |
75 | | * (which may return either a pixel value or a WriteState) easier to specify. |
76 | | */ |
77 | | template <typename PixelType> |
78 | | using NextPixel = Variant<PixelType, WriteState>; |
79 | | |
80 | | /** |
81 | | * SurfaceFilter is the abstract superclass of SurfacePipe pipeline stages. It |
82 | | * implements the the code that actually writes to the surface - WritePixels() |
83 | | * and the other Write*() methods - which are non-virtual for efficiency. |
84 | | * |
85 | | * SurfaceFilter's API is nonpublic; only SurfacePipe and other SurfaceFilters |
86 | | * should use it. Non-SurfacePipe code should use the methods on SurfacePipe. |
87 | | * |
88 | | * To implement a SurfaceFilter, it's necessary to subclass SurfaceFilter and |
89 | | * implement, at a minimum, the pure virtual methods. It's also necessary to |
90 | | * define a Config struct with a Filter typedef member that identifies the |
91 | | * matching SurfaceFilter class, and a Configure() template method. See an |
92 | | * existing SurfaceFilter subclass, such as RemoveFrameRectFilter, for an |
93 | | * example of how the Configure() method must be implemented. It takes a list of |
94 | | * Config structs, passes the tail of the list to the next filter in the chain's |
95 | | * Configure() method, and then uses the head of the list to configure itself. A |
96 | | * SurfaceFilter's Configure() method must also call |
97 | | * SurfaceFilter::ConfigureFilter() to provide the Write*() methods with the |
98 | | * information they need to do their jobs. |
99 | | */ |
100 | | class SurfaceFilter |
101 | | { |
102 | | public: |
103 | | SurfaceFilter() |
104 | | : mRowPointer(nullptr) |
105 | | , mCol(0) |
106 | | , mPixelSize(0) |
107 | 0 | { } |
108 | | |
109 | 0 | virtual ~SurfaceFilter() { } |
110 | | |
111 | | /** |
112 | | * Reset this surface to the first row. It's legal for this filter to throw |
113 | | * away any previously written data at this point, as all rows must be written |
114 | | * to on every pass. |
115 | | * |
116 | | * @return a pointer to the buffer for the first row. |
117 | | */ |
118 | | uint8_t* ResetToFirstRow() |
119 | 0 | { |
120 | 0 | mCol = 0; |
121 | 0 | mRowPointer = DoResetToFirstRow(); |
122 | 0 | return mRowPointer; |
123 | 0 | } |
124 | | |
125 | | /** |
126 | | * Called by WritePixels() to advance this filter to the next row. |
127 | | * |
128 | | * @return a pointer to the buffer for the next row, or nullptr to indicate |
129 | | * that we've finished the entire surface. |
130 | | */ |
131 | | uint8_t* AdvanceRow() |
132 | 0 | { |
133 | 0 | mCol = 0; |
134 | 0 | mRowPointer = DoAdvanceRow(); |
135 | 0 | return mRowPointer; |
136 | 0 | } |
137 | | |
138 | | /// @return a pointer to the buffer for the current row. |
139 | 0 | uint8_t* CurrentRowPointer() const { return mRowPointer; } |
140 | | |
141 | | /// @return true if we've finished writing to the surface. |
142 | 0 | bool IsSurfaceFinished() const { return mRowPointer == nullptr; } |
143 | | |
144 | | /// @return the input size this filter expects. |
145 | 0 | gfx::IntSize InputSize() const { return mInputSize; } |
146 | | |
147 | | /** |
148 | | * Write pixels to the surface one at a time by repeatedly calling a lambda |
149 | | * that yields pixels. WritePixels() is completely memory safe. |
150 | | * |
151 | | * Writing continues until every pixel in the surface has been written to |
152 | | * (i.e., IsSurfaceFinished() returns true) or the lambda returns a WriteState |
153 | | * which WritePixels() will return to the caller. |
154 | | * |
155 | | * The template parameter PixelType must be uint8_t (for paletted surfaces) or |
156 | | * uint32_t (for BGRA/BGRX surfaces) and must be in agreement with the pixel |
157 | | * size passed to ConfigureFilter(). |
158 | | * |
159 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
160 | | * which means we can remove the PixelType template parameter from this |
161 | | * method. |
162 | | * |
163 | | * @param aFunc A lambda that functions as a generator, yielding the next |
164 | | * pixel in the surface each time it's called. The lambda must |
165 | | * return a NextPixel<PixelType> value. |
166 | | * |
167 | | * @return A WriteState value indicating the lambda generator's state. |
168 | | * WritePixels() itself will return WriteState::FINISHED if writing |
169 | | * has finished, regardless of the lambda's internal state. |
170 | | */ |
171 | | template <typename PixelType, typename Func> |
172 | | WriteState WritePixels(Func aFunc) |
173 | 0 | { |
174 | 0 | Maybe<WriteState> result; |
175 | 0 | while (!(result = DoWritePixelsToRow<PixelType>(std::forward<Func>(aFunc)))) { } |
176 | 0 |
|
177 | 0 | return *result; |
178 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned int>()::{lambda()#1}>(void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned int>()::{lambda()#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned char>()::{lambda()#1}>(void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned char>()::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, mozilla::image::nsIconDecoder::ReadRowOfPixels(char const*, unsigned long)::$_6>(mozilla::image::nsIconDecoder::ReadRowOfPixels(char const*, unsigned long)::$_6) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_85::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_85::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_86::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_86::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_87::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_87::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_0>(mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_0) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_1>(mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_1) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_2>(mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_2) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_3>(mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_14::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_14::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_15::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_15::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_16::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_16::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_18::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_18::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_19::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_19::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_20::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_20::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_21::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_21::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_22::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_22::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_23::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_23::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_24::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_24::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_25::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_25::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_27::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_27::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageBlendAnimationFilter_PartialOverlapFrameRect_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_PartialOverlapFrameRect_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDeinterlacingFilter_WritePixelsNonProgressiveOutput51_52_Test::TestBody()::$_41::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsNonProgressiveOutput51_52_Test::TestBody()::$_41::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput20_20_Test::TestBody()::$_42::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput20_20_Test::TestBody()::$_42::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput7_7_Test::TestBody()::$_43::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput7_7_Test::TestBody()::$_43::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput3_3_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput3_3_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput1_1_Test::TestBody()::$_45::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput1_1_Test::TestBody()::$_45::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, WriteRowAndCheckInterlacerOutput(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::image::BGRAColor, mozilla::image::WriteState, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits>, unsigned int, unsigned int)::$_46>(WriteRowAndCheckInterlacerOutput(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::image::BGRAColor, mozilla::image::WriteState, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits>, unsigned int, unsigned int)::$_46) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDownscalingFilter_WritePixelsOutput100_100to20_20_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDownscalingFilter_WritePixelsOutput100_100to20_20_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageDownscalingFilter_WritePixelsOutput100_100to10_20_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDownscalingFilter_WritePixelsOutput100_100to10_20_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, CheckSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_0>(CheckSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_0) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, CheckPalettedSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_1>(CheckPalettedSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_1) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_2>(ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_2) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_4>(ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_4) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkWriteEmptyRow_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWriteEmptyRow_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#4}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#4}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#5}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#5}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#6}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#6}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned int, ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixels<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWriteEmptyRow_Test::TestBody()::$_53::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWriteEmptyRow_Test::TestBody()::$_53::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}) |
179 | | |
180 | | /** |
181 | | * Write pixels to the surface by calling a lambda which may write as many |
182 | | * pixels as there is remaining to complete the row. It is not completely |
183 | | * memory safe as it trusts the underlying decoder not to overrun the given |
184 | | * buffer, however it is an acceptable tradeoff for performance. |
185 | | * |
186 | | * Writing continues until every pixel in the surface has been written to |
187 | | * (i.e., IsSurfaceFinished() returns true) or the lambda returns a WriteState |
188 | | * which WritePixelBlocks() will return to the caller. |
189 | | * |
190 | | * The template parameter PixelType must be uint8_t (for paletted surfaces) or |
191 | | * uint32_t (for BGRA/BGRX surfaces) and must be in agreement with the pixel |
192 | | * size passed to ConfigureFilter(). |
193 | | * |
194 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
195 | | * which means we can remove the PixelType template parameter from this |
196 | | * method. |
197 | | * |
198 | | * @param aFunc A lambda that functions as a generator, yielding at most the |
199 | | * maximum number of pixels requested. The lambda must accept a |
200 | | * pointer argument to the first pixel to write, a maximum |
201 | | * number of pixels to write as part of the block, and return a |
202 | | * NextPixel<PixelType> value. |
203 | | * |
204 | | * @return A WriteState value indicating the lambda generator's state. |
205 | | * WritePixelBlocks() itself will return WriteState::FINISHED if |
206 | | * writing has finished, regardless of the lambda's internal state. |
207 | | */ |
208 | | template <typename PixelType, typename Func> |
209 | | WriteState WritePixelBlocks(Func aFunc) |
210 | 0 | { |
211 | 0 | Maybe<WriteState> result; |
212 | 0 | while (!(result = DoWritePixelBlockToRow<PixelType>(std::forward<Func>(aFunc)))) { } |
213 | 0 |
|
214 | 0 | return *result; |
215 | 0 | } Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_2>(mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_2) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned char, mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_3>(mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_3>(ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned char, ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_5>(ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_5) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelBlocks<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#3}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#3}) |
216 | | |
217 | | /** |
218 | | * A variant of WritePixels() that writes a single row of pixels to the |
219 | | * surface one at a time by repeatedly calling a lambda that yields pixels. |
220 | | * WritePixelsToRow() is completely memory safe. |
221 | | * |
222 | | * Writing continues until every pixel in the row has been written to. If the |
223 | | * surface is complete at that pointer, WriteState::FINISHED is returned; |
224 | | * otherwise, WritePixelsToRow() returns WriteState::NEED_MORE_DATA. The |
225 | | * lambda can terminate writing early by returning a WriteState itself, which |
226 | | * WritePixelsToRow() will return to the caller. |
227 | | * |
228 | | * The template parameter PixelType must be uint8_t (for paletted surfaces) or |
229 | | * uint32_t (for BGRA/BGRX surfaces) and must be in agreement with the pixel |
230 | | * size passed to ConfigureFilter(). |
231 | | * |
232 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
233 | | * which means we can remove the PixelType template parameter from this |
234 | | * method. |
235 | | * |
236 | | * @param aFunc A lambda that functions as a generator, yielding the next |
237 | | * pixel in the surface each time it's called. The lambda must |
238 | | * return a NextPixel<PixelType> value. |
239 | | * |
240 | | * @return A WriteState value indicating the lambda generator's state. |
241 | | * WritePixels() itself will return WriteState::FINISHED if writing |
242 | | * the entire surface has finished, or WriteState::NEED_MORE_DATA if |
243 | | * writing the row has finished, regardless of the lambda's internal |
244 | | * state. |
245 | | */ |
246 | | template <typename PixelType, typename Func> |
247 | | WriteState WritePixelsToRow(Func aFunc) |
248 | 0 | { |
249 | 0 | return DoWritePixelsToRow<PixelType>(std::forward<Func>(aFunc)) |
250 | 0 | .valueOr(WriteState::NEED_MORE_DATA); |
251 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::BlendAnimationFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::BlendAnimationFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::SurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::SurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_9>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_9) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_10>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_10) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_11>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_11) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, WriteUninterpolatedPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_6>(WriteUninterpolatedPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_6) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, WriteRowColorPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_8>(WriteRowColorPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_8) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::PalettedSurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::PalettedSurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) |
252 | | |
253 | | /** |
254 | | * Write a row to the surface by copying from a buffer. This is bounds checked |
255 | | * and memory safe with respect to the surface, but care must still be taken |
256 | | * by the caller not to overread the source buffer. This variant of |
257 | | * WriteBuffer() requires a source buffer which contains |mInputSize.width| |
258 | | * pixels. |
259 | | * |
260 | | * The template parameter PixelType must be uint8_t (for paletted surfaces) or |
261 | | * uint32_t (for BGRA/BGRX surfaces) and must be in agreement with the pixel |
262 | | * size passed to ConfigureFilter(). |
263 | | * |
264 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
265 | | * which means we can remove the PixelType template parameter from this |
266 | | * method. |
267 | | * |
268 | | * @param aSource A buffer to copy from. This buffer must be |
269 | | * |mInputSize.width| pixels wide, which means |
270 | | * |mInputSize.width * sizeof(PixelType)| bytes. May not be |
271 | | * null. |
272 | | * |
273 | | * @return WriteState::FINISHED if the entire surface has been written to. |
274 | | * Otherwise, returns WriteState::NEED_MORE_DATA. If a null |aSource| |
275 | | * value is passed, returns WriteState::FAILURE. |
276 | | */ |
277 | | template <typename PixelType> |
278 | | WriteState WriteBuffer(const PixelType* aSource) |
279 | 0 | { |
280 | 0 | return WriteBuffer(aSource, 0, mInputSize.width); |
281 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteBuffer<unsigned int>(unsigned int const*) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteBuffer<unsigned char>(unsigned char const*) |
282 | | |
283 | | /** |
284 | | * Write a row to the surface by copying from a buffer. This is bounds checked |
285 | | * and memory safe with respect to the surface, but care must still be taken |
286 | | * by the caller not to overread the source buffer. This variant of |
287 | | * WriteBuffer() reads at most @aLength pixels from the buffer and writes them |
288 | | * to the row starting at @aStartColumn. Any pixels in columns before |
289 | | * @aStartColumn or after the pixels copied from the buffer are cleared. |
290 | | * |
291 | | * Bounds checking failures produce warnings in debug builds because although |
292 | | * the bounds checking maintains safety, this kind of failure could indicate a |
293 | | * bug in the calling code. |
294 | | * |
295 | | * The template parameter PixelType must be uint8_t (for paletted surfaces) or |
296 | | * uint32_t (for BGRA/BGRX surfaces) and must be in agreement with the pixel |
297 | | * size passed to ConfigureFilter(). |
298 | | * |
299 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
300 | | * which means we can remove the PixelType template parameter from this |
301 | | * method. |
302 | | * |
303 | | * @param aSource A buffer to copy from. This buffer must be @aLength pixels |
304 | | * wide, which means |aLength * sizeof(PixelType)| bytes. May |
305 | | * not be null. |
306 | | * @param aStartColumn The column to start writing to in the row. Columns |
307 | | * before this are cleared. |
308 | | * @param aLength The number of bytes, at most, which may be copied from |
309 | | * @aSource. Fewer bytes may be copied in practice due to |
310 | | * bounds checking. |
311 | | * |
312 | | * @return WriteState::FINISHED if the entire surface has been written to. |
313 | | * Otherwise, returns WriteState::NEED_MORE_DATA. If a null |aSource| |
314 | | * value is passed, returns WriteState::FAILURE. |
315 | | */ |
316 | | template <typename PixelType> |
317 | | WriteState WriteBuffer(const PixelType* aSource, |
318 | | const size_t aStartColumn, |
319 | | const size_t aLength) |
320 | 0 | { |
321 | 0 | MOZ_ASSERT(mPixelSize == 1 || mPixelSize == 4); |
322 | 0 | MOZ_ASSERT_IF(mPixelSize == 1, sizeof(PixelType) == sizeof(uint8_t)); |
323 | 0 | MOZ_ASSERT_IF(mPixelSize == 4, sizeof(PixelType) == sizeof(uint32_t)); |
324 | 0 |
|
325 | 0 | if (IsSurfaceFinished()) { |
326 | 0 | return WriteState::FINISHED; // Already done. |
327 | 0 | } |
328 | 0 | |
329 | 0 | if (MOZ_UNLIKELY(!aSource)) { |
330 | 0 | NS_WARNING("Passed a null pointer to WriteBuffer"); |
331 | 0 | return WriteState::FAILURE; |
332 | 0 | } |
333 | 0 |
|
334 | 0 | PixelType* dest = reinterpret_cast<PixelType*>(mRowPointer); |
335 | 0 |
|
336 | 0 | // Clear the area before |aStartColumn|. |
337 | 0 | const size_t prefixLength = std::min<size_t>(mInputSize.width, aStartColumn); |
338 | 0 | if (MOZ_UNLIKELY(prefixLength != aStartColumn)) { |
339 | 0 | NS_WARNING("Provided starting column is out-of-bounds in WriteBuffer"); |
340 | 0 | } |
341 | 0 |
|
342 | 0 | memset(dest, 0, mInputSize.width * sizeof(PixelType)); |
343 | 0 | dest += prefixLength; |
344 | 0 |
|
345 | 0 | // Write |aLength| pixels from |aSource| into the row, with bounds checking. |
346 | 0 | const size_t bufferLength = |
347 | 0 | std::min<size_t>(mInputSize.width - prefixLength, aLength); |
348 | 0 | if (MOZ_UNLIKELY(bufferLength != aLength)) { |
349 | 0 | NS_WARNING("Provided buffer length is out-of-bounds in WriteBuffer"); |
350 | 0 | } |
351 | 0 |
|
352 | 0 | memcpy(dest, aSource, bufferLength * sizeof(PixelType)); |
353 | 0 | dest += bufferLength; |
354 | 0 |
|
355 | 0 | // Clear the rest of the row. |
356 | 0 | const size_t suffixLength = mInputSize.width - (prefixLength + bufferLength); |
357 | 0 | memset(dest, 0, suffixLength * sizeof(PixelType)); |
358 | 0 |
|
359 | 0 | AdvanceRow(); |
360 | 0 |
|
361 | 0 | return IsSurfaceFinished() ? WriteState::FINISHED |
362 | 0 | : WriteState::NEED_MORE_DATA; |
363 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteBuffer<unsigned int>(unsigned int const*, unsigned long, unsigned long) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteBuffer<unsigned char>(unsigned char const*, unsigned long, unsigned long) |
364 | | |
365 | | /** |
366 | | * Write an empty row to the surface. If some pixels have already been written |
367 | | * to this row, they'll be discarded. |
368 | | * |
369 | | * @return WriteState::FINISHED if the entire surface has been written to. |
370 | | * Otherwise, returns WriteState::NEED_MORE_DATA. |
371 | | */ |
372 | | WriteState WriteEmptyRow() |
373 | 0 | { |
374 | 0 | if (IsSurfaceFinished()) { |
375 | 0 | return WriteState::FINISHED; // Already done. |
376 | 0 | } |
377 | 0 | |
378 | 0 | memset(mRowPointer, 0, mInputSize.width * mPixelSize); |
379 | 0 | AdvanceRow(); |
380 | 0 |
|
381 | 0 | return IsSurfaceFinished() ? WriteState::FINISHED |
382 | 0 | : WriteState::NEED_MORE_DATA; |
383 | 0 | } |
384 | | |
385 | | /** |
386 | | * Write a row to the surface by calling a lambda that uses a pointer to |
387 | | * directly write to the row. This is unsafe because SurfaceFilter can't |
388 | | * provide any bounds checking; that's up to the lambda itself. For this |
389 | | * reason, the other Write*() methods should be preferred whenever it's |
390 | | * possible to use them; WriteUnsafeComputedRow() should be used only when |
391 | | * it's absolutely necessary to avoid extra copies or other performance |
392 | | * penalties. |
393 | | * |
394 | | * This method should never be exposed to SurfacePipe consumers; it's strictly |
395 | | * for use in SurfaceFilters. If external code needs this method, it should |
396 | | * probably be turned into a SurfaceFilter. |
397 | | * |
398 | | * The template parameter PixelType must be uint8_t (for paletted surfaces) or |
399 | | * uint32_t (for BGRA/BGRX surfaces) and must be in agreement with the pixel |
400 | | * size passed to ConfigureFilter(). |
401 | | * |
402 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
403 | | * which means we can remove the PixelType template parameter from this |
404 | | * method. |
405 | | * |
406 | | * @param aFunc A lambda that writes directly to the row. |
407 | | * |
408 | | * @return WriteState::FINISHED if the entire surface has been written to. |
409 | | * Otherwise, returns WriteState::NEED_MORE_DATA. |
410 | | */ |
411 | | template <typename PixelType, typename Func> |
412 | | WriteState WriteUnsafeComputedRow(Func aFunc) |
413 | 0 | { |
414 | 0 | MOZ_ASSERT(mPixelSize == 1 || mPixelSize == 4); |
415 | 0 | MOZ_ASSERT_IF(mPixelSize == 1, sizeof(PixelType) == sizeof(uint8_t)); |
416 | 0 | MOZ_ASSERT_IF(mPixelSize == 4, sizeof(PixelType) == sizeof(uint32_t)); |
417 | 0 |
|
418 | 0 | if (IsSurfaceFinished()) { |
419 | 0 | return WriteState::FINISHED; // Already done. |
420 | 0 | } |
421 | 0 | |
422 | 0 | // Call the provided lambda with a pointer to the buffer for the current |
423 | 0 | // row. This is unsafe because we can't do any bounds checking; the lambda |
424 | 0 | // itself has to be responsible for that. |
425 | 0 | PixelType* rowPtr = reinterpret_cast<PixelType*>(mRowPointer); |
426 | 0 | aFunc(rowPtr, mInputSize.width); |
427 | 0 | AdvanceRow(); |
428 | 0 |
|
429 | 0 | return IsSurfaceFinished() ? WriteState::FINISHED |
430 | 0 | : WriteState::NEED_MORE_DATA; |
431 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteUnsafeComputedRow<unsigned int, mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink>::DownscaleInputRow()::{lambda(unsigned int*, unsigned int)#1}>(mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink>::DownscaleInputRow()::{lambda(unsigned int*, unsigned int)#1}) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteUnsafeComputedRow<unsigned int, mozilla::image::DownscalingFilter<mozilla::image::PalettedSurfaceSink>::DownscaleInputRow()::{lambda(unsigned int*, unsigned int)#1}>(mozilla::image::DownscalingFilter<mozilla::image::PalettedSurfaceSink>::DownscaleInputRow()::{lambda(unsigned int*, unsigned int)#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteUnsafeComputedRow<unsigned int, ImageSurfaceSink_SurfaceSinkWriteUnsafeComputedRow_Test::TestBody()::$_27::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}::operator()() const::{lambda(unsigned int*, unsigned int)#1}>(ImageSurfaceSink_SurfaceSinkWriteUnsafeComputedRow_Test::TestBody()::$_27::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}::operator()() const::{lambda(unsigned int*, unsigned int)#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfaceFilter::WriteUnsafeComputedRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWriteUnsafeComputedRow_Test::TestBody()::$_54::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}::operator()() const::{lambda(unsigned char*, unsigned int)#1}>(ImageSurfaceSink_PalettedSurfaceSinkWriteUnsafeComputedRow_Test::TestBody()::$_54::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}::operator()() const::{lambda(unsigned char*, unsigned int)#1}) |
432 | | |
433 | | ////////////////////////////////////////////////////////////////////////////// |
434 | | // Methods Subclasses Should Override |
435 | | ////////////////////////////////////////////////////////////////////////////// |
436 | | |
437 | | /// @return true if this SurfaceFilter can be used with paletted surfaces. |
438 | 0 | virtual bool IsValidPalettedPipe() const { return false; } |
439 | | |
440 | | /** |
441 | | * @return a SurfaceInvalidRect representing the region of the surface that |
442 | | * has been written to since the last time TakeInvalidRect() was |
443 | | * called, or Nothing() if the region is empty (i.e. nothing has been |
444 | | * written). |
445 | | */ |
446 | | virtual Maybe<SurfaceInvalidRect> TakeInvalidRect() = 0; |
447 | | |
448 | | protected: |
449 | | |
450 | | /** |
451 | | * Called by ResetToFirstRow() to actually perform the reset. It's legal to |
452 | | * throw away any previously written data at this point, as all rows must be |
453 | | * written to on every pass. |
454 | | */ |
455 | | virtual uint8_t* DoResetToFirstRow() = 0; |
456 | | |
457 | | /** |
458 | | * Called by AdvanceRow() to actually advance this filter to the next row. |
459 | | * |
460 | | * @return a pointer to the buffer for the next row, or nullptr to indicate |
461 | | * that we've finished the entire surface. |
462 | | */ |
463 | | virtual uint8_t* DoAdvanceRow() = 0; |
464 | | |
465 | | |
466 | | ////////////////////////////////////////////////////////////////////////////// |
467 | | // Methods For Internal Use By Subclasses |
468 | | ////////////////////////////////////////////////////////////////////////////// |
469 | | |
470 | | /** |
471 | | * Called by subclasses' Configure() methods to initialize the configuration |
472 | | * of this filter. After the filter is configured, calls ResetToFirstRow(). |
473 | | * |
474 | | * @param aInputSize The input size of this filter, in pixels. The previous |
475 | | * filter in the chain will expect to write into rows |
476 | | * |aInputSize.width| pixels wide. |
477 | | * @param aPixelSize How large, in bytes, each pixel in the surface is. This |
478 | | * should be either 1 for paletted images or 4 for BGRA/BGRX |
479 | | * images. |
480 | | */ |
481 | | void ConfigureFilter(gfx::IntSize aInputSize, uint8_t aPixelSize) |
482 | 0 | { |
483 | 0 | mInputSize = aInputSize; |
484 | 0 | mPixelSize = aPixelSize; |
485 | 0 |
|
486 | 0 | ResetToFirstRow(); |
487 | 0 | } |
488 | | |
489 | | private: |
490 | | |
491 | | /** |
492 | | * An internal method used to implement WritePixelBlocks. This method writes |
493 | | * up to the number of pixels necessary to complete the row and returns Some() |
494 | | * if we either finished the entire surface or the lambda returned a |
495 | | * WriteState indicating that we should return to the caller. If the row was |
496 | | * successfully written without either of those things happening, it returns |
497 | | * Nothing(), allowing WritePixelBlocks() to iterate to fill as many rows as |
498 | | * possible. |
499 | | */ |
500 | | template <typename PixelType, typename Func> |
501 | | Maybe<WriteState> DoWritePixelBlockToRow(Func aFunc) |
502 | 0 | { |
503 | 0 | MOZ_ASSERT(mPixelSize == 1 || mPixelSize == 4); |
504 | 0 | MOZ_ASSERT_IF(mPixelSize == 1, sizeof(PixelType) == sizeof(uint8_t)); |
505 | 0 | MOZ_ASSERT_IF(mPixelSize == 4, sizeof(PixelType) == sizeof(uint32_t)); |
506 | 0 |
|
507 | 0 | if (IsSurfaceFinished()) { |
508 | 0 | return Some(WriteState::FINISHED); // We're already done. |
509 | 0 | } |
510 | 0 | |
511 | 0 | PixelType* rowPtr = reinterpret_cast<PixelType*>(mRowPointer); |
512 | 0 | int32_t remainder = mInputSize.width - mCol; |
513 | 0 | int32_t written; |
514 | 0 | Maybe<WriteState> result; |
515 | 0 | Tie(written, result) = aFunc(&rowPtr[mCol], remainder); |
516 | 0 | if (written == remainder) { |
517 | 0 | MOZ_ASSERT(result.isNothing()); |
518 | 0 | mCol = mInputSize.width; |
519 | 0 | AdvanceRow(); // We've finished the row. |
520 | 0 | return IsSurfaceFinished() ? Some(WriteState::FINISHED) |
521 | 0 | : Nothing(); |
522 | 0 | } |
523 | 0 |
|
524 | 0 | MOZ_ASSERT(written >= 0 && written < remainder); |
525 | 0 | MOZ_ASSERT(result.isSome()); |
526 | 0 |
|
527 | 0 | mCol += written; |
528 | 0 | if (*result == WriteState::FINISHED) { |
529 | 0 | ZeroOutRestOfSurface<PixelType>(); |
530 | 0 | } |
531 | 0 |
|
532 | 0 | return result; |
533 | 0 | } Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_2>(mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_2) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned char, mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_3>(mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_3>(ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned char, ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_5>(ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_5) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocks_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelBlockToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#3}>(ImageSurfaceSink_SurfaceSinkWritePixelBlocksPartialRow_Test::TestBody()::$_29::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda(unsigned int*, int)#3}) |
534 | | |
535 | | /** |
536 | | * An internal method used to implement both WritePixels() and |
537 | | * WritePixelsToRow(). Those methods differ only in their behavior after a row |
538 | | * is successfully written - WritePixels() continues to write another row, |
539 | | * while WritePixelsToRow() returns to the caller. This method writes a single |
540 | | * row and returns Some() if we either finished the entire surface or the |
541 | | * lambda returned a WriteState indicating that we should return to the |
542 | | * caller. If the row was successfully written without either of those things |
543 | | * happening, it returns Nothing(), allowing WritePixels() and |
544 | | * WritePixelsToRow() to implement their respective behaviors. |
545 | | */ |
546 | | template <typename PixelType, typename Func> |
547 | | Maybe<WriteState> DoWritePixelsToRow(Func aFunc) |
548 | 0 | { |
549 | 0 | MOZ_ASSERT(mPixelSize == 1 || mPixelSize == 4); |
550 | 0 | MOZ_ASSERT_IF(mPixelSize == 1, sizeof(PixelType) == sizeof(uint8_t)); |
551 | 0 | MOZ_ASSERT_IF(mPixelSize == 4, sizeof(PixelType) == sizeof(uint32_t)); |
552 | 0 |
|
553 | 0 | if (IsSurfaceFinished()) { |
554 | 0 | return Some(WriteState::FINISHED); // We're already done. |
555 | 0 | } |
556 | 0 | |
557 | 0 | PixelType* rowPtr = reinterpret_cast<PixelType*>(mRowPointer); |
558 | 0 |
|
559 | 0 | for (; mCol < mInputSize.width; ++mCol) { |
560 | 0 | NextPixel<PixelType> result = aFunc(); |
561 | 0 | if (result.template is<PixelType>()) { |
562 | 0 | rowPtr[mCol] = result.template as<PixelType>(); |
563 | 0 | continue; |
564 | 0 | } |
565 | 0 | |
566 | 0 | switch (result.template as<WriteState>()) { |
567 | 0 | case WriteState::NEED_MORE_DATA: |
568 | 0 | return Some(WriteState::NEED_MORE_DATA); |
569 | 0 |
|
570 | 0 | case WriteState::FINISHED: |
571 | 0 | ZeroOutRestOfSurface<PixelType>(); |
572 | 0 | return Some(WriteState::FINISHED); |
573 | 0 |
|
574 | 0 | case WriteState::FAILURE: |
575 | 0 | // Note that we don't need to record this anywhere, because this |
576 | 0 | // indicates an error in aFunc, and there's nothing wrong with our |
577 | 0 | // machinery. The caller can recover as needed and continue writing to |
578 | 0 | // the row. |
579 | 0 | return Some(WriteState::FAILURE); |
580 | 0 | } |
581 | 0 | } |
582 | 0 |
|
583 | 0 | AdvanceRow(); // We've finished the row. |
584 | 0 |
|
585 | 0 | return IsSurfaceFinished() ? Some(WriteState::FINISHED) |
586 | 0 | : Nothing(); |
587 | 0 | } Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned int>()::{lambda()#1}>(void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned int>()::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::BlendAnimationFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::BlendAnimationFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::SurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::SurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned char>()::{lambda()#1}>(void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned char>()::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::nsIconDecoder::ReadRowOfPixels(char const*, unsigned long)::$_6>(mozilla::image::nsIconDecoder::ReadRowOfPixels(char const*, unsigned long)::$_6) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_9>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_9) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_10>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_10) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_11>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_11) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::RemoveFrameRectFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> > >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::DownscalingFilterNoSkia<mozilla::image::SurfaceSink> >::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_85::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_85::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_86::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_86::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_87::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(TestWithBlendAnimationFilterClear(mozilla::image::BlendMethod)::$_87::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_0>(mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_0) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_1>(mozilla::image::CheckWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_1) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_2>(mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_2) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_3>(mozilla::image::CheckPalettedWritePixels(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, mozilla::Maybe<mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> > const&, unsigned char)::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, WriteUninterpolatedPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_6>(WriteUninterpolatedPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_6) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, WriteRowColorPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_8>(WriteRowColorPixels(mozilla::image::SurfaceFilter*, mozilla::gfx::IntSizeTyped<mozilla::gfx::UnknownUnits> const&, unsigned char, std::__1::vector<mozilla::image::BGRAColor, std::__1::allocator<mozilla::image::BGRAColor> > const&)::$_8) Unexecuted instantiation: mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, mozilla::image::ADAM7InterpolatingFilter<mozilla::image::PalettedSurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}>(mozilla::image::ADAM7InterpolatingFilter<mozilla::image::PalettedSurfaceSink>::InterpolateVertically(unsigned char*, unsigned char*, unsigned char, mozilla::image::SurfaceFilter&)::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_14::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_14::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_15::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithSource_Test::TestBody()::$_15::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_16::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_16::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_KeepWithOver_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_18::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_18::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_19::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_19::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_20::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithOver_Test::TestBody()::$_20::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_21::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_21::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_22::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_22::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_23::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousWithSource_Test::TestBody()::$_23::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_24::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_24::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_25::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_25::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_27::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_RestorePreviousClearWithSource_Test::TestBody()::$_27::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageBlendAnimationFilter_PartialOverlapFrameRect_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageBlendAnimationFilter_PartialOverlapFrameRect_Test::TestBody()::$_28::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDeinterlacingFilter_WritePixelsNonProgressiveOutput51_52_Test::TestBody()::$_41::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsNonProgressiveOutput51_52_Test::TestBody()::$_41::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput20_20_Test::TestBody()::$_42::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput20_20_Test::TestBody()::$_42::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput7_7_Test::TestBody()::$_43::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput7_7_Test::TestBody()::$_43::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput3_3_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput3_3_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDeinterlacingFilter_WritePixelsOutput1_1_Test::TestBody()::$_45::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDeinterlacingFilter_WritePixelsOutput1_1_Test::TestBody()::$_45::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, WriteRowAndCheckInterlacerOutput(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::image::BGRAColor, mozilla::image::WriteState, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits>, unsigned int, unsigned int)::$_46>(WriteRowAndCheckInterlacerOutput(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*, mozilla::image::BGRAColor, mozilla::image::WriteState, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits>, unsigned int, unsigned int)::$_46) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDownscalingFilter_WritePixelsOutput100_100to20_20_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDownscalingFilter_WritePixelsOutput100_100to20_20_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest0.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageDownscalingFilter_WritePixelsOutput100_100to10_20_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}>(ImageDownscalingFilter_WritePixelsOutput100_100to10_20_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceFilter*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, CheckSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_0>(CheckSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_0) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, CheckPalettedSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_1>(CheckPalettedSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_1) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_2>(ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_2) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_4>(ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_4) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsFinish_Test::TestBody()::$_13::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_55::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRow_Test::TestBody()::$_17::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_56::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkWriteEmptyRow_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkWriteEmptyRow_Test::TestBody()::$_26::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkProgressivePasses_Test::TestBody()::$_30::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#4}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#4}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#5}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#5}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#6}>(ImageSurfaceSink_SurfaceSinkInvalidRect_Test::TestBody()::$_31::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#6}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned int, ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_SurfaceSinkFlipVertically_Test::TestBody()::$_32::operator()(mozilla::image::Decoder*, mozilla::image::SurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsFinish_Test::TestBody()::$_40::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsEarlyExit_Test::TestBody()::$_57::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#3}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRow_Test::TestBody()::$_44::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#1}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#2}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}>(ImageSurfaceSink_PalettedSurfaceSinkWritePixelsToRowEarlyExit_Test::TestBody()::$_58::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*, mozilla::image::WriteState) const::{lambda()#3}) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::Maybe<mozilla::image::WriteState> mozilla::image::SurfaceFilter::DoWritePixelsToRow<unsigned char, ImageSurfaceSink_PalettedSurfaceSinkWriteEmptyRow_Test::TestBody()::$_53::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}>(ImageSurfaceSink_PalettedSurfaceSinkWriteEmptyRow_Test::TestBody()::$_53::operator()(mozilla::image::Decoder*, mozilla::image::PalettedSurfaceSink*) const::{lambda()#2}) |
588 | | |
589 | | template <typename PixelType> |
590 | | void ZeroOutRestOfSurface() |
591 | 0 | { |
592 | 0 | WritePixels<PixelType>([]{ return AsVariant(PixelType(0)); }); Unexecuted instantiation: void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned int>()::{lambda()#1}::operator()() const Unexecuted instantiation: void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned char>()::{lambda()#1}::operator()() const |
593 | 0 | } Unexecuted instantiation: void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned int>() Unexecuted instantiation: void mozilla::image::SurfaceFilter::ZeroOutRestOfSurface<unsigned char>() |
594 | | |
595 | | gfx::IntSize mInputSize; /// The size of the input this filter expects. |
596 | | uint8_t* mRowPointer; /// Pointer to the current row or null if finished. |
597 | | int32_t mCol; /// The current column we're writing to. (0-indexed) |
598 | | uint8_t mPixelSize; /// How large each pixel in the surface is, in bytes. |
599 | | }; |
600 | | |
601 | | /** |
602 | | * SurfacePipe is the public API that decoders should use to interact with a |
603 | | * SurfaceFilter pipeline. |
604 | | */ |
605 | | class SurfacePipe |
606 | | { |
607 | | public: |
608 | | SurfacePipe() |
609 | 0 | { } |
610 | | |
611 | | SurfacePipe(SurfacePipe&& aOther) |
612 | | : mHead(std::move(aOther.mHead)) |
613 | 0 | { } |
614 | | |
615 | | ~SurfacePipe() |
616 | 0 | { } |
617 | | |
618 | | SurfacePipe& operator=(SurfacePipe&& aOther) |
619 | 0 | { |
620 | 0 | MOZ_ASSERT(this != &aOther); |
621 | 0 | mHead = std::move(aOther.mHead); |
622 | 0 | return *this; |
623 | 0 | } |
624 | | |
625 | | /// Begins a new pass, seeking to the first row of the surface. |
626 | | void ResetToFirstRow() |
627 | 0 | { |
628 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
629 | 0 | mHead->ResetToFirstRow(); |
630 | 0 | } |
631 | | |
632 | | /** |
633 | | * Write pixels to the surface one at a time by repeatedly calling a lambda |
634 | | * that yields pixels. WritePixels() is completely memory safe. |
635 | | * |
636 | | * @see SurfaceFilter::WritePixels() for the canonical documentation. |
637 | | */ |
638 | | template <typename PixelType, typename Func> |
639 | | WriteState WritePixels(Func aFunc) |
640 | 0 | { |
641 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
642 | 0 | return mHead->WritePixels<PixelType>(std::forward<Func>(aFunc)); |
643 | 0 | } Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixels<unsigned int, mozilla::image::nsIconDecoder::ReadRowOfPixels(char const*, unsigned long)::$_6>(mozilla::image::nsIconDecoder::ReadRowOfPixels(char const*, unsigned long)::$_6) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixels<unsigned int, CheckSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_0>(CheckSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_0) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixels<unsigned char, CheckPalettedSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_1>(CheckPalettedSurfacePipeMethodResults(mozilla::image::SurfacePipe*, mozilla::image::Decoder*, mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&)::$_1) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixels<unsigned int, ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_2>(ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_2) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixels<unsigned char, ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_4>(ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_4) |
644 | | |
645 | | /** |
646 | | * A variant of WritePixels() that writes up to a single row of pixels to the |
647 | | * surface in blocks by repeatedly calling a lambda that yields up to the |
648 | | * requested number of pixels. |
649 | | * |
650 | | * @see SurfaceFilter::WritePixelBlocks() for the canonical documentation. |
651 | | */ |
652 | | template <typename PixelType, typename Func> |
653 | | WriteState WritePixelBlocks(Func aFunc) |
654 | 0 | { |
655 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
656 | 0 | return mHead->WritePixelBlocks<PixelType>(std::forward<Func>(aFunc)); |
657 | 0 | } Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelBlocks<unsigned int, mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_2>(mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_2) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelBlocks<unsigned char, mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_3>(mozilla::image::nsGIFDecoder2::ReadLZWData(char const*, unsigned long)::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelBlocks<unsigned int, ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_3>(ImageSurfacePipeIntegration_SurfacePipe_Test::TestBody()::$_3) Unexecuted instantiation: Unified_cpp_image_test_gtest1.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelBlocks<unsigned char, ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_5>(ImageSurfacePipeIntegration_PalettedSurfacePipe_Test::TestBody()::$_5) |
658 | | |
659 | | /** |
660 | | * A variant of WritePixels() that writes a single row of pixels to the |
661 | | * surface one at a time by repeatedly calling a lambda that yields pixels. |
662 | | * WritePixelsToRow() is completely memory safe. |
663 | | * |
664 | | * @see SurfaceFilter::WritePixelsToRow() for the canonical documentation. |
665 | | */ |
666 | | template <typename PixelType, typename Func> |
667 | | WriteState WritePixelsToRow(Func aFunc) |
668 | 0 | { |
669 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
670 | 0 | return mHead->WritePixelsToRow<PixelType>(std::forward<Func>(aFunc)); |
671 | 0 | } Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_9>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_9) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_10>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_10) Unexecuted instantiation: Unified_cpp_image_decoders0.cpp:mozilla::image::WriteState mozilla::image::SurfacePipe::WritePixelsToRow<unsigned int, mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_11>(mozilla::image::nsPNGDecoder::WriteRow(unsigned char*)::$_11) |
672 | | |
673 | | /** |
674 | | * Write a row to the surface by copying from a buffer. This is bounds checked |
675 | | * and memory safe with respect to the surface, but care must still be taken |
676 | | * by the caller not to overread the source buffer. This variant of |
677 | | * WriteBuffer() requires a source buffer which contains |mInputSize.width| |
678 | | * pixels. |
679 | | * |
680 | | * @see SurfaceFilter::WriteBuffer() for the canonical documentation. |
681 | | */ |
682 | | template <typename PixelType> |
683 | | WriteState WriteBuffer(const PixelType* aSource) |
684 | 0 | { |
685 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
686 | 0 | return mHead->WriteBuffer<PixelType>(aSource); |
687 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfacePipe::WriteBuffer<unsigned int>(unsigned int const*) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfacePipe::WriteBuffer<unsigned char>(unsigned char const*) |
688 | | |
689 | | /** |
690 | | * Write a row to the surface by copying from a buffer. This is bounds checked |
691 | | * and memory safe with respect to the surface, but care must still be taken |
692 | | * by the caller not to overread the source buffer. This variant of |
693 | | * WriteBuffer() reads at most @aLength pixels from the buffer and writes them |
694 | | * to the row starting at @aStartColumn. Any pixels in columns before |
695 | | * @aStartColumn or after the pixels copied from the buffer are cleared. |
696 | | * |
697 | | * @see SurfaceFilter::WriteBuffer() for the canonical documentation. |
698 | | */ |
699 | | template <typename PixelType> |
700 | | WriteState WriteBuffer(const PixelType* aSource, |
701 | | const size_t aStartColumn, |
702 | | const size_t aLength) |
703 | 0 | { |
704 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
705 | 0 | return mHead->WriteBuffer<PixelType>(aSource, aStartColumn, aLength); |
706 | 0 | } Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfacePipe::WriteBuffer<unsigned int>(unsigned int const*, unsigned long, unsigned long) Unexecuted instantiation: mozilla::image::WriteState mozilla::image::SurfacePipe::WriteBuffer<unsigned char>(unsigned char const*, unsigned long, unsigned long) |
707 | | |
708 | | /** |
709 | | * Write an empty row to the surface. If some pixels have already been written |
710 | | * to this row, they'll be discarded. |
711 | | * |
712 | | * @see SurfaceFilter::WriteEmptyRow() for the canonical documentation. |
713 | | */ |
714 | | WriteState WriteEmptyRow() |
715 | 0 | { |
716 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
717 | 0 | return mHead->WriteEmptyRow(); |
718 | 0 | } |
719 | | |
720 | | /// @return true if we've finished writing to the surface. |
721 | 0 | bool IsSurfaceFinished() const { return mHead->IsSurfaceFinished(); } |
722 | | |
723 | | /// @see SurfaceFilter::TakeInvalidRect() for the canonical documentation. |
724 | | Maybe<SurfaceInvalidRect> TakeInvalidRect() const |
725 | 0 | { |
726 | 0 | MOZ_ASSERT(mHead, "Use before configured!"); |
727 | 0 | return mHead->TakeInvalidRect(); |
728 | 0 | } |
729 | | |
730 | | private: |
731 | | friend class SurfacePipeFactory; |
732 | | friend class TestSurfacePipeFactory; |
733 | | |
734 | | explicit SurfacePipe(UniquePtr<SurfaceFilter>&& aHead) |
735 | | : mHead(std::move(aHead)) |
736 | 0 | { } |
737 | | |
738 | | SurfacePipe(const SurfacePipe&) = delete; |
739 | | SurfacePipe& operator=(const SurfacePipe&) = delete; |
740 | | |
741 | | UniquePtr<SurfaceFilter> mHead; /// The first filter in the chain. |
742 | | }; |
743 | | |
744 | | /** |
745 | | * AbstractSurfaceSink contains shared implementation for both SurfaceSink and |
746 | | * PalettedSurfaceSink. |
747 | | */ |
748 | | class AbstractSurfaceSink : public SurfaceFilter |
749 | | { |
750 | | public: |
751 | | AbstractSurfaceSink() |
752 | | : mImageData(nullptr) |
753 | | , mImageDataLength(0) |
754 | | , mRow(0) |
755 | | , mFlipVertically(false) |
756 | 0 | { } |
757 | | |
758 | | Maybe<SurfaceInvalidRect> TakeInvalidRect() final; |
759 | | |
760 | | protected: |
761 | | uint8_t* DoResetToFirstRow() final; |
762 | | uint8_t* DoAdvanceRow() final; |
763 | | virtual uint8_t* GetRowPointer() const = 0; |
764 | | |
765 | | gfx::IntRect mInvalidRect; /// The region of the surface that has been written |
766 | | /// to since the last call to TakeInvalidRect(). |
767 | | uint8_t* mImageData; /// A pointer to the beginning of the surface data. |
768 | | uint32_t mImageDataLength; /// The length of the surface data. |
769 | | uint32_t mRow; /// The row to which we're writing. (0-indexed) |
770 | | bool mFlipVertically; /// If true, write the rows from top to bottom. |
771 | | }; |
772 | | |
773 | | class SurfaceSink; |
774 | | |
775 | | /// A configuration struct for SurfaceSink. |
776 | | struct SurfaceConfig |
777 | | { |
778 | | using Filter = SurfaceSink; |
779 | | Decoder* mDecoder; /// Which Decoder to use to allocate the surface. |
780 | | gfx::IntSize mOutputSize; /// The size of the surface. |
781 | | gfx::SurfaceFormat mFormat; /// The surface format (BGRA or BGRX). |
782 | | bool mFlipVertically; /// If true, write the rows from bottom to top. |
783 | | Maybe<AnimationParams> mAnimParams; /// Given for animated images. |
784 | | }; |
785 | | |
786 | | /** |
787 | | * A sink for normal (i.e., non-paletted) surfaces. It handles the allocation of |
788 | | * the surface and protects against buffer overflow. This sink should be used |
789 | | * for all non-animated images and for the first frame of animated images. |
790 | | * |
791 | | * Sinks must always be at the end of the SurfaceFilter chain. |
792 | | */ |
793 | | class SurfaceSink final : public AbstractSurfaceSink |
794 | | { |
795 | | public: |
796 | | nsresult Configure(const SurfaceConfig& aConfig); |
797 | | |
798 | | protected: |
799 | | uint8_t* GetRowPointer() const override; |
800 | | }; |
801 | | |
802 | | class PalettedSurfaceSink; |
803 | | |
804 | | struct PalettedSurfaceConfig |
805 | | { |
806 | | using Filter = PalettedSurfaceSink; |
807 | | Decoder* mDecoder; /// Which Decoder to use to allocate the surface. |
808 | | gfx::IntSize mOutputSize; /// The logical size of the surface. |
809 | | gfx::IntRect mFrameRect; /// The surface subrect which contains data. |
810 | | gfx::SurfaceFormat mFormat; /// The surface format (BGRA or BGRX). |
811 | | uint8_t mPaletteDepth; /// The palette depth of this surface. |
812 | | bool mFlipVertically; /// If true, write the rows from bottom to top. |
813 | | Maybe<AnimationParams> mAnimParams; /// Given for animated images. |
814 | | }; |
815 | | |
816 | | /** |
817 | | * A sink for paletted surfaces. It handles the allocation of the surface and |
818 | | * protects against buffer overflow. This sink can be used for frames of |
819 | | * animated images except the first. |
820 | | * |
821 | | * Sinks must always be at the end of the SurfaceFilter chain. |
822 | | * |
823 | | * XXX(seth): We'll remove all support for paletted surfaces in bug 1247520, |
824 | | * which means we can remove PalettedSurfaceSink entirely. |
825 | | */ |
826 | | class PalettedSurfaceSink final : public AbstractSurfaceSink |
827 | | { |
828 | | public: |
829 | 0 | bool IsValidPalettedPipe() const override { return true; } |
830 | | |
831 | | nsresult Configure(const PalettedSurfaceConfig& aConfig); |
832 | | |
833 | | protected: |
834 | | uint8_t* GetRowPointer() const override; |
835 | | |
836 | | private: |
837 | | /** |
838 | | * The surface subrect which contains data. Note that the surface size we |
839 | | * actually allocate is the size of the frame rect, not the logical size of |
840 | | * the surface. |
841 | | */ |
842 | | gfx::IntRect mFrameRect; |
843 | | }; |
844 | | |
845 | | } // namespace image |
846 | | } // namespace mozilla |
847 | | |
848 | | #endif // mozilla_image_SurfacePipe_h |