shear is needed for GetBoundingBoxes
now uses _GetBoundingBoxes_ for GetBoundingBoxesAsGlyphs and GetBoundingBoxesAsString git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14071 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1039,13 +1039,21 @@ void
|
|||||||
BFont::GetBoundingBoxesAsGlyphs(const char charArray[], int32 numChars, font_metric_mode mode,
|
BFont::GetBoundingBoxesAsGlyphs(const char charArray[], int32 numChars, font_metric_mode mode,
|
||||||
BRect boundingBoxArray[]) const
|
BRect boundingBoxArray[]) const
|
||||||
{
|
{
|
||||||
GetBoundingBoxesAsString(charArray, numChars, mode, NULL, boundingBoxArray);
|
_GetBoundingBoxes_(charArray, numChars, mode, false, NULL, boundingBoxArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BFont::GetBoundingBoxesAsString(const char charArray[], int32 numChars, font_metric_mode mode,
|
BFont::GetBoundingBoxesAsString(const char charArray[], int32 numChars, font_metric_mode mode,
|
||||||
escapement_delta *delta, BRect boundingBoxArray[]) const
|
escapement_delta *delta, BRect boundingBoxArray[]) const
|
||||||
|
{
|
||||||
|
_GetBoundingBoxes_(charArray, numChars, mode, true, delta, boundingBoxArray);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BFont::_GetBoundingBoxes_(const char charArray[], int32 numChars, font_metric_mode mode,
|
||||||
|
bool string_escapement, escapement_delta *delta, BRect boundingBoxArray[]) const
|
||||||
{
|
{
|
||||||
if (!charArray || numChars < 1 || !boundingBoxArray)
|
if (!charArray || numChars < 1 || !boundingBoxArray)
|
||||||
return;
|
return;
|
||||||
@@ -1058,8 +1066,10 @@ BFont::GetBoundingBoxesAsString(const char charArray[], int32 numChars, font_met
|
|||||||
link.Attach<uint16>(fStyleID);
|
link.Attach<uint16>(fStyleID);
|
||||||
link.Attach<float>(fSize);
|
link.Attach<float>(fSize);
|
||||||
link.Attach<float>(fRotation);
|
link.Attach<float>(fRotation);
|
||||||
|
link.Attach<float>(fShear);
|
||||||
link.Attach<uint32>(fFlags);
|
link.Attach<uint32>(fFlags);
|
||||||
link.Attach<font_metric_mode>(mode);
|
link.Attach<font_metric_mode>(mode);
|
||||||
|
link.Attach<bool>(string_escapement);
|
||||||
|
|
||||||
if (delta) {
|
if (delta) {
|
||||||
link.Attach<escapement_delta>(*delta);
|
link.Attach<escapement_delta>(*delta);
|
||||||
@@ -1096,6 +1106,7 @@ BFont::GetBoundingBoxesForStrings(const char *stringArray[], int32 numStrings,
|
|||||||
link.Attach<uint16>(fStyleID);
|
link.Attach<uint16>(fStyleID);
|
||||||
link.Attach<float>(fSize);
|
link.Attach<float>(fSize);
|
||||||
link.Attach<float>(fRotation);
|
link.Attach<float>(fRotation);
|
||||||
|
link.Attach<float>(fShear);
|
||||||
link.Attach<uint32>(fFlags);
|
link.Attach<uint32>(fFlags);
|
||||||
link.Attach<font_metric_mode>(mode);
|
link.Attach<font_metric_mode>(mode);
|
||||||
link.Attach<int32>(numStrings);
|
link.Attach<int32>(numStrings);
|
||||||
|
|||||||
@@ -1950,30 +1950,35 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
// 2) uint16 - style ID
|
// 2) uint16 - style ID
|
||||||
// 3) float - point size
|
// 3) float - point size
|
||||||
// 4) float - rotation
|
// 4) float - rotation
|
||||||
// 5) uint32 - flags
|
// 5) shear - shear
|
||||||
|
// 6) uint32 - flags
|
||||||
|
|
||||||
// 6) font_metric_mode - mode
|
// 7) font_metric_mode - mode
|
||||||
|
// 8) bool - string escapement
|
||||||
|
|
||||||
// 7) escapement_delta - additional delta
|
// 9) escapement_delta - additional delta
|
||||||
|
|
||||||
// 8) int32 - numChars
|
// 10) int32 - numChars
|
||||||
// 9) int32 - numBytes
|
// 11) int32 - numBytes
|
||||||
// 10) char - the char buffer with size numBytes
|
// 12) char - the char buffer with size numBytes
|
||||||
|
|
||||||
// Returns:
|
// Returns:
|
||||||
// 1) BRect - rects with numChar entries
|
// 1) BRect - rects with numChar entries
|
||||||
|
|
||||||
uint16 famid, styid;
|
uint16 famid, styid;
|
||||||
uint32 flags;
|
uint32 flags;
|
||||||
float ptsize, rotation;
|
float ptsize, rotation, shear;
|
||||||
font_metric_mode mode;
|
font_metric_mode mode;
|
||||||
|
bool string_escapement;
|
||||||
|
|
||||||
link.Read<uint16>(&famid);
|
link.Read<uint16>(&famid);
|
||||||
link.Read<uint16>(&styid);
|
link.Read<uint16>(&styid);
|
||||||
link.Read<float>(&ptsize);
|
link.Read<float>(&ptsize);
|
||||||
link.Read<float>(&rotation);
|
link.Read<float>(&rotation);
|
||||||
|
link.Read<float>(&shear);
|
||||||
link.Read<uint32>(&flags);
|
link.Read<uint32>(&flags);
|
||||||
link.Read<font_metric_mode>(&mode);
|
link.Read<font_metric_mode>(&mode);
|
||||||
|
link.Read<bool>(&string_escapement);
|
||||||
|
|
||||||
escapement_delta delta;
|
escapement_delta delta;
|
||||||
link.Read<escapement_delta>(&delta);
|
link.Read<escapement_delta>(&delta);
|
||||||
@@ -1984,10 +1989,10 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
uint32 numBytes;
|
uint32 numBytes;
|
||||||
link.Read<uint32>(&numBytes);
|
link.Read<uint32>(&numBytes);
|
||||||
|
|
||||||
char* charArray = new char[numBytes];
|
char charArray[numBytes];
|
||||||
link.Read(charArray, numBytes);
|
link.Read(charArray, numBytes);
|
||||||
|
|
||||||
BRect* rectArray = new BRect[numChars];
|
BRect rectArray[numChars];
|
||||||
// figure out escapements
|
// figure out escapements
|
||||||
|
|
||||||
ServerFont font;
|
ServerFont font;
|
||||||
@@ -1995,8 +2000,10 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
if (font.SetFamilyAndStyle(famid, styid) == B_OK) {
|
if (font.SetFamilyAndStyle(famid, styid) == B_OK) {
|
||||||
font.SetSize(ptsize);
|
font.SetSize(ptsize);
|
||||||
font.SetRotation(rotation);
|
font.SetRotation(rotation);
|
||||||
|
font.SetShear(shear);
|
||||||
font.SetFlags(flags);
|
font.SetFlags(flags);
|
||||||
|
|
||||||
|
// TODO implement for real
|
||||||
if (font.GetBoundingBoxesAsString(charArray, numChars, rectArray, mode, delta)) {
|
if (font.GetBoundingBoxesAsString(charArray, numChars, rectArray, mode, delta)) {
|
||||||
fLink.StartMessage(SERVER_TRUE);
|
fLink.StartMessage(SERVER_TRUE);
|
||||||
fLink.Attach(rectArray, sizeof(rectArray));
|
fLink.Attach(rectArray, sizeof(rectArray));
|
||||||
@@ -2004,9 +2011,6 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete[] charArray;
|
|
||||||
delete[] rectArray;
|
|
||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
fLink.StartMessage(SERVER_FALSE);
|
fLink.StartMessage(SERVER_FALSE);
|
||||||
|
|
||||||
@@ -2021,27 +2025,29 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
// 2) uint16 - style ID
|
// 2) uint16 - style ID
|
||||||
// 3) float - point size
|
// 3) float - point size
|
||||||
// 4) float - rotation
|
// 4) float - rotation
|
||||||
// 5) uint32 - flags
|
// 5) float - shear
|
||||||
|
// 6) uint32 - flags
|
||||||
|
|
||||||
// 6) font_metric_mode - mode
|
// 7) font_metric_mode - mode
|
||||||
// 7) int32 numStrings
|
// 8) int32 numStrings
|
||||||
|
|
||||||
// 8) escapement_delta - additional delta (numStrings times)
|
// 9) escapement_delta - additional delta (numStrings times)
|
||||||
// 9) int32 string length to measure (numStrings times)
|
// 10) int32 string length to measure (numStrings times)
|
||||||
// 10) string - string (numStrings times)
|
// 11) string - string (numStrings times)
|
||||||
|
|
||||||
// Returns:
|
// Returns:
|
||||||
// 1) BRect - rects with numStrings entries
|
// 1) BRect - rects with numStrings entries
|
||||||
|
|
||||||
uint16 famid, styid;
|
uint16 famid, styid;
|
||||||
uint32 flags;
|
uint32 flags;
|
||||||
float ptsize, rotation;
|
float ptsize, rotation, shear;
|
||||||
font_metric_mode mode;
|
font_metric_mode mode;
|
||||||
|
|
||||||
link.Read<uint16>(&famid);
|
link.Read<uint16>(&famid);
|
||||||
link.Read<uint16>(&styid);
|
link.Read<uint16>(&styid);
|
||||||
link.Read<float>(&ptsize);
|
link.Read<float>(&ptsize);
|
||||||
link.Read<float>(&rotation);
|
link.Read<float>(&rotation);
|
||||||
|
link.Read<float>(&shear);
|
||||||
link.Read<uint32>(&flags);
|
link.Read<uint32>(&flags);
|
||||||
link.Read<font_metric_mode>(&mode);
|
link.Read<font_metric_mode>(&mode);
|
||||||
|
|
||||||
@@ -2065,8 +2071,10 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
if (font.SetFamilyAndStyle(famid, styid) == B_OK) {
|
if (font.SetFamilyAndStyle(famid, styid) == B_OK) {
|
||||||
font.SetSize(ptsize);
|
font.SetSize(ptsize);
|
||||||
font.SetRotation(rotation);
|
font.SetRotation(rotation);
|
||||||
|
font.SetShear(shear);
|
||||||
font.SetFlags(flags);
|
font.SetFlags(flags);
|
||||||
|
|
||||||
|
// TODO implement for real
|
||||||
if (font.GetBoundingBoxesAsStrings(stringArray, lengthArray, numStrings, rectArray, mode, deltaArray)) {
|
if (font.GetBoundingBoxesAsStrings(stringArray, lengthArray, numStrings, rectArray, mode, deltaArray)) {
|
||||||
fLink.StartMessage(SERVER_TRUE);
|
fLink.StartMessage(SERVER_TRUE);
|
||||||
fLink.Attach(rectArray, sizeof(rectArray));
|
fLink.Attach(rectArray, sizeof(rectArray));
|
||||||
|
|||||||
Reference in New Issue
Block a user