diff --git a/uppsrc/CodeEditor/CodeEditor.cpp b/uppsrc/CodeEditor/CodeEditor.cpp index e3098630c..91a518649 100644 --- a/uppsrc/CodeEditor/CodeEditor.cpp +++ b/uppsrc/CodeEditor/CodeEditor.cpp @@ -1189,7 +1189,44 @@ void CodeEditor::Clear() found = notfoundfw = notfoundbk = false; } -CodeEditor::CodeEditor() { +void CodeEditor::ScrollBarItems::Paint(Draw& w) +{ + Rect sr = sb.GetSliderRect(); + for(const Tuple& x : pos) { + int y = sb.GetSliderPos(x.Get()); + if(!IsNull(y)) { + Image m = x.Get(); + Size isz = m.GetSize(); + w.DrawImage(sr.CenterPoint().x - isz.cx / 2, sr.top + y - isz.cy / 2, m, x.Get()); + } + } +} + +CodeEditor::ScrollBarItems::ScrollBarItems(ScrollBar& sb) +: sb(sb) { + sb.Add(SizePos()); + Transparent(); + IgnoreMouse(); +} + +void CodeEditor::Errors(Vector&& errs) +{ + errors = pick(errs); + Refresh(); + sbi.pos.Clear(); + for(Point p : errors) + sbi.pos.Add({ p.y, CodeEditorImg::dot(), Red() }); + sbi.Refresh(); +} + +void CodeEditor::Layout() +{ + sbi.Refresh(); + LineEdit::Layout(); +} + +CodeEditor::CodeEditor() +: sbi(sb.y) { bracket_flash = false; highlight_bracket_pos0 = 0; bracket_start = 0; diff --git a/uppsrc/CodeEditor/CodeEditor.h b/uppsrc/CodeEditor/CodeEditor.h index f4f880638..83da2e1ff 100644 --- a/uppsrc/CodeEditor/CodeEditor.h +++ b/uppsrc/CodeEditor/CodeEditor.h @@ -198,6 +198,7 @@ public: virtual void Serialize(Stream& s); virtual void MouseLeave(); virtual void MouseWheel(Point p, int zdelta, dword keyFlags); + virtual void Layout(); protected: virtual void HighlightLine(int line, Vector& h, int64 pos); @@ -306,6 +307,19 @@ protected: Vector errors; // current file (compilation) errors + struct ScrollBarItems : Ctrl { + ScrollBar& sb; + + void Paint(Draw& w); + + Vector> pos; + + ScrollBarItems(ScrollBar& sb); + }; + + ScrollBarItems sbi; + + struct HlSt; bool MouseSelSpecial(Point p, dword flags); @@ -524,7 +538,7 @@ public: void SyncTip(); void CloseTip() { if(tip.IsOpen()) tip.Close(); tip.d = NULL; } - void Errors(Vector&& errs) { errors = pick(errs); Refresh(); } + void Errors(Vector&& errs); void Illuminate(const WString& text); WString GetIlluminated() const { return illuminated; } diff --git a/uppsrc/CodeEditor/CodeEditor.iml b/uppsrc/CodeEditor/CodeEditor.iml index 2dc5ae3a7..550599cf9 100644 --- a/uppsrc/CodeEditor/CodeEditor.iml +++ b/uppsrc/CodeEditor/CodeEditor.iml @@ -10,84 +10,89 @@ IMAGE_ID(InvalidBreakpoint) IMAGE_ID(InvalidBreakpoint__DARK) IMAGE_ID(CondBreakpoint) IMAGE_ID(I) +IMAGE_ID(dot) +IMAGE_ID(dot__UHD) IMAGE_BEGIN_DATA -IMAGE_DATA(120,156,237,87,9,80,20,103,22,238,225,152,225,156,1,9,130,32,138,4,196,69,84,148,83,193,160,28,74,92,144,107) -IMAGE_DATA(24,32,202,112,168,224,173,73,121,96,162,1,4,148,210,85,241,140,71,214,236,214,122,212,198,236,154,163,214,232,38,6) -IMAGE_DATA(99,153,84,185,91,229,21,93,101,163,160,169,68,228,146,57,64,116,6,250,219,254,219,233,177,233,153,97,216,45,247,170) -IMAGE_DATA(202,171,122,51,221,127,127,223,251,223,123,255,251,255,215,109,35,165,164,20,39,158,246,98,47,228,40,208,159,158,133,119) -IMAGE_DATA(165,30,117,148,5,217,232,234,177,165,63,61,19,144,43,48,92,44,246,70,90,26,186,15,109,234,83,239,94,175,67,73) -IMAGE_DATA(9,214,57,187,111,22,114,214,186,12,171,34,207,212,245,235,117,61,135,54,246,33,53,13,61,83,99,208,181,40,89,167) -IMAGE_DATA(93,152,128,214,154,165,26,228,191,129,53,142,178,106,142,243,150,139,123,21,22,148,160,181,118,185,166,123,97,34,30,47) -IMAGE_DATA(72,214,117,71,69,96,189,147,180,14,83,35,209,82,146,172,233,46,78,192,163,119,22,104,80,80,128,117,174,30,117,107) -IMAGE_DATA(157,221,235,200,60,173,21,165,204,179,153,104,41,76,212,32,38,2,229,142,82,54,158,85,14,210,205,136,14,71,203,252) -IMAGE_DATA(25,26,173,50,30,93,229,69,58,122,105,41,232,197,139,208,181,161,88,215,93,16,143,135,249,175,105,48,121,18,86,75) -IMAGE_DATA(164,53,252,24,150,59,72,171,251,35,194,208,145,59,93,167,86,76,131,102,113,6,173,89,146,65,171,114,98,209,158,19) -IMAGE_DATA(167,211,135,77,194,10,1,199,200,149,184,214,61,158,28,10,85,86,44,173,202,136,129,42,61,6,106,249,52,90,21,53) -IMAGE_DATA(145,225,184,110,179,148,235,165,50,207,58,85,74,18,193,211,93,169,145,96,53,61,154,86,167,36,96,185,204,211,44,175) -IMAGE_DATA(216,197,173,170,87,161,192,227,162,116,157,58,41,12,234,89,83,104,162,42,230,154,140,117,103,102,161,72,226,58,96,141) -IMAGE_DATA(10,156,164,85,61,138,92,180,22,102,105,180,211,66,208,17,55,65,247,227,248,96,16,37,215,218,184,80,180,20,100,104) -IMAGE_DATA(84,169,233,96,176,236,26,41,93,100,91,30,103,202,209,154,159,169,209,132,5,163,37,34,68,243,99,96,32,138,37,46) -IMAGE_DATA(219,138,24,37,215,45,225,33,26,237,228,96,60,202,207,208,116,50,88,134,179,245,90,116,44,180,138,44,157,102,108,0) -IMAGE_DATA(30,141,31,167,185,63,202,31,121,98,39,99,222,114,197,78,155,201,24,121,166,13,14,100,177,215,98,98,241,215,87,199) -IMAGE_DATA(161,119,92,72,95,103,64,144,174,209,103,20,228,98,7,147,92,103,139,29,170,201,51,130,33,88,194,113,19,137,188,47) -IMAGE_DATA(186,121,225,75,183,225,144,219,75,44,214,117,182,189,100,43,193,16,172,187,200,102,132,13,127,115,252,219,197,134,146,80) -IMAGE_DATA(14,148,167,201,184,136,121,66,126,45,136,115,186,75,213,200,221,99,238,136,2,69,73,3,88,47,174,108,77,72,19,40) -IMAGE_DATA(101,241,205,50,228,61,81,194,249,152,76,69,69,218,206,55,204,67,81,137,84,13,53,130,154,204,179,243,220,214,40,106) -IMAGE_DATA(102,198,55,217,186,178,222,85,240,251,62,240,169,223,189,32,136,222,118,188,70,30,217,22,218,255,126,121,243,116,252,162) -IMAGE_DATA(122,244,87,204,173,11,139,183,21,217,82,195,169,208,153,127,78,212,175,126,182,6,238,55,124,250,70,221,14,210,59,254) -IMAGE_DATA(218,93,77,121,138,130,236,22,59,126,186,238,126,48,126,215,63,170,191,78,147,4,239,183,189,26,152,12,184,51,222,58) -IMAGE_DATA(4,127,24,2,247,121,191,165,37,121,7,105,135,188,67,180,88,254,30,45,158,125,160,131,53,171,144,236,89,118,215,11) -IMAGE_DATA(123,187,125,250,215,181,120,233,203,85,137,240,92,233,246,153,236,87,222,45,251,122,107,251,94,169,79,162,87,222,237,70) -IMAGE_DATA(66,67,27,18,46,61,6,53,38,251,148,49,238,52,187,29,202,59,222,168,84,141,65,89,139,143,190,160,57,14,91,59) -IMAGE_DATA(214,246,69,222,243,199,200,253,105,180,226,154,10,161,127,248,9,19,62,121,4,202,223,192,19,25,226,207,176,171,207,188) -IMAGE_DATA(225,131,101,237,163,49,255,135,177,250,208,61,83,104,255,125,175,211,190,59,119,209,175,125,217,10,255,163,77,240,61,210) -IMAGE_DATA(12,251,164,237,127,179,241,10,171,24,176,132,89,118,187,103,95,31,9,197,79,175,98,210,251,19,251,2,234,207,209,129) -IMAGE_DATA(31,183,98,228,161,123,240,216,209,8,233,214,59,112,170,184,13,199,196,35,42,147,245,155,103,127,108,250,181,209,136,188) -IMAGE_DATA(21,0,42,197,227,130,235,252,195,119,101,59,155,224,84,197,224,171,26,33,158,178,233,239,148,173,243,235,230,214,222,126) -IMAGE_DATA(133,227,159,236,214,59,126,195,140,136,41,59,105,154,131,242,163,54,167,45,77,144,204,122,239,17,101,227,156,106,169,166) -IMAGE_DATA(152,74,16,51,235,32,54,222,59,141,40,177,143,220,216,72,217,187,201,141,16,55,202,205,28,117,36,163,225,140,70,89) -IMAGE_DATA(81,127,118,26,83,9,111,109,109,85,61,123,246,172,191,175,175,15,230,244,233,211,167,144,203,229,187,45,216,136,34,220) -IMAGE_DATA(238,238,110,244,244,244,24,85,173,86,163,171,171,11,140,109,214,70,75,75,139,137,13,7,71,39,143,162,37,111,61,43) -IMAGE_DATA(93,177,22,215,111,53,162,176,108,21,74,74,151,161,183,183,23,90,173,22,42,149,10,109,109,109,44,255,201,147,39,32) -IMAGE_DATA(115,228,230,230,178,54,236,197,98,89,202,220,156,93,213,187,222,71,74,106,22,46,125,123,25,179,211,228,120,103,75,61) -IMAGE_DATA(246,30,56,200,206,175,209,104,208,222,222,110,18,15,241,89,42,115,243,203,204,47,214,174,42,175,69,236,204,57,216,84) -IMAGE_DATA(183,31,51,230,40,176,166,122,15,102,204,78,199,131,7,63,24,227,232,232,232,96,253,120,248,240,161,145,239,235,231,95) -IMAGE_DATA(155,38,159,135,250,223,124,140,204,130,37,88,180,102,11,230,230,45,64,221,193,15,49,39,243,13,108,174,174,97,243,70) -IMAGE_DATA(108,16,63,72,46,58,59,59,141,252,140,188,194,174,188,226,37,72,73,87,32,101,78,26,182,109,219,142,169,113,51,16) -IMAGE_DATA(151,48,11,225,49,211,17,50,62,20,122,189,158,181,65,98,39,249,32,118,56,126,209,146,55,159,158,62,119,9,59,14) -IMAGE_DATA(159,68,249,198,74,124,119,243,38,148,11,151,227,216,233,47,176,253,224,9,164,103,102,179,88,157,78,7,102,125,88,27) -IMAGE_DATA(68,57,126,225,226,55,113,234,204,215,40,93,189,1,249,5,37,248,252,236,89,20,148,174,196,241,79,206,99,233,154,119) -IMAGE_DATA(49,49,44,156,197,18,31,8,159,40,241,133,227,203,231,45,96,231,86,150,173,70,236,140,100,156,58,245,17,230,230,204) -IMAGE_DATA(71,197,182,3,80,40,75,225,61,194,151,229,146,249,137,18,46,159,63,41,60,166,145,137,179,113,236,248,137,15,114,114) -IMAGE_DATA(243,113,246,220,57,76,141,157,142,233,241,9,136,136,138,70,108,92,156,145,203,87,142,207,219,120,81,230,106,150,204,109) -IMAGE_DATA(78,205,241,153,113,218,82,237,11,149,241,161,159,199,39,18,193,172,109,15,25,31,10,151,169,1,173,97,191,114,226,71) -IMAGE_DATA(108,12,97,255,114,74,184,126,54,195,254,147,157,82,40,76,231,116,27,19,176,114,198,170,205,231,109,36,78,81,22,113) -IMAGE_DATA(86,58,169,203,172,145,39,143,92,185,161,63,171,214,99,78,197,222,203,148,157,195,20,179,86,94,92,153,116,86,251,9) -IMAGE_DATA(30,59,247,92,188,68,31,235,208,97,227,253,39,56,216,166,67,100,89,245,215,148,173,100,10,143,55,104,167,149,140,245) -IMAGE_DATA(173,217,126,233,26,125,188,243,25,86,222,209,98,233,119,106,20,50,157,105,109,163,22,209,27,78,52,137,28,135,205,229) -IMAGE_DATA(76,13,214,121,39,110,249,101,127,206,167,107,241,218,201,3,244,198,166,30,228,93,238,68,246,229,199,240,84,238,191,237) -IMAGE_DATA(54,46,170,194,198,213,167,128,192,173,117,226,154,167,21,125,158,55,125,104,239,125,115,251,44,118,86,202,122,103,246,186) -IMAGE_DATA(249,10,29,208,28,2,89,101,178,249,78,203,151,65,58,181,239,158,104,184,215,38,99,248,138,186,123,230,58,175,200,97) -IMAGE_DATA(120,129,33,163,102,59,119,210,61,127,122,114,83,32,237,177,99,60,70,215,126,222,109,169,19,139,196,195,114,77,22,159) -IMAGE_DATA(215,201,103,221,15,210,5,93,31,3,42,199,238,48,101,47,75,29,66,103,30,88,63,188,206,46,42,18,159,48,214,211) -IMAGE_DATA(208,59,181,249,78,207,127,102,166,115,15,42,194,206,63,20,202,207,175,201,255,189,215,100,110,115,250,127,63,78,239,124) -IMAGE_DATA(218,19,148,55,21,198,154,29,226,102,148,126,230,205,108,64,42,126,64,220,131,108,190,224,166,113,24,214,224,7,42,74) -IMAGE_DATA(84,54,32,135,86,54,155,239,95,252,65,205,22,213,14,192,10,151,208,210,230,178,204,177,190,153,44,215,132,245,205,99) -IMAGE_DATA(77,134,178,89,92,12,235,108,70,72,210,33,208,120,75,184,176,176,48,212,215,215,227,42,163,12,16,167,153,127,11,60) -IMAGE_DATA(148,151,151,179,184,94,111,111,22,203,215,138,162,34,142,195,218,38,118,9,86,197,252,11,177,156,242,230,96,125,48,103) -IMAGE_DATA(119,192,28,188,152,56,127,173,41,135,31,10,246,3,30,254,180,21,251,93,140,22,9,98,176,132,189,111,176,237,63,48) -IMAGE_DATA(167,108,206,204,217,37,216,213,47,108,155,172,107,5,207,223,162,23,118,7,93,231,193,234,193,205,82,49,41,41,234,232) -IMAGE_DATA(121,134,192,87,50,102,13,119,59,37,5,77,204,255,21,11,60,114,127,49,48,16,223,50,56,189,139,139,73,2,56,30) -IMAGE_DATA(223,54,193,182,51,239,203,150,22,131,155,131,155,79,104,87,168,87,4,254,90,43,142,38,30,190,105,8,197,212,192,195) -IMAGE_DATA(95,177,130,237,21,228,233,188,33,38,115,216,219,140,254,81,144,83,110,14,33,167,215,128,61,195,203,167,112,189,174,24) -IMAGE_DATA(226,225,251,59,212,117,54,139,123,217,39,211,133,11,23,88,173,183,118,50,93,189,202,126,84,11,165,162,162,130,191,147) -IMAGE_DATA(158,159,76,22,176,156,240,230,120,126,50,25,176,149,149,149,236,71,46,81,114,109,156,99,244,104,163,111,196,87,78,56) -IMAGE_DATA(28,199,51,51,199,144,240,31,196,199,27,241,196,31,78,204,249,211,213,220,108,122,50,89,16,130,37,182,253,41,193,201) -IMAGE_DATA(196,228,204,18,118,176,147,169,200,16,79,37,245,63,122,50,125,197,28,185,68,45,241,216,147,41,60,28,183,142,31,103) -IMAGE_DATA(191,164,7,36,160,161,1,87,152,4,8,79,38,130,37,11,32,196,115,28,147,147,201,240,149,206,47,32,254,53,55,7) -IMAGE_DATA(231,47,95,184,226,224,75,19,115,255,207,224,27,148,202,1,241,155,243,129,92,247,50,49,17,53,57,153,152,152,132,66) -IMAGE_DATA(112,205,204,248,23,10,133,233,201,196,196,35,228,16,60,193,158,145,201,44,158,76,92,60,71,95,210,201,100,35,40,38) -IMAGE_DATA(97,229,89,85,238,36,26,76,65,9,118,54,201,239,32,90,41,176,255,51,254,229,225,185,123,107,250,175,212,2,243,177) -IMAGE_DATA(228,200,190,137,89,41,40,161,152,27,251,127,121,102,54,190,127,0,112,34,86,208,0,0,0,0,0,0,0,0,0,0) -IMAGE_END_DATA(2496, 11) +IMAGE_DATA(120,156,237,87,11,80,20,87,22,237,1,102,134,239,12,72,16,4,17,52,40,46,254,80,4,49,96,80,68,37,174,200) +IMAGE_DATA(199,97,128,40,195,199,4,212,248,75,202,15,73,76,0,17,165,116,77,208,36,198,79,54,238,214,106,82,27,179,75,62) +IMAGE_DATA(181,137,110,98,48,150,73,149,187,85,106,18,179,202,38,130,73,37,34,10,50,31,16,157,129,62,251,94,103,122,108,122) +IMAGE_DATA(186,153,201,110,246,87,149,75,93,166,251,189,115,238,187,247,190,251,222,157,241,208,48,26,134,151,16,165,42,20,249,122) +IMAGE_DATA(12,100,231,225,89,77,112,3,35,35,91,2,130,183,15,100,231,2,58,61,134,171,84,97,200,202,66,207,129,103,250,77) +IMAGE_DATA(123,54,91,81,94,142,77,126,65,91,197,156,141,254,195,106,233,156,169,113,179,181,247,192,150,126,44,202,66,239,204,100) +IMAGE_DATA(116,63,58,207,106,121,36,29,29,219,86,153,81,244,48,54,248,104,235,120,206,19,254,65,181,88,94,142,142,250,213,230) +IMAGE_DATA(158,71,230,226,214,242,121,214,158,164,233,216,236,171,105,192,204,68,180,151,207,51,247,148,165,227,250,211,203,205,40,46) +IMAGE_DATA(198,166,128,224,134,141,126,65,13,116,157,142,234,10,50,55,7,237,37,115,205,72,158,142,42,31,13,23,207,58,111,205) +IMAGE_DATA(86,204,72,64,251,178,217,102,139,33,13,221,85,165,86,118,85,5,216,21,143,162,251,201,50,107,79,113,26,174,21,61) +IMAGE_DATA(104,198,212,41,88,175,214,108,19,198,176,218,91,83,55,48,61,30,157,5,179,172,38,253,3,48,175,200,97,205,43,115) +IMAGE_DATA(88,99,126,10,110,230,167,90,109,241,83,176,70,196,113,112,213,1,13,183,166,78,132,49,47,133,53,230,36,195,152,157) +IMAGE_DATA(12,147,238,1,214,152,52,153,112,2,118,202,229,122,149,54,164,193,152,153,65,241,108,247,162,68,112,154,61,131,53,101) +IMAGE_DATA(166,99,181,54,68,146,87,230,31,88,219,167,215,227,86,105,182,213,148,17,15,211,252,105,44,85,35,121,166,99,61,185) +IMAGE_DATA(121,40,85,7,12,218,163,98,95,77,109,175,190,0,29,37,121,102,203,3,113,232,76,157,100,253,110,66,44,168,210,103) +IMAGE_DATA(75,234,68,180,23,231,152,141,139,178,65,176,220,30,25,252,181,219,111,229,234,208,81,148,107,54,199,199,162,125,122,156) +IMAGE_DATA(249,187,152,24,148,169,253,119,150,18,165,207,237,9,113,102,203,212,88,92,47,202,49,119,17,44,225,236,184,48,35,5) +IMAGE_DATA(22,125,158,213,60,110,12,174,79,24,111,190,58,42,26,133,42,95,71,222,10,84,190,91,233,24,157,179,196,198,112,216) +IMAGE_DATA(11,201,41,248,235,253,227,209,55,62,174,191,107,204,88,107,75,248,40,232,84,222,78,185,94,162,242,174,163,115,20,67) +IMAGE_DATA(177,148,19,168,80,132,157,14,12,197,135,129,195,161,83,170,101,235,122,137,82,189,131,98,40,54,72,225,49,194,67,120) +IMAGE_DATA(56,254,237,226,193,168,25,111,38,196,105,92,65,102,232,127,25,241,203,246,175,29,185,103,244,101,69,140,34,99,16,235) +IMAGE_DATA(222,147,167,19,105,18,99,40,187,88,137,194,219,6,248,29,209,26,153,68,207,101,246,117,24,102,46,179,141,25,193,76) +IMAGE_DATA(21,216,249,193,214,40,102,78,206,39,75,172,149,125,235,16,249,85,204,157,200,43,99,161,120,202,231,2,157,242,44,81) +IMAGE_DATA(254,126,117,219,44,252,162,46,234,35,242,234,207,225,61,21,158,204,112,102,226,156,63,207,181,173,191,187,1,65,159,135) +IMAGE_DATA(247,143,186,52,214,230,243,235,32,19,19,162,24,235,181,194,231,157,77,87,99,241,187,129,81,3,13,230,12,132,61,21) +IMAGE_DATA(218,76,50,16,68,188,245,142,125,35,14,65,75,127,203,170,11,247,179,222,133,7,88,149,238,101,86,181,96,95,39,103) +IMAGE_DATA(86,175,222,251,216,215,161,120,161,39,124,96,83,123,168,173,202,56,23,33,107,3,223,213,254,42,172,253,197,190,250,254) +IMAGE_DATA(251,26,51,216,181,95,247,32,189,249,6,210,207,220,2,51,122,201,49,71,220,89,94,187,13,151,195,80,99,28,141,202) +IMAGE_DATA(246,112,91,113,91,42,118,116,110,236,79,188,18,141,145,47,101,177,250,11,70,76,252,195,247,152,244,246,117,48,209,118) +IMAGE_DATA(158,194,30,127,142,87,99,238,231,225,120,236,102,20,150,125,59,206,54,113,239,52,54,250,197,135,216,136,231,158,103,31) +IMAGE_DATA(252,176,3,209,175,182,34,226,80,27,148,25,187,254,230,17,26,95,61,104,11,243,188,246,44,248,108,36,244,223,223,143) +IMAGE_DATA(41,175,76,238,31,211,120,130,141,121,171,3,35,15,92,65,240,238,22,104,118,92,134,111,245,37,248,204,61,100,116,218) +IMAGE_DATA(191,165,202,35,179,46,68,33,241,203,49,96,50,131,79,5,44,59,248,181,246,185,86,248,214,18,124,109,11,84,211,158) +IMAGE_DATA(249,59,227,233,247,144,212,222,43,215,248,252,201,107,179,207,39,100,68,197,120,105,178,188,13,111,222,240,221,222,10,245) +IMAGE_DATA(252,151,175,51,30,126,139,228,106,138,84,130,138,236,131,202,241,238,59,162,92,153,184,165,133,81,6,234,28,144,64,38) +IMAGE_DATA(80,138,58,146,104,2,209,36,23,26,205,45,227,44,9,29,29,29,198,187,119,239,14,244,247,247,67,74,239,220,185,3) +IMAGE_DATA(157,78,183,71,198,70,18,229,246,244,244,160,183,183,215,161,38,147,9,221,221,221,32,182,57,27,237,237,237,78,54,188) +IMAGE_DATA(125,124,131,75,87,62,113,183,98,205,70,124,246,101,11,74,42,215,161,188,226,49,244,245,245,193,98,177,192,104,52,226) +IMAGE_DATA(198,141,27,28,255,246,237,219,160,107,20,20,20,112,54,148,42,149,54,115,113,254,243,117,207,191,130,204,69,121,56,243) +IMAGE_DATA(233,89,44,200,210,225,233,237,141,120,97,223,126,110,125,179,217,140,155,55,111,58,197,67,125,214,104,3,35,115,139,202) +IMAGE_DATA(44,235,170,234,145,50,103,33,158,105,120,9,179,23,234,177,161,110,47,102,47,200,198,55,223,124,235,136,163,179,179,147) +IMAGE_DATA(243,227,218,181,107,14,126,68,100,116,125,150,110,41,26,127,243,22,114,139,87,226,209,13,219,177,184,112,57,26,246,191) +IMAGE_DATA(129,133,185,15,99,107,221,54,46,111,212,6,245,131,230,162,171,171,203,193,207,41,44,233,46,44,91,137,204,108,61,50) +IMAGE_DATA(23,102,97,231,206,93,152,153,58,27,169,233,243,145,144,60,11,113,19,38,194,102,179,113,54,104,236,52,31,212,14,207) +IMAGE_DATA(47,93,249,248,157,166,19,103,176,251,224,235,168,218,82,131,47,46,94,132,225,145,213,56,210,244,1,118,237,127,13,217) +IMAGE_DATA(185,75,56,172,213,106,5,217,31,206,6,85,158,95,178,226,113,28,123,239,99,84,172,127,18,69,197,229,120,255,248,113) +IMAGE_DATA(20,87,172,197,209,183,79,98,213,134,103,49,57,62,129,195,82,31,40,159,42,245,133,231,235,150,46,231,214,54,84,174) +IMAGE_DATA(71,202,236,121,56,118,236,77,44,206,95,134,234,157,251,160,55,84,32,108,68,4,199,165,235,83,165,92,33,127,74,66) +IMAGE_DATA(114,11,137,179,101,220,132,201,223,228,23,20,225,248,137,19,152,153,50,11,179,210,210,49,61,105,6,82,82,83,29,92) +IMAGE_DATA(161,242,124,193,193,75,146,170,89,186,182,148,74,241,201,56,43,87,251,98,37,62,12,8,248,84,166,147,189,237,165,227) +IMAGE_DATA(238,112,73,13,88,236,231,149,151,72,106,195,141,243,203,43,229,70,122,12,251,79,118,74,177,144,206,25,56,122,204,218) +IMAGE_DATA(217,235,182,158,244,80,251,38,201,226,92,116,82,255,249,35,95,63,116,238,115,219,113,147,13,11,171,95,56,203,120,121) +IMAGE_DATA(79,147,180,114,239,201,169,179,42,39,5,63,183,247,244,25,246,72,167,21,91,174,222,198,254,27,86,36,86,214,125,204) +IMAGE_DATA(120,170,167,9,120,67,118,90,245,184,136,109,187,206,92,96,143,118,221,197,218,203,22,172,250,194,132,18,210,153,54,182) +IMAGE_DATA(88,48,227,201,215,90,21,62,195,22,243,166,134,234,188,147,183,255,114,32,255,157,141,120,240,245,125,236,150,214,94,20) +IMAGE_DATA(158,237,194,146,179,183,16,98,120,233,82,224,248,164,106,143,128,240,98,10,119,213,137,183,221,169,238,15,185,24,206,134) +IMAGE_DATA(189,184,184,95,182,179,50,174,59,115,232,197,251,216,49,109,113,208,214,204,147,238,180,66,25,162,83,71,236,157,129,160) +IMAGE_DATA(250,121,24,190,166,225,138,84,231,85,120,15,47,182,103,84,178,115,103,92,137,102,167,182,198,176,193,187,39,32,170,254) +IMAGE_DATA(253,30,185,78,172,80,13,43,112,218,124,65,39,159,127,117,172,117,236,103,163,193,228,123,29,100,148,218,69,110,116,230) +IMAGE_DATA(193,245,35,232,236,138,82,213,107,142,122,114,191,83,75,119,122,225,156,68,231,30,82,196,157,223,29,202,207,95,147,255) +IMAGE_DATA(123,95,147,249,195,25,253,213,120,155,95,83,8,152,48,38,158,51,235,230,97,212,188,27,70,14,32,147,54,40,238,33) +IMAGE_DATA(14,95,108,235,120,12,107,142,4,147,164,168,28,148,67,23,135,45,226,47,209,96,22,40,234,7,97,197,91,40,119,184) +IMAGE_DATA(228,57,174,15,147,124,77,184,62,60,174,196,157,195,226,111,223,103,9,161,73,135,72,211,228,112,241,241,241,104,108,108) +IMAGE_DATA(196,121,162,4,136,38,242,41,195,67,85,85,21,135,235,11,11,227,176,66,173,46,45,229,57,156,109,106,151,98,141,228) +IMAGE_DATA(83,140,229,85,176,6,231,131,148,221,65,107,8,98,226,253,117,165,60,222,29,236,97,1,190,201,133,253,110,162,165,162) +IMAGE_DATA(24,228,176,87,237,182,163,7,231,148,203,153,148,93,138,93,127,207,182,211,190,86,11,252,45,189,103,119,200,125,30,170) +IMAGE_DATA(30,2,229,138,201,192,48,175,158,36,4,161,210,49,87,184,75,153,153,104,37,159,231,100,120,244,253,116,76,12,62,37) +IMAGE_DATA(56,155,191,191,83,2,120,158,208,54,197,222,36,223,151,229,54,131,95,131,95,79,108,87,172,231,68,254,186,42,142,86) +IMAGE_DATA(1,190,213,141,98,106,22,224,207,185,192,246,137,242,116,210,30,147,20,246,18,209,63,138,114,202,175,33,230,244,217,177) +IMAGE_DATA(239,9,242,41,222,175,115,246,120,132,254,186,187,207,146,184,159,250,102,58,117,234,20,167,141,174,110,166,243,231,185,31) +IMAGE_DATA(213,98,169,174,174,22,158,164,31,110,38,25,44,47,130,53,126,184,153,236,216,154,154,26,238,71,46,85,250,236,88,35) +IMAGE_DATA(42,202,225,27,245,149,23,30,199,243,36,214,112,11,127,56,45,205,129,167,254,240,34,229,79,119,91,155,243,205,36,35) +IMAGE_DATA(20,75,109,71,51,162,155,137,228,76,14,59,212,205,84,106,143,167,134,249,31,189,153,62,34,87,46,85,57,30,119,51) +IMAGE_DATA(37,36,224,203,163,71,185,95,210,131,18,208,220,140,115,36,1,226,155,137,98,233,6,136,241,60,199,233,102,178,255,74) +IMAGE_DATA(23,22,144,240,153,95,131,247,87,40,124,113,8,165,149,188,255,24,124,179,193,48,40,126,41,31,232,115,31,137,137,170) +IMAGE_DATA(211,205,68,98,18,11,197,181,145,241,15,244,122,231,155,137,196,35,230,80,60,197,190,167,213,202,222,76,124,60,175,254) +IMAGE_DATA(68,55,147,135,168,152,196,149,231,82,249,155,104,40,5,35,58,217,52,191,67,104,141,200,254,207,248,159,14,207,191,187) +IMAGE_DATA(210,127,166,22,200,143,37,31,238,155,152,139,130,18,139,212,216,255,203,156,116,124,74,242,39,144,80,162,205,246,201,38) +IMAGE_DATA(251,123,147,136,212,44,99,76,60,46,230,211,249,208,76,95,198,87,202,227,52,145,129,195,68,163,68,152,18,153,133,97) +IMAGE_DATA(159,99,236,28,87,219,159,102,183,239,10,39,23,232,191,162,238,216,60,204,72,55,87,177,242,249,113,39,47,188,68,137) +IMAGE_DATA(98,111,102,4,77,251,31,17,247,182,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) +IMAGE_END_DATA(2592, 13) diff --git a/uppsrc/CtrlLib/ScrollBar.cpp b/uppsrc/CtrlLib/ScrollBar.cpp index 35bd82e99..85ff9c439 100644 --- a/uppsrc/CtrlLib/ScrollBar.cpp +++ b/uppsrc/CtrlLib/ScrollBar.cpp @@ -375,6 +375,14 @@ void ScrollBar::CancelMode() { ButtonsCancelMode(); } +int ScrollBar::GetSliderPos(int pos) const +{ + if(totalsize <= 0) + return Null; + else + return pos * GetRange() / totalsize; +} + bool ScrollBar::Set(int apagepos) { int op = pagepos; pagepos = apagepos; diff --git a/uppsrc/CtrlLib/ScrollBar.h b/uppsrc/CtrlLib/ScrollBar.h index 400449bf8..4aa2b147d 100644 --- a/uppsrc/CtrlLib/ScrollBar.h +++ b/uppsrc/CtrlLib/ScrollBar.h @@ -115,6 +115,9 @@ public: int GetPage() const { return pagesize; } int GetTotal() const { return totalsize; } int GetLine() const { return linesize; } + + Rect GetSliderRect() const { return Slider(); } + int GetSliderPos(int pos) const; static const Style& StyleDefault(); @@ -255,7 +258,7 @@ public: void HideY() { ShowY(false); } void Show(bool show = true) { x.Show(show); y.Show(show); } void Hide() { Show(false); } - + ScrollBars& SetLine(int linex, int liney); ScrollBars& SetLine(Size line) { return SetLine(line.cx, line.cy); } ScrollBars& SetLine(int line) { return SetLine(line, line); }