aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornyamatongwe <unknown>2012-03-01 10:12:25 +1100
committernyamatongwe <unknown>2012-03-01 10:12:25 +1100
commitc5a0e5e7516b4fb3263d52abefe6e38fa9f1e094 (patch)
tree8e2854a15d9ffbda21518f54ecd6e35a485591fb
parente3fc747b2c8c970566d19f11777897c153d86629 (diff)
downloadscintilla-mirror-c5a0e5e7516b4fb3263d52abefe6e38fa9f1e094.tar.gz
Bug #3494492. Change aveCharWidth in FontMeasurements to actually store
fractional width. This change complements change set 3994. Make WidthText() and AverageCharWidth() actually return fractional widths under Direct2D. From Marko Njezic.
-rw-r--r--src/Editor.cxx4
-rw-r--r--src/LineMarker.cxx2
-rw-r--r--src/Style.h2
-rw-r--r--win32/PlatWin.cxx4
4 files changed, 6 insertions, 6 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index bb5813686..421f33220 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -1947,8 +1947,8 @@ void Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) {
}
PRectangle rcNumber = rcMarker;
// Right justify
- int width = surface->WidthText(vs.styles[STYLE_LINENUMBER].font, number, istrlen(number));
- int xpos = rcNumber.right - width - 3;
+ XYPOSITION width = surface->WidthText(vs.styles[STYLE_LINENUMBER].font, number, istrlen(number));
+ XYPOSITION xpos = rcNumber.right - width - 3;
rcNumber.left = xpos;
surface->DrawTextNoClip(rcNumber, vs.styles[STYLE_LINENUMBER].font,
rcNumber.top + vs.maxAscent, number, istrlen(number),
diff --git a/src/LineMarker.cxx b/src/LineMarker.cxx
index 267ea18f4..99e83265e 100644
--- a/src/LineMarker.cxx
+++ b/src/LineMarker.cxx
@@ -338,7 +338,7 @@ void LineMarker::Draw(Surface *surface, PRectangle &rcWhole, Font &fontForCharac
} else if (markType >= SC_MARK_CHARACTER) {
char character[1];
character[0] = static_cast<char>(markType - SC_MARK_CHARACTER);
- int width = surface->WidthText(fontForCharacter, character, 1);
+ XYPOSITION width = surface->WidthText(fontForCharacter, character, 1);
rc.left += (rc.Width() - width) / 2;
rc.right = rc.left + width;
surface->DrawTextClipped(rc, fontForCharacter, rc.bottom - 2,
diff --git a/src/Style.h b/src/Style.h
index 018ab70f5..cccf18f3e 100644
--- a/src/Style.h
+++ b/src/Style.h
@@ -47,7 +47,7 @@ struct FontMeasurements {
unsigned int ascent;
unsigned int descent;
unsigned int externalLeading;
- unsigned int aveCharWidth;
+ XYPOSITION aveCharWidth;
XYPOSITION spaceWidth;
int sizeZoomed;
FontMeasurements();
diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx
index 61e8b34d5..baa2e9ef5 100644
--- a/win32/PlatWin.cxx
+++ b/win32/PlatWin.cxx
@@ -1611,7 +1611,7 @@ XYPOSITION SurfaceD2D::WidthText(Font &font_, const char *s, int len) {
pTextLayout->Release();
}
}
- return int(width + 0.5);
+ return width;
}
void SurfaceD2D::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions) {
@@ -1754,7 +1754,7 @@ XYPOSITION SurfaceD2D::AverageCharWidth(Font &font_) {
pTextLayout->Release();
}
}
- return int(width + 0.5);
+ return width;
}
void SurfaceD2D::SetClip(PRectangle rc) {