1
1
#!/usr/bin/python3
2
2
3
+ # needs pyvips 2.2.3 or later
4
+
3
5
from pyvips import Image , Introspect , GValue , Error , \
4
- ffi , values_for_enum , vips_lib , gobject_lib , \
6
+ ffi , enum_dict , flags_dict , vips_lib , gobject_lib , \
5
7
type_map , type_name , type_from_name , nickname_find
6
8
7
9
# This file generates the phpdoc comments for the magic methods and properties.
8
- # It's in Python, since we use the whole of FFI, not just the
9
- # small bit exposed by php-vips-ext.
10
10
11
11
# Regenerate docs with something like:
12
12
#
@@ -292,6 +292,10 @@ def add_enum(gtype, a, b):
292
292
293
293
type_map (type_from_name ('GEnum' ), add_enum )
294
294
295
+ # Filter internal enums
296
+ blacklist = ['VipsImageType' , 'VipsToken' ]
297
+ all_enums = [name for name in all_enums if name not in blacklist ]
298
+
295
299
for name in all_enums :
296
300
gtype = type_from_name (name )
297
301
php_name = remove_prefix (name )
@@ -310,14 +314,59 @@ def add_enum(gtype, a, b):
310
314
f .write ('abstract class {0}\n ' .format (php_name ))
311
315
f .write ('{\n ' )
312
316
313
- for value in values_for_enum (gtype ):
314
- php_name = value .replace ('-' , '_' ).upper ()
317
+ for key , value in enum_dict (gtype ).items ():
318
+ php_name = key .replace ('-' , '_' ).upper ()
319
+ if php_name in reserved_php_names :
320
+ php_name = reserved_php_names [php_name ]
321
+ f .write (' const {0} = \' {1}\' ;\n ' .format (php_name , key ))
322
+
323
+ f .write ('}\n ' )
324
+
325
+
326
+ def generate_flags ():
327
+ all_flags = []
328
+
329
+ def add_flags (gtype , a , b ):
330
+ nickname = type_name (gtype )
331
+ all_flags .append (nickname )
332
+
333
+ type_map (gtype , add_flags )
334
+
335
+ return ffi .NULL
336
+
337
+ type_map (type_from_name ('GFlags' ), add_flags )
338
+
339
+ # Filter internal flags
340
+ blacklist = ['VipsForeignFlags' ]
341
+ all_flags = [name for name in all_flags if name not in blacklist ]
342
+
343
+ for name in all_flags :
344
+ gtype = type_from_name (name )
345
+ php_name = remove_prefix (name )
346
+
347
+ print ('Generating {0}.php ...' .format (php_name ))
348
+
349
+ with open ('{0}.php' .format (php_name ), 'w' ) as f :
350
+ f .write (preamble )
351
+ f .write ('\n ' )
352
+ f .write ('namespace Jcupitt\\ Vips;\n ' )
353
+ f .write ('\n ' )
354
+ f .write ('/**\n ' )
355
+ f .write (' * The {0} flags.\n ' .format (php_name ))
356
+ f .write (class_header )
357
+ f .write (' */\n ' )
358
+ f .write ('abstract class {0}\n ' .format (php_name ))
359
+ f .write ('{\n ' )
360
+
361
+ for key , value in flags_dict (gtype ).items ():
362
+ php_name = key .replace ('-' , '_' ).upper ()
315
363
if php_name in reserved_php_names :
316
364
php_name = reserved_php_names [php_name ]
317
- f .write (' const {0} = \' {1}\' ;\n ' .format (php_name , value ))
365
+ f .write (' const {0} = {1};\n ' .format (php_name , value ))
318
366
319
367
f .write ('}\n ' )
320
368
321
369
322
370
generate_auto_doc ('ImageAutodoc.php' )
323
371
generate_enums ()
372
+ generate_flags ()
0 commit comments