1/*
2 * Copyright 2001-2015, Haiku.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		DarkWyrm <bpmagic@columbus.rr.com>
7 *		Stephan A��mus <superstippi@gmx.de>
8 *		Rene Gollent <rene@gollent.com>
9 *		Joseph Groover <looncraz@looncraz.net>
10 */
11
12
13#include <stdio.h>
14#include <Catalog.h>
15#include <DefaultColors.h>
16#include <Directory.h>
17#include <Entry.h>
18#include <File.h>
19#include <InterfaceDefs.h>
20#include <Locale.h>
21#include <Message.h>
22#include <ServerReadOnlyMemory.h>
23#include <String.h>
24#include "Colors.h"
25
26
27#undef B_TRANSLATION_CONTEXT
28#define B_TRANSLATION_CONTEXT "Colors tab"
29
30
31static ColorDescription sColorDescriptionTable[] = {
32	{ B_PANEL_BACKGROUND_COLOR, B_TRANSLATE_MARK("Panel background") },
33	{ B_PANEL_TEXT_COLOR, B_TRANSLATE_MARK("Panel text") },
34	{ B_DOCUMENT_BACKGROUND_COLOR, B_TRANSLATE_MARK("Document background") },
35	{ B_DOCUMENT_TEXT_COLOR, B_TRANSLATE_MARK("Document text") },
36	{ B_CONTROL_BACKGROUND_COLOR, B_TRANSLATE_MARK("Control background") },
37	{ B_CONTROL_TEXT_COLOR, B_TRANSLATE_MARK("Control text") },
38	{ B_CONTROL_BORDER_COLOR, B_TRANSLATE_MARK("Control border") },
39	{ B_CONTROL_HIGHLIGHT_COLOR, B_TRANSLATE_MARK("Control highlight") },
40	{ B_CONTROL_MARK_COLOR, B_TRANSLATE_MARK("Control mark") },
41	{ B_NAVIGATION_BASE_COLOR, B_TRANSLATE_MARK("Navigation base") },
42	{ B_NAVIGATION_PULSE_COLOR, B_TRANSLATE_MARK("Navigation pulse") },
43	{ B_SHINE_COLOR, B_TRANSLATE_MARK("Shine") },
44	{ B_SHADOW_COLOR, B_TRANSLATE_MARK("Shadow") },
45	{ B_LINK_TEXT_COLOR, B_TRANSLATE_MARK("Link text") },
46	{ B_LINK_HOVER_COLOR, B_TRANSLATE_MARK("Link hover") },
47	{ B_LINK_VISITED_COLOR, B_TRANSLATE_MARK("Link visited") },
48	{ B_LINK_ACTIVE_COLOR, B_TRANSLATE_MARK("Link active") },
49	{ B_MENU_BACKGROUND_COLOR, B_TRANSLATE_MARK("Menu background") },
50	{ B_MENU_SELECTED_BACKGROUND_COLOR,
51		B_TRANSLATE_MARK("Selected menu item background") },
52	{ B_MENU_ITEM_TEXT_COLOR, B_TRANSLATE_MARK("Menu item text") },
53	{ B_MENU_SELECTED_ITEM_TEXT_COLOR,
54		B_TRANSLATE_MARK("Selected menu item text") },
55	{ B_MENU_SELECTED_BORDER_COLOR,
56		B_TRANSLATE_MARK("Selected menu item border") },
57	{ B_LIST_BACKGROUND_COLOR, B_TRANSLATE_MARK("List background") },
58	{ B_LIST_SELECTED_BACKGROUND_COLOR,
59		B_TRANSLATE_MARK("Selected list item background") },
60	{ B_LIST_ITEM_TEXT_COLOR, B_TRANSLATE_MARK("List item text") },
61	{ B_LIST_SELECTED_ITEM_TEXT_COLOR,
62		B_TRANSLATE_MARK("Selected list item text") },
63	{ B_SCROLL_BAR_THUMB_COLOR,
64		B_TRANSLATE_MARK("Scroll bar thumb") },
65	{ B_TOOL_TIP_BACKGROUND_COLOR, B_TRANSLATE_MARK("Tooltip background") },
66	{ B_TOOL_TIP_TEXT_COLOR, B_TRANSLATE_MARK("Tooltip text") },
67	{ B_STATUS_BAR_COLOR, B_TRANSLATE_MARK("Status bar") },
68	{ B_SUCCESS_COLOR, B_TRANSLATE_MARK("Success") },
69	{ B_FAILURE_COLOR, B_TRANSLATE_MARK("Failure") },
70	{ B_WINDOW_TAB_COLOR, B_TRANSLATE_MARK("Window tab") },
71	{ B_WINDOW_TEXT_COLOR, B_TRANSLATE_MARK("Window tab text") },
72	{ B_WINDOW_INACTIVE_TAB_COLOR, B_TRANSLATE_MARK("Inactive window tab") },
73	{ B_WINDOW_INACTIVE_TEXT_COLOR,
74		B_TRANSLATE_MARK("Inactive window tab text") },
75	{ B_WINDOW_BORDER_COLOR, B_TRANSLATE_MARK("Window border") },
76	{ B_WINDOW_INACTIVE_BORDER_COLOR,
77		B_TRANSLATE_MARK("Inactive window border") }
78};
79
80const int32 sColorDescriptionCount = sizeof(sColorDescriptionTable)
81	/ sizeof(ColorDescription);
82
83
84const ColorDescription*
85get_color_description(int32 index)
86{
87	if (index < 0 || index >= sColorDescriptionCount)
88		return NULL;
89	return &sColorDescriptionTable[index];
90}
91
92
93int32
94color_description_count(void)
95{
96	return sColorDescriptionCount;
97}
98
99
100void
101get_default_colors(BMessage* message)
102{
103	if (message == NULL)
104		return;
105
106	for (int32 index = 0; index < kColorWhichCount; ++index) {
107		color_which which = index_to_color_which(index);
108		message->AddColor(ui_color_name(which),
109			BPrivate::kDefaultColors[index]);
110	}
111}
112
113
114void
115get_current_colors(BMessage* message)
116{
117	if (message == NULL)
118		return;
119
120	for (int32 index = 0; index < kColorWhichCount; ++index) {
121		color_which which = index_to_color_which(index);
122		message->AddColor(ui_color_name(which), ui_color(which));
123	}
124}
125
126