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