CodeEditor: Line numbers now drawn using font (not images) #930

git-svn-id: svn://ultimatepp.org/upp/trunk@7921 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2014-11-23 16:34:04 +00:00
parent d43f35eb5d
commit 8a712075e8
4 changed files with 48 additions and 71 deletions

View file

@ -958,10 +958,10 @@ CodeEditor::CodeEditor() {
bracket_start = 0;
stat_edit_time = 0;
last_key_time = Null;
SetFont(Courier(16));
AddFrame(bar);
bar.SetEditor(this);
UndoSteps(10000);
SetFont(Courier(16));
InitFindReplace();
bar.WhenBreakpoint = THISBACK(ForwardWhenBreakpoint);
bar.WhenAnnotationMove = Proxy(WhenAnnotationMove);

View file

@ -4,62 +4,47 @@ IMAGE_ID(Replace)
IMAGE_ID(Breakpoint)
IMAGE_ID(InvalidBreakpoint)
IMAGE_ID(CondBreakpoint)
IMAGE_ID(N0)
IMAGE_ID(N1)
IMAGE_ID(N2)
IMAGE_ID(N3)
IMAGE_ID(N4)
IMAGE_ID(N5)
IMAGE_ID(N6)
IMAGE_ID(N7)
IMAGE_ID(N8)
IMAGE_ID(N9)
IMAGE_ID(I)
IMAGE_BEGIN_DATA
IMAGE_DATA(120,156,237,85,93,76,83,103,24,254,42,180,165,80,10,213,85,42,83,168,8,150,161,206,50,65,81,112,157,130,63,23)
IMAGE_DATA(146,22,132,42,155,96,193,31,156,226,52,139,2,115,110,5,65,109,204,150,224,182,27,151,44,94,204,44,217,110,76,102)
IMAGE_DATA(118,179,44,211,44,241,102,187,16,141,203,92,156,66,22,183,74,84,218,158,214,213,181,165,207,206,57,227,148,211,211,115)
IMAGE_DATA(90,102,202,126,146,61,228,229,124,231,253,158,247,255,61,64,52,68,67,56,232,228,138,60,52,219,48,97,105,196,219,154)
IMAGE_DATA(57,78,34,129,227,217,115,78,77,88,26,128,38,27,230,42,20,122,212,215,195,127,238,173,176,247,108,79,16,29,29,232)
IMAGE_DATA(206,210,158,16,218,28,85,207,238,103,238,188,67,61,193,199,231,142,135,177,165,30,143,87,87,193,189,103,67,208,183,123)
IMAGE_DATA(61,198,6,247,83,104,121,25,71,84,57,3,156,205,235,106,109,63,118,117,96,236,100,23,229,223,93,139,241,93,27,130)
IMAGE_DATA(254,149,21,232,201,212,56,177,186,18,174,142,13,148,191,125,61,238,191,185,139,66,107,43,186,179,231,56,143,102,105,157)
IMAGE_DATA(76,156,49,199,94,250,110,29,92,59,107,41,84,85,160,87,165,97,235,57,148,161,57,129,85,43,224,218,241,18,229,107)
IMAGE_DATA(51,195,221,107,15,70,246,239,69,100,223,30,184,223,104,15,250,91,205,248,181,229,69,10,229,203,113,88,169,25,228,215)
IMAGE_DATA(208,149,161,25,152,168,48,225,225,182,181,65,175,109,13,168,125,214,8,245,170,53,226,105,174,198,131,230,154,96,200,180)
IMAGE_DATA(28,7,5,54,81,91,101,182,115,188,124,41,60,141,213,17,143,181,10,30,75,21,188,77,107,34,158,149,207,211,54,217)
IMAGE_DATA(103,164,122,189,63,71,231,244,108,174,99,248,17,247,150,74,176,98,89,21,241,110,94,143,174,28,157,168,93,187,58,183)
IMAGE_DATA(63,96,179,97,220,110,9,122,235,76,240,110,124,33,194,136,135,62,51,58,127,67,35,236,202,236,152,25,181,102,106,250)
IMAGE_DATA(31,219,182,97,108,103,35,229,91,83,134,135,53,203,130,247,150,24,193,8,115,246,213,44,133,171,213,74,121,182,88,64)
IMAGE_DATA(115,217,25,181,169,115,78,141,55,52,97,172,165,129,162,76,70,184,42,202,168,123,197,197,104,87,170,207,216,105,97,206)
IMAGE_DATA(174,21,101,148,175,220,136,251,45,86,234,17,205,165,109,78,15,175,170,134,207,214,24,164,22,23,225,254,146,82,106,180)
IMAGE_DATA(192,128,237,138,204,104,223,182,41,50,79,48,58,230,206,103,44,102,185,195,85,213,248,110,81,41,2,165,101,225,71,69)
IMAGE_DATA(37,193,31,243,11,208,164,200,136,235,245,86,69,198,0,115,199,112,24,46,99,147,43,147,233,191,201,205,195,87,185,115)
IMAGE_DATA(209,36,87,74,238,245,86,185,242,52,195,97,184,90,217,172,121,132,255,113,204,56,102,17,37,201,32,186,56,189,140,190)
IMAGE_DATA(97,126,75,32,203,162,238,159,127,118,225,45,89,177,172,46,198,106,234,148,22,103,180,140,180,181,223,236,196,246,223,218)
IMAGE_DATA(144,117,33,199,67,42,211,118,76,198,33,164,150,12,146,121,164,156,231,231,79,95,5,100,157,245,234,214,96,103,224,16)
IMAGE_DATA(22,220,46,126,178,224,78,9,100,199,84,195,204,85,218,78,249,167,93,35,107,241,220,64,225,215,244,171,154,229,167,201)
IMAGE_DATA(210,200,92,178,116,221,151,181,161,195,191,31,129,246,70,126,184,224,135,146,144,234,35,173,151,232,100,37,233,251,84,159)
IMAGE_DATA(119,143,26,241,241,68,193,132,147,170,131,254,88,222,101,186,3,90,58,219,12,227,103,101,24,124,226,8,235,110,230,71)
IMAGE_DATA(12,183,75,67,89,23,117,32,122,98,98,221,218,148,239,29,248,41,15,239,251,243,39,186,93,121,161,94,79,45,116,175)
IMAGE_DATA(229,94,202,121,71,239,250,32,112,50,156,119,243,153,72,209,72,25,52,151,244,32,6,98,142,169,187,62,253,221,182,91)
IMAGE_DATA(122,244,121,22,162,211,149,31,106,29,169,193,233,135,71,195,149,119,12,48,222,45,197,236,203,11,64,86,202,58,99,122)
IMAGE_DATA(40,155,124,90,211,135,26,110,228,227,192,131,66,236,248,121,113,168,238,142,33,82,126,183,56,242,236,183,6,144,77,178)
IMAGE_DATA(147,49,92,225,8,27,211,207,110,186,62,31,182,95,22,97,227,104,73,176,228,250,66,144,230,244,15,19,216,76,233,94)
IMAGE_DATA(145,95,88,59,92,136,202,239,139,32,179,43,62,225,205,83,106,39,162,122,249,65,213,23,233,61,170,171,180,70,145,196)
IMAGE_DATA(38,22,179,104,126,90,212,70,28,106,250,7,14,209,43,166,233,16,136,89,138,103,50,153,48,52,52,132,107,180,208,68)
IMAGE_DATA(92,164,159,18,118,232,237,237,101,121,1,189,158,229,242,197,97,183,115,54,172,111,198,47,195,245,208,79,33,151,19,94)
IMAGE_DATA(12,54,7,49,191,49,49,120,53,113,249,38,19,142,63,29,238,121,30,255,98,18,255,110,90,236,130,26,164,184,163,147)
IMAGE_DATA(190,13,177,61,101,123,38,230,151,225,30,158,242,29,55,87,7,47,95,251,148,223,132,115,78,184,15,169,94,166,43,87)
IMAGE_DATA(174,176,50,148,108,153,174,93,67,32,16,128,16,14,135,35,126,153,36,184,28,248,131,96,151,105,146,219,215,215,7,183)
IMAGE_DATA(219,205,10,115,142,198,40,44,140,230,198,228,202,129,227,113,118,34,49,166,197,63,111,54,71,249,76,62,28,196,242,113)
IMAGE_DATA(143,140,196,47,147,4,24,46,227,219,32,92,38,186,103,82,220,68,203,100,159,172,167,47,165,203,52,21,74,72,78,42)
IMAGE_DATA(220,242,36,18,16,193,48,152,126,37,144,62,129,255,255,249,169,227,115,239,201,228,105,118,129,200,73,150,212,95,38,169)
IMAGE_DATA(141,52,243,158,194,123,62,102,74,39,140,43,150,95,60,166,81,40,223,169,48,168,48,25,242,47,211,77,97,134,39,42)
IMAGE_DATA(230,71,248,46,54,33,177,119,34,242,206,233,132,18,143,20,22,42,68,178,66,165,86,45,145,191,25,95,93,177,4,196)
IMAGE_DATA(38,9,1,143,127,134,128,35,212,137,249,72,52,41,169,233,138,67,78,50,147,21,42,22,240,175,124,55,137,186,61,221)
IMAGE_DATA(109,224,251,74,62,209,25,252,30,147,37,39,244,39,22,239,233,138,18,195,52,10,77,54,57,177,9,8,3,166,138,67)
IMAGE_DATA(68,56,82,186,88,252,13,255,51,167,51,129,84,251,251,71,11,37,68,60,177,212,127,143,98,80,18,149,176,208,100,171)
IMAGE_DATA(42,149,200,127,229,78,180,190,63,0,204,174,230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
IMAGE_END_DATA(1440, 16)
IMAGE_DATA(120,156,237,150,95,76,83,119,20,199,127,87,160,165,80,10,213,85,42,83,168,8,150,33,206,50,65,16,112,76,193,63)
IMAGE_DATA(15,146,22,132,42,27,96,193,63,56,197,105,22,249,51,231,86,16,144,198,108,9,110,123,113,201,226,195,204,146,237,133)
IMAGE_DATA(100,102,47,203,50,201,18,95,182,7,209,184,204,197,41,100,113,171,68,165,237,109,93,221,109,185,223,221,223,29,183,180)
IMAGE_DATA(151,22,204,194,30,150,236,52,167,247,215,223,249,156,243,59,191,115,78,155,18,13,209,16,73,116,9,138,116,52,88,49)
IMAGE_DATA(109,174,195,187,154,101,14,18,67,206,164,44,59,55,109,174,5,234,173,88,174,80,232,81,83,3,223,197,119,130,158,11)
IMAGE_DATA(221,28,218,218,208,149,172,61,43,247,233,84,47,237,163,54,207,112,55,247,228,226,153,32,118,215,224,201,230,82,184,14)
IMAGE_DATA(109,231,188,7,183,97,114,224,40,139,198,87,113,74,149,218,47,249,188,169,214,246,225,64,27,38,7,59,88,223,193,42)
IMAGE_DATA(76,29,216,206,249,54,21,161,59,73,227,192,230,98,56,219,182,179,190,214,109,120,240,246,1,22,205,205,232,74,89,230)
IMAGE_DATA(232,76,214,58,232,57,147,246,195,130,109,43,156,251,171,88,148,22,161,71,165,17,239,115,34,81,115,22,37,27,225,108)
IMAGE_DATA(122,133,245,182,84,194,213,99,227,248,163,135,193,31,57,4,215,91,173,156,175,185,18,191,55,190,204,162,112,3,78,42)
IMAGE_DATA(53,3,225,119,232,72,212,244,79,23,153,240,104,239,22,206,99,45,3,123,196,194,179,175,91,120,119,67,57,30,54,84)
IMAGE_DATA(112,1,211,6,28,151,249,132,124,149,41,142,169,194,2,184,235,202,121,183,165,20,110,115,41,60,245,101,188,123,211,139)
IMAGE_DATA(130,79,202,249,88,181,62,154,170,115,184,119,85,83,158,119,237,46,134,168,230,18,222,179,107,27,58,82,117,81,253,90)
IMAGE_DATA(213,105,125,126,171,21,83,54,51,231,169,54,193,179,227,37,158,170,91,88,211,61,95,109,29,108,202,148,136,30,53,39)
IMAGE_DATA(105,250,158,88,247,98,114,127,29,235,45,203,199,163,138,245,220,253,117,70,80,165,107,111,69,1,156,205,22,214,189,219)
IMAGE_DATA(12,129,21,123,212,162,78,61,55,85,91,143,201,198,90,150,53,25,225,44,202,103,239,231,228,160,85,169,62,111,19,148)
IMAGE_DATA(174,157,27,243,89,111,161,17,15,26,45,236,99,129,21,124,134,198,74,202,225,181,214,113,236,218,108,60,88,151,199,78)
IMAGE_DATA(100,26,176,79,145,20,170,219,94,69,210,89,186,71,109,94,99,142,200,142,149,150,227,135,53,121,240,231,229,7,31,103)
IMAGE_DATA(231,114,63,103,100,162,94,145,56,167,214,123,20,137,253,212,70,25,202,82,159,52,134,209,127,151,150,142,111,210,150,163)
IMAGE_DATA(62,65,25,115,174,247,36,40,135,40,67,89,45,179,100,5,9,255,114,252,235,178,132,40,73,34,209,205,217,103,4,11)
IMAGE_DATA(125,143,33,201,102,117,223,202,11,171,111,51,57,76,117,132,215,236,42,110,142,211,122,210,210,122,171,29,251,254,104,65)
IMAGE_DATA(242,229,84,55,41,142,107,154,57,135,144,42,50,64,86,144,194,176,56,127,199,202,36,91,45,215,246,112,237,254,19,88)
IMAGE_DATA(117,39,231,233,170,187,185,96,78,171,198,168,41,110,127,194,231,29,227,91,240,66,127,214,183,194,71,181,200,199,49,113)
IMAGE_DATA(100,57,41,216,250,117,85,224,228,159,167,160,189,153,17,204,252,41,55,160,250,68,235,33,58,38,55,254,136,234,203,174)
IMAGE_DATA(9,35,62,157,206,156,118,176,213,208,159,78,191,42,84,64,43,100,155,104,252,34,31,3,79,237,65,221,173,12,222,112)
IMAGE_DATA(39,47,144,60,162,3,209,19,147,24,214,170,252,224,216,47,233,248,208,151,49,221,229,76,15,244,184,171,160,123,35,237)
IMAGE_DATA(74,234,123,122,231,71,254,193,96,250,173,231,248,236,241,124,104,174,232,65,12,164,50,226,222,53,241,239,183,220,214,163)
IMAGE_DATA(215,189,26,237,206,140,64,243,120,5,134,30,117,6,139,239,26,96,188,151,135,165,87,87,129,108,98,218,35,106,200,204)
IMAGE_DATA(60,45,241,195,181,55,51,112,236,97,22,154,126,93,27,168,190,107,224,11,239,229,240,207,127,111,0,217,201,12,70,176)
IMAGE_DATA(242,22,214,197,95,216,121,99,37,172,191,173,193,142,137,92,46,247,198,106,144,134,248,143,231,241,153,221,123,45,225,242)
IMAGE_DATA(150,177,44,20,255,152,13,198,166,248,44,172,159,177,102,34,180,159,112,92,245,85,124,183,234,154,176,163,88,192,39,82)
IMAGE_DATA(150,8,124,92,200,39,186,168,133,23,236,81,77,180,232,144,105,101,44,206,100,50,97,120,120,24,215,5,21,64,140,8)
IMAGE_DATA(207,24,126,232,233,233,17,57,191,94,47,178,225,106,183,217,36,31,49,54,141,75,89,183,240,148,179,146,134,157,33,230)
IMAGE_DATA(16,45,110,196,25,97,119,146,242,93,72,37,254,89,216,75,97,252,200,2,241,93,130,218,100,119,136,197,78,204,196,54)
IMAGE_DATA(68,214,84,172,89,180,184,148,61,57,27,123,78,95,237,97,249,218,102,227,206,219,231,121,231,97,177,135,105,116,116,84)
IMAGE_DATA(212,225,133,134,233,250,117,248,253,126,200,197,110,183,207,29,166,24,172,36,225,141,16,135,105,134,237,237,237,133,203,229)
IMAGE_DATA(18,149,174,67,103,100,101,133,114,163,185,74,34,113,146,95,148,51,158,137,191,84,89,25,226,105,62,146,68,203,199,53)
IMAGE_DATA(62,62,119,152,98,8,101,105,108,131,124,152,132,154,197,98,231,27,38,219,204,125,122,23,117,152,102,143,146,195,11,170)
IMAGE_DATA(52,60,243,41,136,172,25,180,94,243,104,175,44,254,255,252,226,241,210,231,133,244,159,204,130,240,151,68,37,255,101,138)
IMAGE_DATA(6,202,37,218,222,127,197,22,245,126,127,1,22,46,19,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
IMAGE_END_DATA(1280, 6)

View file

@ -55,10 +55,6 @@ void EditorBar::sPaintImage(Draw& w, int y, int fy, const Image& img)
void EditorBar::Paint(Draw& w)
{
static Image (*numeri[])() = {
CodeEditorImg::N0, CodeEditorImg::N1, CodeEditorImg::N2, CodeEditorImg::N3, CodeEditorImg::N4,
CodeEditorImg::N5, CodeEditorImg::N6, CodeEditorImg::N7, CodeEditorImg::N8, CodeEditorImg::N9,
};
Size sz = GetSize();
w.DrawRect(0, 0, sz.cx, sz.cy, SColorLtFace);
if(!editor) return;
@ -92,14 +88,10 @@ void EditorBar::Paint(Draw& w)
if(editor->GetCaret().top == y && editor->barline)
w.DrawRect(0, y, sz.cx, fy, Blend(SColorHighlight(), SColorLtFace(), 200));
if(line_numbers && i < editor->GetLineCount()) {
String n = AsString(i + 1);
for(int q = 0; q < 4 && q < n.GetLength(); q++) {
w.DrawImage(sz.cx - 8 - q * 6 - 12,
y + (fy - CodeEditorImg::N0().GetSize().cy) / 2,
numeri[n[n.GetLength() - 1 - q] - '0'],
// CodeEditorImg::Vector[n[n.GetLength() - 1 - q] - '0' + CodeEditorImg::I_N0],
Brown);
}
String n = AsString((i + 1) % 10000);
Font fnt = editor->GetFont();
Size tsz = GetTextSize(n, fnt);
w.DrawText(sz.cx - 8 - 12 - tsz.cx, y + (fy - tsz.cy) / 2, n, fnt, Brown);
}
if(hi_if) {
Vector<IfState> nextif;
@ -484,7 +476,7 @@ void EditorBar::HidePtr()
void EditorBar::SyncWidth()
{
Width((line_numbers ? 27 + 12 : 12) + annotations);
Width((line_numbers && editor ? editor->GetFont()['0'] * 4 + 12 : 12) + annotations);
Refresh();
}

View file

@ -2,7 +2,7 @@
#define _CodeEditor_icpp_init_stub
#include "CtrlLib/init"
#include "plugin/pcre/init"
#define BLITZ_INDEX__ F8defc3b59944b6f49a28a98ad6148c81
#define BLITZ_INDEX__ F9714522c143037334ef92752f80fbeaa
#include "CRegister.icpp"
#undef BLITZ_INDEX__
#endif