More cleanups
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18602 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -367,7 +367,6 @@ _BStyleBuffer_::GetStyleRange(int32 startOffset, int32 endOffset) const
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
STEStyleRun* run = &result->runs[0];
|
STEStyleRun* run = &result->runs[0];
|
||||||
|
|
||||||
for (int32 index = 0; index < numStyles; index++) {
|
for (int32 index = 0; index < numStyles; index++) {
|
||||||
*run = (*this)[startIndex + index];
|
*run = (*this)[startIndex + index];
|
||||||
run->offset -= startOffset;
|
run->offset -= startOffset;
|
||||||
@@ -450,7 +449,7 @@ _BStyleBuffer_::Iterate(int32 fromOffset, int32 length, _BInlineInput_ *input,
|
|||||||
|
|
||||||
if (runIndex < numRuns - 1) {
|
if (runIndex < numRuns - 1) {
|
||||||
int32 nextOffset = (run + 1)->offset - fromOffset;
|
int32 nextOffset = (run + 1)->offset - fromOffset;
|
||||||
result = (result > nextOffset) ? nextOffset : result;
|
result = min_c(result, nextOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -489,6 +488,32 @@ _BStyleBuffer_::operator[](int32 index) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TODO: Horrible name, but can't think of a better one
|
||||||
|
// ? CompareStyles ?
|
||||||
|
// ? FilterStyles ?
|
||||||
|
static void
|
||||||
|
FixupMode(const STEStyle &firstStyle, const STEStyle &otherStyle, uint32 &mode, bool &sameColor)
|
||||||
|
{
|
||||||
|
if (mode & B_FONT_FAMILY_AND_STYLE) {
|
||||||
|
if (firstStyle.font != otherStyle.font)
|
||||||
|
mode &= ~B_FONT_FAMILY_AND_STYLE;
|
||||||
|
}
|
||||||
|
if (mode & B_FONT_SIZE) {
|
||||||
|
if (firstStyle.font.Size() != otherStyle.font.Size())
|
||||||
|
mode &= ~B_FONT_SIZE;
|
||||||
|
}
|
||||||
|
if (mode & B_FONT_SHEAR) {
|
||||||
|
if (firstStyle.font.Shear() != otherStyle.font.Shear())
|
||||||
|
mode &= ~B_FONT_SHEAR;
|
||||||
|
}
|
||||||
|
if (firstStyle.color != otherStyle.color)
|
||||||
|
sameColor = false;
|
||||||
|
|
||||||
|
// TODO: Finish this: handle B_FONT_FACE, B_FONT_FLAGS, etc.
|
||||||
|
// if needed
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_BStyleBuffer_::ContinuousGetStyle(BFont *outFont, uint32 *ioMode,
|
_BStyleBuffer_::ContinuousGetStyle(BFont *outFont, uint32 *ioMode,
|
||||||
rgb_color *outColor, bool *sameColor, int32 fromOffset,
|
rgb_color *outColor, bool *sameColor, int32 fromOffset,
|
||||||
@@ -527,32 +552,10 @@ _BStyleBuffer_::ContinuousGetStyle(BFont *outFont, uint32 *ioMode,
|
|||||||
bool oneColor = true;
|
bool oneColor = true;
|
||||||
int32 styleIndex = fStyleRunDesc[toIndex]->index;
|
int32 styleIndex = fStyleRunDesc[toIndex]->index;
|
||||||
STEStyle theStyle = fStyleRecord[styleIndex]->style;
|
STEStyle theStyle = fStyleRecord[styleIndex]->style;
|
||||||
STEStyle* style = NULL;
|
|
||||||
|
|
||||||
for (int32 i = fromIndex; i < toIndex; i++) {
|
for (int32 i = fromIndex; i < toIndex; i++) {
|
||||||
styleIndex = fStyleRunDesc[i]->index;
|
styleIndex = fStyleRunDesc[i]->index;
|
||||||
style = &fStyleRecord[styleIndex]->style;
|
FixupMode(fStyleRecord[styleIndex]->style, theStyle, mode, oneColor);
|
||||||
|
|
||||||
if (mode & B_FONT_FAMILY_AND_STYLE) {
|
|
||||||
if (theStyle.font != style->font)
|
|
||||||
mode &= ~B_FONT_FAMILY_AND_STYLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mode & B_FONT_SIZE) {
|
|
||||||
if (theStyle.font.Size() != style->font.Size())
|
|
||||||
mode &= ~B_FONT_SIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mode & B_FONT_SHEAR) {
|
|
||||||
if (theStyle.font.Shear() != style->font.Shear())
|
|
||||||
mode &= ~B_FONT_SHEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (theStyle.color != style->color)
|
|
||||||
oneColor = false;
|
|
||||||
|
|
||||||
// TODO: Finish this: handle B_FONT_FACE, B_FONT_FLAGS, etc.
|
|
||||||
// if needed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ioMode)
|
if (ioMode)
|
||||||
|
|||||||
Reference in New Issue
Block a user