Skip to content

Commit

Permalink
move font constants to their own compilation unit
Browse files Browse the repository at this point in the history
avoids including SDL_TTF unnecessarily
  • Loading branch information
cbeck88 committed Oct 15, 2016
1 parent 6b978a7 commit f82f996
Show file tree
Hide file tree
Showing 29 changed files with 119 additions and 65 deletions.
1 change: 1 addition & 0 deletions src/CMakeLists.txt
Expand Up @@ -985,6 +985,7 @@ set(libwesnoth-game_STAT_SRC
display_context.cpp
events.cpp
floating_label.cpp
font/constants.cpp
font/font_config.cpp
font/sdl_ttf.cpp
font/text.cpp
Expand Down
1 change: 1 addition & 0 deletions src/SConscript
Expand Up @@ -90,6 +90,7 @@ libwesnoth_sources = Split("""
display.cpp
events.cpp
floating_label.cpp
font/constants.cpp
font/font_config.cpp
font/sdl_ttf.cpp
font/text.cpp
Expand Down
1 change: 1 addition & 0 deletions src/editor/palette/tristate_button.cpp
Expand Up @@ -18,6 +18,7 @@

#include "tristate_button.hpp"

#include "font/constants.hpp"
#include "font/sdl_ttf.hpp"
#include "game_config.hpp"
#include "image.hpp"
Expand Down
37 changes: 37 additions & 0 deletions src/font/constants.cpp
@@ -0,0 +1,37 @@
/*
Copyright (C) 2008 - 2016 by Mark de Wever <koraq@xs4all.nl>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/

#include "constants.hpp"

#include "sdl/utils.hpp"

#include <SDL.h>

namespace font {

const SDL_Color NORMAL_COLOR = {0xDD,0xDD,0xDD,0},
GRAY_COLOR = {0x77,0x77,0x77,0},
LOBBY_COLOR = {0xBB,0xBB,0xBB,0},
GOOD_COLOR = {0x00,0xFF,0x00,0},
BAD_COLOR = {0xFF,0x00,0x00,0},
BLACK_COLOR = {0x00,0x00,0x00,0},
YELLOW_COLOR = {0xFF,0xFF,0x00,0},
BUTTON_COLOR = {0xBC,0xB0,0x88,0},
PETRIFIED_COLOR = {0xA0,0xA0,0xA0,0},
TITLE_COLOR = {0xBC,0xB0,0x88,0},
LABEL_COLOR = {0x6B,0x8C,0xFF,0},
BIGMAP_COLOR = {0xFF,0xFF,0xFF,0};
const SDL_Color DISABLED_COLOR = inverse(PETRIFIED_COLOR);

} // end namespace font
49 changes: 49 additions & 0 deletions src/font/constants.hpp
@@ -0,0 +1,49 @@
/*
Copyright (C) 2008 - 2016 by Mark de Wever <koraq@xs4all.nl>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/

#pragma once

#include <SDL.h>

namespace font {

//various standard colors
extern const SDL_Color NORMAL_COLOR, GRAY_COLOR, LOBBY_COLOR, GOOD_COLOR, BAD_COLOR,
BLACK_COLOR, YELLOW_COLOR, BUTTON_COLOR, BIGMAP_COLOR,
PETRIFIED_COLOR, TITLE_COLOR, DISABLED_COLOR, LABEL_COLOR;

// font sizes, to be made theme parameters
constexpr int SIZE_NORMAL = 14;
// automatic computation of other font sizes, to be made a default for theme-provided values
constexpr int
SIZE_TINY = 10 * SIZE_NORMAL / 14,
SIZE_SMALL = 12 * SIZE_NORMAL / 14,

SIZE_15 = 15 * SIZE_NORMAL / 14,
SIZE_PLUS = 16 * SIZE_NORMAL / 14,
SIZE_LARGE = 18 * SIZE_NORMAL / 14,
SIZE_TITLE = 20 * SIZE_NORMAL / 14,
SIZE_XLARGE = 24 * SIZE_NORMAL / 14
;
// For arbitrary scaling:
// (Not used in defining the SIZE_* consts because of spurious compiler warnings.)
constexpr inline int relative_size(int size)
{
return (SIZE_NORMAL * size / 14);
}

// GUI1 built-in maximum
constexpr size_t max_text_line_width = 4096;

} // end namespace font
2 changes: 1 addition & 1 deletion src/font/font_description.hpp
@@ -1,5 +1,5 @@
/*
Copyright (C) 2016 by Chris Beck<render787@gmail.com>
Copyright (C) 2015 - 2016 by Chris Beck<render787@gmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
Expand Down
2 changes: 1 addition & 1 deletion src/font/pango/hyperlink.hpp
@@ -1,5 +1,5 @@
/*
Copyright (C) 2008 - 2016 by Mark de Wever <koraq@xs4all.nl>
Copyright (C) 2015 - 2016 by Chris Beck<render787@gmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
Expand Down
26 changes: 1 addition & 25 deletions src/font/sdl_ttf.hpp
Expand Up @@ -15,6 +15,7 @@
#ifndef FONT_SDL_TTF_HPP
#define FONT_SDL_TTF_HPP

#include "constants.hpp"
#include "font_id.hpp"
#include "font_description.hpp"

Expand All @@ -26,31 +27,6 @@ class surface;

namespace font {

//various standard colors
extern const SDL_Color NORMAL_COLOR, GRAY_COLOR, LOBBY_COLOR, GOOD_COLOR, BAD_COLOR,
BLACK_COLOR, YELLOW_COLOR, BUTTON_COLOR, BIGMAP_COLOR,
PETRIFIED_COLOR, TITLE_COLOR, DISABLED_COLOR, LABEL_COLOR;

// font sizes, to be made theme parameters
constexpr int SIZE_NORMAL = 14;
// automatic computation of other font sizes, to be made a default for theme-provided values
constexpr int
SIZE_TINY = 10 * SIZE_NORMAL / 14,
SIZE_SMALL = 12 * SIZE_NORMAL / 14,

SIZE_15 = 15 * SIZE_NORMAL / 14,
SIZE_PLUS = 16 * SIZE_NORMAL / 14,
SIZE_LARGE = 18 * SIZE_NORMAL / 14,
SIZE_TITLE = 20 * SIZE_NORMAL / 14,
SIZE_XLARGE = 24 * SIZE_NORMAL / 14
;
// For arbitrary scaling:
// (Not used in defining the SIZE_* consts because of spurious compiler warnings.)
inline int relative_size(int size)
{
return (SIZE_NORMAL * size / 14);
}

// Returns a SDL surface containing the text rendered in a given color.
surface get_rendered_text(const std::string& text, int size, const SDL_Color& color, int style=0);

Expand Down
16 changes: 0 additions & 16 deletions src/font/text_surface.hpp
Expand Up @@ -30,22 +30,6 @@

namespace font {

const SDL_Color NORMAL_COLOR = {0xDD,0xDD,0xDD,0},
GRAY_COLOR = {0x77,0x77,0x77,0},
LOBBY_COLOR = {0xBB,0xBB,0xBB,0},
GOOD_COLOR = {0x00,0xFF,0x00,0},
BAD_COLOR = {0xFF,0x00,0x00,0},
BLACK_COLOR = {0x00,0x00,0x00,0},
YELLOW_COLOR = {0xFF,0xFF,0x00,0},
BUTTON_COLOR = {0xBC,0xB0,0x88,0},
PETRIFIED_COLOR = {0xA0,0xA0,0xA0,0},
TITLE_COLOR = {0xBC,0xB0,0x88,0},
LABEL_COLOR = {0x6B,0x8C,0xFF,0},
BIGMAP_COLOR = {0xFF,0xFF,0xFF,0};
const SDL_Color DISABLED_COLOR = inverse(PETRIFIED_COLOR);

static const size_t max_text_line_width = 4096;

class text_surface
{
public:
Expand Down
1 change: 1 addition & 0 deletions src/game_initialization/multiplayer.cpp
Expand Up @@ -15,6 +15,7 @@

#include "addon/manager.hpp" // for get_installed_addons
#include "config_assign.hpp"
#include "font/sdl_ttf.hpp"
#include "formula/string_utils.hpp"
#include "game_preferences.hpp"
#include "generators/map_create.hpp"
Expand Down
1 change: 1 addition & 0 deletions src/game_initialization/multiplayer_lobby.cpp
Expand Up @@ -21,6 +21,7 @@
#include "addon/manager_ui.hpp"
#include "construct_dialog.hpp"
#include "filesystem.hpp"
#include "font/sdl_ttf.hpp"
#include "game_preferences.hpp"
#include "lobby_preferences.hpp"
#include "map/exception.hpp"
Expand Down
1 change: 1 addition & 0 deletions src/game_initialization/multiplayer_ui.cpp
Expand Up @@ -16,6 +16,7 @@

#include "construct_dialog.hpp"
#include "video.hpp"
#include "font/sdl_ttf.hpp"
#include "formatter.hpp"
#include "game_preferences.hpp"
#include "gettext.hpp"
Expand Down
1 change: 0 additions & 1 deletion src/gui/dialogs/addon/list.cpp
Expand Up @@ -47,7 +47,6 @@
#include "serialization/string_utils.hpp"
#include "formula/string_utils.hpp"
#include "marked-up_text.hpp"
// #include "font.hpp"
#include "preferences.hpp"
#include "strftime.hpp"
#include "video.hpp"
Expand Down
1 change: 0 additions & 1 deletion src/gui/widgets/control.cpp
Expand Up @@ -16,7 +16,6 @@

#include "control.hpp"

// #include "font.hpp"
#include "formula/string_utils.hpp"
#include "gui/auxiliary/iterator/walker_widget.hpp"
#include "gui/core/log.hpp"
Expand Down
1 change: 1 addition & 0 deletions src/gui/widgets/text_box.cpp
Expand Up @@ -250,6 +250,7 @@ void ttext_box::update_offsets()

assert(conf);

// FIXME: This should use pango-cairo code path instead of sdl_ttf code path
text_height_ = font::get_max_height(conf->text_font_size);

game_logic::map_formula_callable variables;
Expand Down
1 change: 0 additions & 1 deletion src/gui/widgets/window.cpp
Expand Up @@ -27,7 +27,6 @@
#include "events.hpp"
#include "floating_label.hpp"
#include "formula/callable.hpp"
//#include "font.hpp"
#include "gettext.hpp"
#include "log.hpp"
#include "gui/auxiliary/formula.hpp"
Expand Down
2 changes: 1 addition & 1 deletion src/help/help.cpp
Expand Up @@ -24,7 +24,7 @@

#include "config.hpp" // for config, etc
#include "events.hpp" // for raise_draw_event, pump, etc
#include "font/sdl_ttf.hpp" // for relative_size
#include "font/constants.hpp" // for relative_size
#include "game_preferences.hpp"
#include "gettext.hpp" // for _
#include "gui/dialogs/transient_message.hpp"
Expand Down
2 changes: 1 addition & 1 deletion src/help/help_browser.cpp
Expand Up @@ -16,7 +16,7 @@
#include <iostream> // for operator<<, basic_ostream, etc
#include <SDL_mouse.h> // for SDL_GetMouseState, etc
#include "cursor.hpp" // for set, CURSOR_TYPE::HYPERLINK, etc
#include "font/sdl_ttf.hpp" // for relative_size
#include "font/constants.hpp" // for relative_size
#include "gettext.hpp" // for _
#include "gui/dialogs/transient_message.hpp"
#include "help/help_text_area.hpp" // for help_text_area
Expand Down
2 changes: 1 addition & 1 deletion src/help/help_browser.hpp
Expand Up @@ -18,7 +18,7 @@
#include <deque> // for deque
#include <string> // for string
#include <SDL_events.h> // for SDL_Event
#include "help_menu.hpp" // for help_menu
#include "help_menu.hpp" // for help_menu
#include "help_text_area.hpp" // for help_text_area
#include "widgets/button.hpp" // for button
#include "widgets/widget.hpp" // for widget
Expand Down
2 changes: 1 addition & 1 deletion src/help/help_text_area.hpp
Expand Up @@ -19,7 +19,7 @@
#include <string> // for string
#include <utility> // for pair
#include <SDL_video.h> // for SDL_Color (ptr only), etc
#include "font/sdl_ttf.hpp" // for NORMAL_COLOR
#include "font/constants.hpp" // for NORMAL_COLOR
#include "sdl/utils.hpp" // for surface
#include "widgets/scrollarea.hpp" // for scrollarea
class CVideo;
Expand Down
13 changes: 9 additions & 4 deletions src/help/help_topic_generators.cpp
Expand Up @@ -14,19 +14,20 @@

#include "help_topic_generators.hpp"

#include "font/sdl_ttf.hpp" // for line_width
#include "game_config.hpp" // for debug, menu_contract, etc
#include "game_preferences.hpp" // for encountered_terrains, etc
#include "gettext.hpp" // for _, gettext, N_
#include "language.hpp" // for string_table, symbol_table
#include "log.hpp" // for LOG_STREAM, logger, etc
#include "movetype.hpp" // for movetype, movetype::effects, etc
#include "units/race.hpp" // for unit_race, etc
#include "terrain/terrain.hpp" // for terrain_type
#include "units/race.hpp" // for unit_race, etc
#include "terrain/terrain.hpp" // for terrain_type
#include "terrain/translation.hpp" // for operator==, t_list, etc
#include "terrain/type_data.hpp" // for terrain_type_data, etc
#include "tstring.hpp" // for t_string, operator<<
#include "units/helper.hpp" // for resistance_color
#include "units/types.hpp" // for unit_type, unit_type_data, etc
#include "units/helper.hpp" // for resistance_color
#include "units/types.hpp" // for unit_type, unit_type_data, etc
#include "video.hpp" // fore current_resolution

#include <boost/optional.hpp> // for optional
Expand Down Expand Up @@ -786,4 +787,8 @@ std::string unit_topic_generator::operator()() const {
return ss.str();
}

void unit_topic_generator::push_header(std::vector< item > &row, const std::string& name) const {
row.push_back(item(bold(name), font::line_width(name, normal_font_size, TTF_STYLE_BOLD)));
}

} // end namespace help
6 changes: 1 addition & 5 deletions src/help/help_topic_generators.hpp
Expand Up @@ -15,13 +15,11 @@
#ifndef HELP_TOPIC_GENERATORS_HPP
#define HELP_TOPIC_GENERATORS_HPP

#include "font/sdl_ttf.hpp" // for line_width
#include "help_impl.hpp"

#include <string> // for string
#include <utility> // for pair
#include <vector> // for vector
#include <SDL.h> // for TTF_STYLE_BOLD
class terrain_type; // lines 20-20
class unit_type;

Expand All @@ -45,9 +43,7 @@ class unit_topic_generator: public topic_generator
const unit_type& type_;
const std::string variation_;
typedef std::pair< std::string, unsigned > item;
void push_header(std::vector< item > &row, const std::string& name) const {
row.push_back(item(bold(name), font::line_width(name, normal_font_size, TTF_STYLE_BOLD)));
}
void push_header(std::vector< item > &row, const std::string& name) const;
public:
unit_topic_generator(const unit_type &t, std::string variation="") : type_(t), variation_(variation) {}
virtual std::string operator()() const;
Expand Down
2 changes: 1 addition & 1 deletion src/map/label.hpp
Expand Up @@ -15,7 +15,7 @@
#ifndef MAP_LABEL_HPP_INCLUDED
#define MAP_LABEL_HPP_INCLUDED

#include "font/sdl_ttf.hpp"
#include "font/constants.hpp"
#include "map/location.hpp"
#include "tstring.hpp"

Expand Down
2 changes: 1 addition & 1 deletion src/reports.cpp
Expand Up @@ -18,7 +18,7 @@
#include "attack_prediction.hpp"
//#include "editor/editor_controller.hpp"
//#include "editor/palette/terrain_palettes.hpp"
#include "font/sdl_ttf.hpp"
#include "font/constants.hpp"
#include "font/pango/escape.hpp"
#include "game_preferences.hpp"
#include "gettext.hpp"
Expand Down
1 change: 1 addition & 0 deletions src/show_dialog.cpp
Expand Up @@ -20,6 +20,7 @@

#include "construct_dialog.hpp"
#include "floating_label.hpp"
#include "font/sdl_ttf.hpp"
#include "image.hpp"
#include "gettext.hpp"
#include "gui/core/event/handler.hpp"
Expand Down
4 changes: 2 additions & 2 deletions src/tooltips.cpp
Expand Up @@ -29,8 +29,8 @@ namespace {

CVideo* video_ = nullptr;

static const int font_size = font::SIZE_NORMAL;
static const int text_width = 400;
static constexpr int font_size = font::SIZE_NORMAL;
static constexpr int text_width = 400;

struct tooltip
{
Expand Down
2 changes: 1 addition & 1 deletion src/widgets/label.hpp
Expand Up @@ -15,7 +15,7 @@
#ifndef LABEL_HPP_INCLUDED
#define LABEL_HPP_INCLUDED

#include "font/sdl_ttf.hpp"
#include "font/constants.hpp"
#include "widget.hpp"
#include <string>
#include "sdl/image.hpp"
Expand Down
2 changes: 2 additions & 0 deletions src/widgets/textbox.cpp
Expand Up @@ -17,7 +17,9 @@
#include "global.hpp"

#include "widgets/textbox.hpp"

#include "desktop/clipboard.hpp"
#include "font/sdl_ttf.hpp"
#include "log.hpp"
#include "sdl/rect.hpp"
#include "serialization/string_utils.hpp"
Expand Down

0 comments on commit f82f996

Please sign in to comment.