| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This file is generated from: |
| {%- for path in in_files %} |
| // {{path}} |
| {%- endfor %} |
| |
| #include "{{header_file}}" |
| |
| #include <optional> |
| #include "third_party/skia/include/core/SkColor.h" |
| |
| namespace {{namespace_name}} { |
| |
| bool g_dark_mode_enabled = false; |
| bool g_debug_colors_enabled = false; |
| |
| bool DarkModeEnabled() { |
| return g_dark_mode_enabled; |
| } |
| |
| bool DebugColorsEnabled() { |
| return g_debug_colors_enabled; |
| } |
| |
| void SetDarkModeEnabled(bool enabled) { |
| g_dark_mode_enabled = enabled; |
| } |
| |
| void SetDebugColorsEnabled(bool enabled) { |
| g_debug_colors_enabled = enabled; |
| } |
| |
| {%- if opacities %} |
| |
| SkAlpha GetOpacity(OpacityName opacity_name, bool is_dark_mode) { |
| switch (opacity_name) { |
| {%- for name, mode_values in opacities.items() %} |
| case OpacityName::{{name | to_const_name}}: |
| {%- if mode_values[Modes.DARK] %} |
| if (is_dark_mode) { |
| return {{mode_values[Modes.DARK] | cpp_opacity}}; |
| } else { |
| return {{mode_values[Modes.LIGHT] | cpp_opacity}}; |
| } |
| {%- else %} |
| return {{mode_values[Modes.LIGHT] | cpp_opacity}}; |
| {%- endif %} |
| {%- endfor %} |
| } |
| } |
| |
| {%- endif %} |
| |
| std::optional<SkColor> GetDebugColor(ColorName color_name, bool is_dark_mode) { |
| switch (color_name) { |
| {%- for obj in colors %} |
| {%- if obj.mode_values[Modes.DEBUG] %} |
| case ColorName::{{obj.name | to_const_name}}: |
| return {{obj.mode_values[Modes.DEBUG] | cpp_color}}; |
| |
| {%- endif %} |
| {%- endfor %} |
| default: |
| return std::nullopt; |
| } |
| } |
| |
| SkColor ResolveColor(ColorName color_name, |
| bool is_dark_mode, |
| bool use_debug_colors) { |
| if (use_debug_colors) { |
| auto debug_color = GetDebugColor(color_name, is_dark_mode); |
| if (debug_color) { |
| return *debug_color; |
| } |
| } |
| switch (color_name) { |
| {%- for obj in colors %} |
| case ColorName::{{obj.name | to_const_name}}: |
| {%- if obj.mode_values[Modes.DARK] %} |
| if (is_dark_mode) |
| return {{obj.mode_values[Modes.DARK] | cpp_color}}; |
| |
| {%- endif %} |
| return {{obj.mode_values[Modes.LIGHT] | cpp_color}}; |
| {%- endfor %} |
| } |
| } |
| |
| } // namespace {{namespace_name}} |