LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/core - SkPaintPriv.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 36 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2013 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #include "SkBitmap.h"
       9             : #include "SkColorFilter.h"
      10             : #include "SkPaintPriv.h"
      11             : #include "SkImage.h"
      12             : #include "SkPaint.h"
      13             : #include "SkShader.h"
      14             : #include "SkXfermodePriv.h"
      15             : 
      16           0 : static bool changes_alpha(const SkPaint& paint) {
      17           0 :     SkColorFilter* cf = paint.getColorFilter();
      18           0 :     return cf && !(cf->getFlags() & SkColorFilter::kAlphaUnchanged_Flag);
      19             : }
      20             : 
      21           0 : bool SkPaintPriv::Overwrites(const SkPaint* paint, ShaderOverrideOpacity overrideOpacity) {
      22           0 :     if (!paint) {
      23             :         // No paint means we default to SRC_OVER, so we overwrite iff our shader-override
      24             :         // is opaque, or we don't have one.
      25           0 :         return overrideOpacity != kNotOpaque_ShaderOverrideOpacity;
      26             :     }
      27             : 
      28           0 :     SkXfermode::SrcColorOpacity opacityType = SkXfermode::kUnknown_SrcColorOpacity;
      29             : 
      30           0 :     if (!changes_alpha(*paint)) {
      31           0 :         const unsigned paintAlpha = paint->getAlpha();
      32           0 :         if (0xff == paintAlpha && overrideOpacity != kNotOpaque_ShaderOverrideOpacity &&
      33           0 :             (!paint->getShader() || paint->getShader()->isOpaque()))
      34             :         {
      35           0 :             opacityType = SkXfermode::kOpaque_SrcColorOpacity;
      36           0 :         } else if (0 == paintAlpha) {
      37           0 :             if (overrideOpacity == kNone_ShaderOverrideOpacity && !paint->getShader()) {
      38           0 :                 opacityType = SkXfermode::kTransparentBlack_SrcColorOpacity;
      39             :             } else {
      40           0 :                 opacityType = SkXfermode::kTransparentAlpha_SrcColorOpacity;
      41             :             }
      42             :         }
      43             :     }
      44             : 
      45           0 :     return SkXfermode::IsOpaque(paint->getBlendMode(), opacityType);
      46             : }
      47             : 
      48           0 : bool SkPaintPriv::Overwrites(const SkBitmap& bitmap, const SkPaint* paint) {
      49           0 :     return Overwrites(paint, bitmap.isOpaque() ? kOpaque_ShaderOverrideOpacity
      50           0 :                                                : kNotOpaque_ShaderOverrideOpacity);
      51             : }
      52             : 
      53           0 : bool SkPaintPriv::Overwrites(const SkImage* image, const SkPaint* paint) {
      54           0 :     return Overwrites(paint, image->isOpaque() ? kOpaque_ShaderOverrideOpacity
      55           0 :                                                : kNotOpaque_ShaderOverrideOpacity);
      56             : }
      57             : 
      58           0 : void SkPaintPriv::ScaleFontMetrics(SkPaint::FontMetrics* metrics, SkScalar scale) {
      59           0 :     metrics->fTop *= scale;
      60           0 :     metrics->fAscent *= scale;
      61           0 :     metrics->fDescent *= scale;
      62           0 :     metrics->fBottom *= scale;
      63           0 :     metrics->fLeading *= scale;
      64           0 :     metrics->fAvgCharWidth *= scale;
      65           0 :     metrics->fXMin *= scale;
      66           0 :     metrics->fXMax *= scale;
      67           0 :     metrics->fXHeight *= scale;
      68           0 :     metrics->fUnderlineThickness *= scale;
      69           0 :     metrics->fUnderlinePosition *= scale;
      70           0 : }
      71             : 

Generated by: LCOV version 1.13