def write_buffer(self, image, resolution): if VImageAdapter( image).BufferSize() >= self.IMAGE_BUFFER_DISK_THRESHOLD: logger.debug('Buffering resolution {0} to disk'.format(resolution)) vipsfile = Image.new_temp_file("%s.v") tempfile_image = image.write(vipsfile) return tempfile_image logger.debug('Buffering resolution {0} to memory'.format(resolution)) return Image.new_from_memory(image.write_to_memory(), image.width, image.height, image.bands, 'uchar')
def generate_properties(filename): print(f'Generating {filename} ...') with open(filename, 'w') as f: f.write(' // Auto-generated properties\n') # all magic properties tmp_file = Image.new_temp_file('%s.v') all_properties = tmp_file.get_fields() for name in all_properties: cpp_name = cppize(name) f.write(f' .property("{cpp_name}", &Image::{cpp_name})\n')
def write_buffer(self, image, resolution): if VImageAdapter(image).BufferSize() >= self.IMAGE_BUFFER_DISK_THRESHOLD: logger.debug( 'Buffering resolution {0} to disk'.format(resolution) ) vipsfile = Image.new_temp_file("%s.v") tempfile_image = image.write(vipsfile) return tempfile_image logger.debug( 'Buffering resolution {0} to memory'.format(resolution) ) return Image.new_from_memory( image.write_to_memory(), image.width, image.height, image.bands, 'uchar' )
def generate_auto_doc(filename): all_nicknames = [] def add_nickname(gtype, a, b): nickname = nickname_find(gtype) try: # can fail for abstract types op = Operation.new_from_name(nickname) # we are only interested in non-deprecated operations if (op.get_flags() & _OPERATION_DEPRECATED) == 0: all_nicknames.append(nickname) except Error: pass type_map(gtype, add_nickname) return ffi.NULL type_map(type_from_name('VipsOperation'), add_nickname) # add 'missing' synonyms by hand all_nicknames.append('crop') # make list unique and sort all_nicknames = list(set(all_nicknames)) all_nicknames.sort() # these have hand-written methods, don't autodoc them no_generate = [ 'bandjoin', 'bandrank', 'ifthenelse', 'add', 'subtract', 'multiply', 'divide', 'remainder' ] all_nicknames = [x for x in all_nicknames if x not in no_generate] print('Generating {0} ...'.format(filename)) with open(filename, 'w') as f: f.write(preamble) f.write('\n') f.write('namespace Jcupitt\\Vips;\n') f.write('\n') f.write('/**\n') f.write(' * Autodocs for the Image class.\n') f.write(class_header) f.write(' *\n') for nickname in all_nicknames: f.write(generate_operation(nickname)) f.write(' *\n') # all magic properties tmp_file = Image.new_temp_file('%s.v') all_properties = tmp_file.get_fields() for name in all_properties: php_name = name.replace('-', '_') gtype = tmp_file.get_typeof(name) fundamental = gobject_lib.g_type_fundamental(gtype) f.write(' * @property {0} ${1} {2}\n'.format( gtype_to_php(gtype), php_name, tmp_file.get_blurb(name))) if fundamental == GValue.genum_type: f.write(' * @see {0} for possible values\n'.format( remove_prefix(type_name(gtype)))) f.write(' */\n') f.write('abstract class ImageAutodoc\n') f.write('{\n') f.write('}\n')