Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: Source/platform/graphics/Color.h

Issue 42313002: Move Color.*, DashArray and DrawLooper to Source/platform/ (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: correct patch set 1 mistake Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2004, 2005, 2006, 2010 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 19 matching lines...) Expand all
30 #include "wtf/FastAllocBase.h" 30 #include "wtf/FastAllocBase.h"
31 #include "wtf/Forward.h" 31 #include "wtf/Forward.h"
32 #include "wtf/unicode/Unicode.h" 32 #include "wtf/unicode/Unicode.h"
33 33
34 namespace WebCore { 34 namespace WebCore {
35 35
36 class Color; 36 class Color;
37 37
38 typedef unsigned RGBA32; // RGBA quadruplet 38 typedef unsigned RGBA32; // RGBA quadruplet
39 39
40 RGBA32 makeRGB(int r, int g, int b); 40 PLATFORM_EXPORT RGBA32 makeRGB(int r, int g, int b);
41 RGBA32 makeRGBA(int r, int g, int b, int a); 41 PLATFORM_EXPORT RGBA32 makeRGBA(int r, int g, int b, int a);
42 42
43 RGBA32 colorWithOverrideAlpha(RGBA32 color, float overrideAlpha); 43 PLATFORM_EXPORT RGBA32 colorWithOverrideAlpha(RGBA32 color, float overrideAlpha) ;
44 RGBA32 makeRGBA32FromFloats(float r, float g, float b, float a); 44 PLATFORM_EXPORT RGBA32 makeRGBA32FromFloats(float r, float g, float b, float a);
45 RGBA32 makeRGBAFromHSLA(double h, double s, double l, double a); 45 PLATFORM_EXPORT RGBA32 makeRGBAFromHSLA(double h, double s, double l, double a);
46 RGBA32 makeRGBAFromCMYKA(float c, float m, float y, float k, float a); 46 PLATFORM_EXPORT RGBA32 makeRGBAFromCMYKA(float c, float m, float y, float k, flo at a);
47 47
48 int differenceSquared(const Color&, const Color&); 48 PLATFORM_EXPORT int differenceSquared(const Color&, const Color&);
49 49
50 inline int redChannel(RGBA32 color) { return (color >> 16) & 0xFF; } 50 inline int redChannel(RGBA32 color) { return (color >> 16) & 0xFF; }
51 inline int greenChannel(RGBA32 color) { return (color >> 8) & 0xFF; } 51 inline int greenChannel(RGBA32 color) { return (color >> 8) & 0xFF; }
52 inline int blueChannel(RGBA32 color) { return color & 0xFF; } 52 inline int blueChannel(RGBA32 color) { return color & 0xFF; }
53 inline int alphaChannel(RGBA32 color) { return (color >> 24) & 0xFF; } 53 inline int alphaChannel(RGBA32 color) { return (color >> 24) & 0xFF; }
54 54
55 class Color { 55 class PLATFORM_EXPORT Color {
56 WTF_MAKE_FAST_ALLOCATED; 56 WTF_MAKE_FAST_ALLOCATED;
57 public: 57 public:
58 Color() : m_color(0), m_valid(false) { } 58 Color() : m_color(0), m_valid(false) { }
59 Color(RGBA32 color, bool valid = true) : m_color(color), m_valid(valid) { AS SERT(!m_color || m_valid); } 59 Color(RGBA32 color, bool valid = true) : m_color(color), m_valid(valid) { AS SERT(!m_color || m_valid); }
60 Color(int r, int g, int b) : m_color(makeRGB(r, g, b)), m_valid(true) { } 60 Color(int r, int g, int b) : m_color(makeRGB(r, g, b)), m_valid(true) { }
61 Color(int r, int g, int b, int a) : m_color(makeRGBA(r, g, b, a)), m_valid(t rue) { } 61 Color(int r, int g, int b, int a) : m_color(makeRGBA(r, g, b, a)), m_valid(t rue) { }
62 // Color is currently limited to 32bit RGBA, perhaps some day we'll support better colors 62 // Color is currently limited to 32bit RGBA, perhaps some day we'll support better colors
63 Color(float r, float g, float b, float a) : m_color(makeRGBA32FromFloats(r, g, b, a)), m_valid(true) { } 63 Color(float r, float g, float b, float a) : m_color(makeRGBA32FromFloats(r, g, b, a)), m_valid(true) { }
64 // Creates a new color from the specific CMYK and alpha values. 64 // Creates a new color from the specific CMYK and alpha values.
65 Color(float c, float m, float y, float k, float a) : m_color(makeRGBAFromCMY KA(c, m, y, k, a)), m_valid(true) { } 65 Color(float c, float m, float y, float k, float a) : m_color(makeRGBAFromCMY KA(c, m, y, k, a)), m_valid(true) { }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 inline bool operator==(const Color& a, const Color& b) 129 inline bool operator==(const Color& a, const Color& b)
130 { 130 {
131 return a.rgb() == b.rgb() && a.isValid() == b.isValid(); 131 return a.rgb() == b.rgb() && a.isValid() == b.isValid();
132 } 132 }
133 133
134 inline bool operator!=(const Color& a, const Color& b) 134 inline bool operator!=(const Color& a, const Color& b)
135 { 135 {
136 return !(a == b); 136 return !(a == b);
137 } 137 }
138 138
139 Color colorFromPremultipliedARGB(RGBA32); 139 PLATFORM_EXPORT Color colorFromPremultipliedARGB(RGBA32);
140 RGBA32 premultipliedARGBFromColor(const Color&); 140 PLATFORM_EXPORT RGBA32 premultipliedARGBFromColor(const Color&);
141 141
142 inline Color blend(const Color& from, const Color& to, double progress, bool ble ndPremultiplied = true) 142 inline Color blend(const Color& from, const Color& to, double progress, bool ble ndPremultiplied = true)
143 { 143 {
144 // We need to preserve the state of the valid flag at the end of the animati on 144 // We need to preserve the state of the valid flag at the end of the animati on
145 if (progress == 1 && !to.isValid()) 145 if (progress == 1 && !to.isValid())
146 return Color(); 146 return Color();
147 147
148 if (blendPremultiplied) { 148 if (blendPremultiplied) {
149 // Contrary to the name, RGBA32 actually stores ARGB, so we can initiali ze Color directly from premultipliedARGBFromColor(). 149 // Contrary to the name, RGBA32 actually stores ARGB, so we can initiali ze Color directly from premultipliedARGBFromColor().
150 // Also, premultipliedARGBFromColor() bails on zero alpha, so special-ca se that. 150 // Also, premultipliedARGBFromColor() bails on zero alpha, so special-ca se that.
151 Color premultFrom = from.alpha() ? premultipliedARGBFromColor(from) : 0; 151 Color premultFrom = from.alpha() ? premultipliedARGBFromColor(from) : 0;
152 Color premultTo = to.alpha() ? premultipliedARGBFromColor(to) : 0; 152 Color premultTo = to.alpha() ? premultipliedARGBFromColor(to) : 0;
153 153
154 Color premultBlended(blend(premultFrom.red(), premultTo.red(), progress) , 154 Color premultBlended(blend(premultFrom.red(), premultTo.red(), progress) ,
155 blend(premultFrom.green(), premultTo.green(), progress), 155 blend(premultFrom.green(), premultTo.green(), progress),
156 blend(premultFrom.blue(), premultTo.blue(), progress), 156 blend(premultFrom.blue(), premultTo.blue(), progress),
157 blend(premultFrom.alpha(), premultTo.alpha(), progress)); 157 blend(premultFrom.alpha(), premultTo.alpha(), progress));
158 158
159 return Color(colorFromPremultipliedARGB(premultBlended.rgb())); 159 return Color(colorFromPremultipliedARGB(premultBlended.rgb()));
160 } 160 }
161 161
162 return Color(blend(from.red(), to.red(), progress), 162 return Color(blend(from.red(), to.red(), progress),
163 blend(from.green(), to.green(), progress), 163 blend(from.green(), to.green(), progress),
164 blend(from.blue(), to.blue(), progress), 164 blend(from.blue(), to.blue(), progress),
165 blend(from.alpha(), to.alpha(), progress)); 165 blend(from.alpha(), to.alpha(), progress));
166 } 166 }
167 } // namespace WebCore 167 } // namespace WebCore
168 168
169 #endif // Color_h 169 #endif // Color_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698