Skip to content

Commit 8a3a77a

Browse files
committed
Fix PaintBuffer.GetIntPointer missing method (code copied from master).
1 parent 15d11e1 commit 8a3a77a

File tree

1 file changed

+48
-6
lines changed

1 file changed

+48
-6
lines changed

src/paint_buffer.pyx

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)