From 8374fdcafbc649455333d470ea5b1be1f1549e4d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 23 Feb 2014 11:02:51 +0100 Subject: cython side of reading curves MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/blueshift_vidmode.pyx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/blueshift_vidmode.pyx') 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, g:list, b:list) 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 -- cgit v1.2.3-70-g09d2