summaryrefslogtreecommitdiffstats
path: root/src/blueshift_vidmode.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'src/blueshift_vidmode.pyx')
-rw-r--r--src/blueshift_vidmode.pyx24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/blueshift_vidmode.pyx b/src/blueshift_vidmode.pyx
index 7d29655..ac7c6c1 100644
--- a/src/blueshift_vidmode.pyx
+++ b/src/blueshift_vidmode.pyx
@@ -20,6 +20,7 @@ from libc.stdlib cimport malloc, free
cdef extern int blueshift_vidmode_open(int use_screen)
+cdef extern unsigned short int* blueshift_vidmode_read(int use_crtc)
cdef extern int blueshift_vidmode_apply(unsigned long long int use_crtcs,
unsigned short int* r_curve,
unsigned short int* g_curve,
@@ -37,6 +38,29 @@ def vidmode_open(int use_screen):
return blueshift_vidmode_open(use_screen)
+def vidmode_read(int use_crtc):
+ '''
+ Gets the current colour curves
+
+ @param use_crtc The CRTC to use
+ @return :(r:list<int>, g:list<int>, b:list<int>) The current red, green and blue colour curves
+ '''
+ cdef unsigned short int* got
+ got = blueshift_vidmode_read(use_crtc)
+ if got is NULL:
+ raise Exception()
+ r, g, b, i = [], [], [], 0
+ for c in (r, g, b):
+ s = got[i]
+ i += 1
+ for j in range(s):
+ c.append(s[i + j])
+ i += s
+ free(got)
+ return (r, g, b)
+
+
+
def vidmode_apply(unsigned long long use_crtcs, r_curve, g_curve, b_curve):
'''
Apply stage of colour curve control