diff options
-rw-r--r-- | doc/ScintillaDoc.html | 31 | ||||
-rw-r--r-- | gtk/PlatGTK.cxx | 84 | ||||
-rw-r--r-- | include/Platform.h | 2 | ||||
-rw-r--r-- | include/Scintilla.h | 6 | ||||
-rw-r--r-- | include/Scintilla.iface | 11 | ||||
-rw-r--r-- | src/Editor.cxx | 15 | ||||
-rw-r--r-- | src/Indicator.cxx | 6 | ||||
-rw-r--r-- | src/ViewStyle.cxx | 2 | ||||
-rw-r--r-- | src/ViewStyle.h | 1 | ||||
-rw-r--r-- | win32/PlatWin.cxx | 86 | ||||
-rw-r--r-- | win32/ScintillaWin.cxx | 12 |
11 files changed, 248 insertions, 8 deletions
diff --git a/doc/ScintillaDoc.html b/doc/ScintillaDoc.html index 42314186a..e6aae3b73 100644 --- a/doc/ScintillaDoc.html +++ b/doc/ScintillaDoc.html @@ -131,6 +131,17 @@ </tr> <tr> + <th align="left" id="alpha">alpha</th> + + <td>Translucency is set using an alpha value. + Alpha ranges from 0 (SC_ALPHA_TRANSPARENT) which is completely transparent to + 255 (SC_ALPHA_OPAQUE) which is opaque. The value 256 (SC_ALPHA_NOALPHA) + is opaque and uses code that is not alpha-aware and may be faster. Not all platforms support + translucency and only some Scintilla features implement translucency. + The default alpha value for most features is SC_ALPHA_NOALPHA.</td> + </tr> + + <tr> <th align="left"><unused></th> <td>This is an unused argument. Setting it to 0 will ensure compatibility with future @@ -2110,6 +2121,8 @@ struct TextToFind { <a class="message" href="#SCI_GETCARETLINEVISIBLE">SCI_GETCARETLINEVISIBLE</a><br /> <a class="message" href="#SCI_SETCARETLINEBACK">SCI_SETCARETLINEBACK(int colour)</a><br /> <a class="message" href="#SCI_GETCARETLINEBACK">SCI_GETCARETLINEBACK</a><br /> + <a class="message" href="#SCI_SETCARETLINEBACKALPHA">SCI_SETCARETLINEBACKALPHA(int alpha)</a><br /> + <a class="message" href="#SCI_GETCARETLINEBACKALPHA">SCI_GETCARETLINEBACKALPHA</a><br /> <a class="message" href="#SCI_SETCARETPERIOD">SCI_SETCARETPERIOD(int milliseconds)</a><br /> <a class="message" href="#SCI_GETCARETPERIOD">SCI_GETCARETPERIOD</a><br /> <a class="message" href="#SCI_SETCARETWIDTH">SCI_SETCARETWIDTH(int pixels)</a><br /> @@ -2146,13 +2159,20 @@ struct TextToFind { <b id="SCI_SETCARETLINEBACK">SCI_SETCARETLINEBACK(int <a class="jump" href="#colour">colour</a>)</b><br /> <b id="SCI_GETCARETLINEBACK">SCI_GETCARETLINEBACK</b><br /> + <b id="SCI_SETCARETLINEBACKALPHA">SCI_SETCARETLINEBACKALPHA(int <a class="jump" href="#alpha">alpha</a>)</b><br /> + <b id="SCI_GETCARETLINEBACKALPHA">SCI_GETCARETLINEBACKALPHA</b><br /> You can choose to make the background colour of the line containing the caret different with these messages. To do this, set the desired background colour with <code>SCI_SETCARETLINEBACK</code>, then use <code>SCI_SETCARETLINEVISIBLE(true)</code> to enable the effect. You can cancel the effect with <code>SCI_SETCARETLINEVISIBLE(false)</code>. The two <code>SCI_GETCARET*</code> functions return the state and the colour. This form of background colouring has highest priority when a line has markers that would otherwise change - the background colour.</p> + the background colour. + The caret line may also be drawn translucently which allows other background colours to show + through. This is done by setting the alpha (translucency) value by calling + SCI_SETCARETLINEBACKALPHA. When the alpha is not SC_ALPHA_NOALPHA, + the caret line is drawn after all other features so will affect the colour of all other features. + </p> <p><b id="SCI_SETCARETPERIOD">SCI_SETCARETPERIOD(int milliseconds)</b><br /> <b id="SCI_GETCARETPERIOD">SCI_GETCARETPERIOD</b><br /> @@ -2940,6 +2960,15 @@ struct TextToFind { <td>A rectangle around the text.</td> </tr> + + <tr> + <td align="left"><code>INDIC_ROUNDBOX</code></td> + + <td align="center">6</td> + + <td>A rectangle with rounded corners around the text using translucent drawing with the + interior more transparent than the border.</td> + </tr> </tbody> </table> diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx index f776a2c19..20c518fdb 100644 --- a/gtk/PlatGTK.cxx +++ b/gtk/PlatGTK.cxx @@ -713,6 +713,8 @@ public: void FillRectangle(PRectangle rc, ColourAllocated back); void FillRectangle(PRectangle rc, Surface &surfacePattern); void RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back); + void AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill, + ColourAllocated outline, int alphaOutline, int flags); void Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back); void Copy(PRectangle rc, Point from, Surface &surfaceSource); @@ -1014,6 +1016,88 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAl } } +// Plot a point into a guint32 buffer symetrically to all 4 qudrants +static void AllFour(guint32 *pixels, int stride, int width, int height, int x, int y, guint32 val) { + pixels[y*stride+x] = val; + pixels[y*stride+width-1-x] = val; + pixels[(height-1-y)*stride+x] = val; + pixels[(height-1-y)*stride+width-1-x] = val; +} + +static unsigned int GetRValue(unsigned int co) { + return (co >> 16) & 0xff; +} + +static unsigned int GetGValue(unsigned int co) { + return (co >> 8) & 0xff; +} + +static unsigned int GetBValue(unsigned int co) { + return co & 0xff; +} + +#if GTK_MAJOR_VERSION < 2 +void SurfaceImpl::AlphaRectangle(PRectangle rc, int , ColourAllocated , int , ColourAllocated outline, int , int ) { + if (gc && drawable) { + // Can't use GdkPixbuf on GTK+ 1.x, so draw an outline rather than use alpha. + PenColour(outline); + gdk_draw_rectangle(drawable, gc, 0, + rc.left, rc.top, + rc.right - rc.left - 1, rc.bottom - rc.top - 1); + } +} +#else +void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill, + ColourAllocated outline, int alphaOutline, int flags) { + if (gc && drawable) { + int width = rc.Width(); + int height = rc.Height(); + // Ensure not distorted too much by corners when small + cornerSize = Platform::Minimum(cornerSize, (Platform::Minimum(width, height) / 2) - 2); + // Make a 32 bit deep pixbuf with alpha + GdkPixbuf *pixalpha = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height); + + guint8 pixVal[4] = {0}; + guint32 valEmpty = *(reinterpret_cast<guint32 *>(pixVal)); + pixVal[0] = GetRValue(fill.AsLong()); + pixVal[1] = GetGValue(fill.AsLong()); + pixVal[2] = GetBValue(fill.AsLong()); + pixVal[3] = alphaFill; + guint32 valFill = *(reinterpret_cast<guint32 *>(pixVal)); + pixVal[0] = GetRValue(outline.AsLong()); + pixVal[1] = GetGValue(outline.AsLong()); + pixVal[2] = GetBValue(outline.AsLong()); + pixVal[3] = alphaOutline; + guint32 valOutline = *(reinterpret_cast<guint32 *>(pixVal)); + guint32 *pixels = reinterpret_cast<guint32 *>(gdk_pixbuf_get_pixels(pixalpha)); + int stride = gdk_pixbuf_get_rowstride(pixalpha) / 4; + for (int y=0; y<height; y++) { + for (int x=0; x<width; x++) { + if ((x==0) || (x==width-1) || (y == 0) || (y == height-1)) { + pixels[y*stride+x] = valOutline; + } else { + pixels[y*stride+x] = valFill; + } + } + } + for (int c=0;c<cornerSize; c++) { + for (int x=0;x<c+1; x++) { + AllFour(pixels, stride, width, height, x, c-x, valEmpty); + } + } + for (int x=1;x<cornerSize; x++) { + AllFour(pixels, stride, width, height, x, cornerSize-x, valOutline); + } + + // Draw with alpha + gdk_draw_pixbuf(drawable, gc, pixalpha, + 0,0, rc.left,rc.top, width,height, GDK_RGB_DITHER_NORMAL, 0, 0); + + g_object_unref(pixalpha); + } +} +#endif + void SurfaceImpl::Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back) { PenColour(back); gdk_draw_arc(drawable, gc, 1, diff --git a/include/Platform.h b/include/Platform.h index 395ebf83d..60d7896ac 100644 --- a/include/Platform.h +++ b/include/Platform.h @@ -322,6 +322,8 @@ public: virtual void FillRectangle(PRectangle rc, ColourAllocated back)=0; virtual void FillRectangle(PRectangle rc, Surface &surfacePattern)=0; virtual void RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back)=0; + virtual void AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill, + ColourAllocated outline, int alphaOutline, int flags)=0; virtual void Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back)=0; virtual void Copy(PRectangle rc, Point from, Surface &surfaceSource)=0; diff --git a/include/Scintilla.h b/include/Scintilla.h index 29ffdb23d..035ca04fa 100644 --- a/include/Scintilla.h +++ b/include/Scintilla.h @@ -215,6 +215,7 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define INDIC_STRIKE 4 #define INDIC_HIDDEN 5 #define INDIC_BOX 6 +#define INDIC_ROUNDBOX 7 #define INDIC0_MASK 0x20 #define INDIC1_MASK 0x40 #define INDIC2_MASK 0x80 @@ -609,6 +610,11 @@ typedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, #define SCI_SETPASTECONVERTENDINGS 2467 #define SCI_GETPASTECONVERTENDINGS 2468 #define SCI_SELECTIONDUPLICATE 2469 +#define SC_ALPHA_TRANSPARENT 0 +#define SC_ALPHA_OPAQUE 255 +#define SC_ALPHA_NOALPHA 256 +#define SCI_SETCARETLINEBACKALPHA 2470 +#define SCI_GETCARETLINEBACKALPHA 2471 #define SCI_STARTRECORD 3001 #define SCI_STOPRECORD 3002 #define SCI_SETLEXER 4001 diff --git a/include/Scintilla.iface b/include/Scintilla.iface index d296ce85d..b64a10c4d 100644 --- a/include/Scintilla.iface +++ b/include/Scintilla.iface @@ -475,6 +475,7 @@ val INDIC_DIAGONAL=3 val INDIC_STRIKE=4 val INDIC_HIDDEN=5 val INDIC_BOX=6 +val INDIC_ROUNDBOX=7 val INDIC0_MASK=0x20 val INDIC1_MASK=0x40 val INDIC2_MASK=0x80 @@ -1644,6 +1645,16 @@ get bool GetPasteConvertEndings=2468(,) # Duplicate the selection. If selection empty duplicate the line containing the caret. fun void SelectionDuplicate=2469(,) +val SC_ALPHA_TRANSPARENT=0 +val SC_ALPHA_OPAQUE=255 +val SC_ALPHA_NOALPHA=256 + +# Set background alpha of the caret line. +set void SetCaretLineBackAlpha=2470(int alpha,) + +# Get the background alpha of the caret line. +get int GetCaretLineBackAlpha=2471(,) + # Start notifying the container of all key presses and commands. fun void StartRecord=3001(,) diff --git a/src/Editor.cxx b/src/Editor.cxx index 08693815f..9df8b2e8c 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -2295,7 +2295,7 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis // the color for the highest numbered one is used. bool overrideBackground = false; ColourAllocated background; - if (caret.active && vsDraw.showCaretLineBackground && ll->containsCaret) { + if (caret.active && vsDraw.showCaretLineBackground && (vsDraw.caretLineAlpha == SC_ALPHA_NOALPHA) && ll->containsCaret) { overrideBackground = true; background = vsDraw.caretLineBackground.allocated; } @@ -2653,6 +2653,13 @@ void Editor::DrawLine(Surface *surface, ViewStyle &vsDraw, int line, int lineVis rcSegment.right = rcSegment.left + 1; surface->FillRectangle(rcSegment, vsDraw.edgecolour.allocated); } + + if (caret.active && vsDraw.showCaretLineBackground && (vsDraw.caretLineAlpha != SC_ALPHA_NOALPHA) && ll->containsCaret) { + rcSegment.left = xStart; + rcSegment.right = rcLine.right - 1; + surface->AlphaRectangle(rcSegment, 0, vsDraw.caretLineBackground.allocated, vsDraw.caretLineAlpha, + vsDraw.caretLineBackground.allocated, vsDraw.caretLineAlpha, 0); + } } void Editor::RefreshPixMaps(Surface *surfaceWindow) { @@ -6723,6 +6730,12 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { vs.caretLineBackground.desired = wParam; InvalidateStyleRedraw(); break; + case SCI_GETCARETLINEBACKALPHA: + return vs.caretLineAlpha; + case SCI_SETCARETLINEBACKALPHA: + vs.caretLineAlpha = wParam; + InvalidateStyleRedraw(); + break; // Folding messages diff --git a/src/Indicator.cxx b/src/Indicator.cxx index a42abb203..7624a4a52 100644 --- a/src/Indicator.cxx +++ b/src/Indicator.cxx @@ -63,6 +63,12 @@ void Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &r surface->LineTo(rc.right, rcLine.top+1); surface->LineTo(rc.left, rcLine.top+1); surface->LineTo(rc.left, ymid+1); + } else if (style == INDIC_ROUNDBOX) { + PRectangle rcBox = rcLine; + rcBox.top = rcLine.top + 1; + rcBox.left = rc.left; + rcBox.right = rc.right; + surface->AlphaRectangle(rcBox, 1, fore.allocated, 30, fore.allocated, 50, 0); } else { // Either INDIC_PLAIN or unknown surface->MoveTo(rc.left, ymid); surface->LineTo(rc.right, ymid); diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index fe519905b..f221af193 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -95,6 +95,7 @@ ViewStyle::ViewStyle(const ViewStyle &source) { caretcolour.desired = source.caretcolour.desired; showCaretLineBackground = source.showCaretLineBackground; caretLineBackground.desired = source.caretLineBackground.desired; + caretLineAlpha = source.caretLineAlpha; edgecolour.desired = source.edgecolour.desired; edgeState = source.edgeState; caretWidth = source.caretWidth; @@ -157,6 +158,7 @@ void ViewStyle::Init() { caretcolour.desired = ColourDesired(0, 0, 0); showCaretLineBackground = false; caretLineBackground.desired = ColourDesired(0xff, 0xff, 0); + caretLineAlpha = SC_ALPHA_NOALPHA; edgecolour.desired = ColourDesired(0xc0, 0xc0, 0xc0); edgeState = EDGE_NONE; caretWidth = 1; diff --git a/src/ViewStyle.h b/src/ViewStyle.h index d06c02002..90d50b1fb 100644 --- a/src/ViewStyle.h +++ b/src/ViewStyle.h @@ -85,6 +85,7 @@ public: ColourPair caretcolour; bool showCaretLineBackground; ColourPair caretLineBackground; + int caretLineAlpha; ColourPair edgecolour; int edgeState; int caretWidth; diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index f9b05fce6..110f26421 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -64,9 +64,14 @@ static LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex) { } #endif +typedef BOOL (WINAPI *AlphaBlendSig)(HDC, int, int, int, int, HDC, int, int, int, int, BLENDFUNCTION); + static CRITICAL_SECTION crPlatformLock; static HINSTANCE hinstPlatformRes = 0; static bool onNT = false; +static HMODULE hDLLImage = 0; +static AlphaBlendSig AlphaBlendFn = 0; + bool IsNT() { return onNT; @@ -355,6 +360,8 @@ public: void FillRectangle(PRectangle rc, ColourAllocated back); void FillRectangle(PRectangle rc, Surface &surfacePattern); void RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAllocated back); + void AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill, + ColourAllocated outline, int alphaOutline, int flags); void Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back); void Copy(PRectangle rc, Point from, Surface &surfaceSource); @@ -557,6 +564,79 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAl 8, 8); } +// Plot a point into a DWORD buffer symetrically to all 4 qudrants +static void AllFour(DWORD *pixels, int width, int height, int x, int y, DWORD val) { + pixels[y*width+x] = val; + pixels[y*width+width-1-x] = val; + pixels[(height-1-y)*width+x] = val; + pixels[(height-1-y)*width+width-1-x] = val; +} + +#ifndef AC_SRC_OVER +#define AC_SRC_OVER 0x00 +#endif +#ifndef AC_SRC_ALPHA +#define AC_SRC_ALPHA 0x01 +#endif + +void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize, ColourAllocated fill, int alphaFill, + ColourAllocated outline, int alphaOutline, int /* flags*/ ) { + if (AlphaBlendFn) { + HDC hMemDC = ::CreateCompatibleDC(reinterpret_cast<HDC>(hdc)); + int width = rc.Width(); + int height = rc.Height(); + // Ensure not distorted too much by corners when small + cornerSize = Platform::Minimum(cornerSize, (Platform::Minimum(width, height) / 2) - 2); + BITMAPINFO bpih = {sizeof(BITMAPINFOHEADER), width, height, 1, 32, BI_RGB, 0, 0, 0, 0, 0}; + void *image = 0; + HBITMAP hbmMem = CreateDIBSection(reinterpret_cast<HDC>(hMemDC), &bpih, + DIB_RGB_COLORS, &image, NULL, 0); + + HBITMAP hbmOld = SelectBitmap(hMemDC, hbmMem); + + byte pixVal[4] = {0}; + DWORD valEmpty = *(reinterpret_cast<DWORD *>(pixVal)); + pixVal[0] = static_cast<byte>(GetBValue(fill.AsLong()) * alphaFill / 255); + pixVal[1] = static_cast<byte>(GetGValue(fill.AsLong()) * alphaFill / 255); + pixVal[2] = static_cast<byte>(GetRValue(fill.AsLong()) * alphaFill / 255); + pixVal[3] = static_cast<byte>(alphaFill); + DWORD valFill = *(reinterpret_cast<DWORD *>(pixVal)); + pixVal[0] = static_cast<byte>(GetBValue(outline.AsLong()) * alphaOutline / 255); + pixVal[1] = static_cast<byte>(GetGValue(outline.AsLong()) * alphaOutline / 255); + pixVal[2] = static_cast<byte>(GetRValue(outline.AsLong()) * alphaOutline / 255); + pixVal[3] = static_cast<byte>(alphaOutline); + DWORD valOutline = *(reinterpret_cast<DWORD *>(pixVal)); + DWORD *pixels = reinterpret_cast<DWORD *>(image); + for (int y=0; y<height; y++) { + for (int x=0; x<width; x++) { + if ((x==0) || (x==width-1) || (y == 0) || (y == height-1)) { + pixels[y*width+x] = valOutline; + } else { + pixels[y*width+x] = valFill; + } + } + } + for (int c=0;c<cornerSize; c++) { + for (int x=0;x<c+1; x++) { + AllFour(pixels, width, height, x, c-x, valEmpty); + } + } + for (int x=1;x<cornerSize; x++) { + AllFour(pixels, width, height, x, cornerSize-x, valOutline); + } + + BLENDFUNCTION merge = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA }; + + AlphaBlendFn(reinterpret_cast<HDC>(hdc), rc.left, rc.top, width, height, hMemDC, 0, 0, width, height, merge); + + SelectBitmap(hMemDC, hbmOld); + ::DeleteObject(hbmMem); + ::DeleteObject(hMemDC); + } else { + RectangleDraw(rc, outline, fill); + } +} + void SurfaceImpl::Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back) { PenColour(fore); BrushColor(back); @@ -2081,6 +2161,12 @@ void Platform_Initialise(void *hInstance) { onNT = osv.dwPlatformId == VER_PLATFORM_WIN32_NT; ::InitializeCriticalSection(&crPlatformLock); hinstPlatformRes = reinterpret_cast<HINSTANCE>(hInstance); + if (!hDLLImage) { + hDLLImage = ::LoadLibrary(TEXT("Msimg32")); + } + if (hDLLImage) { + AlphaBlendFn = (AlphaBlendSig)::GetProcAddress(hDLLImage, "AlphaBlend"); + } ListBoxX_Register(); } diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index 34e8b1a96..62641213e 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -12,7 +12,7 @@ #include <assert.h> #include <limits.h> -#define _WIN32_WINNT 0x0400 +#define _WIN32_WINNT 0x0500 #include <windows.h> #include <commctrl.h> #include <richedit.h> @@ -494,7 +494,7 @@ sptr_t ScintillaWin::HandleComposition(uptr_t wParam, sptr_t lParam) { ::ImmReleaseContext(MainHWND(), hIMC); } return 0; - } + } return ::DefWindowProc(MainHWND(), WM_IME_COMPOSITION, wParam, lParam); #endif } @@ -1792,7 +1792,7 @@ void ScintillaWin::CopyToClipboard(const SelectionText &selectedText) { selectedText.characterSet, selectedText.codePage); uniText.Allocate(2 * selectedText.len); if (uniText) { - ::MultiByteToWideChar(cpSrc, 0, selectedText.s, selectedText.len, + ::MultiByteToWideChar(cpSrc, 0, selectedText.s, selectedText.len, static_cast<wchar_t *>(uniText.ptr), selectedText.len); } } @@ -1806,7 +1806,7 @@ void ScintillaWin::CopyToClipboard(const SelectionText &selectedText) { GlobalMemory ansiText; ansiText.Allocate(selectedText.len); if (ansiText) { - ::WideCharToMultiByte(CP_ACP, 0, static_cast<wchar_t *>(uniText.ptr), -1, + ::WideCharToMultiByte(CP_ACP, 0, static_cast<wchar_t *>(uniText.ptr), -1, static_cast<char *>(ansiText.ptr), selectedText.len, NULL, NULL); ansiText.SetClip(CF_TEXT); } @@ -1945,7 +1945,7 @@ static bool CompareDevCap(HDC hdc, HDC hOtherDC, int nIndex) { bool ScintillaWin::IsCompatibleDC(HDC hOtherDC) { HDC hdc = ::GetDC(MainHWND()); - bool isCompatible = + bool isCompatible = CompareDevCap(hdc, hOtherDC, TECHNOLOGY) && CompareDevCap(hdc, hOtherDC, LOGPIXELSY) && CompareDevCap(hdc, hOtherDC, LOGPIXELSX) && @@ -2256,7 +2256,7 @@ BOOL ScintillaWin::DestroySystemCaret() { } return retval; } - + // Take care of 32/64 bit pointers #ifdef GetWindowLongPtr static void *PointerFromWindow(HWND hWnd) { |