forked from mirrors/gecko-dev
		
	 5b5450146f
			
		
	
	
		5b5450146f
		
	
	
	
	
		
			
			Use new changes from cssparser and use the new lab/lch/oklab/oklch color formats. Introduced a new color type AbsoluteColor. It represents any kind of color that has absolute numerical values. It is also tied to a color space and therefore can be trivially converted to another color space. Differential Revision: https://phabricator.services.mozilla.com/D163579
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 | |
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| #include "mozilla/StyleColorInlines.h"
 | |
| 
 | |
| #include "mozilla/ComputedStyle.h"
 | |
| #include "mozilla/ComputedStyleInlines.h"
 | |
| #include "nsIFrame.h"
 | |
| #include "nsStyleStruct.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| 
 | |
| template <>
 | |
| bool StyleColor::MaybeTransparent() const {
 | |
|   // We know that the color is opaque when it's a numeric color with
 | |
|   // alpha == 1.0.
 | |
|   return !IsNumeric() || AsNumeric().alpha != 1.0f;
 | |
| }
 | |
| 
 | |
| template <>
 | |
| nscolor StyleColor::CalcColor(nscolor aColor) const {
 | |
|   return CalcColor(StyleRGBA::FromColor(aColor));
 | |
| }
 | |
| 
 | |
| template <>
 | |
| nscolor StyleColor::CalcColor(const StyleRGBA& aForegroundColor) const {
 | |
|   if (IsNumeric()) {
 | |
|     return AsNumeric().ToColor();
 | |
|   }
 | |
|   if (IsCurrentColor()) {
 | |
|     return aForegroundColor.ToColor();
 | |
|   }
 | |
|   MOZ_ASSERT(IsColorMix());
 | |
|   return Servo_ResolveColor(this, &aForegroundColor);
 | |
| }
 | |
| 
 | |
| template <>
 | |
| nscolor StyleColor::CalcColor(const ComputedStyle& aStyle) const {
 | |
|   // Common case that is numeric color, which is pure background, we
 | |
|   // can skip resolving StyleText().
 | |
|   if (IsNumeric()) {
 | |
|     return AsNumeric().ToColor();
 | |
|   }
 | |
|   return CalcColor(aStyle.StyleText()->mColor);
 | |
| }
 | |
| 
 | |
| template <>
 | |
| nscolor StyleColor::CalcColor(const nsIFrame* aFrame) const {
 | |
|   if (IsNumeric()) {
 | |
|     return AsNumeric().ToColor();
 | |
|   }
 | |
|   return CalcColor(aFrame->StyleText()->mColor);
 | |
| }
 | |
| 
 | |
| }  // namespace mozilla
 |