1 // Copyright 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/macros.h" 6 7 #include "cc/debug/debug_colors.h" 8 9 #include "cc/trees/layer_tree_impl.h" 10 11 namespace cc { 12 13 static float Scale(float width, const LayerTreeImpl* tree_impl) { 14 return width * (tree_impl ? tree_impl->device_scale_factor() : 1); 15 } 16 17 // ======= Layer border colors ======= 18 19 // Tiled content layers are orange. 20 SkColor DebugColors::TiledContentLayerBorderColor() { 21 return SkColorSetARGB(128, 255, 128, 0); 22 } 23 int DebugColors::TiledContentLayerBorderWidth(const LayerTreeImpl* tree_impl) { 24 return Scale(2, tree_impl); 25 } 26 27 // Image layers are olive. 28 SkColor DebugColors::ImageLayerBorderColor() { 29 return SkColorSetARGB(128, 128, 128, 0); 30 } 31 int DebugColors::ImageLayerBorderWidth(const LayerTreeImpl* tree_impl) { 32 return Scale(2, tree_impl); 33 } 34 35 // Non-tiled content layers area green. 36 SkColor DebugColors::ContentLayerBorderColor() { 37 return SkColorSetARGB(128, 0, 128, 32); 38 } 39 int DebugColors::ContentLayerBorderWidth(const LayerTreeImpl* tree_impl) { 40 return Scale(2, tree_impl); 41 } 42 43 // Masking layers are pale blue and wide. 44 SkColor DebugColors::MaskingLayerBorderColor() { 45 return SkColorSetARGB(48, 128, 255, 255); 46 } 47 int DebugColors::MaskingLayerBorderWidth(const LayerTreeImpl* tree_impl) { 48 return Scale(20, tree_impl); 49 } 50 51 // Other container layers are yellow. 52 SkColor DebugColors::ContainerLayerBorderColor() { 53 return SkColorSetARGB(192, 255, 255, 0); 54 } 55 int DebugColors::ContainerLayerBorderWidth(const LayerTreeImpl* tree_impl) { 56 return Scale(2, tree_impl); 57 } 58 59 // Surface layers are a blue-ish green. 60 SkColor DebugColors::SurfaceLayerBorderColor() { 61 return SkColorSetARGB(128, 0, 255, 136); 62 } 63 int DebugColors::SurfaceLayerBorderWidth(const LayerTreeImpl* tree_impl) { 64 return Scale(2, tree_impl); 65 } 66 67 // Render surfaces are blue. 68 SkColor DebugColors::SurfaceBorderColor() { 69 return SkColorSetARGB(100, 0, 0, 255); 70 } 71 int DebugColors::SurfaceBorderWidth(const LayerTreeImpl* tree_impl) { 72 return Scale(2, tree_impl); 73 } 74 75 // Replicas of render surfaces are purple. 76 SkColor DebugColors::SurfaceReplicaBorderColor() { 77 return SkColorSetARGB(100, 160, 0, 255); 78 } 79 int DebugColors::SurfaceReplicaBorderWidth(const LayerTreeImpl* tree_impl) { 80 return Scale(2, tree_impl); 81 } 82 83 // ======= Tile colors ======= 84 85 // High-res tile borders are cyan. 86 SkColor DebugColors::HighResTileBorderColor() { 87 return SkColorSetARGB(100, 80, 200, 200); 88 } 89 int DebugColors::HighResTileBorderWidth(const LayerTreeImpl* tree_impl) { 90 return Scale(1, tree_impl); 91 } 92 93 // Low-res tile borders are purple. 94 SkColor DebugColors::LowResTileBorderColor() { 95 return SkColorSetARGB(100, 212, 83, 192); 96 } 97 int DebugColors::LowResTileBorderWidth(const LayerTreeImpl* tree_impl) { 98 return Scale(2, tree_impl); 99 } 100 101 // Other high-resolution tile borders are yellow. 102 SkColor DebugColors::ExtraHighResTileBorderColor() { 103 return SkColorSetARGB(100, 239, 231, 20); 104 } 105 int DebugColors::ExtraHighResTileBorderWidth(const LayerTreeImpl* tree_impl) { 106 return Scale(2, tree_impl); 107 } 108 109 // Other low-resolution tile borders are green. 110 SkColor DebugColors::ExtraLowResTileBorderColor() { 111 return SkColorSetARGB(100, 93, 186, 18); 112 } 113 int DebugColors::ExtraLowResTileBorderWidth(const LayerTreeImpl* tree_impl) { 114 return Scale(2, tree_impl); 115 } 116 117 // Missing tile borders are red. 118 SkColor DebugColors::MissingTileBorderColor() { 119 return SkColorSetARGB(100, 255, 0, 0); 120 } 121 int DebugColors::MissingTileBorderWidth(const LayerTreeImpl* tree_impl) { 122 return Scale(1, tree_impl); 123 } 124 125 // Solid color tile borders are grey. 126 SkColor DebugColors::SolidColorTileBorderColor() { 127 return SkColorSetARGB(128, 128, 128, 128); 128 } 129 int DebugColors::SolidColorTileBorderWidth(const LayerTreeImpl* tree_impl) { 130 return Scale(1, tree_impl); 131 } 132 133 // Picture tile borders are dark grey. 134 SkColor DebugColors::PictureTileBorderColor() { 135 return SkColorSetARGB(64, 64, 64, 0); 136 } 137 int DebugColors::PictureTileBorderWidth(const LayerTreeImpl* tree_impl) { 138 return Scale(1, tree_impl); 139 } 140 141 // Direct picture borders are chartreuse. 142 SkColor DebugColors::DirectPictureBorderColor() { 143 return SkColorSetARGB(255, 127, 255, 0); 144 } 145 int DebugColors::DirectPictureBorderWidth(const LayerTreeImpl* tree_impl) { 146 return Scale(1, tree_impl); 147 } 148 149 // ======= Checkerboard colors ======= 150 151 // Non-debug checkerboards are grey. 152 SkColor DebugColors::DefaultCheckerboardColor() { 153 return SkColorSetRGB(241, 241, 241); 154 } 155 156 // Invalidated tiles get sky blue checkerboards. 157 SkColor DebugColors::InvalidatedTileCheckerboardColor() { 158 return SkColorSetRGB(128, 200, 245); 159 } 160 161 // Evicted tiles get pale red checkerboards. 162 SkColor DebugColors::EvictedTileCheckerboardColor() { 163 return SkColorSetRGB(255, 200, 200); 164 } 165 166 // ======= Debug rect colors ======= 167 168 static SkColor FadedGreen(int initial_value, int step) { 169 DCHECK_GE(step, 0); 170 DCHECK_LE(step, DebugColors::kFadeSteps); 171 int value = step * initial_value / DebugColors::kFadeSteps; 172 return SkColorSetARGB(value, 0, 195, 0); 173 } 174 // Paint rects in green. 175 SkColor DebugColors::PaintRectBorderColor(int step) { 176 return FadedGreen(255, step); 177 } 178 int DebugColors::PaintRectBorderWidth() { return 2; } 179 SkColor DebugColors::PaintRectFillColor(int step) { 180 return FadedGreen(60, step); 181 } 182 183 // Property-changed rects in blue. 184 SkColor DebugColors::PropertyChangedRectBorderColor() { 185 return SkColorSetARGB(255, 0, 0, 255); 186 } 187 int DebugColors::PropertyChangedRectBorderWidth() { return 2; } 188 SkColor DebugColors::PropertyChangedRectFillColor() { 189 return SkColorSetARGB(30, 0, 0, 255); 190 } 191 192 // Surface damage rects in yellow-orange. 193 SkColor DebugColors::SurfaceDamageRectBorderColor() { 194 return SkColorSetARGB(255, 200, 100, 0); 195 } 196 int DebugColors::SurfaceDamageRectBorderWidth() { return 2; } 197 SkColor DebugColors::SurfaceDamageRectFillColor() { 198 return SkColorSetARGB(30, 200, 100, 0); 199 } 200 201 // Surface replica screen space rects in green. 202 SkColor DebugColors::ScreenSpaceLayerRectBorderColor() { 203 return SkColorSetARGB(255, 100, 200, 0); 204 } 205 int DebugColors::ScreenSpaceLayerRectBorderWidth() { return 2; } 206 SkColor DebugColors::ScreenSpaceLayerRectFillColor() { 207 return SkColorSetARGB(30, 100, 200, 0); 208 } 209 210 // Layer screen space rects in purple. 211 SkColor DebugColors::ScreenSpaceSurfaceReplicaRectBorderColor() { 212 return SkColorSetARGB(255, 100, 0, 200); 213 } 214 int DebugColors::ScreenSpaceSurfaceReplicaRectBorderWidth() { return 2; } 215 SkColor DebugColors::ScreenSpaceSurfaceReplicaRectFillColor() { 216 return SkColorSetARGB(10, 100, 0, 200); 217 } 218 219 // Occluding rects in pink. 220 SkColor DebugColors::OccludingRectBorderColor() { 221 return SkColorSetARGB(255, 245, 136, 255); 222 } 223 int DebugColors::OccludingRectBorderWidth() { return 2; } 224 SkColor DebugColors::OccludingRectFillColor() { 225 return SkColorSetARGB(10, 245, 136, 255); 226 } 227 228 // Non-Occluding rects in a reddish color. 229 SkColor DebugColors::NonOccludingRectBorderColor() { 230 return SkColorSetARGB(255, 200, 0, 100); 231 } 232 int DebugColors::NonOccludingRectBorderWidth() { return 2; } 233 SkColor DebugColors::NonOccludingRectFillColor() { 234 return SkColorSetARGB(10, 200, 0, 100); 235 } 236 237 // Touch-event-handler rects in yellow. 238 SkColor DebugColors::TouchEventHandlerRectBorderColor() { 239 return SkColorSetARGB(255, 239, 229, 60); 240 } 241 int DebugColors::TouchEventHandlerRectBorderWidth() { return 2; } 242 SkColor DebugColors::TouchEventHandlerRectFillColor() { 243 return SkColorSetARGB(30, 239, 229, 60); 244 } 245 246 // Wheel-event-handler rects in green. 247 SkColor DebugColors::WheelEventHandlerRectBorderColor() { 248 return SkColorSetARGB(255, 189, 209, 57); 249 } 250 int DebugColors::WheelEventHandlerRectBorderWidth() { return 2; } 251 SkColor DebugColors::WheelEventHandlerRectFillColor() { 252 return SkColorSetARGB(30, 189, 209, 57); 253 } 254 255 // Scroll-event-handler rects in teal. 256 SkColor DebugColors::ScrollEventHandlerRectBorderColor() { 257 return SkColorSetARGB(255, 24, 167, 181); 258 } 259 int DebugColors::ScrollEventHandlerRectBorderWidth() { return 2; } 260 SkColor DebugColors::ScrollEventHandlerRectFillColor() { 261 return SkColorSetARGB(30, 24, 167, 181); 262 } 263 264 // Non-fast-scrollable rects in orange. 265 SkColor DebugColors::NonFastScrollableRectBorderColor() { 266 return SkColorSetARGB(255, 238, 163, 59); 267 } 268 int DebugColors::NonFastScrollableRectBorderWidth() { return 2; } 269 SkColor DebugColors::NonFastScrollableRectFillColor() { 270 return SkColorSetARGB(30, 238, 163, 59); 271 } 272 273 // Animation bounds are lime-green. 274 SkColor DebugColors::LayerAnimationBoundsBorderColor() { 275 return SkColorSetARGB(255, 112, 229, 0); 276 } 277 int DebugColors::LayerAnimationBoundsBorderWidth() { return 2; } 278 SkColor DebugColors::LayerAnimationBoundsFillColor() { 279 return SkColorSetARGB(30, 112, 229, 0); 280 } 281 282 // Non-Painted rects in cyan. 283 SkColor DebugColors::NonPaintedFillColor() { return SK_ColorCYAN; } 284 285 // Missing picture rects in magenta. 286 SkColor DebugColors::MissingPictureFillColor() { return SK_ColorMAGENTA; } 287 288 // Missing resize invalidations are in salmon pink. 289 SkColor DebugColors::MissingResizeInvalidations() { 290 return SkColorSetARGB(255, 255, 155, 170); 291 } 292 293 // Picture borders in transparent blue. 294 SkColor DebugColors::PictureBorderColor() { 295 return SkColorSetARGB(100, 0, 0, 200); 296 } 297 298 // ======= HUD widget colors ======= 299 300 SkColor DebugColors::HUDBackgroundColor() { 301 return SkColorSetARGB(215, 17, 17, 17); 302 } 303 SkColor DebugColors::HUDSeparatorLineColor() { 304 return SkColorSetARGB(255, 130, 130, 130); 305 } 306 SkColor DebugColors::HUDIndicatorLineColor() { 307 return SkColorSetARGB(255, 80, 80, 80); 308 } 309 310 SkColor DebugColors::PlatformLayerTreeTextColor() { return SK_ColorRED; } 311 SkColor DebugColors::FPSDisplayTextAndGraphColor() { return SK_ColorRED; } 312 SkColor DebugColors::MemoryDisplayTextColor() { 313 return SkColorSetARGB(255, 220, 220, 220); 314 } 315 316 // Paint time display in green (similar to paint times in the WebInspector) 317 SkColor DebugColors::PaintTimeDisplayTextAndGraphColor() { 318 return SkColorSetRGB(75, 155, 55); 319 } 320 321 } // namespace cc 322