12 template<std::
unsigned_
integral Pixel>
18 , superImpose(superImpose_)
23 template<std::
unsigned_
integral Pixel>
26 return output.getWidth();
29 template<std::
unsigned_
integral Pixel>
32 return output.getHeight();
35 template<std::
unsigned_
integral Pixel>
38 return output.acquireLine(y);
41 template<std::
unsigned_
integral Pixel>
44 unsigned width = output.getWidth();
46 auto* srcLine = getSrcLine(y, buf2);
48 alphaBlend(buf, srcLine, buf, width);
49 output.releaseLine(y, buf);
52 template<std::
unsigned_
integral Pixel>
55 auto* dstLine = output.acquireLine(y);
56 unsigned width = output.getWidth();
57 if (pixelOps.isFullyOpaque(color)) {
59 memset(dstLine, width, color);
61 auto* srcLine = getSrcLine(y, dstLine);
62 if (pixelOps.isFullyTransparent(color)) {
66 if (srcLine != dstLine) {
68 copy(srcLine, dstLine, width);
72 alphaBlend(color, srcLine, dstLine, width);
75 output.releaseLine(y, dstLine);
78 template<std::
unsigned_
integral Pixel>
83 return superImpose.getLinePtr320_240(y, buf);
84 }
else if (width == 640) {
85 return superImpose.getLinePtr640_480(y, buf);
86 }
else if (width == 960) {
87 return superImpose.getLinePtr960_720(y, buf);
96 template class SuperImposeScalerOutput<uint16_t>;
99 template class SuperImposeScalerOutput<uint32_t>;
AlphaBlendLines functor Generate an output line that is a per-pixel-alpha-blend of the two input line...
A video frame as output by the VDP scanline conversion unit, before any postprocessing filters are ap...
unsigned getHeight() const override
unsigned getWidth() const override
void fillLine(unsigned y, Pixel color) override
void releaseLine(unsigned y, Pixel *buf) override
SuperImposeScalerOutput(ScalerOutput< Pixel > &output, const RawFrame &superImpose_, const PixelOperations< Pixel > &pixelOps_)
Pixel * acquireLine(unsigned y) override
This file implemented 3 utility functions:
auto copy(InputRange &&range, OutputIter out)
#define VLA_SSE_ALIGNED(TYPE, NAME, LENGTH)