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

View File

@ -44,6 +44,15 @@ const BFont *be_bold_font = &sBoldFont;
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
\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<float>(&font->fSize);
link.Read<uint16>(&font->fFace);
// we may or may not need this ultimately
link.Read<font_height>(&font->fHeight);
link.Read<uint32>(&font->fFlags);
}
@ -799,8 +806,23 @@ BFont::GetEdges(const char charArray[], int32 numBytes, edge_info edgeArray[]) c
void
BFont::GetHeight(font_height *height) const
{
if (height)
*height = fHeight;
if(height)
{
// 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);
}
}

View File

@ -32,6 +32,7 @@
#include <ServerProtocol.h>
#include <ScrollBar.h>
#include <Screen.h>
#include <PortMessage.h>
#include <Roster.h>
#include <Menu.h>
#include <stdlib.h>
@ -42,8 +43,6 @@
// Private definitions not placed in public headers
extern "C" void _init_global_fonts();
extern "C" status_t _fini_interface_kit_();
#include "InputServerTypes.h"
extern status_t _control_input_server_(BMessage *command, BMessage *reply);
using namespace BPrivate;
@ -56,7 +55,6 @@ system_colors()
return BScreen(B_MAIN_SCREEN_ID).ColorMap();
}
#ifndef COMPILE_FOR_R5
_IMPEXP_BE status_t
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)
{
if (info == NULL)
@ -89,7 +87,6 @@ get_scroll_bar_info(scroll_bar_info *info)
return B_OK;
}
_IMPEXP_BE status_t
set_scroll_bar_info(scroll_bar_info *info)
{
@ -105,12 +102,11 @@ set_scroll_bar_info(scroll_bar_info *info)
return B_OK;
}
#endif // COMPILE_FOR_R5
_IMPEXP_BE status_t
get_mouse_type(int32 *type)
{
BMessage command(IS_GET_MOUSE_TYPE);
BMessage command('Igmt');
BMessage reply;
_control_input_server_(&command, &reply);
@ -125,21 +121,21 @@ get_mouse_type(int32 *type)
_IMPEXP_BE status_t
set_mouse_type(int32 type)
{
BMessage command(IS_SET_MOUSE_TYPE);
BMessage command('Ismt');
BMessage reply;
command.AddInt32("mouse_type", type);
return _control_input_server_(&command, &reply);
return _control_input_server_(&command, &reply) == B_OK;
}
_IMPEXP_BE status_t
get_mouse_map(mouse_map *map)
{
BMessage command(IS_GET_MOUSE_MAP);
BMessage command('Igmm');
BMessage reply;
const void *data = 0;
ssize_t count;
int32 count;
_control_input_server_(&command, &reply);
@ -155,18 +151,17 @@ get_mouse_map(mouse_map *map)
_IMPEXP_BE status_t
set_mouse_map(mouse_map *map)
{
BMessage command(IS_SET_MOUSE_MAP);
BMessage command('Ismm');
BMessage reply;
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
get_click_speed(bigtime_t *speed)
{
BMessage command(IS_GET_CLICK_SPEED);
BMessage command('Igcs');
BMessage reply;
_control_input_server_(&command, &reply);
@ -181,17 +176,17 @@ get_click_speed(bigtime_t *speed)
_IMPEXP_BE status_t
set_click_speed(bigtime_t speed)
{
BMessage command(IS_SET_CLICK_SPEED);
BMessage command('Iscs');
BMessage reply;
command.AddInt64("speed", speed);
return _control_input_server_(&command, &reply);
return _control_input_server_(&command, &reply) == B_OK;
}
_IMPEXP_BE status_t
get_mouse_speed(int32 *speed)
{
BMessage command(IS_GET_MOUSE_SPEED);
BMessage command('Igms');
BMessage reply;
_control_input_server_(&command, &reply);
@ -206,17 +201,17 @@ get_mouse_speed(int32 *speed)
_IMPEXP_BE status_t
set_mouse_speed(int32 speed)
{
BMessage command(IS_SET_MOUSE_SPEED);
BMessage command('Isms');
BMessage reply;
command.AddInt32("speed", speed);
return _control_input_server_(&command, &reply);
return _control_input_server_(&command, &reply) == B_OK;
}
_IMPEXP_BE status_t
get_mouse_acceleration(int32 *speed)
{
BMessage command(IS_GET_MOUSE_ACCELERATION);
BMessage command('Igma');
BMessage reply;
_control_input_server_(&command, &reply);
@ -231,17 +226,17 @@ get_mouse_acceleration(int32 *speed)
_IMPEXP_BE status_t
set_mouse_acceleration(int32 speed)
{
BMessage command(IS_SET_MOUSE_ACCELERATION);
BMessage command('Isma');
BMessage reply;
command.AddInt32("speed", speed);
return _control_input_server_(&command, &reply);
return _control_input_server_(&command, &reply) == B_OK;
}
_IMPEXP_BE status_t
get_key_repeat_rate(int32 *rate)
{
BMessage command(IS_GET_KEY_REPEAT_RATE);
BMessage command('Igrr');
BMessage reply;
_control_input_server_(&command, &reply);
@ -256,17 +251,17 @@ get_key_repeat_rate(int32 *rate)
_IMPEXP_BE status_t
set_key_repeat_rate(int32 rate)
{
BMessage command(IS_SET_KEY_REPEAT_RATE);
BMessage command('Isrr');
BMessage reply;
command.AddInt32("rate", rate);
return _control_input_server_(&command, &reply);
return _control_input_server_(&command, &reply) == B_OK;
}
_IMPEXP_BE status_t
get_key_repeat_delay(bigtime_t *delay)
{
BMessage command(IS_GET_KEY_REPEAT_DELAY);
BMessage command('Igrd');
BMessage reply;
_control_input_server_(&command, &reply);
@ -281,17 +276,17 @@ get_key_repeat_delay(bigtime_t *delay)
_IMPEXP_BE status_t
set_key_repeat_delay(bigtime_t delay)
{
BMessage command(IS_SET_KEY_REPEAT_DELAY);
BMessage command('Isrd');
BMessage reply;
command.AddInt64("delay", delay);
return _control_input_server_(&command, &reply);
return _control_input_server_(&command, &reply) == B_OK;
}
_IMPEXP_BE uint32
modifiers()
{
BMessage command(IS_GET_MODIFIERS);
BMessage command('Igmd');
BMessage reply;
int32 err, modifier;
@ -310,11 +305,10 @@ modifiers()
_IMPEXP_BE status_t
get_key_info(key_info *info)
{
BMessage command(IS_GET_KEY_INFO);
BMessage command('Igki');
BMessage reply;
const void *data = 0;
int32 err;
ssize_t count;
int32 count, err;
_control_input_server_(&command, &reply);
@ -332,9 +326,9 @@ get_key_info(key_info *info)
_IMPEXP_BE void
get_key_map(key_map **map, char **key_buffer)
{
BMessage command(IS_GET_KEY_MAP);
BMessage command('Igkm');
BMessage reply;
ssize_t map_count, key_count;
int32 map_count, key_count;
const void *map_array = 0, *key_array = 0;
_control_input_server_(&command, &reply);
@ -361,7 +355,7 @@ get_key_map(key_map **map, char **key_buffer)
_IMPEXP_BE status_t
get_keyboard_id(uint16 *id)
{
BMessage command(IS_GET_KEYBOARD_ID);
BMessage command('Igid');
BMessage reply;
uint16 kid;
@ -377,7 +371,7 @@ get_keyboard_id(uint16 *id)
_IMPEXP_BE void
set_modifier_key(uint32 modifier, uint32 key)
{
BMessage command(IS_SET_MODIFIER_KEY);
BMessage command('Ismk');
BMessage reply;
command.AddInt32("modifier", modifier);
@ -389,7 +383,7 @@ set_modifier_key(uint32 modifier, uint32 key)
_IMPEXP_BE void
set_keyboard_locks(uint32 modifiers)
{
BMessage command(IS_SET_KEYBOARD_LOCKS);
BMessage command('Iskl');
BMessage reply;
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
keyboard_navigation_color()
{
@ -415,8 +399,6 @@ keyboard_navigation_color()
}
#ifndef COMPILE_FOR_R5
_IMPEXP_BE int32
count_workspaces()
{
@ -569,7 +551,6 @@ ui_color(color_which which)
return color;
}
_IMPEXP_BE rgb_color
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 DARKEN(x) ((uint8)(x * (2 - tint)))
if (tint < 1.0f) {
if (tint < 1.0f)
{
result.red = LIGHTEN(color.red);
result.green = LIGHTEN(color.green);
result.blue = LIGHTEN(color.blue);
result.alpha = color.alpha;
} else {
}
else
{
result.red = DARKEN(color.red);
result.green = DARKEN(color.green);
result.blue = DARKEN(color.blue);
@ -606,12 +590,14 @@ _init_interface_kit_()
BTextView::sWidthSem = widthSem;
BTextView::sWidthAtom = 0;
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
// 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
_init_global_fonts();
//TODO: fill the other static members
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
\param theme The theme to choose
@ -643,8 +621,7 @@ _init_global_fonts()
- \c 2: Win95
- \c 3: MacOS
*/
void
__set_window_decor(int32 theme)
void __set_window_decor(int32 theme)
{
BAppServerLink link;
link.StartMessage(AS_R5_SET_DECORATOR);
@ -652,4 +629,12 @@ __set_window_decor(int32 theme)
link.Flush();
}
#endif // COMPILE_FOR_R5
_IMPEXP_BE status_t
_restore_key_map_()
{
BMessage message('Iskm');
BMessage reply;
return _control_input_server_(&message, &reply);
}