mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-14 21:09:05 +08:00
+ add: Preps for word marker
This commit is contained in:
parent
98f3360d42
commit
456b0affbb
@ -53,6 +53,18 @@
|
||||
|
||||
#define RELAUNCH_ELEVATED_BUF_ARG L"tmpfbuf="
|
||||
|
||||
WORDBOOKMARK_T WordBookMarks[MARKER_NP3_BOOKMARK] = {
|
||||
/*0*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*1*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*2*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*3*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*4*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*5*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*6*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE},
|
||||
/*7*/ {false, SC_MARK_SMALLRECT, RGB(0xFF, 0x00, 0x00), RGB(0xFF, 0x00, 0x00), SC_ALPHA_OPAQUE}
|
||||
};
|
||||
|
||||
|
||||
CONSTANTS_T const Constants = {
|
||||
2 // StdDefaultLexerID
|
||||
, L"minipath.exe" // FileBrowserMiniPath
|
||||
@ -1932,8 +1944,8 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl)
|
||||
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_COLOR_DEF, INDIC_COMPOSITIONTHIN /*INDIC_HIDDEN*/); // MARKER only
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETUNDER, INDIC_NP3_COLOR_DEF, true);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_COLOR_DEF, 0x00); // reset on hover
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_COLOR_DEF, 0xFF);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_COLOR_DEF, SC_ALPHA_TRANSPARENT); // reset on hover
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_COLOR_DEF, SC_ALPHA_OPAQUE);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETHOVERSTYLE, INDIC_NP3_COLOR_DEF, INDIC_ROUNDBOX); // HOVER
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETHOVERFORE, INDIC_NP3_COLOR_DEF, RGB(0x00, 0x00, 0x00)); // recalc on hover
|
||||
|
||||
@ -1943,8 +1955,8 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl)
|
||||
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_UNICODE_POINT, INDIC_COMPOSITIONTHIN /*INDIC_HIDDEN*/); // MARKER only
|
||||
//SendMessage(hwndEditCtrl, SCI_INDICSETUNDER, INDIC_NP3_UNICODE_POINT, false);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_UNICODE_POINT, 0x00);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_UNICODE_POINT, 0xFF);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_UNICODE_POINT, SC_ALPHA_TRANSPARENT);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_UNICODE_POINT, SC_ALPHA_NOALPHA);
|
||||
SendMessage(hwndEditCtrl, SCI_INDICSETHOVERSTYLE, INDIC_NP3_UNICODE_POINT, INDIC_ROUNDBOX); // HOVER
|
||||
//SendMessage(hwndEditCtrl, SCI_INDICSETHOVERFORE, INDIC_NP3_UNICODE_POINT, RGB(0xE0, 0xE0, 0xE0));
|
||||
|
||||
@ -6524,23 +6536,23 @@ static DocPos prevCursorPosition = -1;
|
||||
#define RGB_TOLERANCE 0x20
|
||||
#define RGB_SUB(X, Y) (((X) > (Y)) ? ((X) - (Y)) : ((Y) - (X)))
|
||||
|
||||
inline COLORREF _CalcContrastColor(COLORREF rgb, BYTE alpha)
|
||||
inline COLORREF _CalcContrastColor(COLORREF rgb, int alpha)
|
||||
{
|
||||
|
||||
bool const mask = RGB_SUB(MulDiv(rgb >> 0, alpha, 0xFF) & 0xFF, 0x80) <= RGB_TOLERANCE &&
|
||||
RGB_SUB(MulDiv(rgb >> 8, alpha, 0xFF) & 0xFF, 0x80) <= RGB_TOLERANCE &&
|
||||
RGB_SUB(MulDiv(rgb >> 16, alpha, 0xFF) & 0xFF, 0x80) <= RGB_TOLERANCE;
|
||||
bool const mask = RGB_SUB(MulDiv(rgb >> 0, alpha, SC_ALPHA_OPAQUE) & SC_ALPHA_OPAQUE, 0x80) <= RGB_TOLERANCE &&
|
||||
RGB_SUB(MulDiv(rgb >> 8, alpha, SC_ALPHA_OPAQUE) & SC_ALPHA_OPAQUE, 0x80) <= RGB_TOLERANCE &&
|
||||
RGB_SUB(MulDiv(rgb >> 16, alpha, SC_ALPHA_OPAQUE) & SC_ALPHA_OPAQUE, 0x80) <= RGB_TOLERANCE;
|
||||
|
||||
return mask ? (0x7F7F7F + rgb) & 0xFFFFFF : rgb ^ 0xFFFFFF;
|
||||
return mask ? ((0x7F7F7F + rgb)) & 0xFFFFFF : (rgb ^ 0xFFFFFF);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define ARGB_TO_COLREF(X) (RGB(((X) >> 16) & 0xFF, ((X) >> 8) & 0xFF, (X)&0xFF))
|
||||
#define RGBA_TO_COLREF(X) (RGB(((X) >> 24) & 0xFF, ((X) >> 16) & 0xFF, ((X) >> 8) & 0xFF))
|
||||
#define BGRA_TO_COLREF(X) (RGB(((X) >> 8) & 0xFF, ((X) >> 16) & 0xFF, ((X) >> 24) & 0xFF))
|
||||
#define ARGB_GET_ALPHA(A) (((A) >> 24) & 0xFF)
|
||||
#define RGBA_GET_ALPHA(A) ((A) & 0xFF)
|
||||
#define ARGB_TO_COLREF(X) (RGB(((X) >> 16) & SC_ALPHA_OPAQUE, ((X) >> 8) & SC_ALPHA_OPAQUE, (X) & SC_ALPHA_OPAQUE))
|
||||
#define RGBA_TO_COLREF(X) (RGB(((X) >> 24) & SC_ALPHA_OPAQUE, ((X) >> 16) & SC_ALPHA_OPAQUE, ((X) >> 8) & SC_ALPHA_OPAQUE))
|
||||
#define BGRA_TO_COLREF(X) (RGB(((X) >> 8) & SC_ALPHA_OPAQUE, ((X) >> 16) & SC_ALPHA_OPAQUE, ((X) >> 24) & SC_ALPHA_OPAQUE))
|
||||
#define ARGB_GET_ALPHA(A) (((A) >> 24) & SC_ALPHA_OPAQUE)
|
||||
#define RGBA_GET_ALPHA(A) ((A) & SC_ALPHA_OPAQUE)
|
||||
#define BGRA_GET_ALPHA(A) RGBA_GET_ALPHA(A)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -6652,7 +6664,7 @@ void HandleDWellStartEnd(const DocPos position, const UINT uid)
|
||||
if (sscanf_s(&chText[1], "%x", &iValue) == 1)
|
||||
{
|
||||
COLORREF rgb = 0x000000;
|
||||
BYTE alpha = 0xFF;
|
||||
int alpha = SC_ALPHA_OPAQUE;
|
||||
if (length >= 8) // ARGB, RGBA, BGRA
|
||||
{
|
||||
switch (Settings.ColorDefHotspot) {
|
||||
@ -6676,7 +6688,7 @@ void HandleDWellStartEnd(const DocPos position, const UINT uid)
|
||||
else // RGB
|
||||
{
|
||||
rgb = RGB((iValue >> 16) & 0xFF, (iValue >> 8) & 0xFF, iValue & 0xFF);
|
||||
alpha = 0xFF;
|
||||
alpha = SC_ALPHA_OPAQUE;
|
||||
}
|
||||
COLORREF const fgr = _CalcContrastColor(rgb, alpha);
|
||||
|
||||
@ -6684,7 +6696,7 @@ void HandleDWellStartEnd(const DocPos position, const UINT uid)
|
||||
SciCall_IndicatorFillRange(firstPos, length);
|
||||
SciCall_IndicSetHoverFore(INDIC_NP3_COLOR_DEF_T, fgr);
|
||||
|
||||
SciCall_IndicSetAlpha(INDIC_NP3_COLOR_DEF, alpha);
|
||||
SciCall_IndicSetAlpha(INDIC_NP3_COLOR_DEF, Sci_ClampAlpha(alpha));
|
||||
SciCall_IndicSetHoverFore(INDIC_NP3_COLOR_DEF, rgb);
|
||||
}
|
||||
}
|
||||
@ -6727,7 +6739,7 @@ void HandleDWellStartEnd(const DocPos position, const UINT uid)
|
||||
SciCall_SetIndicatorCurrent(INDIC_NP3_COLOR_DEF_T);
|
||||
SciCall_IndicatorClearRange(0, Sci_GetDocEndPosition());
|
||||
|
||||
SciCall_IndicSetAlpha(INDIC_NP3_COLOR_DEF, 0);
|
||||
SciCall_IndicSetAlpha(INDIC_NP3_COLOR_DEF, SC_ALPHA_TRANSPARENT);
|
||||
SciCall_IndicSetFore(INDIC_NP3_COLOR_DEF, 0);
|
||||
|
||||
HandlePosChange();
|
||||
|
||||
@ -322,7 +322,7 @@ DeclareSciCallR2(GetLine, GETLINE, DocPos, DocLn, line, const char*, text)
|
||||
DeclareSciCallR2(GetCurLine, GETCURLINE, DocPos, unsigned int, length, const char*, text)
|
||||
|
||||
inline DocPos SciCall_GetLine_Safe(DocLn iLine, char* pTxtBuf) {
|
||||
DocPos const iLen = SciCall_GetLine(iLine, pTxtBuf); if (pTxtBuf) pTxtBuf[iLen] = '\0'; return iLen;
|
||||
DocPos const iLen = SciCall_GetLine(iLine, pTxtBuf); if (pTxtBuf) pTxtBuf[iLen] = '\0'; return (iLen + 1);
|
||||
}
|
||||
|
||||
|
||||
@ -611,6 +611,8 @@ DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool)
|
||||
//~#define Sci_GetDocEndPosition() (SciCall_GetTextLength() - 1)
|
||||
#define Sci_GetDocEndPosition() SciCall_GetLineEndPosition(SciCall_GetLineCount())
|
||||
|
||||
#define Sci_ClampAlpha(alpha) clampi((alpha), SC_ALPHA_TRANSPARENT, /*SC_ALPHA_OPAQUE*/SC_ALPHA_NOALPHA)
|
||||
|
||||
// max. line length in range (incl. line-breaks)
|
||||
inline DocPos Sci_GetRangeMaxLineLength(DocLn iBeginLine, DocLn iEndLine) {
|
||||
DocPos iMaxLineLen = 0;
|
||||
|
||||
18
src/Styles.c
18
src/Styles.c
@ -430,10 +430,12 @@ float Style_GetBaseFontSize()
|
||||
//
|
||||
int Style_RgbAlpha(int rgbFore, int rgbBack, int alpha)
|
||||
{
|
||||
alpha = clampi(alpha, SC_ALPHA_TRANSPARENT, SC_ALPHA_OPAQUE);
|
||||
|
||||
return (int)RGB(\
|
||||
(0xFF - alpha) * (int)GetRValue(rgbBack) / 0xFF + alpha * (int)GetRValue(rgbFore) / 0xFF, \
|
||||
(0xFF - alpha) * (int)GetGValue(rgbBack) / 0xFF + alpha * (int)GetGValue(rgbFore) / 0xFF, \
|
||||
(0xFF - alpha) * (int)GetBValue(rgbBack) / 0xFF + alpha * (int)GetBValue(rgbFore) / 0xFF);
|
||||
(0xFF - alpha) * (int)GetGValue(rgbBack) / 0xFF + alpha * (int)GetGValue(rgbFore) / 0xFF, \
|
||||
(0xFF - alpha) * (int)GetBValue(rgbBack) / 0xFF + alpha * (int)GetBValue(rgbFore) / 0xFF);
|
||||
}
|
||||
|
||||
|
||||
@ -1274,7 +1276,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew)
|
||||
}
|
||||
else {
|
||||
SendMessage(hwnd, SCI_SETSELALPHA, SC_ALPHA_NOALPHA, 0);
|
||||
SendMessage(hwnd, SCI_SETADDITIONALSELALPHA, SC_ALPHA_NOALPHA*2/3, 0);
|
||||
SendMessage(hwnd, SCI_SETADDITIONALSELALPHA, SC_ALPHA_OPAQUE*2/3, 0);
|
||||
}
|
||||
|
||||
if (Style_StrGetAttrEOLFilled(pCurrentStandard->Styles[STY_SEL_TXT].szValue)) // selection eolfilled
|
||||
@ -1733,7 +1735,7 @@ void Style_HighlightCurrentLine(HWND hwnd, int iHiLitCurLn)
|
||||
rgb = (backgrColor ? RGB(0xFF, 0xFF, 0x00) : RGB(0xC2, 0xC0, 0xC3));
|
||||
}
|
||||
|
||||
int alpha = 0;
|
||||
int alpha = SC_ALPHA_TRANSPARENT;
|
||||
if (!Style_StrGetAlpha(GetCurrentStdLexer()->Styles[STY_CUR_LN].szValue, &alpha, true)) {
|
||||
alpha = SC_ALPHA_NOALPHA;
|
||||
}
|
||||
@ -1825,11 +1827,9 @@ void Style_SetMargin(HWND hwnd, int iStyle, LPCWSTR lpszStyle)
|
||||
|
||||
COLORREF bckgrnd = clrBack;
|
||||
Style_StrGetColor(lpszStyle, BACKGROUND_LAYER, &bckgrnd);
|
||||
bmkBack = Style_RgbAlpha(bmkBack, bckgrnd, min_i(0xFF, alpha));
|
||||
bmkBack = Style_RgbAlpha(bmkBack, bckgrnd, alpha);
|
||||
|
||||
//SciCall_MarkerDefine(MARKER_NP3_BOOKMARK, SC_MARK_BOOKMARK);
|
||||
//SciCall_MarkerDefine(MARKER_NP3_BOOKMARK, SC_MARK_SHORTARROW);
|
||||
SciCall_MarkerDefine(MARKER_NP3_BOOKMARK, SC_MARK_VERTICALBOOKMARK);
|
||||
SciCall_MarkerDefine(MARKER_NP3_BOOKMARK, SC_MARK_VERTICALBOOKMARK); // SC_MARK_BOOKMARK/SC_MARK_SHORTARROW
|
||||
SciCall_MarkerSetFore(MARKER_NP3_BOOKMARK, bmkFore);
|
||||
SciCall_MarkerSetBack(MARKER_NP3_BOOKMARK, bmkBack);
|
||||
SciCall_MarkerSetAlpha(MARKER_NP3_BOOKMARK, alpha);
|
||||
@ -2849,7 +2849,7 @@ bool Style_StrGetAlpha(LPCWSTR lpszStyle, int* iOutValue, bool bAlpha1st)
|
||||
TrimSpcW(tch);
|
||||
int iValue = 0;
|
||||
if (StrToIntEx(tch, STIF_DEFAULT, &iValue)) {
|
||||
*iOutValue = clampi(iValue, SC_ALPHA_TRANSPARENT, SC_ALPHA_OPAQUE);
|
||||
*iOutValue = Sci_ClampAlpha(iValue);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,9 +44,10 @@
|
||||
#endif
|
||||
|
||||
#include "Sci_Position.h"
|
||||
#include "Scintilla.h"
|
||||
|
||||
//
|
||||
// TODO(rkotten):
|
||||
// TODO:
|
||||
// SCI_CREATEDOCUMENT (SC_DOCUMENTOPTION_TEXT_LARGE)
|
||||
//
|
||||
|
||||
@ -249,18 +250,55 @@ typedef struct _cmq
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#define MARKER_NP3_BOOKMARK 1
|
||||
typedef enum
|
||||
{
|
||||
MARKER_NP3_WORD_0 = 0,
|
||||
MARKER_NP3_WORD_1,
|
||||
MARKER_NP3_WORD_2,
|
||||
MARKER_NP3_WORD_3,
|
||||
MARKER_NP3_WORD_4,
|
||||
MARKER_NP3_WORD_5,
|
||||
MARKER_NP3_WORD_6,
|
||||
MARKER_NP3_WORD_7,
|
||||
// std bookmark -> counter is last
|
||||
MARKER_NP3_BOOKMARK
|
||||
} MARKER_ID;
|
||||
|
||||
#define INDIC_NP3_MARK_OCCURANCE (INDICATOR_CONTAINER + 1)
|
||||
#define INDIC_NP3_MATCH_BRACE (INDICATOR_CONTAINER + 2)
|
||||
#define INDIC_NP3_BAD_BRACE (INDICATOR_CONTAINER + 3)
|
||||
#define INDIC_NP3_FOCUS_VIEW (INDICATOR_CONTAINER + 4)
|
||||
#define INDIC_NP3_HYPERLINK (INDICATOR_CONTAINER + 5)
|
||||
#define INDIC_NP3_HYPERLINK_U (INDICATOR_CONTAINER + 6)
|
||||
#define INDIC_NP3_COLOR_DEF (INDICATOR_CONTAINER + 7)
|
||||
#define INDIC_NP3_COLOR_DEF_T (INDICATOR_CONTAINER + 8)
|
||||
#define INDIC_NP3_MULTI_EDIT (INDICATOR_CONTAINER + 9)
|
||||
#define INDIC_NP3_UNICODE_POINT (INDICATOR_CONTAINER + 10)
|
||||
// ASSERT( MARKER_NP3_BOOKMARK < SC_MARKNUM_FOLDEREND )
|
||||
|
||||
|
||||
typedef struct _wordbookmark_t
|
||||
{
|
||||
bool in_use;
|
||||
int sci_symbol;
|
||||
COLORREF fg_color;
|
||||
COLORREF bg_color;
|
||||
BYTE alpha;
|
||||
} WORDBOOKMARK_T, *PWORDBOOKMARK_T;
|
||||
|
||||
extern WORDBOOKMARK_T WordBookMarks[];
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
INDIC_NP3_MARK_OCCURANCE = INDICATOR_CONTAINER,
|
||||
INDIC_NP3_MATCH_BRACE,
|
||||
INDIC_NP3_BAD_BRACE,
|
||||
INDIC_NP3_FOCUS_VIEW,
|
||||
INDIC_NP3_HYPERLINK,
|
||||
INDIC_NP3_HYPERLINK_U,
|
||||
INDIC_NP3_COLOR_DEF,
|
||||
INDIC_NP3_COLOR_DEF_T,
|
||||
INDIC_NP3_MULTI_EDIT,
|
||||
INDIC_NP3_UNICODE_POINT,
|
||||
// counter is last
|
||||
INDIC_NP3_ID_CNT
|
||||
} INDIC_ID;
|
||||
|
||||
// ASSERT( INDIC_NP3_ID_CNT < INDICATOR_IME )
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user