aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/SkBlitter_ARGB32_Subpixel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkBlitter_ARGB32_Subpixel.cpp')
-rw-r--r--src/core/SkBlitter_ARGB32_Subpixel.cpp144
1 files changed, 0 insertions, 144 deletions
diff --git a/src/core/SkBlitter_ARGB32_Subpixel.cpp b/src/core/SkBlitter_ARGB32_Subpixel.cpp
deleted file mode 100644
index 5d334ae..0000000
--- a/src/core/SkBlitter_ARGB32_Subpixel.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/* libs/graphics/sgl/SkBlitter_ARGB32_Subpixel.cpp
-**
-** Copyright 2009, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-/* LCD blend functions:
-
- These functions take an alpha pixel of the following form:
- red, green, blue -> an alpha value for the given colour component.
- alpha -> the max of the red, green and blue alpha values.
-
- These alpha pixels result from subpixel renderering. The R/G/B values have
- already been corrected for RGB/BGR element ordering.
-
- The alpha pixel is blended with an original pixel and a source colour,
- resulting in a new pixel value.
-*/
-
-#include "SkBitmap.h"
-#include "SkColorPriv.h"
-#include "SkMask.h"
-#include "SkRect.h"
-
-namespace skia_blitter_support {
-
-/** Given a clip region which describes the desired location of a glyph and a
- bitmap to which an LCD glyph is to be blitted, return a pointer to the
- SkBitmap's pixels and output width and height adjusts for the glyph as well
- as a pointer into the glyph.
-
- Recall that LCD glyphs have extra rows (vertical mode) or columns
- (horizontal mode) at the edges as a result of low-pass filtering. If we
- wanted to put a glyph on the hard-left edge of bitmap, we would have to know
- to start one pixel into the glyph, as well as to only add 1 to the recorded
- glyph width etc. This function encapsulates that behaviour.
-
- @param mask The glyph to be blitted.
- @param clip The clip region describing the desired location of the glyph.
- @param device The SkBitmap target for the blit.
- @param widthAdjustment (output) a number to add to the glyph's nominal width.
- @param heightAdjustment (output) a number to add to the glyph's nominal width.
- @param alpha32 (output) a pointer into the 32-bit subpixel alpha data for the glyph
-*/
-uint32_t* adjustForSubpixelClip(const SkMask& mask,
- const SkIRect& clip, const SkBitmap& device,
- int* widthAdjustment, int* heightAdjustment,
- const uint32_t** alpha32) {
- const bool lcdMode = mask.fFormat == SkMask::kHorizontalLCD_Format;
- const bool verticalLCDMode = mask.fFormat == SkMask::kVerticalLCD_Format;
- const int leftOffset = clip.fLeft > 0 ? lcdMode : 0;
- const int topOffset = clip.fTop > 0 ? verticalLCDMode : 0;
- const int rightOffset = lcdMode && clip.fRight < device.width();
- const int bottomOffset = verticalLCDMode && clip.fBottom < device.height();
-
- uint32_t* device32 = device.getAddr32(clip.fLeft - leftOffset, clip.fTop - topOffset);
- *alpha32 = mask.getAddrLCD(clip.fLeft + (lcdMode && !leftOffset),
- clip.fTop + (verticalLCDMode && !topOffset));
-
- *widthAdjustment = leftOffset + rightOffset;
- *heightAdjustment = topOffset + bottomOffset;
-
- return device32;
-}
-
-uint32_t BlendLCDPixelWithColor(const uint32_t alphaPixel, const uint32_t originalPixel,
- const uint32_t sourcePixel) {
- unsigned alphaRed = SkAlpha255To256(SkGetPackedR32(alphaPixel));
- unsigned alphaGreen = SkAlpha255To256(SkGetPackedG32(alphaPixel));
- unsigned alphaBlue = SkAlpha255To256(SkGetPackedB32(alphaPixel));
-
- unsigned sourceRed = SkGetPackedR32(sourcePixel);
- unsigned sourceGreen = SkGetPackedG32(sourcePixel);
- unsigned sourceBlue = SkGetPackedB32(sourcePixel);
- unsigned sourceAlpha = SkAlpha255To256(SkGetPackedA32(sourcePixel));
-
- alphaRed = (alphaRed * sourceAlpha) >> 8;
- alphaGreen = (alphaGreen * sourceAlpha) >> 8;
- alphaBlue = (alphaBlue * sourceAlpha) >> 8;
- unsigned alphaAlpha = SkMax32(SkMax32(alphaRed, alphaBlue), alphaGreen);
-
- unsigned originalRed = SkGetPackedR32(originalPixel);
- unsigned originalGreen = SkGetPackedG32(originalPixel);
- unsigned originalBlue = SkGetPackedB32(originalPixel);
- unsigned originalAlpha = SkGetPackedA32(originalPixel);
-
- return SkPackARGB32(SkMin32(255u, alphaAlpha + originalAlpha),
- ((sourceRed * alphaRed) >> 8) + ((originalRed * (256 - alphaRed)) >> 8),
- ((sourceGreen * alphaGreen) >> 8) + ((originalGreen * (256 - alphaGreen)) >> 8),
- ((sourceBlue * alphaBlue) >> 8) + ((originalBlue * (256 - alphaBlue)) >> 8));
-
-}
-
-uint32_t BlendLCDPixelWithOpaqueColor(const uint32_t alphaPixel, const uint32_t originalPixel,
- const uint32_t sourcePixel) {
- unsigned alphaRed = SkAlpha255To256(SkGetPackedR32(alphaPixel));
- unsigned alphaGreen = SkAlpha255To256(SkGetPackedG32(alphaPixel));
- unsigned alphaBlue = SkAlpha255To256(SkGetPackedB32(alphaPixel));
- unsigned alphaAlpha = SkGetPackedA32(alphaPixel);
-
- unsigned sourceRed = SkGetPackedR32(sourcePixel);
- unsigned sourceGreen = SkGetPackedG32(sourcePixel);
- unsigned sourceBlue = SkGetPackedB32(sourcePixel);
-
- unsigned originalRed = SkGetPackedR32(originalPixel);
- unsigned originalGreen = SkGetPackedG32(originalPixel);
- unsigned originalBlue = SkGetPackedB32(originalPixel);
- unsigned originalAlpha = SkGetPackedA32(originalPixel);
-
- return SkPackARGB32(SkMin32(255u, alphaAlpha + originalAlpha),
- ((sourceRed * alphaRed) >> 8) + ((originalRed * (256 - alphaRed)) >> 8),
- ((sourceGreen * alphaGreen) >> 8) + ((originalGreen * (256 - alphaGreen)) >> 8),
- ((sourceBlue * alphaBlue) >> 8) + ((originalBlue * (256 - alphaBlue)) >> 8));
-}
-
-uint32_t BlendLCDPixelWithBlack(const uint32_t alphaPixel, const uint32_t originalPixel) {
- unsigned alphaRed = SkAlpha255To256(SkGetPackedR32(alphaPixel));
- unsigned alphaGreen = SkAlpha255To256(SkGetPackedG32(alphaPixel));
- unsigned alphaBlue = SkAlpha255To256(SkGetPackedB32(alphaPixel));
- unsigned alphaAlpha = SkGetPackedA32(alphaPixel);
-
- unsigned originalRed = SkGetPackedR32(originalPixel);
- unsigned originalGreen = SkGetPackedG32(originalPixel);
- unsigned originalBlue = SkGetPackedB32(originalPixel);
- unsigned originalAlpha = SkGetPackedA32(originalPixel);
-
- return SkPackARGB32(SkMin32(255u, alphaAlpha + originalAlpha),
- (originalRed * (256 - alphaRed)) >> 8,
- (originalGreen * (256 - alphaGreen)) >> 8,
- (originalBlue * (256 - alphaBlue)) >> 8);
-}
-
-} // namespace skia_blitter_support