summaryrefslogtreecommitdiff
path: root/gtk2_ardour/utils.cc
diff options
context:
space:
mode:
authorNick Mainsbridge <beatroute@iprimus.com.au>2009-05-21 17:30:45 +0000
committerNick Mainsbridge <beatroute@iprimus.com.au>2009-05-21 17:30:45 +0000
commit882e3a690a38b447f00bd14bfdfea88e9ad49f93 (patch)
tree840071f5ecd2bdac73e3dcf2037f65bab0ad8c37 /gtk2_ardour/utils.cc
parentd1ee2a06cab5b4e08e12f352d91721442d8851de (diff)
A different fix for record crash, use pixfufs instead of canvas text in markers, use leftmost_frame instead of querying canvas coords when scrolling (speeds up canvas scrolling somewhat), remove old include, remove first_action_message and some other unused methods.
git-svn-id: svn://localhost/ardour2/branches/3.0@5108 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/utils.cc')
-rw-r--r--gtk2_ardour/utils.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index 9378b6727c..f5490c025a 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -824,3 +824,35 @@ possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval)
return false;
}
+
+inline guint8
+convert_color_channel (guint8 src,
+ guint8 alpha)
+{
+ return alpha ? ((guint (src) << 8) - src) / alpha : 0;
+}
+
+void
+convert_bgra_to_rgba (guint8 const* src,
+ guint8* dst,
+ int width,
+ int height)
+{
+ guint8 const* src_pixel = src;
+ guint8* dst_pixel = dst;
+
+ for (int y = 0; y < height; y++)
+ for (int x = 0; x < width; x++)
+ {
+ dst_pixel[0] = convert_color_channel (src_pixel[2],
+ src_pixel[3]);
+ dst_pixel[1] = convert_color_channel (src_pixel[1],
+ src_pixel[3]);
+ dst_pixel[2] = convert_color_channel (src_pixel[0],
+ src_pixel[3]);
+ dst_pixel[3] = src_pixel[3];
+
+ dst_pixel += 4;
+ src_pixel += 4;
+ }
+}