]> git.saurik.com Git - wxWidgets.git/commitdiff
Provide an implementation for SurfaceImpl::AlphaRectangle, and rename
authorRobin Dunn <robin@alldunn.com>
Thu, 31 Aug 2006 05:35:26 +0000 (05:35 +0000)
committerRobin Dunn <robin@alldunn.com>
Thu, 31 Aug 2006 05:35:26 +0000 (05:35 +0000)
[G|S]etCaretLineBack

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40934 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

contrib/include/wx/stc/stc.h
contrib/src/stc/PlatWX.cpp
contrib/src/stc/gen_iface.py
contrib/src/stc/stc.cpp
include/wx/stc/stc.h
src/stc/PlatWX.cpp
src/stc/gen_iface.py
src/stc/stc.cpp
wxPython/contrib/stc/_stc_gendocs.i

index dde5aa02b6bd1f5ea1310a5bff64290d12929636..a48accc7f414b76ef965ff2c62c14c8b195bafa8 100644 (file)
@@ -2157,10 +2157,10 @@ public:
     void SetCaretLineVisible(bool show);
 
     // Get the colour of the background of the line containing the caret.
-    wxColour GetCaretLineBack();
+    wxColour GetCaretLineBackground();
 
     // Set the colour of the background of the line containing the caret.
-    void SetCaretLineBack(const wxColour& back);
+    void SetCaretLineBackground(const wxColour& back);
 
     // Set a style to be changeable or not (read only).
     // Experimental feature, currently buggy.
index 2e80894a4756f4a23e06a600441eed06567a70dd..e0445dd848a9bd445c06bee208f47c38bd31bca3 100644 (file)
@@ -13,6 +13,7 @@
 #include "wx/image.h"
 #include "wx/imaglist.h"
 #include "wx/tokenzr.h"
+#include "wx/rawbmp.h"
 
 #include "Platform.h"
 #include "PlatWX.h"
@@ -334,12 +335,73 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAl
     hdc->DrawRoundedRectangle(wxRectFromPRectangle(rc), 4);
 }
 
+#ifdef __WXMSW__
+#define wxPy_premultiply(p, a)   ((p) * (a) / 0xff)
+#else
+#define wxPy_premultiply(p, a)   (p)
+#endif
+
 void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize,
                                  ColourAllocated fill, int alphaFill,
-                                 ColourAllocated outline, int alphaOutline, int flags) {
-// ** TODO
+                                 ColourAllocated outline, int alphaOutline,
+                                 int /*flags*/) {
+    int x, y;
+    wxRect r = wxRectFromPRectangle(rc);
+    wxBitmap bmp(r.width, r.height, 32);
+    wxAlphaPixelData pixData(bmp);
+    pixData.UseAlpha();
+
+    // Set the fill pixels
+    ColourDesired cdf(fill.AsLong());
+    int red   = cdf.GetRed();
+    int green = cdf.GetGreen();
+    int blue  = cdf.GetBlue();
+
+    wxAlphaPixelData::Iterator p(pixData);
+    for (y=0; y<r.height; y++) {
+        p.MoveTo(pixData, 0, y);
+        for (x=0; x<r.width; x++) {
+            p.Red()   = wxPy_premultiply(red,   alphaFill);
+            p.Green() = wxPy_premultiply(green, alphaFill);
+            p.Blue()  = wxPy_premultiply(blue,  alphaFill);
+            p.Alpha() = alphaFill;
+            ++p; 
+        }
+    }
 
-    RectangleDraw(rc, outline, fill);
+    // Set the outline pixels
+    ColourDesired cdo(outline.AsLong());
+    red   = cdo.GetRed();
+    green = cdo.GetGreen();
+    blue  = cdo.GetBlue();
+    for (x=0; x<r.width; x++) {
+        p.MoveTo(pixData, x, 0);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+        p.MoveTo(pixData, x, r.height-1);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+    }
+
+    for (y=0; y<r.height; y++) {
+        p.MoveTo(pixData, 0, y);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+        p.MoveTo(pixData, r.width-1, y);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+    }
+    
+    // Draw the bitmap
+    hdc->DrawBitmap(bmp, r.x, r.y, true);
 }
 
 void SurfaceImpl::Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back) {
index 5c268849a3dcc090fbcd0adb9aa24b486ad19fd3..c432d18884193fb03090b6fde506c64f700cfc56 100644 (file)
@@ -488,7 +488,9 @@ methodOverrideMap = {
 
     'SetHotspotActiveFore' : ('SetHotspotActiveForeground', 0, 0, 0),
     'SetHotspotActiveBack' : ('SetHotspotActiveBackground', 0, 0, 0),
-
+    
+    'GetCaretLineBack' : ('GetCaretLineBackground', 0, 0, 0),
+    'SetCaretLineBack' : ('SetCaretLineBackground', 0, 0, 0),
 
     'ReplaceTarget' :
     (0,
index 108dc0288c320e2a4967c8a89019c731602b6810..bc54bf966ca796c45430a192f3600b658e851c75 100644 (file)
@@ -786,13 +786,13 @@ void wxStyledTextCtrl::SetCaretLineVisible(bool show) {
 }
 
 // Get the colour of the background of the line containing the caret.
-wxColour wxStyledTextCtrl::GetCaretLineBack() {
+wxColour wxStyledTextCtrl::GetCaretLineBackground() {
     long c = SendMsg(2097, 0, 0);
     return wxColourFromLong(c);
 }
 
 // Set the colour of the background of the line containing the caret.
-void wxStyledTextCtrl::SetCaretLineBack(const wxColour& back) {
+void wxStyledTextCtrl::SetCaretLineBackground(const wxColour& back) {
     SendMsg(2098, wxColourAsLong(back), 0);
 }
 
index dde5aa02b6bd1f5ea1310a5bff64290d12929636..a48accc7f414b76ef965ff2c62c14c8b195bafa8 100644 (file)
@@ -2157,10 +2157,10 @@ public:
     void SetCaretLineVisible(bool show);
 
     // Get the colour of the background of the line containing the caret.
-    wxColour GetCaretLineBack();
+    wxColour GetCaretLineBackground();
 
     // Set the colour of the background of the line containing the caret.
-    void SetCaretLineBack(const wxColour& back);
+    void SetCaretLineBackground(const wxColour& back);
 
     // Set a style to be changeable or not (read only).
     // Experimental feature, currently buggy.
index 2e80894a4756f4a23e06a600441eed06567a70dd..e0445dd848a9bd445c06bee208f47c38bd31bca3 100644 (file)
@@ -13,6 +13,7 @@
 #include "wx/image.h"
 #include "wx/imaglist.h"
 #include "wx/tokenzr.h"
+#include "wx/rawbmp.h"
 
 #include "Platform.h"
 #include "PlatWX.h"
@@ -334,12 +335,73 @@ void SurfaceImpl::RoundedRectangle(PRectangle rc, ColourAllocated fore, ColourAl
     hdc->DrawRoundedRectangle(wxRectFromPRectangle(rc), 4);
 }
 
+#ifdef __WXMSW__
+#define wxPy_premultiply(p, a)   ((p) * (a) / 0xff)
+#else
+#define wxPy_premultiply(p, a)   (p)
+#endif
+
 void SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize,
                                  ColourAllocated fill, int alphaFill,
-                                 ColourAllocated outline, int alphaOutline, int flags) {
-// ** TODO
+                                 ColourAllocated outline, int alphaOutline,
+                                 int /*flags*/) {
+    int x, y;
+    wxRect r = wxRectFromPRectangle(rc);
+    wxBitmap bmp(r.width, r.height, 32);
+    wxAlphaPixelData pixData(bmp);
+    pixData.UseAlpha();
+
+    // Set the fill pixels
+    ColourDesired cdf(fill.AsLong());
+    int red   = cdf.GetRed();
+    int green = cdf.GetGreen();
+    int blue  = cdf.GetBlue();
+
+    wxAlphaPixelData::Iterator p(pixData);
+    for (y=0; y<r.height; y++) {
+        p.MoveTo(pixData, 0, y);
+        for (x=0; x<r.width; x++) {
+            p.Red()   = wxPy_premultiply(red,   alphaFill);
+            p.Green() = wxPy_premultiply(green, alphaFill);
+            p.Blue()  = wxPy_premultiply(blue,  alphaFill);
+            p.Alpha() = alphaFill;
+            ++p; 
+        }
+    }
 
-    RectangleDraw(rc, outline, fill);
+    // Set the outline pixels
+    ColourDesired cdo(outline.AsLong());
+    red   = cdo.GetRed();
+    green = cdo.GetGreen();
+    blue  = cdo.GetBlue();
+    for (x=0; x<r.width; x++) {
+        p.MoveTo(pixData, x, 0);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+        p.MoveTo(pixData, x, r.height-1);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+    }
+
+    for (y=0; y<r.height; y++) {
+        p.MoveTo(pixData, 0, y);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+        p.MoveTo(pixData, r.width-1, y);
+        p.Red()   = wxPy_premultiply(red,   alphaOutline);
+        p.Green() = wxPy_premultiply(green, alphaOutline);
+        p.Blue()  = wxPy_premultiply(blue,  alphaOutline);
+        p.Alpha() = alphaOutline;        
+    }
+    
+    // Draw the bitmap
+    hdc->DrawBitmap(bmp, r.x, r.y, true);
 }
 
 void SurfaceImpl::Ellipse(PRectangle rc, ColourAllocated fore, ColourAllocated back) {
index 5c268849a3dcc090fbcd0adb9aa24b486ad19fd3..c432d18884193fb03090b6fde506c64f700cfc56 100644 (file)
@@ -488,7 +488,9 @@ methodOverrideMap = {
 
     'SetHotspotActiveFore' : ('SetHotspotActiveForeground', 0, 0, 0),
     'SetHotspotActiveBack' : ('SetHotspotActiveBackground', 0, 0, 0),
-
+    
+    'GetCaretLineBack' : ('GetCaretLineBackground', 0, 0, 0),
+    'SetCaretLineBack' : ('SetCaretLineBackground', 0, 0, 0),
 
     'ReplaceTarget' :
     (0,
index 108dc0288c320e2a4967c8a89019c731602b6810..bc54bf966ca796c45430a192f3600b658e851c75 100644 (file)
@@ -786,13 +786,13 @@ void wxStyledTextCtrl::SetCaretLineVisible(bool show) {
 }
 
 // Get the colour of the background of the line containing the caret.
-wxColour wxStyledTextCtrl::GetCaretLineBack() {
+wxColour wxStyledTextCtrl::GetCaretLineBackground() {
     long c = SendMsg(2097, 0, 0);
     return wxColourFromLong(c);
 }
 
 // Set the colour of the background of the line containing the caret.
-void wxStyledTextCtrl::SetCaretLineBack(const wxColour& back) {
+void wxStyledTextCtrl::SetCaretLineBackground(const wxColour& back) {
     SendMsg(2098, wxColourAsLong(back), 0);
 }
 
index a7686c21a8c8e11baf883a8fb46db669af48e3ea..e109b07ddff5a0ed316c75c4acba04e7224b0418 100644 (file)
@@ -306,10 +306,10 @@ DocStr(wxStyledTextCtrl::GetCaretLineVisible,
 DocStr(wxStyledTextCtrl::SetCaretLineVisible,
 "Display the background of the line containing the caret in a different colour.", "");
 
-DocStr(wxStyledTextCtrl::GetCaretLineBack,
+DocStr(wxStyledTextCtrl::GetCaretLineBackground,
 "Get the colour of the background of the line containing the caret.", "");
 
-DocStr(wxStyledTextCtrl::SetCaretLineBack,
+DocStr(wxStyledTextCtrl::SetCaretLineBackground,
 "Set the colour of the background of the line containing the caret.", "");
 
 DocStr(wxStyledTextCtrl::StyleSetChangeable,