@@ -18,16 +18,15 @@ cdef class PaintBuffer:
1818 cdef int height
1919 cdef Py_ssize_t length
2020
21- def __init__ (self ):
22- # TODO: Remove deprecated methods below from API reference
23- # and update examples during next release
24- self .GetIntPointer = self .GetPointer
25- self .GetString = self .GetBytes
26-
2721 cpdef uintptr_t GetPointer(self ) except * :
22+ # BEFORE MODIFYING CODE:
23+ # There is an exact copy of this method named "GetIntPointer"
24+ # (deprecated).
2825 return < uintptr_t> self .buffer
2926
3027 cpdef object GetBytes(self , str mode = " bgra" , str origin = " top-left" ):
28+ # BEFORE MODIFYING CODE:
29+ # There is an exact copy of this method named "GetString" (deprecated).
3130 cdef void * dest
3231 cdef py_bool dest_alloced = False
3332 cdef object ret
@@ -60,3 +59,46 @@ cdef class PaintBuffer:
6059 return ret
6160 else :
6261 return (< char * > self .buffer)[:self .length]
62+
63+ # ---- DEPRECATED ---------------------------------------------------------
64+ # TODO: remove deprecated methods from API reference during next release.
65+ # TODO: remove deprecated methods after users had time to update code.
66+
67+ cpdef uintptr_t GetIntPointer(self ) except * :
68+ """ @deprecated."""
69+ return < uintptr_t> self .buffer
70+
71+ cpdef object GetString(self , str mode = " bgra" , str origin = " top-left" ):
72+ """ @deprecated."""
73+ cdef void * dest
74+ cdef py_bool dest_alloced = False
75+ cdef object ret
76+
77+ origin = origin.lower()
78+ mode = mode.lower()
79+ assert origin in (" top-left" , " bottom-left" ), " Invalid origin"
80+ assert mode in (" bgra" , " rgba" ), " Invalid mode"
81+
82+ # To get rid of a Cython warning:
83+ # | '__pyx_v_dest' may be used uninitialized in this function
84+ dest = < void * > malloc(0 )
85+
86+ if mode == " rgba" :
87+ if not dest_alloced:
88+ dest = < void * > malloc(self .length)
89+ dest_alloced = True
90+ SwapBufferFromBgraToRgba(dest, self .buffer, self .width,
91+ self .height)
92+
93+ if origin == " bottom-left" :
94+ if not dest_alloced:
95+ dest = < void * > malloc(self .length)
96+ dest_alloced = True
97+ FlipBufferUpsideDown(dest, self .buffer, self .width, self .height)
98+
99+ if dest_alloced:
100+ ret = (< char * > dest)[:self .length]
101+ free(dest)
102+ return ret
103+ else :
104+ return (< char * > self .buffer)[:self .length]
0 commit comments