diff options
author | nyamatongwe <devnull@localhost> | 2007-06-24 12:02:23 +0000 |
---|---|---|
committer | nyamatongwe <devnull@localhost> | 2007-06-24 12:02:23 +0000 |
commit | 48974cb7802717896ed7560bf0520cf942b8c245 (patch) | |
tree | fd041ad1e922734432d617c50c2c80575a71ec84 /src/Editor.cxx | |
parent | bd5472e347f8cfc139197a64c59d8a79d654ec0c (diff) | |
download | scintilla-mirror-48974cb7802717896ed7560bf0520cf942b8c245.tar.gz |
Make the styles array variable length so it can be increased to 256 entries
without always taking 24K.
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 210 |
1 files changed, 89 insertions, 121 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index 9c4c77d3c..c4e86fb09 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -5662,6 +5662,89 @@ static char *CharPtrFromSPtr(sptr_t lParam) { return reinterpret_cast<char *>(lParam); } +void Editor::StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { + vs.EnsureStyle(wParam); + switch (iMessage) { + case SCI_STYLESETFORE: + vs.styles[wParam].fore.desired = ColourDesired(lParam); + break; + case SCI_STYLESETBACK: + vs.styles[wParam].back.desired = ColourDesired(lParam); + break; + case SCI_STYLESETBOLD: + vs.styles[wParam].bold = lParam != 0; + break; + case SCI_STYLESETITALIC: + vs.styles[wParam].italic = lParam != 0; + break; + case SCI_STYLESETEOLFILLED: + vs.styles[wParam].eolFilled = lParam != 0; + break; + case SCI_STYLESETSIZE: + vs.styles[wParam].size = lParam; + break; + case SCI_STYLESETFONT: + if (lParam != 0) { + vs.SetStyleFontName(wParam, CharPtrFromSPtr(lParam)); + } + break; + case SCI_STYLESETUNDERLINE: + vs.styles[wParam].underline = lParam != 0; + break; + case SCI_STYLESETCASE: + vs.styles[wParam].caseForce = static_cast<Style::ecaseForced>(lParam); + break; + case SCI_STYLESETCHARACTERSET: + vs.styles[wParam].characterSet = lParam; + break; + case SCI_STYLESETVISIBLE: + vs.styles[wParam].visible = lParam != 0; + break; + case SCI_STYLESETCHANGEABLE: + vs.styles[wParam].changeable = lParam != 0; + break; + case SCI_STYLESETHOTSPOT: + vs.styles[wParam].hotspot = lParam != 0; + break; + } + InvalidateStyleRedraw(); +} + +sptr_t Editor::StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { + vs.EnsureStyle(wParam); + switch (iMessage) { + case SCI_STYLEGETFORE: + return vs.styles[wParam].fore.desired.AsLong(); + case SCI_STYLEGETBACK: + return vs.styles[wParam].back.desired.AsLong(); + case SCI_STYLEGETBOLD: + return vs.styles[wParam].bold ? 1 : 0; + case SCI_STYLEGETITALIC: + return vs.styles[wParam].italic ? 1 : 0; + case SCI_STYLEGETEOLFILLED: + return vs.styles[wParam].eolFilled ? 1 : 0; + case SCI_STYLEGETSIZE: + return vs.styles[wParam].size; + case SCI_STYLEGETFONT: + if (lParam != 0) + strcpy(CharPtrFromSPtr(lParam), vs.styles[wParam].fontName); + return strlen(vs.styles[wParam].fontName); + case SCI_STYLEGETUNDERLINE: + return vs.styles[wParam].underline ? 1 : 0; + case SCI_STYLEGETCASE: + return static_cast<int>(vs.styles[wParam].caseForce); + case SCI_STYLEGETCHARACTERSET: + return vs.styles[wParam].characterSet; + case SCI_STYLEGETVISIBLE: + return vs.styles[wParam].visible ? 1 : 0; + case SCI_STYLEGETCHANGEABLE: + return vs.styles[wParam].changeable ? 1 : 0; + case SCI_STYLEGETHOTSPOT: + return vs.styles[wParam].hotspot ? 1 : 0; + } + return 0; +} + sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { //Platform::DebugPrintf("S start wnd proc %d %d %d\n",iMessage, wParam, lParam); @@ -6406,7 +6489,7 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_TEXTWIDTH: - PLATFORM_ASSERT(wParam <= STYLE_MAX); + PLATFORM_ASSERT(wParam <= vs.stylesSize); PLATFORM_ASSERT(lParam); return TextWidth(wParam, CharPtrFromSPtr(lParam)); @@ -6635,157 +6718,42 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { break; case SCI_STYLESETFORE: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].fore.desired = ColourDesired(lParam); - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETBACK: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].back.desired = ColourDesired(lParam); - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETBOLD: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].bold = lParam != 0; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETITALIC: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].italic = lParam != 0; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETEOLFILLED: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].eolFilled = lParam != 0; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETSIZE: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].size = lParam; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETFONT: - if (lParam == 0) - return 0; - if (wParam <= STYLE_MAX) { - vs.SetStyleFontName(wParam, CharPtrFromSPtr(lParam)); - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETUNDERLINE: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].underline = lParam != 0; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETCASE: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].caseForce = static_cast<Style::ecaseForced>(lParam); - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETCHARACTERSET: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].characterSet = lParam; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETVISIBLE: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].visible = lParam != 0; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETCHANGEABLE: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].changeable = lParam != 0; - InvalidateStyleRedraw(); - } - break; case SCI_STYLESETHOTSPOT: - if (wParam <= STYLE_MAX) { - vs.styles[wParam].hotspot = lParam != 0; - InvalidateStyleRedraw(); - } + StyleSetMessage(iMessage, wParam, lParam); break; + case SCI_STYLEGETFORE: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].fore.desired.AsLong(); - else - return 0; case SCI_STYLEGETBACK: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].back.desired.AsLong(); - else - return 0; case SCI_STYLEGETBOLD: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].bold ? 1 : 0; - else - return 0; case SCI_STYLEGETITALIC: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].italic ? 1 : 0; - else - return 0; case SCI_STYLEGETEOLFILLED: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].eolFilled ? 1 : 0; - else - return 0; case SCI_STYLEGETSIZE: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].size; - else - return 0; case SCI_STYLEGETFONT: - if (lParam == 0) - return strlen(vs.styles[wParam].fontName); - - if (wParam <= STYLE_MAX) - strcpy(CharPtrFromSPtr(lParam), vs.styles[wParam].fontName); - break; case SCI_STYLEGETUNDERLINE: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].underline ? 1 : 0; - else - return 0; case SCI_STYLEGETCASE: - if (wParam <= STYLE_MAX) - return static_cast<int>(vs.styles[wParam].caseForce); - else - return 0; case SCI_STYLEGETCHARACTERSET: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].characterSet; - else - return 0; case SCI_STYLEGETVISIBLE: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].visible ? 1 : 0; - else - return 0; case SCI_STYLEGETCHANGEABLE: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].changeable ? 1 : 0; - else - return 0; case SCI_STYLEGETHOTSPOT: - if (wParam <= STYLE_MAX) - return vs.styles[wParam].hotspot ? 1 : 0; - else - return 0; + return StyleGetMessage(iMessage, wParam, lParam); + case SCI_STYLERESETDEFAULT: vs.ResetDefaultStyle(); InvalidateStyleRedraw(); break; case SCI_SETSTYLEBITS: + vs.EnsureStyle((1 << wParam) - 1); pdoc->SetStylingBits(wParam); break; |