From 56ed41fae18ad5970736704984be64730ebedd84 Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Wed, 22 Feb 2023 15:56:05 +0000 Subject: [PATCH] CEdit: reduced memory usage git-svn-id: svn://kolibrios.org@9902 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 32718 -> 33005 bytes programs/develop/cedit/CEDIT.INI | 2 +- programs/develop/cedit/SRC/CEdit.ob07 | 20 +-- programs/develop/cedit/SRC/ChangeLog.ob07 | 113 ++++++++++----- programs/develop/cedit/SRC/Encodings.ob07 | 14 +- programs/develop/cedit/SRC/Graph.ob07 | 9 +- programs/develop/cedit/SRC/Icons.ob07 | 166 +++++++++++----------- programs/develop/cedit/SRC/Languages.ob07 | 16 ++- programs/develop/cedit/SRC/Menu.ob07 | 14 +- programs/develop/cedit/SRC/RW.ob07 | 27 +--- programs/develop/cedit/SRC/Search.ob07 | 39 +++-- programs/develop/cedit/SRC/Text.ob07 | 9 +- programs/develop/cedit/SRC/Toolbar.ob07 | 10 +- 13 files changed, 253 insertions(+), 186 deletions(-) diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 4b51e97c9c01f21211ed658c61fd4ff576528e15..702a5192238f3fa423b80761b02c68d72992f3b0 100644 GIT binary patch literal 33005 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 gT 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 F00+`zFlGP% literal 32718 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 ZT5^h_L-N)^t@C{3MI6Tx0CNlg00*St+P?q* diff --git a/programs/develop/cedit/CEDIT.INI b/programs/develop/cedit/CEDIT.INI index 493885c57c..37277851c4 100644 --- a/programs/develop/cedit/CEDIT.INI +++ b/programs/develop/cedit/CEDIT.INI @@ -77,7 +77,7 @@ KW2 = ABS,ASR,ASSERT,BITS,BOOLEAN,BYTE,CHAR,CHR,COPY,DEC,DISPOSE,EXCL,FLOOR,FLT, KW3 = [lang_Pascal] -KW1 = AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DOWNTO,ELSE,END,FILE,FOR,FUNCTION,GOTO,IF,IMPLEMENTATION,IN,INTERFACE,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,SHL,SHR,STRING,THEN,TO,TYPE,UNIT,UNTIL,USES,VAR,WHILE,WITH,XOR +KW1 = and,array,begin,case,const,div,do,downto,else,end,file,for,function,goto,if,implementation,in,interface,label,mod,nil,not,of,or,packed,procedure,program,record,repeat,set,shl,shr,string,then,to,type,unit,until,uses,var,while,with,xor KW2 = KW3 = diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 8e47bb960f..05d5ef7b2c 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -24,11 +24,11 @@ IMPORT U := Utils, Lines, Menu, List, G := Graph, T := Text, E := Encodings, CB := Clipboard, Languages, - ChangeLog, Scroll, CheckBox, + ChangeLog, Scroll, CheckBox, Icons, RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar; CONST - HEADER = "CEdit (21-jan-2023)"; + HEADER = "CEdit (22-feb-2023)"; ShellFilter = ""; EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON"; @@ -2149,20 +2149,20 @@ BEGIN Shortcuts; Toolbar.create(toolbar, LEFT_PADDING + 5, toolbarTop); - Toolbar.add(toolbar, btnNew, 2, ""); - Toolbar.add(toolbar, btnOpen, 0, ""); - Toolbar.add(toolbar, btnSave, 5, ""); + Toolbar.add(toolbar, btnNew, Icons.icoNew, ""); + Toolbar.add(toolbar, btnOpen, Icons.icoOpen, ""); + Toolbar.add(toolbar, btnSave, Icons.icoSave, ""); Toolbar.delimiter(toolbar); - Toolbar.add(toolbar, btnSearch, 49, ""); + Toolbar.add(toolbar, btnSearch, Icons.icoSearch, ""); Toolbar.delimiter(toolbar); - Toolbar.add(toolbar, btnUndo, 37, ""); - Toolbar.add(toolbar, btnRedo, 36, ""); + Toolbar.add(toolbar, btnUndo, Icons.icoUndo, ""); + Toolbar.add(toolbar, btnRedo, Icons.icoRedo, ""); Toolbar.delimiter(toolbar); Toolbar.add(toolbar, btnUpper, -1, "AB"); Toolbar.add(toolbar, btnLower, -1, "ab"); Toolbar.delimiter(toolbar); - Toolbar.add(toolbar, btnBuild, 54, ""); - Toolbar.add(toolbar, btnRun, 53, ""); + Toolbar.add(toolbar, btnBuild, Icons.icoBuild, ""); + Toolbar.add(toolbar, btnRun, Icons.icoRun, ""); filePath := "/sys"; IF Args.argc = 1 THEN diff --git a/programs/develop/cedit/SRC/ChangeLog.ob07 b/programs/develop/cedit/SRC/ChangeLog.ob07 index c7d0ce9407..7aef4f8c28 100644 --- a/programs/develop/cedit/SRC/ChangeLog.ob07 +++ b/programs/develop/cedit/SRC/ChangeLog.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021, 2022 Anton Krotov + Copyright 2021-2023 Anton Krotov This file is part of CEdit. @@ -23,7 +23,8 @@ IMPORT List, Lines, API, SYSTEM; TYPE tIntItem = POINTER TO RECORD (List.tItem) - adr, val: INTEGER + cnt: INTEGER; + adr, val: ARRAY 8 OF INTEGER END; tBoolItem = POINTER TO RECORD (List.tItem) @@ -33,11 +34,13 @@ TYPE END; tUntypedPtr = POINTER TO RECORD (List.tItem) - p: INTEGER + cnt: INTEGER; + p: ARRAY 64 OF INTEGER END; tTypedPtr = POINTER TO RECORD (List.tItem) - p: List.tItem + cnt: INTEGER; + p: ARRAY 64 OF List.tItem END; tGuard* = POINTER TO RECORD (List.tItem) @@ -45,7 +48,7 @@ TYPE END; tLog* = POINTER TO RECORD - Log*, Pointers*: List.tList; + Log*, TPointers, UPointers: List.tList; guard, first: tGuard; isLast: BOOLEAN END; @@ -103,12 +106,16 @@ END setGuard; PROCEDURE redo* (item: List.tItem); +VAR + i: INTEGER; BEGIN - IF item IS tIntItem THEN - SYSTEM.PUT(item(tIntItem).adr, item(tIntItem).val) - ELSIF item IS tBoolItem THEN - SYSTEM.PUT(item(tBoolItem).adr, item(tBoolItem).val) - END + IF item IS tIntItem THEN + FOR i := 0 TO item(tIntItem).cnt - 1 DO + SYSTEM.PUT(item(tIntItem).adr[i], item(tIntItem).val[i]) + END + ELSIF item IS tBoolItem THEN + SYSTEM.PUT(item(tBoolItem).adr, item(tBoolItem).val) + END END redo; @@ -162,15 +169,26 @@ END save; PROCEDURE changeWord (adrV, adrX: INTEGER); VAR - item: tIntItem; + item: tIntItem; + cur: List.tItem; BEGIN - NEW(item); - item.adr := adrV; - SYSTEM.GET(adrX, item.val); - IF ~CL.isLast THEN - clear(CL.guard) - END; - List.append(CL.Log, item) + IF ~CL.isLast THEN + clear(CL.guard) + END; + cur := CL.Log.last; + WHILE (cur # NIL) & ~(cur IS tGuard) & ~(cur IS tIntItem) DO + cur := cur.prev + END; + IF (cur IS tIntItem) & (cur(tIntItem).cnt < LEN(cur(tIntItem).adr)) THEN + item := cur(tIntItem) + ELSE + NEW(item); + item.cnt := 0; + List.append(CL.Log, item) + END; + item.adr[item.cnt] := adrV; + SYSTEM.GET(adrX, item.val[item.cnt]); + INC(item.cnt) END changeWord; @@ -264,28 +282,38 @@ END changePtr; PROCEDURE typedPtr (p: List.tItem); VAR - item: tTypedPtr; + item: tTypedPtr; BEGIN - NEW(item); - item.p := p; - List.append(CL.Pointers, item) + item := CL.TPointers.last(tTypedPtr); + IF (item = NIL) OR (item.cnt = LEN(item.p)) THEN + NEW(item); + item.cnt := 0; + List.append(CL.TPointers, item) + END; + item.p[item.cnt] := p; + INC(item.cnt) END typedPtr; PROCEDURE untypedPtr (p: INTEGER); VAR - item: tUntypedPtr; + item: tUntypedPtr; BEGIN - NEW(item); - item.p := p; - List.append(CL.Pointers, item) + item := CL.UPointers.last(tUntypedPtr); + IF (item = NIL) OR (item.cnt = LEN(item.p)) THEN + NEW(item); + item.cnt := 0; + List.append(CL.UPointers, item) + END; + item.p[item.cnt] := p; + INC(item.cnt) END untypedPtr; -PROCEDURE set* (_CL: tLog); +PROCEDURE setLog* (_CL: tLog); BEGIN CL := _CL -END set; +END setLog; PROCEDURE create* (VAR maxLength: INTEGER): tLog; @@ -297,7 +325,8 @@ BEGIN newLog.first := NIL; newLog.isLast := TRUE; newLog.Log := List.create(NIL); - newLog.Pointers := List.create(NIL); + newLog.TPointers := List.create(NIL); + newLog.UPointers := List.create(NIL); CL := newLog; Lines.setMaxLength(maxLength) RETURN newLog @@ -307,7 +336,7 @@ END create; PROCEDURE destroy* (VAR log: tLog); VAR item: List.tItem; - res: INTEGER; + res, i: INTEGER; BEGIN IF log # NIL THEN item := List.pop(log.Log); @@ -317,17 +346,25 @@ BEGIN END; DISPOSE(log.Log); - item := List.pop(log.Pointers); + item := List.pop(log.TPointers); WHILE item # NIL DO - IF item IS tUntypedPtr THEN - res := API._DISPOSE(item(tUntypedPtr).p) - ELSIF item IS tTypedPtr THEN - DISPOSE(item(tTypedPtr).p) - END; + FOR i := 0 TO item(tTypedPtr).cnt - 1 DO + DISPOSE(item(tTypedPtr).p[i]) + END; DISPOSE(item); - item := List.pop(log.Pointers) + item := List.pop(log.TPointers) END; - DISPOSE(log.Pointers); + DISPOSE(log.TPointers); + + item := List.pop(log.UPointers); + WHILE item # NIL DO + FOR i := 0 TO item(tUntypedPtr).cnt - 1 DO + res := API._DISPOSE(item(tUntypedPtr).p[i]) + END; + DISPOSE(item); + item := List.pop(log.UPointers) + END; + DISPOSE(log.UPointers); DISPOSE(log) END diff --git a/programs/develop/cedit/SRC/Encodings.ob07 b/programs/develop/cedit/SRC/Encodings.ob07 index fe2a472ce7..723f9c210f 100644 --- a/programs/develop/cedit/SRC/Encodings.ob07 +++ b/programs/develop/cedit/SRC/Encodings.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021, 2022 Anton Krotov + Copyright 2021-2023 Anton Krotov This file is part of CEdit. @@ -22,7 +22,7 @@ MODULE Encodings; CONST CP866* = 0; CP1251* = 1; UTF8* = 2; UTF8BOM* = 3; (*UTF16LE* = 4;*) - UNDEF* = -1; + UNDEF* = ORD("?"); EOL_CRLF* = 0; EOL_LF* = 1; EOL_CR* = 2; CR = 0DX; LF = 0AX; @@ -35,7 +35,7 @@ TYPE VAR cp1251*, cp866*: CP; names*: ARRAY 4, 16 OF WCHAR; - UNI*: ARRAY 65536, 2 OF INTEGER; + UNI*: ARRAY 65536, 2 OF BYTE; eol*: ARRAY 3 OF tEOL; eolNames*: ARRAY 3, 16 OF WCHAR; @@ -117,12 +117,8 @@ BEGIN UNI[i, CP1251] := UNDEF END; FOR i := 0 TO 255 DO - IF cp1251[i] # UNDEF THEN - UNI[cp1251[i], CP1251] := i - END; - IF cp866[i] # UNDEF THEN - UNI[cp866[i], CP866] := i - END + UNI[cp1251[i], CP1251] := i; + UNI[cp866[i], CP866] := i END END setUNI; diff --git a/programs/develop/cedit/SRC/Graph.ob07 b/programs/develop/cedit/SRC/Graph.ob07 index b8f64daef8..386fac33f3 100644 --- a/programs/develop/cedit/SRC/Graph.ob07 +++ b/programs/develop/cedit/SRC/Graph.ob07 @@ -268,7 +268,7 @@ PROCEDURE TextOut* (canvas: tCanvas; x, y: INTEGER; text: INTEGER; n: INTEGER; d CONST WCHAR_SIZE = 2; VAR - color, i, ch: INTEGER; + color, i: INTEGER; font: tFont; c: WCHAR; BEGIN @@ -299,12 +299,7 @@ BEGIN c := 0X END; IF font = fonts[0] THEN - ch := E.UNI[ORD(c), E.CP866]; - IF ch = E.UNDEF THEN - c := "?" - ELSE - c := WCHR(ch) - END + c := WCHR(E.UNI[ORD(c), E.CP866]) END; KOSAPI.sysfunc6(4, x*65536 + y, font.flags + color, SYSTEM.ADR(c), 1, canvas.bitmap - 8) END; diff --git a/programs/develop/cedit/SRC/Icons.ob07 b/programs/develop/cedit/SRC/Icons.ob07 index ef4bce32c2..9ff832f2bb 100644 --- a/programs/develop/cedit/SRC/Icons.ob07 +++ b/programs/develop/cedit/SRC/Icons.ob07 @@ -20,123 +20,125 @@ MODULE Icons; IMPORT - Graph, File, SYSTEM, KOSAPI; + Graph, File, SYSTEM, KOSAPI; CONST - fileName = "/sys/Icons16.png"; - SIZE* = 18; + fileName = "/sys/Icons16.png"; + SIZE* = 18; -VAR - source: INTEGER; + icoNew *= 0; + icoOpen *= 1; + icoSave *= 2; + icoSearch *= 3; + icoUndo *= 4; + icoRedo *= 5; + icoBuild *= 6; + icoRun *= 7; + + NumberOfIcons = 8; -(* -PROCEDURE copy (src, dst: INTEGER); -VAR - src_width, src_height, - dst_width, dst_height, - src_data, dst_data: INTEGER; -BEGIN - LibImg.GetInf(src, src_width, src_height, src_data); - LibImg.GetInf(dst, dst_width, dst_height, dst_data); - ASSERT(src_width = dst_width); - ASSERT(src_height = dst_height); - SYSTEM.MOVE(src_data, dst_data, src_width*src_height*4) -END copy; -*) PROCEDURE [stdcall, "libimg.obj", ""] img_decode (data, size, options: INTEGER): INTEGER; END; PROCEDURE [stdcall, "Libimg.obj", ""] img_convert (src, dst, dst_type, flags, param: INTEGER): INTEGER; END; PROCEDURE [stdcall, "Libimg.obj", ""] img_destroy (img: INTEGER); END; -PROCEDURE GetInf (img: INTEGER; VAR width, height, data: INTEGER); -BEGIN - SYSTEM.GET(img + 4, width); - SYSTEM.GET(img + 8, height); - SYSTEM.GET(img + 24, data); -END GetInf; - PROCEDURE GetImg (ptr, size: INTEGER): INTEGER; VAR - image_data, dst, x, Type: INTEGER; + image_data, dst, x, Type: INTEGER; BEGIN - image_data := img_decode(ptr, size, 0); - IF image_data # 0 THEN - SYSTEM.GET(image_data + 4, x); - ASSERT(x = SIZE); - SYSTEM.GET(image_data + 20, Type); - IF Type # 3 THEN - dst := img_convert(image_data, 0, 3, 0, 0); - img_destroy(image_data); - image_data := dst - END - END - RETURN image_data + image_data := img_decode(ptr, size, 0); + IF image_data # 0 THEN + SYSTEM.GET(image_data + 4, x); + ASSERT(x = SIZE); + SYSTEM.GET(image_data + 20, Type); + IF Type # 3 THEN + dst := img_convert(image_data, 0, 3, 0, 0); + img_destroy(image_data); + image_data := dst + END + END + RETURN image_data END GetImg; PROCEDURE load (): INTEGER; VAR - size, res, ptr: INTEGER; + size, res, ptr: INTEGER; BEGIN - res := 0; - ptr := File.Load(fileName, size); - IF ptr # 0 THEN - res := GetImg(ptr, size); - ptr := KOSAPI.free(ptr) - END - RETURN res + res := 0; + ptr := File.Load(fileName, size); + IF ptr # 0 THEN + res := GetImg(ptr, size); + ptr := KOSAPI.free(ptr) + END + RETURN res END load; PROCEDURE draw* (icons, n, x, y: INTEGER); -VAR - width, height, data: INTEGER; BEGIN - GetInf(icons, width, height, data); - KOSAPI.sysfunc7(65, data + SIZE*SIZE*4*n, SIZE*65536 + SIZE, x*65536 + y, 32, 0, 0) + KOSAPI.sysfunc7(65, icons + SIZE*SIZE*4*n, SIZE*65536 + SIZE, x*65536 + y, 32, 0, 0) END draw; +PROCEDURE copy (img: INTEGER; n: INTEGER; dst: INTEGER; m: INTEGER); +VAR + data: INTEGER; +BEGIN + SYSTEM.GET(img + 24, data); + SYSTEM.MOVE(data + SIZE*SIZE*4*n, dst + SIZE*SIZE*4*m, SIZE*SIZE*4) +END copy; + + PROCEDURE iconsBackColor (icons: INTEGER; BackColor: INTEGER); VAR - width, height, data, x, y, pix: INTEGER; - b, g, r, gr: BYTE; + data, x, y, pix: INTEGER; + b, g, r, gr: BYTE; BEGIN - GetInf(icons, width, height, data); - FOR y := 0 TO height - 1 DO - FOR x := 0 TO width - 1 DO - SYSTEM.GET32(data, pix); - Graph.getRGB(pix, r, g, b); - gr := (r + g + b) DIV 3; - IF BackColor = -1 THEN - pix := gr + 256*gr + 65536*gr - ELSIF gr = 255 THEN - pix := BackColor - END; - SYSTEM.PUT32(data, pix); - INC(data, 4) - END - END + data := icons; + FOR y := 0 TO SIZE*NumberOfIcons - 1 DO + FOR x := 0 TO SIZE - 1 DO + SYSTEM.GET32(data, pix); + Graph.getRGB(pix, r, g, b); + gr := (r + g + b) DIV 3; + IF BackColor = -1 THEN + pix := gr + 256*gr + 65536*gr + ELSIF gr = 255 THEN + pix := BackColor + END; + SYSTEM.PUT32(data, pix); + INC(data, 4) + END + END END iconsBackColor; PROCEDURE get* (VAR icons, grayIcons: INTEGER; BackColor: INTEGER); +VAR + source: INTEGER; BEGIN - IF source = 0 THEN - source := load(); - icons := load(); - grayIcons := load(); - iconsBackColor(grayIcons, -1); - iconsBackColor(grayIcons, BackColor); - iconsBackColor(icons, BackColor) - (*ELSE - copy(source, icons); - copy(source, grayIcons)*) - END + source := load(); + IF source # 0 THEN + icons := KOSAPI.malloc(SIZE*SIZE*4*NumberOfIcons*2); + grayIcons := icons + SIZE*SIZE*4*NumberOfIcons; + + copy(source, 2, icons, icoNew); + copy(source, 0, icons, icoOpen); + copy(source, 5, icons, icoSave); + copy(source, 49, icons, icoSearch); + copy(source, 37, icons, icoUndo); + copy(source, 36, icons, icoRedo); + copy(source, 54, icons, icoBuild); + copy(source, 53, icons, icoRun); + img_destroy(source); + source := 0; + SYSTEM.MOVE(icons, grayIcons, SIZE*SIZE*4*NumberOfIcons); + + iconsBackColor(grayIcons, -1); + iconsBackColor(grayIcons, BackColor); + iconsBackColor(icons, BackColor) + END END get; - -BEGIN - source := 0 END Icons. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/Languages.ob07 b/programs/develop/cedit/SRC/Languages.ob07 index 57340828d5..ecde03a3ec 100644 --- a/programs/develop/cedit/SRC/Languages.ob07 +++ b/programs/develop/cedit/SRC/Languages.ob07 @@ -439,7 +439,8 @@ PROCEDURE loadKW (lang: INTEGER; VAR KW: ARRAY OF tKeyWords; VAR delim: tDelimit VAR s: ARRAY 16*1024 OF CHAR; key: ARRAY 4 OF CHAR; - i: INTEGER; + i, j, k: INTEGER; + w: WCHAR; BEGIN FOR i := 0 TO LEN(delim) - 1 DO delim[i] := FALSE @@ -458,6 +459,19 @@ BEGIN IF ~(lang IN csLang) THEN Utils.upcase(s) END; + IF lang = langOberon THEN + k := LENGTH(s); + s[k] := ","; + FOR j := 0 TO k - 1 DO + s[j + k + 1] := s[j]; + w := WCHR(ORD(s[j])); + IF Utils.low(w) THEN + s[j + k + 1] := CHR(ORD(w) MOD 256) + END + END; + k := 2*k + 1; + s[k] := 0X + END; EnterKW(s, KW[i]) END END loadKW; diff --git a/programs/develop/cedit/SRC/Menu.ob07 b/programs/develop/cedit/SRC/Menu.ob07 index 21bf887994..510193388c 100644 --- a/programs/develop/cedit/SRC/Menu.ob07 +++ b/programs/develop/cedit/SRC/Menu.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021, 2022 Anton Krotov + Copyright 2021-2023 Anton Krotov This file is part of CEdit. @@ -238,6 +238,7 @@ BEGIN m.active := FALSE; resetTimer; m.tid := 0; + G.destroy(m.canvas); K.Exit END exit; @@ -249,6 +250,7 @@ BEGIN resetTimer END; m.tid := 0; + G.destroy(m.canvas); K.Exit END escape; @@ -354,6 +356,7 @@ BEGIN END; temp := m.tid; m.tid := 0; + G.destroy(m.canvas); K.ExitID(temp); m.active := FALSE END @@ -509,6 +512,7 @@ BEGIN IF m.parent # NIL THEN temp := m.parent.tid; m.parent.tid := 0; + G.destroy(m.parent.canvas); K.ExitID(temp) END; exit(m) @@ -567,6 +571,10 @@ BEGIN IF K.GetThreadSlot(TIDs[L]) = 0 THEN m.winX := x; m.winY := y; + IF m.canvas = NIL THEN + m.canvas := G.CreateCanvas(m.width + 1, m.height + 1); + G.SetFont(m.canvas, m.font) + END; SYSTEM.PUT(SYSTEM.ADR(stack[L][LEN(stack[0]) - 1]), m); m.tid := K.CreateThread(SYSTEM.ADR(window), stack[L]); TIDs[L] := m.tid @@ -678,8 +686,8 @@ BEGIN m.width := maxLength*fontWidth + LEFT + RIGHT; m.height := items.count*itemHeight - 2; m.font := G.fonts[1]; - m.canvas := G.CreateCanvas(m.width + 1, m.height + 1); - G.SetFont(m.canvas, m.font) +(* m.canvas := G.CreateCanvas(m.width + 1, m.height + 1); + G.SetFont(m.canvas, m.font)*) RETURN m END create; diff --git a/programs/develop/cedit/SRC/RW.ob07 b/programs/develop/cedit/SRC/RW.ob07 index 8c6c1ff071..328152fedc 100644 --- a/programs/develop/cedit/SRC/RW.ob07 +++ b/programs/develop/cedit/SRC/RW.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021, 2022 Anton Krotov + Copyright 2021-2023 Anton Krotov This file is part of CEdit. @@ -136,7 +136,7 @@ BEGIN END; IF n = -1 THEN - code := E.UNDEF + code := -1 END RETURN code @@ -244,7 +244,7 @@ BEGIN text.cnt := cnt; text.pos := pos; WHILE (text.cnt > 0) & continue DO - IF getCharUTF8(text) = E.UNDEF THEN + IF getCharUTF8(text) = -1 THEN continue := FALSE END END; @@ -470,40 +470,27 @@ BEGIN putByte(file, (code DIV 64) MOD 64 + 080H); putByte(file, code MOD 64 + 080H) ELSE - putByte(file, ORD("?")) + putByte(file, E.UNDEF) END END putCharUTF8; -PROCEDURE putCharCP (file: tOutput; code, cp: INTEGER); -VAR - n: INTEGER; -BEGIN - n := E.UNI[code, cp]; - IF n # E.UNDEF THEN - putByte(file, n) - ELSE - putByte(file, ORD("?")) - END -END putCharCP; - - PROCEDURE putCharCP1251 (file: tOutput; code: INTEGER); BEGIN - putCharCP(file, code, E.CP1251) + putByte(file, E.UNI[code, E.CP1251]) END putCharCP1251; PROCEDURE putCharCP866 (file: tOutput; code: INTEGER); BEGIN - putCharCP(file, code, E.CP866) + putByte(file, E.UNI[code, E.CP866]) END putCharCP866; (* PROCEDURE putCharUTF16LE (file: tOutput; code: INTEGER); BEGIN IF ~((0 <= code) & (code <= 65535)) THEN - code := ORD("?") + code := E.UNDEF END; putByte(file, code MOD 256); putByte(file, code DIV 256) diff --git a/programs/develop/cedit/SRC/Search.ob07 b/programs/develop/cedit/SRC/Search.ob07 index debe0353aa..ed224ff672 100644 --- a/programs/develop/cedit/SRC/Search.ob07 +++ b/programs/develop/cedit/SRC/Search.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021, 2022 Anton Krotov + Copyright 2021-2023 Anton Krotov This file is part of CEdit. @@ -24,17 +24,19 @@ IMPORT TYPE - tBuffer* = CB.tBuffer; - IdxTable* = ARRAY 65536, 2 OF INTEGER; + tIdxTable = ARRAY 65536, 2 OF INTEGER; tPos* = POINTER TO RECORD (List.tItem) pos*: INTEGER END; +VAR + table: POINTER TO RECORD data: tIdxTable END; -PROCEDURE index* (text: tBuffer; VAR table: IdxTable; cs: BOOLEAN): tBuffer; + +PROCEDURE _index (text: tBuffer; cs: BOOLEAN; VAR table: tIdxTable): tBuffer; VAR pChar, cnt, i: INTEGER; c: WCHAR; @@ -80,19 +82,29 @@ BEGIN END RETURN res +END _index; + + +PROCEDURE index* (text: tBuffer; cs: BOOLEAN): tBuffer; +BEGIN + IF table = NIL THEN + NEW(table) + END + RETURN _index(text, cs, table.data) END index; -PROCEDURE find* (text: tBuffer; table: IdxTable; s: ARRAY OF WCHAR; whole: BOOLEAN; list: List.tList); +PROCEDURE find* (text: tBuffer; s: ARRAY OF WCHAR; whole: BOOLEAN; list: List.tList); VAR k, pos, n, x, prev_item_pos: INTEGER; item: tPos; c1, c2: WCHAR; flag: BOOLEAN; BEGIN + ASSERT(table # NIL); n := LENGTH(s); - k := table[ORD(s[0]), 1]; - pos := table[ORD(s[0]), 0]; + k := table.data[ORD(s[0]), 1]; + pos := table.data[ORD(s[0]), 0]; prev_item_pos := 0; WHILE k > 0 DO SYSTEM.GET(pos, x); @@ -105,7 +117,8 @@ BEGIN c1 := 0X END; SYSTEM.GET(text.dataPtr + (x + n)*SYSTEM.SIZE(WCHAR), c2); - flag := Utils.isLetter(c1) OR Utils.isLetter(c2) OR Utils.isDigit(c1) OR Utils.isDigit(c2) OR (c1 = "_") OR (c2 = "_") + flag := Utils.isLetter(c1) OR Utils.isLetter(c2) OR Utils.isDigit(c1) OR Utils.isDigit(c2) OR + (c1 = "_") OR (c2 = "_") END; IF ~flag & (x >= prev_item_pos) THEN prev_item_pos := x + n; @@ -120,4 +133,14 @@ BEGIN END find; +PROCEDURE close*; +BEGIN + IF table # NIL THEN + DISPOSE(table) + END +END close; + + +BEGIN + table := NIL END Search. \ No newline at end of file diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 969a532b42..26532b8aaa 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -100,7 +100,6 @@ VAR size, textsize: tPoint; charWidth, charHeight: INTEGER; autoIndents*, lineNumbers*, autoBrackets*, trimSpace*: BOOLEAN; - idxTable: Search.IdxTable; PROCEDURE setLang* (text: tText; lang: INTEGER); @@ -911,9 +910,11 @@ BEGIN END; IF text.searchText # "" THEN plainText := plain(text); - idxData := Search.index(plainText, idxTable, cs); - Search.find(plainText, idxTable, text.searchText, whole, text.foundList); + idxData := Search.index(plainText, cs); + Search.find(plainText, text.searchText, whole, text.foundList); res := text.foundList.count > 0 + ELSE + Search.close END; CB.destroy(plainText); CB.destroy(idxData); @@ -2462,7 +2463,7 @@ END draw; PROCEDURE switch* (text: tText); BEGIN - ChangeLog.set(text.chLog); + ChangeLog.setLog(text.chLog); Lines.setMaxLength(text.maxLength); Lang.setCurLang(text.lang) END switch; diff --git a/programs/develop/cedit/SRC/Toolbar.ob07 b/programs/develop/cedit/SRC/Toolbar.ob07 index 44a5129c6e..127cf124e0 100644 --- a/programs/develop/cedit/SRC/Toolbar.ob07 +++ b/programs/develop/cedit/SRC/Toolbar.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021, 2022 Anton Krotov + Copyright 2021-2023 Anton Krotov This file is part of CEdit. @@ -92,7 +92,9 @@ VAR button: tButton; BEGIN setColors(toolbar); - Icons.get(toolbar.icons, toolbar.grayIcons, toolbar.colors.back); + IF (toolbar.icons = 0) OR (toolbar.grayIcons = 0) THEN + Icons.get(toolbar.icons, toolbar.grayIcons, toolbar.colors.back) + END; i := 0; WHILE i < toolbar.cnt DO button := toolbar.buttons[i]; @@ -160,7 +162,9 @@ BEGIN toolbar.x := x; toolbar.y := y; toolbar.cnt := 0; - toolbar.width := 0 + toolbar.width := 0; + toolbar.icons := 0; + toolbar.grayIcons := 0; END create;