Moved _init_global_fonts to Font.cpp

Implemented _init_global_fonts
BFont::GetHeight returns proper values


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10804 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
DarkWyrm
2005-01-17 19:57:51 +00:00
parent 2e5cdc1e26
commit 3f8d6d562d
2 changed files with 81 additions and 74 deletions
+27 -5
View File
@@ -44,6 +44,15 @@ const BFont *be_bold_font = &sBoldFont;
const BFont *be_fixed_font = &sFixedFont; const BFont *be_fixed_font = &sFixedFont;
extern "C" void
_init_global_fonts()
{
_font_control_(&sPlainFont,AS_SET_SYSFONT_PLAIN,NULL);
_font_control_(&sBoldFont,AS_SET_SYSFONT_BOLD,NULL);
_font_control_(&sFixedFont,AS_SET_SYSFONT_FIXED,NULL);
}
/*! /*!
\brief Private function originally used by Be. Now used for initialization \brief Private function originally used by Be. Now used for initialization
\param font The font to initialize \param font The font to initialize
@@ -86,9 +95,7 @@ _font_control_(BFont *font, int32 cmd, void *data)
link.Read<uint16>(&font->fStyleID); link.Read<uint16>(&font->fStyleID);
link.Read<float>(&font->fSize); link.Read<float>(&font->fSize);
link.Read<uint16>(&font->fFace); link.Read<uint16>(&font->fFace);
link.Read<uint32>(&font->fFlags);
// we may or may not need this ultimately
link.Read<font_height>(&font->fHeight);
} }
@@ -799,8 +806,23 @@ BFont::GetEdges(const char charArray[], int32 numBytes, edge_info edgeArray[]) c
void void
BFont::GetHeight(font_height *height) const BFont::GetHeight(font_height *height) const
{ {
if (height) if(height)
*height = fHeight; {
// R5's version actually contacts the server in this call. The more and more
// I work with this class, the more and more I can't wait for R2 to fix it. Yeesh.
int32 code;
BPrivate::BAppServerLink link;
link.StartMessage(AS_GET_FONT_HEIGHT);
link.Attach<uint16>(fFamilyID);
link.Attach<uint16>(fStyleID);
link.Attach<float>(fSize);
link.FlushWithReply(&code);
if(code==SERVER_FALSE)
return;
link.Read<font_height>(height);
}
} }
+54 -69
View File
@@ -32,6 +32,7 @@
#include <ServerProtocol.h> #include <ServerProtocol.h>
#include <ScrollBar.h> #include <ScrollBar.h>
#include <Screen.h> #include <Screen.h>
#include <PortMessage.h>
#include <Roster.h> #include <Roster.h>
#include <Menu.h> #include <Menu.h>
#include <stdlib.h> #include <stdlib.h>
@@ -42,8 +43,6 @@
// Private definitions not placed in public headers // Private definitions not placed in public headers
extern "C" void _init_global_fonts(); extern "C" void _init_global_fonts();
extern "C" status_t _fini_interface_kit_(); extern "C" status_t _fini_interface_kit_();
#include "InputServerTypes.h"
extern status_t _control_input_server_(BMessage *command, BMessage *reply); extern status_t _control_input_server_(BMessage *command, BMessage *reply);
using namespace BPrivate; using namespace BPrivate;
@@ -56,7 +55,6 @@ system_colors()
return BScreen(B_MAIN_SCREEN_ID).ColorMap(); return BScreen(B_MAIN_SCREEN_ID).ColorMap();
} }
#ifndef COMPILE_FOR_R5
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_screen_space(int32 index, uint32 res, bool stick) set_screen_space(int32 index, uint32 res, bool stick)
@@ -74,7 +72,7 @@ set_screen_space(int32 index, uint32 res, bool stick)
} }
_IMPEXP_BE status_t status_t
get_scroll_bar_info(scroll_bar_info *info) get_scroll_bar_info(scroll_bar_info *info)
{ {
if (info == NULL) if (info == NULL)
@@ -89,7 +87,6 @@ get_scroll_bar_info(scroll_bar_info *info)
return B_OK; return B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_scroll_bar_info(scroll_bar_info *info) set_scroll_bar_info(scroll_bar_info *info)
{ {
@@ -105,12 +102,11 @@ set_scroll_bar_info(scroll_bar_info *info)
return B_OK; return B_OK;
} }
#endif // COMPILE_FOR_R5
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_mouse_type(int32 *type) get_mouse_type(int32 *type)
{ {
BMessage command(IS_GET_MOUSE_TYPE); BMessage command('Igmt');
BMessage reply; BMessage reply;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -125,21 +121,21 @@ get_mouse_type(int32 *type)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_mouse_type(int32 type) set_mouse_type(int32 type)
{ {
BMessage command(IS_SET_MOUSE_TYPE); BMessage command('Ismt');
BMessage reply; BMessage reply;
command.AddInt32("mouse_type", type); command.AddInt32("mouse_type", type);
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_mouse_map(mouse_map *map) get_mouse_map(mouse_map *map)
{ {
BMessage command(IS_GET_MOUSE_MAP); BMessage command('Igmm');
BMessage reply; BMessage reply;
const void *data = 0; const void *data = 0;
ssize_t count; int32 count;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -155,18 +151,17 @@ get_mouse_map(mouse_map *map)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_mouse_map(mouse_map *map) set_mouse_map(mouse_map *map)
{ {
BMessage command(IS_SET_MOUSE_MAP); BMessage command('Ismm');
BMessage reply; BMessage reply;
command.AddData("mousemap", B_ANY_TYPE, map, sizeof(mouse_map)); command.AddData("mousemap", B_ANY_TYPE, map, sizeof(mouse_map));
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_click_speed(bigtime_t *speed) get_click_speed(bigtime_t *speed)
{ {
BMessage command(IS_GET_CLICK_SPEED); BMessage command('Igcs');
BMessage reply; BMessage reply;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -181,17 +176,17 @@ get_click_speed(bigtime_t *speed)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_click_speed(bigtime_t speed) set_click_speed(bigtime_t speed)
{ {
BMessage command(IS_SET_CLICK_SPEED); BMessage command('Iscs');
BMessage reply; BMessage reply;
command.AddInt64("speed", speed); command.AddInt64("speed", speed);
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_mouse_speed(int32 *speed) get_mouse_speed(int32 *speed)
{ {
BMessage command(IS_GET_MOUSE_SPEED); BMessage command('Igms');
BMessage reply; BMessage reply;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -206,17 +201,17 @@ get_mouse_speed(int32 *speed)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_mouse_speed(int32 speed) set_mouse_speed(int32 speed)
{ {
BMessage command(IS_SET_MOUSE_SPEED); BMessage command('Isms');
BMessage reply; BMessage reply;
command.AddInt32("speed", speed); command.AddInt32("speed", speed);
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_mouse_acceleration(int32 *speed) get_mouse_acceleration(int32 *speed)
{ {
BMessage command(IS_GET_MOUSE_ACCELERATION); BMessage command('Igma');
BMessage reply; BMessage reply;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -231,17 +226,17 @@ get_mouse_acceleration(int32 *speed)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_mouse_acceleration(int32 speed) set_mouse_acceleration(int32 speed)
{ {
BMessage command(IS_SET_MOUSE_ACCELERATION); BMessage command('Isma');
BMessage reply; BMessage reply;
command.AddInt32("speed", speed); command.AddInt32("speed", speed);
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_key_repeat_rate(int32 *rate) get_key_repeat_rate(int32 *rate)
{ {
BMessage command(IS_GET_KEY_REPEAT_RATE); BMessage command('Igrr');
BMessage reply; BMessage reply;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -256,17 +251,17 @@ get_key_repeat_rate(int32 *rate)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_key_repeat_rate(int32 rate) set_key_repeat_rate(int32 rate)
{ {
BMessage command(IS_SET_KEY_REPEAT_RATE); BMessage command('Isrr');
BMessage reply; BMessage reply;
command.AddInt32("rate", rate); command.AddInt32("rate", rate);
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_key_repeat_delay(bigtime_t *delay) get_key_repeat_delay(bigtime_t *delay)
{ {
BMessage command(IS_GET_KEY_REPEAT_DELAY); BMessage command('Igrd');
BMessage reply; BMessage reply;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -281,17 +276,17 @@ get_key_repeat_delay(bigtime_t *delay)
_IMPEXP_BE status_t _IMPEXP_BE status_t
set_key_repeat_delay(bigtime_t delay) set_key_repeat_delay(bigtime_t delay)
{ {
BMessage command(IS_SET_KEY_REPEAT_DELAY); BMessage command('Isrd');
BMessage reply; BMessage reply;
command.AddInt64("delay", delay); command.AddInt64("delay", delay);
return _control_input_server_(&command, &reply); return _control_input_server_(&command, &reply) == B_OK;
} }
_IMPEXP_BE uint32 _IMPEXP_BE uint32
modifiers() modifiers()
{ {
BMessage command(IS_GET_MODIFIERS); BMessage command('Igmd');
BMessage reply; BMessage reply;
int32 err, modifier; int32 err, modifier;
@@ -310,11 +305,10 @@ modifiers()
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_key_info(key_info *info) get_key_info(key_info *info)
{ {
BMessage command(IS_GET_KEY_INFO); BMessage command('Igki');
BMessage reply; BMessage reply;
const void *data = 0; const void *data = 0;
int32 err; int32 count, err;
ssize_t count;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -332,9 +326,9 @@ get_key_info(key_info *info)
_IMPEXP_BE void _IMPEXP_BE void
get_key_map(key_map **map, char **key_buffer) get_key_map(key_map **map, char **key_buffer)
{ {
BMessage command(IS_GET_KEY_MAP); BMessage command('Igkm');
BMessage reply; BMessage reply;
ssize_t map_count, key_count; int32 map_count, key_count;
const void *map_array = 0, *key_array = 0; const void *map_array = 0, *key_array = 0;
_control_input_server_(&command, &reply); _control_input_server_(&command, &reply);
@@ -361,7 +355,7 @@ get_key_map(key_map **map, char **key_buffer)
_IMPEXP_BE status_t _IMPEXP_BE status_t
get_keyboard_id(uint16 *id) get_keyboard_id(uint16 *id)
{ {
BMessage command(IS_GET_KEYBOARD_ID); BMessage command('Igid');
BMessage reply; BMessage reply;
uint16 kid; uint16 kid;
@@ -377,7 +371,7 @@ get_keyboard_id(uint16 *id)
_IMPEXP_BE void _IMPEXP_BE void
set_modifier_key(uint32 modifier, uint32 key) set_modifier_key(uint32 modifier, uint32 key)
{ {
BMessage command(IS_SET_MODIFIER_KEY); BMessage command('Ismk');
BMessage reply; BMessage reply;
command.AddInt32("modifier", modifier); command.AddInt32("modifier", modifier);
@@ -389,7 +383,7 @@ set_modifier_key(uint32 modifier, uint32 key)
_IMPEXP_BE void _IMPEXP_BE void
set_keyboard_locks(uint32 modifiers) set_keyboard_locks(uint32 modifiers)
{ {
BMessage command(IS_SET_KEYBOARD_LOCKS); BMessage command('Iskl');
BMessage reply; BMessage reply;
command.AddInt32("locks", modifiers); command.AddInt32("locks", modifiers);
@@ -397,16 +391,6 @@ set_keyboard_locks(uint32 modifiers)
} }
_IMPEXP_BE status_t
_restore_key_map_()
{
BMessage message(IS_RESTORE_KEY_MAP);
BMessage reply;
return _control_input_server_(&message, &reply);
}
_IMPEXP_BE rgb_color _IMPEXP_BE rgb_color
keyboard_navigation_color() keyboard_navigation_color()
{ {
@@ -415,8 +399,6 @@ keyboard_navigation_color()
} }
#ifndef COMPILE_FOR_R5
_IMPEXP_BE int32 _IMPEXP_BE int32
count_workspaces() count_workspaces()
{ {
@@ -569,7 +551,6 @@ ui_color(color_which which)
return color; return color;
} }
_IMPEXP_BE rgb_color _IMPEXP_BE rgb_color
tint_color(rgb_color color, float tint) tint_color(rgb_color color, float tint)
{ {
@@ -578,12 +559,15 @@ tint_color(rgb_color color, float tint)
#define LIGHTEN(x) ((uint8)(255.0f - (255.0f - x) * tint)) #define LIGHTEN(x) ((uint8)(255.0f - (255.0f - x) * tint))
#define DARKEN(x) ((uint8)(x * (2 - tint))) #define DARKEN(x) ((uint8)(x * (2 - tint)))
if (tint < 1.0f) { if (tint < 1.0f)
{
result.red = LIGHTEN(color.red); result.red = LIGHTEN(color.red);
result.green = LIGHTEN(color.green); result.green = LIGHTEN(color.green);
result.blue = LIGHTEN(color.blue); result.blue = LIGHTEN(color.blue);
result.alpha = color.alpha; result.alpha = color.alpha;
} else { }
else
{
result.red = DARKEN(color.red); result.red = DARKEN(color.red);
result.green = DARKEN(color.green); result.green = DARKEN(color.green);
result.blue = DARKEN(color.blue); result.blue = DARKEN(color.blue);
@@ -606,12 +590,14 @@ _init_interface_kit_()
BTextView::sWidthSem = widthSem; BTextView::sWidthSem = widthSem;
BTextView::sWidthAtom = 0; BTextView::sWidthAtom = 0;
BTextView::sWidths = new _BWidthBuffer_; BTextView::sWidths = new _BWidthBuffer_;
status_t result = get_menu_info(&BMenu::sMenuInfo);
if (result != B_OK)
return result;
// TODO: get_menu_info() copies the BMenu::sMenuInfo struct _init_global_fonts();
// to the passed menu_info, so we can't use it here.
// We should probably load the ui settings from the disk //TODO: fill the other static members
// TODO: fill the other static members
return B_OK; return B_OK;
} }
@@ -626,14 +612,6 @@ _fini_interface_kit_()
} }
extern "C" void
_init_global_fonts()
{
// This function will initialize the client-side font list
// TODO: Implement
}
/*! /*!
\brief private function used by Tracker to set window decor \brief private function used by Tracker to set window decor
\param theme The theme to choose \param theme The theme to choose
@@ -643,8 +621,7 @@ _init_global_fonts()
- \c 2: Win95 - \c 2: Win95
- \c 3: MacOS - \c 3: MacOS
*/ */
void void __set_window_decor(int32 theme)
__set_window_decor(int32 theme)
{ {
BAppServerLink link; BAppServerLink link;
link.StartMessage(AS_R5_SET_DECORATOR); link.StartMessage(AS_R5_SET_DECORATOR);
@@ -652,4 +629,12 @@ __set_window_decor(int32 theme)
link.Flush(); link.Flush();
} }
#endif // COMPILE_FOR_R5
_IMPEXP_BE status_t
_restore_key_map_()
{
BMessage message('Iskm');
BMessage reply;
return _control_input_server_(&message, &reply);
}