mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
+chg: Highlight current line: change meaning of forground color: if set, forground layer is activated using defined color
This commit is contained in:
parent
c459ce8884
commit
9ac94d52b9
@ -27,7 +27,7 @@ Control Characters (Font)=size:-1
|
||||
Indentation Guide (Color)=fore:#606060
|
||||
Selected Text (Colors)=fore:#F2460D; back:#4F51E0; eolfilled; alpha:80
|
||||
Whitespace (Colors, Size 0-12)=fore:#F2460D
|
||||
Current Line Background (Color)=size:2; fore:#606060; back:#F2F20D; alpha:50; alpha2:50
|
||||
Current Line Background (Color)=size:2; back:#F2F20D; alpha:50; alpha2:50
|
||||
Long Line Marker (Colors)=fore:#F2B50D
|
||||
Extra Line Spacing (Size)=size:2
|
||||
Bookmarks and Folding (Colors, Size)=size:+2; fore:#0CE50B; alpha:100
|
||||
@ -49,7 +49,7 @@ Inline-IME Color=fore:#4EF64D
|
||||
2nd Indentation Guide (Color)=fore:#606060
|
||||
2nd Selected Text (Colors)=fore:#F2460D; eolfilled
|
||||
2nd Whitespace (Colors, Size 0-12)=fore:#F2460D
|
||||
2nd Current Line Background (Color)=size:2; fore:#A1B7F2; back:#F2F20D; alpha:50; alpha2:50
|
||||
2nd Current Line Background (Color)=size:2; back:#F2F20D; alpha:50; alpha2:50
|
||||
2nd Long Line Marker (Colors)=fore:#F2B50D
|
||||
2nd Bookmarks and Folding (Colors, Size)=size:+2; charset:2; fore:#0CE50B; case:U; alpha:100
|
||||
2nd Mark Occurrences (Indicator)=fore:#7B83E9; alpha:60; alpha2:60; indic_box
|
||||
|
||||
@ -16,7 +16,7 @@ EDITLEXER lexStandard =
|
||||
/* 5 */ { {STYLE_INDENTGUIDE}, IDS_LEX_STD_INDENT, L"Indentation Guide (Color)", L"fore:#A0A0A0", L"" },
|
||||
/* 6 */ { {_STYLE_GETSTYLEID(STY_SEL_TXT)}, IDS_LEX_STD_SEL, L"Selected Text (Colors)", L"fore:#FF4000; back:#4040FF; eolfilled; alpha:80", L"" },
|
||||
/* 7 */ { {_STYLE_GETSTYLEID(STY_WHITESPACE)}, IDS_LEX_STD_WSPC, L"Whitespace (Colors, Size 0-12)", L"size:2; fore:#FF4000; alpha:255", L"" },
|
||||
/* 8 */ { {_STYLE_GETSTYLEID(STY_CUR_LN)}, IDS_LEX_STD_LN_BACKGR, L"Current Line Background (Color)", L"size:2; fore:#A0A0A0; back:#FFFF00; alpha:50; alpha2:50", L"" },
|
||||
/* 8 */ { {_STYLE_GETSTYLEID(STY_CUR_LN)}, IDS_LEX_STD_LN_BACKGR, L"Current Line Background (Color)", L"size:2; back:#FFFF00; alpha:50; alpha2:50", L"" },
|
||||
/* 9 */ { {_STYLE_GETSTYLEID(STY_CARET)}, IDS_LEX_STD_CARET, L"Caret (Color, Size 1-3)", L"", L"" },
|
||||
/* 10 */ { {_STYLE_GETSTYLEID(STY_LONG_LN_MRK)}, IDS_LEX_STD_LONG_LN, L"Long Line Marker (Colors)", L"fore:#FFC000", L"" },
|
||||
/* 11 */ { {_STYLE_GETSTYLEID(STY_X_LN_SPACE)}, IDS_LEX_STD_X_SPC, L"Extra Line Spacing (Size)", L"size:2", L"" },
|
||||
@ -46,7 +46,7 @@ EDITLEXER lexStandard2nd =
|
||||
/* 5 */ { {STYLE_INDENTGUIDE}, IDS_LEX_2ND_INDENT, L"2nd Indentation Guide (Color)", L"fore:#A0A0A0", L"" },
|
||||
/* 6 */ { {_STYLE_GETSTYLEID(STY_SEL_TXT)}, IDS_LEX_2ND_SEL, L"2nd Selected Text (Colors)", L"fore:#FF4000; eolfilled", L"" },
|
||||
/* 7 */ { {_STYLE_GETSTYLEID(STY_WHITESPACE)}, IDS_LEX_2ND_WSPC, L"2nd Whitespace (Colors, Size 0-12)", L"size:2; fore:#FF4000; alpha:255", L"" },
|
||||
/* 8 */ { {_STYLE_GETSTYLEID(STY_CUR_LN)}, IDS_LEX_2ND_LN_BACKGR, L"2nd Current Line Background (Color)", L"size:2; fore:#0000B0; back:#FFFF00; alpha:50; alpha2:50", L"" },
|
||||
/* 8 */ { {_STYLE_GETSTYLEID(STY_CUR_LN)}, IDS_LEX_2ND_LN_BACKGR, L"2nd Current Line Background (Color)", L"size:2; back:#FFFF00; alpha:50; alpha2:50", L"" },
|
||||
/* 9 */ { {_STYLE_GETSTYLEID(STY_CARET)}, IDS_LEX_2ND_CARET, L"2nd Caret (Color, Size 1-3)", L"", L"" },
|
||||
/* 10 */ { {_STYLE_GETSTYLEID(STY_LONG_LN_MRK)}, IDS_LEX_2ND_LONG_LN, L"2nd Long Line Marker (Colors)", L"fore:#FFC000", L"" },
|
||||
/* 11 */ { {_STYLE_GETSTYLEID(STY_X_LN_SPACE)}, IDS_LEX_2ND_X_SPC, L"2nd Extra Line Spacing (Size)", L"size:2", L"" },
|
||||
|
||||
110
src/Styles.c
110
src/Styles.c
@ -327,6 +327,15 @@ static inline bool HasIndicStyleStrokeWidth(const int indicStyle) {
|
||||
return false;
|
||||
}
|
||||
|
||||
static const int FoldMarkerID[] = {
|
||||
SC_MARKNUM_FOLDEROPEN,
|
||||
SC_MARKNUM_FOLDER,
|
||||
SC_MARKNUM_FOLDERSUB,
|
||||
SC_MARKNUM_FOLDERTAIL,
|
||||
SC_MARKNUM_FOLDEREND,
|
||||
SC_MARKNUM_FOLDEROPENMID,
|
||||
SC_MARKNUM_FOLDERMIDTAIL
|
||||
};
|
||||
|
||||
//=============================================================================
|
||||
|
||||
@ -2033,36 +2042,57 @@ void Style_SetMultiEdgeLine(const int colVec[], const size_t count)
|
||||
//
|
||||
void Style_HighlightCurrentLine(HWND hwnd, int iHiLitCurLn)
|
||||
{
|
||||
SciCall_SetCaretLineFrame(0);
|
||||
SciCall_SetCaretLineVisibleAlways(false);
|
||||
//SciCall_SetCaretLineHighlightSubline(false);
|
||||
bool const bHiLitAsBckgr = (iHiLitCurLn == 1);
|
||||
bool const bHiLitAsFrame = (iHiLitCurLn == 2);
|
||||
|
||||
if (!(bHiLitAsBckgr || bHiLitAsFrame)) {
|
||||
// clear all
|
||||
SciCall_SetCaretLineFrame(0);
|
||||
SciCall_SetCaretLineLayer(SC_LAYER_UNDER_TEXT);
|
||||
SciCall_SetElementColour(SC_ELEMENT_CARET_LINE_BACK, AxRGB(SC_ALPHA_TRANSPARENT, RGB(0x00, 0x00, 0x00)));
|
||||
//~SciCall_SetCaretLineHighlightSubline(false);
|
||||
return;
|
||||
}
|
||||
|
||||
bool const backgrColor = (iHiLitCurLn == 1);
|
||||
LPCWSTR szValue = GetCurrentStdLexer()->Styles[STY_CUR_LN].szValue;
|
||||
|
||||
COLORREF rgb;
|
||||
if (!Style_StrGetColor(szValue, (backgrColor ? BACKGROUND_LAYER : FOREGROUND_LAYER), &rgb, NULL, false)) {
|
||||
rgb = (backgrColor ? RGB(0xFF, 0xFF, 0x00) : RGB(0xC2, 0xC0, 0xC3));
|
||||
int alpha = SC_ALPHA_NOALPHA;
|
||||
Style_StrGetAlpha(szValue, &alpha, 50, true);
|
||||
|
||||
int alpha2 = SC_ALPHA_NOALPHA;
|
||||
Style_StrGetAlpha(szValue, &alpha2, 50, false);
|
||||
|
||||
COLORREF const rgbDefault = (bHiLitAsBckgr ? RGB(0xFF, 0xFF, 0x00) : RGB(0xA0, 0xA0, 0xA0));
|
||||
|
||||
COLORREF foreRGB = rgbDefault;
|
||||
bool const hasFGDef = Style_StrGetColor(szValue, FOREGROUND_LAYER, &foreRGB, NULL, false);
|
||||
|
||||
COLORREF backgrRGB = rgbDefault;
|
||||
Style_StrGetColor(szValue, BACKGROUND_LAYER, &backgrRGB, NULL, false);
|
||||
|
||||
if (hasFGDef && (alpha != SC_ALPHA_TRANSPARENT)) { // visible foreground layer
|
||||
SciCall_SetCaretLineLayer(SC_LAYER_OVER_TEXT);
|
||||
SciCall_SetElementColour(SC_ELEMENT_CARET_LINE_BACK, AxRGB(alpha, foreRGB));
|
||||
}
|
||||
else {
|
||||
SciCall_SetCaretLineLayer(SC_LAYER_UNDER_TEXT);
|
||||
SciCall_SetElementColour(SC_ELEMENT_CARET_LINE_BACK, AxRGB(alpha2, backgrRGB));
|
||||
}
|
||||
|
||||
int alpha = SC_ALPHA_TRANSPARENT; // full translucent
|
||||
if (iHiLitCurLn > 0) {
|
||||
Style_StrGetAlpha(GetCurrentStdLexer()->Styles[STY_CUR_LN].szValue, &alpha, 80, backgrColor);
|
||||
if (!backgrColor) {
|
||||
int iFrameSize = 0;
|
||||
if (!Style_StrGetSizeInt(szValue, &iFrameSize)) {
|
||||
iFrameSize = 2;
|
||||
}
|
||||
iFrameSize = max_i(1, ScaleIntToDPI(hwnd, iFrameSize));
|
||||
Globals.iCaretOutLineFrameSize = iFrameSize;
|
||||
//SciCall_SetCaretLineFrame(iFrameSize);
|
||||
SciCall_SetCaretLineFrame(MulDiv(Globals.iCaretOutLineFrameSize, SciCall_GetZoom(), 100)); // needs update on zoom
|
||||
if (bHiLitAsFrame) {
|
||||
int iFrameSize = 0;
|
||||
if (!Style_StrGetSizeInt(szValue, &iFrameSize)) {
|
||||
iFrameSize = 2;
|
||||
}
|
||||
iFrameSize = max_i(1, ScaleIntToDPI(hwnd, iFrameSize));
|
||||
Globals.iCaretOutLineFrameSize = iFrameSize;
|
||||
// SciCall_SetCaretLineFrame(iFrameSize);
|
||||
SciCall_SetCaretLineFrame(MulDiv(Globals.iCaretOutLineFrameSize, SciCall_GetZoom(), 100)); // needs update on zoom
|
||||
}
|
||||
else {
|
||||
SciCall_SetCaretLineFrame(0);
|
||||
}
|
||||
|
||||
SciCall_SetCaretLineLayer(SC_LAYER_UNDER_TEXT); // SC_LAYER_BASE, SC_LAYER_UNDER_TEXT, SC_LAYER_OVER_TEXT
|
||||
SciCall_SetElementColour(SC_ELEMENT_CARET_LINE_BACK, AxRGB(alpha, rgb));
|
||||
SciCall_SetCaretLineVisibleAlways(iHiLitCurLn > 0);
|
||||
}
|
||||
|
||||
|
||||
@ -2222,27 +2252,28 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE
|
||||
Style_StrGetColor(wchBookMarkStyleStrg, BACKGROUND_LAYER, &colorRead, NULL, false);
|
||||
COLORREF const clrFoldMarginBack = colorRead;
|
||||
|
||||
int strokeWidth = FW_DONTCARE;
|
||||
int strokeWidth = FW_THIN;
|
||||
if (!Style_StrGetWeightValue(lpszStyle, &strokeWidth)) {
|
||||
strokeWidth = FontWeights[FW_IDX_REGULAR].weight;
|
||||
}
|
||||
strokeWidth >>= 2;
|
||||
strokeWidth = max_i(FW_THIN, strokeWidth >> 2); // 1/4
|
||||
|
||||
// standard bookmark
|
||||
SciCall_MarkerDefine(MARKER_NP3_BOOKMARK, SC_MARK_VERTICALBOOKMARK); // SC_MARK_BOOKMARK/SC_MARK_SHORTARROW
|
||||
SciCall_MarkerSetStrokeWidth(MARKER_NP3_BOOKMARK, strokeWidth);
|
||||
SciCall_MarkerSetAlpha(MARKER_NP3_BOOKMARK, bookmarkAlpha); // if drawn in content area
|
||||
SciCall_MarkerSetAlpha(MARKER_NP3_BOOKMARK, bookmarkAlpha);
|
||||
SciCall_MarkerSetForeTranslucent(MARKER_NP3_BOOKMARK, AxRGB(bookmarkAlpha, clrLineNumFore)); //~clrBookMarkFore
|
||||
//~SciCall_MarkerSetBack(MARKER_NP3_BOOKMARK, Style_RgbAlpha(clrBookMarkFore, clrMarginBack, bookmarkAlpha));
|
||||
SciCall_MarkerSetBackTranslucent(MARKER_NP3_BOOKMARK, AxRGB(bookmarkAlpha, clrBookMarkFore));
|
||||
SciCall_MarkerSetStrokeWidth(MARKER_NP3_BOOKMARK, strokeWidth);
|
||||
|
||||
// occurrence bookmarker
|
||||
bool const visible = Settings.MarkOccurrencesBookmark;
|
||||
//SciCall_MarkerDefine(MARKER_NP3_OCCURRENCE, visible ? SC_MARK_ARROWS : SC_MARK_BACKGROUND);
|
||||
SciCall_MarkerDefine(MARKER_NP3_OCCURRENCE, visible ? SC_MARK_ARROWS : SC_MARK_EMPTY);
|
||||
SciCall_MarkerSetStrokeWidth(MARKER_NP3_OCCURRENCE, strokeWidth);
|
||||
SciCall_MarkerSetForeTranslucent(MARKER_NP3_OCCURRENCE, RGB2RGBAREF(CalcContrastColor(clrMarginBack, 100)));
|
||||
SciCall_MarkerSetBackTranslucent(MARKER_NP3_OCCURRENCE, AxRGB(SC_ALPHA_TRANSPARENT, clrMarginBack));
|
||||
//~SciCall_MarkerSetForeSelected(MARKER_NP3_OCCURRENCE, RGB(0,0,220));
|
||||
SciCall_MarkerSetStrokeWidth(MARKER_NP3_OCCURRENCE, strokeWidth);
|
||||
|
||||
// --- WordBookMarks ---
|
||||
COLORREF color;
|
||||
@ -2334,15 +2365,6 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE
|
||||
SciCall_MarkerDefine(SC_MARKNUM_FOLDEROPENMID, SC_MARK_BOXMINUSCONNECTED);
|
||||
SciCall_MarkerDefine(SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_TCORNER);
|
||||
}
|
||||
static const int FoldMarkerID[] = {
|
||||
SC_MARKNUM_FOLDEROPEN,
|
||||
SC_MARKNUM_FOLDER,
|
||||
SC_MARKNUM_FOLDERSUB,
|
||||
SC_MARKNUM_FOLDERTAIL,
|
||||
SC_MARKNUM_FOLDEREND,
|
||||
SC_MARKNUM_FOLDEROPENMID,
|
||||
SC_MARKNUM_FOLDERMIDTAIL
|
||||
};
|
||||
|
||||
colorRead = clrLineNumFore;
|
||||
const WCHAR* wchHighlightStyleStrg = GetCurrentStdLexer()->Styles[STY_SEL_TXT].szValue;
|
||||
@ -2353,7 +2375,7 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE
|
||||
SciCall_MarkerSetForeTranslucent(FoldMarkerID[i], RGB2RGBAREF(clrFoldMarginBack)); // (!)
|
||||
SciCall_MarkerSetBackTranslucent(FoldMarkerID[i], RGB2RGBAREF(clrLineNumFore)); // (!) //~clrBookMarkForeAlpha
|
||||
SciCall_MarkerSetBackSelected(FoldMarkerID[i], fldHiLight);
|
||||
SciCall_MarkerSetStrokeWidth(FoldMarkerID[i], strokeWidth);
|
||||
SciCall_MarkerSetStrokeWidth(FoldMarkerID[i], strokeWidth<<1);
|
||||
}
|
||||
SciCall_SetElementColour(SC_ELEMENT_FOLD_LINE, AxRGB(255, clrLineNumFore));
|
||||
|
||||
@ -2392,6 +2414,8 @@ void Style_SetMargin(HWND hwnd, LPCWSTR lpszStyle) /// iStyle == STYLE_LINENUMBE
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Style_SniffShebang()
|
||||
@ -3439,7 +3463,9 @@ bool Style_StrGetAlpha(LPCWSTR lpszStyle, int* iOutValue, const int defAlpha, co
|
||||
return true;
|
||||
}
|
||||
}
|
||||
*iOutValue = Sci_ClampAlpha(defAlpha);
|
||||
if (defAlpha >= 0) {
|
||||
*iOutValue = Sci_ClampAlpha(defAlpha);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -4535,6 +4561,10 @@ INT_PTR CALLBACK Style_CustomizeSchemesDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
|
||||
MakeBitmapButton(hwnd, IDC_PREVSTYLE, IDB_PREV, -1, -1);
|
||||
MakeBitmapButton(hwnd, IDC_NEXTSTYLE, IDB_NEXT, -1, -1);
|
||||
|
||||
COLORREF cr = COLORREF_MAX; // SciCall_StyleGetFore(STYLE_DEFAULT);
|
||||
MakeColorPickButton(hwnd, IDC_STYLEFORE, Globals.hInstance, cr);
|
||||
MakeColorPickButton(hwnd, IDC_STYLEBACK, Globals.hInstance, cr);
|
||||
|
||||
if (Settings.CustomSchemesDlgPosX == CW_USEDEFAULT || Settings.CustomSchemesDlgPosY == CW_USEDEFAULT) {
|
||||
CenterDlgInParent(hwnd, false);
|
||||
} else {
|
||||
@ -4994,11 +5024,11 @@ CASE_WM_CTLCOLOR_SET:
|
||||
GetDlgItemText(hwnd, IDC_STYLEEDIT, tch, COUNTOF(tch));
|
||||
|
||||
COLORREF cr = COLORREF_MAX; // SciCall_StyleGetFore(STYLE_DEFAULT);
|
||||
Style_StrGetColor(tch, FOREGROUND_LAYER, &cr, NULL, true);
|
||||
Style_StrGetColor(tch, FOREGROUND_LAYER, &cr, NULL, false);
|
||||
MakeColorPickButton(hwnd, IDC_STYLEFORE, Globals.hInstance, cr);
|
||||
|
||||
cr = COLORREF_MAX; // SciCall_StyleGetBack(STYLE_DEFAULT);
|
||||
Style_StrGetColor(tch, BACKGROUND_LAYER, &cr, NULL, true);
|
||||
Style_StrGetColor(tch, BACKGROUND_LAYER, &cr, NULL, false);
|
||||
MakeColorPickButton(hwnd, IDC_STYLEBACK, Globals.hInstance, cr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -191,7 +191,7 @@ typedef enum CFG_VERSION {
|
||||
CFG_VER_0004 = 4, /// Text Files lexer vs. Default Text => (2nd) Common Style
|
||||
CFG_VER_0005 = 5, /// FileWatchingMode numbering changed
|
||||
|
||||
CFG_VER_CURRENT = CFG_VER_0005
|
||||
CFG_VER_CURRENT = CFG_VER_0005 /// Globals.iCfgVersionRead
|
||||
|
||||
} CFG_VERSION;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user