Changed keyboard nav color to match R5 even though we use Dano's attributes

BFont::GetHeight now works properly


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10806 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
DarkWyrm
2005-01-17 20:08:40 +00:00
parent 9a2b128aea
commit d86ffbc9c4
5 changed files with 190 additions and 22 deletions
+1 -1
View File
@@ -159,7 +159,7 @@ printf("Initializing color settings to defaults\n");
control_text.SetColor(0,0,0); control_text.SetColor(0,0,0);
control_border.SetColor(0,0,0); control_border.SetColor(0,0,0);
control_highlight.SetColor(115,120,184); control_highlight.SetColor(115,120,184);
keyboard_navigation_base.SetColor(170,50,184); keyboard_navigation_base.SetColor(0,0,229);
keyboard_navigation_pulse.SetColor(0,0,0); keyboard_navigation_pulse.SetColor(0,0,0);
shine.SetColor(255,255,255); shine.SetColor(255,255,255);
shadow.SetColor(0,0,0); shadow.SetColor(0,0,0);
+19
View File
@@ -52,6 +52,10 @@ FontStyle::FontStyle(const char *filepath, FT_Face face)
fbounds.Set(0,0,0,0); fbounds.Set(0,0,0,0);
fFace=TranslateStyleToFace(face->style_name); fFace=TranslateStyleToFace(face->style_name);
fID=0; fID=0;
fHeight.ascent=face->ascender;
fHeight.descent=face->descender;
fHeight.leading=face->height;
fHeight.units_per_em=face->units_per_EM;
} }
/*! /*!
@@ -76,6 +80,21 @@ const char *FontStyle::Name(void) const
return fName.String(); return fName.String();
} }
font_height FontStyle::GetHeight(const float &size)
{
font_height fh={0,0,0};
// font units are 26.6 format, so we get REALLY big numbers if
// we don't do some shifting.
fh.ascent=(fHeight.ascent * size) / fHeight.units_per_em;
// FT2's descent numbers are negative. Be's is positive
fh.descent=(fHeight.descent * size * -1) / fHeight.units_per_em;
fh.leading=(fHeight.leading * size) / fHeight.units_per_em;
return fh;
}
/*! /*!
\brief Returns the path to the style's font file \brief Returns the path to the style's font file
\return The style's font file path \return The style's font file path
+17 -12
View File
@@ -115,7 +115,7 @@ int32 FontServer::CountFamilies(void)
*/ */
int32 FontServer::CountStyles(const char *family) int32 FontServer::CountStyles(const char *family)
{ {
FontFamily *f=_FindFamily(family); FontFamily *f=GetFamily(family);
if(f) if(f)
{ {
return f->CountStyles(); return f->CountStyles();
@@ -129,7 +129,7 @@ int32 FontServer::CountStyles(const char *family)
*/ */
void FontServer::RemoveFamily(const char *family) void FontServer::RemoveFamily(const char *family)
{ {
FontFamily *f=_FindFamily(family); FontFamily *f=GetFamily(family);
if(f) if(f)
{ {
families->RemoveItem(f); families->RemoveItem(f);
@@ -151,7 +151,7 @@ const char *FontServer::GetFamilyName(uint16 id) const
const char *FontServer::GetStyleName(const char *family, uint16 id) const const char *FontServer::GetStyleName(const char *family, uint16 id) const
{ {
FontFamily *fam=_FindFamily(family); FontFamily *fam=GetFamily(family);
FontStyle *sty; FontStyle *sty;
for(int32 i=0; i<families->CountItems(); i++) for(int32 i=0; i<families->CountItems(); i++)
{ {
@@ -164,7 +164,7 @@ const char *FontServer::GetStyleName(const char *family, uint16 id) const
FontStyle *FontServer::GetStyle(const char *family, uint16 id) const FontStyle *FontServer::GetStyle(const char *family, uint16 id) const
{ {
FontFamily *fam=_FindFamily(family); FontFamily *fam=GetFamily(family);
FontStyle *sty; FontStyle *sty;
for(int32 i=0; i<families->CountItems(); i++) for(int32 i=0; i<families->CountItems(); i++)
{ {
@@ -182,7 +182,7 @@ FontStyle *FontServer::GetStyle(const char *family, uint16 id) const
Do NOT delete the FontFamily returned by this function. Do NOT delete the FontFamily returned by this function.
*/ */
FontFamily *FontServer::_FindFamily(const char *name) const FontFamily *FontServer::GetFamily(const char *name) const
{ {
if(!init) if(!init)
return NULL; return NULL;
@@ -258,7 +258,7 @@ status_t FontServer::ScanDirectory(const char *fontspath)
face->charmap=charmap; face->charmap=charmap;
family=_FindFamily(face->family_name); family=GetFamily(face->family_name);
if(!family) if(!family)
{ {
@@ -280,7 +280,6 @@ status_t FontServer::ScanDirectory(const char *fontspath)
printf("\tFont Style: %s\n",face->style_name); printf("\tFont Style: %s\n",face->style_name);
#endif #endif
// Has vertical metrics?
style=new FontStyle(path.Path(),face); style=new FontStyle(path.Path(),face);
if(!family->AddStyle(style)) if(!family->AddStyle(style))
delete style; delete style;
@@ -424,7 +423,7 @@ void FontServer::SaveList(void)
*/ */
FontStyle *FontServer::GetStyle(const char *family, const char *style) FontStyle *FontServer::GetStyle(const char *family, const char *style)
{ {
FontFamily *ffam=_FindFamily(family); FontFamily *ffam=GetFamily(family);
if(ffam) if(ffam)
{ {
@@ -443,10 +442,16 @@ FontStyle *FontServer::GetStyle(const char *family, const char *style)
FontStyle *FontServer::GetStyle(const uint16 &familyid, const uint16 &styleid) FontStyle *FontServer::GetStyle(const uint16 &familyid, const uint16 &styleid)
{ {
// TODO: Implement FontServer::GetStyle(id,id) // TODO: Implement FontServer::GetStyle(id,id)
FontFamily *fam=GetFamily(familyid);
if(fam)
{
FontStyle *sty=fam->GetStyle(styleid);
return sty;
}
return NULL; return NULL;
} }
FontFamily *FontServer::GetFamily(const uint16 &familyid) FontFamily *FontServer::GetFamily(const uint16 &familyid) const
{ {
for(int32 i=0; i<families->CountItems(); i++) for(int32 i=0; i<families->CountItems(); i++)
{ {
@@ -515,7 +520,7 @@ ServerFont *FontServer::GetSystemFixed(void)
*/ */
bool FontServer::SetSystemPlain(const char *family, const char *style, float size) bool FontServer::SetSystemPlain(const char *family, const char *style, float size)
{ {
FontFamily *fam=_FindFamily(family); FontFamily *fam=GetFamily(family);
if(!fam) if(!fam)
return false; return false;
FontStyle *sty=fam->GetStyle(style); FontStyle *sty=fam->GetStyle(style);
@@ -539,7 +544,7 @@ bool FontServer::SetSystemPlain(const char *family, const char *style, float siz
*/ */
bool FontServer::SetSystemBold(const char *family, const char *style, float size) bool FontServer::SetSystemBold(const char *family, const char *style, float size)
{ {
FontFamily *fam=_FindFamily(family); FontFamily *fam=GetFamily(family);
if(!fam) if(!fam)
return false; return false;
FontStyle *sty=fam->GetStyle(style); FontStyle *sty=fam->GetStyle(style);
@@ -563,7 +568,7 @@ bool FontServer::SetSystemBold(const char *family, const char *style, float size
*/ */
bool FontServer::SetSystemFixed(const char *family, const char *style, float size) bool FontServer::SetSystemFixed(const char *family, const char *style, float size)
{ {
FontFamily *fam=_FindFamily(family); FontFamily *fam=GetFamily(family);
if(!fam) if(!fam)
return false; return false;
FontStyle *sty=fam->GetStyle(style); FontStyle *sty=fam->GetStyle(style);
+1 -1
View File
@@ -192,6 +192,6 @@ void LayerData::PrintToStream() const{
printf("\t FontRotation: %f\n", font.Rotation()); printf("\t FontRotation: %f\n", font.Rotation());
printf("\t FontSpacing: %ld\n", font.Spacing()); printf("\t FontSpacing: %ld\n", font.Spacing());
printf("\t FontEncoding: %ld\n", font.Encoding()); printf("\t FontEncoding: %ld\n", font.Encoding());
printf("\t FontFace: %ld\n", font.Face()); printf("\t FontFace: %d\n", font.Face());
printf("\t FontFlags: %lu\n", font.Flags()); printf("\t FontFlags: %lu\n", font.Flags());
} }
+152 -8
View File
@@ -1232,60 +1232,204 @@ void ServerApp::DispatchMessage(int32 code, LinkMsgReader &msg)
case AS_COUNT_FONT_FAMILIES: case AS_COUNT_FONT_FAMILIES:
{ {
// Attached Data: // Attached Data:
// None // 1) port_id - reply port
// Returns: // Returns:
// 1) int32 - # of font families // 1) int32 - # of font families
port_id replyport=-1;
replylink.SetSendPort(replyport);
fontserver->Lock();
replylink.StartMessage(SERVER_TRUE);
replylink.Attach<int32>(fontserver->CountFamilies());
replylink.Flush();
fontserver->Unlock();
break; break;
} }
case AS_COUNT_FONT_STYLES: case AS_COUNT_FONT_STYLES:
{ {
// Attached Data: // Attached Data:
// 1) font_family - name of font family // 1) font_family - name of font family
// 2) port_id - reply port
// Returns: // Returns:
// 1) int32 - # of font styles // 1) int32 - # of font styles
port_id replyport;
font_family fam;
msg.Read(fam,sizeof(font_family));
msg.Read<port_id>(&replyport);
replylink.SetSendPort(replyport);
fontserver->Lock();
FontFamily *ffam=fontserver->GetFamily(fam);
if(ffam)
{
replylink.StartMessage(SERVER_TRUE);
replylink.Attach<int32>(ffam->CountStyles());
replylink.Flush();
}
else
{
replylink.StartMessage(SERVER_FALSE);
replylink.Flush();
}
fontserver->Unlock();
break; break;
} }
case AS_SET_SYSFONT_PLAIN: case AS_SET_SYSFONT_PLAIN:
{ {
// Attached Data: // Attached Data:
// None // port_id reply port
// Returns: // Returns:
// 1) uint16 - family ID // 1) uint16 - family ID
// 2) uint16 - style ID // 2) uint16 - style ID
// 3) float - size in points // 3) float - size in points
// 4) uint16 - face flags // 4) uint16 - face flags
// 5) font_height - height structure // 5) uint32 - font flags
// TODO: See if font_height is needed in SET_SYSFONT_XXXX messages port_id replyport;
msg.Read<port_id>(&replyport);
replylink.SetSendPort(replyport);
fontserver->Lock();
ServerFont *sf=fontserver->GetSystemPlain();
if(sf)
{
replylink.StartMessage(SERVER_TRUE);
replylink.Attach<uint16>(sf->FamilyID());
replylink.Attach<uint16>(sf->StyleID());
replylink.Attach<float>(sf->Size());
replylink.Attach<uint16>(sf->Face());
replylink.Attach<uint32>(sf->Flags());
replylink.Flush();
}
else
{
replylink.StartMessage(SERVER_FALSE);
replylink.Flush();
}
fontserver->Unlock();
delete sf;
break;
}
case AS_GET_FONT_HEIGHT:
{
// Attached Data:
// 1) uint16 family ID
// 2) uint16 style ID
// 3) float size
// 4) port_id reply port
uint16 famid,styid;
float ptsize;
port_id replyport;
msg.Read<uint16>(&famid);
msg.Read<uint16>(&styid);
msg.Read<float>(&ptsize);
msg.Read<port_id>(&replyport);
replylink.SetSendPort(replyport);
fontserver->Lock();
FontStyle *fstyle=fontserver->GetStyle(famid,styid);
if(fstyle)
{
replylink.StartMessage(SERVER_TRUE);
replylink.Attach<font_height>(fstyle->GetHeight(ptsize));
replylink.Flush();
}
else
{
replylink.StartMessage(SERVER_FALSE);
replylink.Flush();
}
fontserver->Unlock();
break; break;
} }
case AS_SET_SYSFONT_BOLD: case AS_SET_SYSFONT_BOLD:
{ {
// Attached Data: // Attached Data:
// None // port_id reply port
// Returns: // Returns:
// 1) uint16 - family ID // 1) uint16 - family ID
// 2) uint16 - style ID // 2) uint16 - style ID
// 3) float - size in points // 3) float - size in points
// 4) uint16 - face flags // 4) uint16 - face flags
// 5) font_height - height structure // 5) uint32 - font flags
port_id replyport;
msg.Read<port_id>(&replyport);
replylink.SetSendPort(replyport);
fontserver->Lock();
ServerFont *sf=fontserver->GetSystemBold();
if(sf)
{
replylink.StartMessage(SERVER_TRUE);
replylink.Attach<uint16>(sf->FamilyID());
replylink.Attach<uint16>(sf->StyleID());
replylink.Attach<float>(sf->Size());
replylink.Attach<uint16>(sf->Face());
replylink.Attach<uint32>(sf->Flags());
replylink.Flush();
}
else
{
replylink.StartMessage(SERVER_FALSE);
replylink.Flush();
}
fontserver->Unlock();
delete sf;
break; break;
} }
case AS_SET_SYSFONT_FIXED: case AS_SET_SYSFONT_FIXED:
{ {
// Attached Data: // Attached Data:
// None // port_id reply port
// Returns: // Returns:
// 1) uint16 - family ID // 1) uint16 - family ID
// 2) uint16 - style ID // 2) uint16 - style ID
// 3) float - size in points // 3) float - size in points
// 4) uint16 - face flags // 4) uint16 - face flags
// 5) font_height - height structure // 5) uint32 - font flags
port_id replyport;
msg.Read<port_id>(&replyport);
replylink.SetSendPort(replyport);
fontserver->Lock();
ServerFont *sf=fontserver->GetSystemFixed();
if(sf)
{
replylink.StartMessage(SERVER_TRUE);
replylink.Attach<uint16>(sf->FamilyID());
replylink.Attach<uint16>(sf->StyleID());
replylink.Attach<float>(sf->Size());
replylink.Attach<uint16>(sf->Face());
replylink.Attach<uint32>(sf->Flags());
replylink.Flush();
}
else
{
replylink.StartMessage(SERVER_FALSE);
replylink.Flush();
}
fontserver->Unlock();
delete sf;
break; break;
} }
default: default: