Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def paint_text(text, w, h, rotate=False, ud=False, multi_fonts=False):
surface = cairo.ImageSurface(cairo.FORMAT_RGB24, w, h)
with cairo.Context(surface) as context:
context.set_source_rgb(1, 1, 1) # White
context.paint()
# this font list works in CentOS 7
if multi_fonts:
fonts = ['Century Schoolbook', 'Courier', 'STIX', 'URW Chancery L', 'FreeMono']
context.select_font_face(np.random.choice(fonts), cairo.FONT_SLANT_NORMAL,
np.random.choice([cairo.FONT_WEIGHT_BOLD, cairo.FONT_WEIGHT_NORMAL]))
else:
context.select_font_face('Courier', cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
context.set_font_size(25)
box = context.text_extents(text)
border_w_h = (4, 4)
if box[2] > (w - 2 * border_w_h[1]) or box[3] > (h - 2 * border_w_h[0]):
raise IOError('Could not fit string into image. Max char count is too large for given image width.')
# teach the RNN translational invariance by
# fitting text box randomly on canvas, with some room to rotate
max_shift_x = w - box[2] - border_w_h[0]
max_shift_y = h - box[3] - border_w_h[1]
top_left_x = np.random.randint(0, int(max_shift_x))
if ud:
top_left_y = np.random.randint(0, int(max_shift_y))
else:
top_left_y = h // 2
context.move_to(top_left_x - int(box[0]), top_left_y - int(box[1]))
def paint_text(self, text, w, h, rotate=False, ud=False, multi_fonts=False):
surface = cairo.ImageSurface(cairo.FORMAT_RGB24, w, h)
with cairo.Context(surface) as context:
context.set_source_rgb(1, 1, 1) # White
context.paint()
# this font list works in CentOS 7
if multi_fonts:
fonts = ['Century Schoolbook', 'Courier', 'STIX', 'URW Chancery L', 'FreeMono']
context.select_font_face(np.random.choice(fonts), cairo.FONT_SLANT_NORMAL,
np.random.choice([cairo.FONT_WEIGHT_BOLD, cairo.FONT_WEIGHT_NORMAL]))
else:
context.select_font_face('Courier', cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
context.set_font_size(25)
box = context.text_extents(text)
border_w_h = (4, 4)
if box[2] > (w - 2 * border_w_h[1]) or box[3] > (h - 2 * border_w_h[0]):
raise IOError('Could not fit string into image. Max char count is too large for given image width.')
# teach the RNN translational invariance by
# fitting text box randomly on canvas, with some room to rotate
max_shift_x = w - box[2] - border_w_h[0]
max_shift_y = h - box[3] - border_w_h[1]
top_left_x = np.random.randint(0, int(max_shift_x))
if ud:
top_left_y = np.random.randint(0, int(max_shift_y))
else:
top_left_y = h // 2
context.move_to(top_left_x - int(box[0]), top_left_y - int(box[1]))
with cairo.Context(surface) as context:
context.set_source_rgb(1, 1, 1) # White
context.paint()
# this font list works in CentOS 7
if multi_fonts:
fonts = [
'Century Schoolbook', 'Courier', 'STIX',
'URW Chancery L', 'FreeMono']
context.select_font_face(
np.random.choice(fonts),
cairo.FONT_SLANT_NORMAL,
np.random.choice([cairo.FONT_WEIGHT_BOLD, cairo.FONT_WEIGHT_NORMAL]))
else:
context.select_font_face('Courier',
cairo.FONT_SLANT_NORMAL,
cairo.FONT_WEIGHT_BOLD)
context.set_font_size(25)
box = context.text_extents(text)
border_w_h = (4, 4)
if box[2] > (w - 2 * border_w_h[1]) or box[3] > (h - 2 * border_w_h[0]):
raise IOError(('Could not fit string into image.'
'Max char count is too large for given image width.'))
# teach the RNN translational invariance by
# fitting text box randomly on canvas, with some room to rotate
max_shift_x = w - box[2] - border_w_h[0]
max_shift_y = h - box[3] - border_w_h[1]
top_left_x = np.random.randint(0, int(max_shift_x))
if ud:
top_left_y = np.random.randint(0, int(max_shift_y))
else:
top_left_y = h // 2
def paint_text(text, w, h, rotate=False, ud=False, multi_fonts=False):
surface = cairo.ImageSurface(cairo.FORMAT_RGB24, w, h)
with cairo.Context(surface) as context:
context.set_source_rgb(1, 1, 1) # White
context.paint()
# this font list works in Centos 7
if multi_fonts:
fonts = ['Century Schoolbook', 'Courier', 'STIX', 'URW Chancery L', 'FreeMono']
context.select_font_face(np.random.choice(fonts), cairo.FONT_SLANT_NORMAL,
np.random.choice([cairo.FONT_WEIGHT_BOLD, cairo.FONT_WEIGHT_NORMAL]))
else:
context.select_font_face('Courier', cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
context.set_font_size(25)
box = context.text_extents(text)
border_w_h = (4, 4)
if box[2] > (w - 2 * border_w_h[1]) or box[3] > (h - 2 * border_w_h[0]):
raise IOError('Could not fit string into image. Max char count is too large for given image width.')
# teach the RNN translational invariance by
# fitting text box randomly on canvas, with some room to rotate
max_shift_x = w - box[2] - border_w_h[0]
max_shift_y = h - box[3] - border_w_h[1]
top_left_x = np.random.randint(0, int(max_shift_x))
if ud:
top_left_y = np.random.randint(0, int(max_shift_y))
else:
top_left_y = h // 2
context.move_to(top_left_x - int(box[0]), top_left_y - int(box[1]))
OUTPUT_DIR = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
"test_output"
)
if __name__ == "__main__":
for test in tests.common.TESTS:
output = "Running test: %s" % test.name
if test.description:
output += " (%s)" % test.description
print(output)
surface = cairo.ImageSurface(
test.surface_format,
test.width,
test.height
)
cr = cairo.Context(surface)
cr.set_source_rgba(0.0, 0.0, 0.0, 1.0)
cr.paint()
cr.set_source_rgba(1.0, 1.0, 1.0, 1.0)
try:
test(cr, test.width, test.height)
except Exception as e:
print("Error in test %s: %s" % (test.name, e))
def test():
cairocffi_context = cairocffi.Context(cairocffi.PDFSurface(None, 10, 20))
cairocffi_context.scale(2, 3)
pycairo_context = _UNSAFE_cairocffi_context_to_pycairo(cairocffi_context)
cairocffi_context2 = _UNSAFE_pycairo_context_to_cairocffi(pycairo_context)
assert tuple(cairocffi_context.get_matrix()) == (2, 0, 0, 3, 0, 0)
assert tuple(cairocffi_context2.get_matrix()) == (2, 0, 0, 3, 0, 0)
assert tuple(pycairo_context.get_matrix()) == (2, 0, 0, 3, 0, 0)
assert cairocffi_context2._pointer == cairocffi_context._pointer
file_obj = io.BytesIO()
# Mostly test that this runs without raising.
pango_example.write_example_pdf(file_obj)
assert file_obj.getvalue().startswith(b'%PDF')
def test_document_unit():
surface = SVGSurface(None, 1, 2)
assert surface.get_document_unit() == SVG_UNIT_PT
file_obj = io.BytesIO()
surface = SVGSurface(file_obj, 1, 2)
surface.set_document_unit(SVG_UNIT_PX)
assert surface.get_document_unit() == SVG_UNIT_PX
surface.finish()
pdf_bytes = file_obj.getvalue()
assert b'width="1px"' in pdf_bytes
assert b'height="2px"' in pdf_bytes
file_obj = io.BytesIO()
surface = SVGSurface(file_obj, 1, 2)
surface.set_document_unit(SVG_UNIT_PC)
assert surface.get_document_unit() == SVG_UNIT_PC
surface.finish()
def test_image_bytearray_buffer():
if '__pypy__' in sys.modules:
pytest.xfail()
# Also test buffers through ctypes.c_char.from_buffer,
# not available on PyPy
data = bytearray(800)
surface = ImageSurface.create_for_data(data, cairocffi.FORMAT_ARGB32,
10, 20, stride=40)
Context(surface).paint_with_alpha(0.5)
assert data == pixel(b'\x80\x00\x00\x00') * 200
def test_context_mask():
mask_surface = ImageSurface(cairocffi.FORMAT_ARGB32, 2, 2)
context = Context(mask_surface)
context.set_source_rgba(1, 0, .5, 1)
context.rectangle(0, 0, 1, 1)
context.fill()
context.set_source_rgba(1, .5, 1, .5)
context.rectangle(1, 1, 1, 1)
context.fill()
surface = ImageSurface(cairocffi.FORMAT_ARGB32, 4, 4)
context = Context(surface)
context.mask(SurfacePattern(mask_surface))
o = pixel(b'\x00\x00\x00\x00')
b = pixel(b'\x80\x00\x00\x00')
B = pixel(b'\xFF\x00\x00\x00')
assert surface.get_data()[:] == (
B + o + o + o +
def test_context_fill():
surface = ImageSurface(cairocffi.FORMAT_A8, 4, 4)
assert surface.get_data()[:] == b'\x00' * 16
context = Context(surface)
context.set_source_rgba(0, 0, 0, .5)
context.set_line_width(.5)
context.rectangle(1, 1, 2, 2)
assert context.fill_extents() == (1, 1, 3, 3)
assert context.stroke_extents() == (.75, .75, 3.25, 3.25)
assert context.in_fill(2, 2) is True
assert context.in_fill(.8, 2) is False
assert context.in_stroke(2, 2) is False
assert context.in_stroke(.8, 2) is True
path = list(context.copy_path())
assert path
context.fill_preserve()
assert list(context.copy_path()) == path
assert surface.get_data()[:] == (