aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.cxx
diff options
context:
space:
mode:
authornyamatongwe <devnull@localhost>2003-01-12 04:02:43 +0000
committernyamatongwe <devnull@localhost>2003-01-12 04:02:43 +0000
commitb9a72f1e42a8b75bbd30ccb6b58c06ea91552691 (patch)
tree0d044674b7e8558b555e1f8c3e0698bd2f2fa8dc /src/Editor.cxx
parentae33ce73c43277fd6fb87571201b4e2ecdc2ea64 (diff)
downloadscintilla-mirror-b9a72f1e42a8b75bbd30ccb6b58c06ea91552691.tar.gz
Additions from Yukihiro Nakai to enable DBCS mode on GTK+.
DBCS mode for Surface so that different font and text drawing code can be invoked on GTK+.
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r--src/Editor.cxx31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index ddd9fbcd6..c9833b03a 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -419,7 +419,7 @@ void Editor::RefreshColourPalette(Palette &pal, bool want) {
void Editor::RefreshStyleData() {
if (!stylesValid) {
stylesValid = true;
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
if (surface) {
vs.Refresh(*surface);
RefreshColourPalette(palette, true);
@@ -499,7 +499,7 @@ Point Editor::LocationFromPosition(int pos) {
int line = pdoc->LineFromPosition(pos);
int lineVisible = cs.DisplayFromDoc(line);
//Platform::DebugPrintf("line=%d\n", line);
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
LineLayout *ll = RetrieveLineLayout(line);
if (surface && ll) {
// -1 because of adding in for visible lines in following loop.
@@ -552,7 +552,7 @@ int Editor::PositionFromLocation(Point pt) {
int lineDoc = cs.DocFromDisplay(visibleLine);
if (lineDoc >= pdoc->LinesTotal())
return pdoc->Length();
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
int retVal = 0;
LineLayout *ll = RetrieveLineLayout(lineDoc);
if (surface && ll) {
@@ -600,7 +600,7 @@ int Editor::PositionFromLocationClose(Point pt) {
return INVALID_POSITION;
if (lineDoc >= pdoc->LinesTotal())
return INVALID_POSITION;
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
LineLayout *ll = RetrieveLineLayout(lineDoc);
if (surface && ll) {
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
@@ -634,7 +634,7 @@ int Editor::PositionFromLineX(int lineDoc, int x) {
if (lineDoc >= pdoc->LinesTotal())
return pdoc->Length();
//Platform::DebugPrintf("Position of (%d,%d) line = %d top=%d\n", pt.x, pt.y, line, topLine);
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
LineLayout *ll = RetrieveLineLayout(lineDoc);
int retVal = 0;
if (surface && ll) {
@@ -935,7 +935,7 @@ void Editor::MoveCaretInsideView(bool ensureVisible) {
int Editor::DisplayFromPosition(int pos) {
int lineDoc = pdoc->LineFromPosition(pos);
int lineDisplay = cs.DisplayFromDoc(lineDoc);
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
LineLayout *ll = RetrieveLineLayout(lineDoc);
if (surface && ll) {
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
@@ -1272,7 +1272,7 @@ bool Editor::WrapLines() {
wrapWidth = rcTextArea.Width();
// Ensure all of the document is styled.
pdoc->EnsureStyledTo(pdoc->Length());
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
if (surface) {
int lastLineToWrap = pdoc->LinesTotal();
while (docLineLastWrapped <= lastLineToWrap) {
@@ -2356,10 +2356,10 @@ long Editor::FormatRange(bool draw, RangeToFormat *pfr) {
if (!pfr)
return 0;
- AutoSurface surface(pfr->hdc, IsUnicodeMode());
+ AutoSurface surface(pfr->hdc, CodePage());
if (!surface)
return 0;
- AutoSurface surfaceMeasure(pfr->hdcTarget, IsUnicodeMode());
+ AutoSurface surfaceMeasure(pfr->hdcTarget, CodePage());
if (!surfaceMeasure) {
return 0;
}
@@ -2531,7 +2531,7 @@ long Editor::FormatRange(bool draw, RangeToFormat *pfr) {
int Editor::TextWidth(int style, const char *text) {
RefreshStyleData();
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
if (surface) {
return surface->WidthText(vs.styles[style].font, text, strlen(text));
} else {
@@ -2935,7 +2935,7 @@ void Editor::CheckModificationForWrap(DocModification mh) {
if (wrapState != eWrapNone) {
int lineDoc = pdoc->LineFromPosition(mh.position);
if (mh.linesAdded == 0) {
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
LineLayout *ll = RetrieveLineLayout(lineDoc);
if (surface && ll) {
LayoutLine(lineDoc, surface, vs, ll, wrapWidth);
@@ -3303,7 +3303,7 @@ void Editor::CursorUpOrDown(int direction, bool extend) {
int Editor::StartEndDisplayLine(int pos, bool start) {
RefreshStyleData();
int line = pdoc->LineFromPosition(pos);
- AutoSurface surface(IsUnicodeMode());
+ AutoSurface surface(CodePage());
LineLayout *ll = RetrieveLineLayout(line);
int posRet = INVALID_POSITION;
if (surface && ll) {
@@ -4554,6 +4554,13 @@ bool Editor::IsUnicodeMode() const {
return pdoc && (SC_CP_UTF8 == pdoc->dbcsCodePage);
}
+int Editor::CodePage() const {
+ if (pdoc)
+ return pdoc->dbcsCodePage;
+ else
+ return 0;
+}
+
static bool ValidMargin(unsigned long wParam) {
return wParam < ViewStyle::margins;
}