mirror of
https://github.com/OpenVGLab/OmniLottie.git
synced 2026-09-16 23:26:26 +00:00
72 lines
2.7 KiB
Python
72 lines
2.7 KiB
Python
import sys
|
|
|
|
from ..objects.base import LottieObject, LottieBase
|
|
from ..objects.properties import MultiDimensional, Value, ShapeProperty
|
|
from ..objects.layers import Layer
|
|
|
|
|
|
def _prettyprint_scalar(lottie_object, out=sys.stdout):
|
|
if isinstance(lottie_object, float) and lottie_object == round(lottie_object):
|
|
lottie_object = int(lottie_object)
|
|
return str(lottie_object)
|
|
|
|
|
|
def prettyprint(lottie_object, out=sys.stdout, indent=" ", _i=""):
|
|
if isinstance(lottie_object, LottieObject):
|
|
out.write(lottie_object.__class__.__name__)
|
|
out.write('\n')
|
|
_i += indent
|
|
maxk = max(map(lambda x: len(x.name), lottie_object._props))
|
|
for k in lottie_object._props:
|
|
out.write(_i)
|
|
out.write(k.name.ljust(maxk))
|
|
out.write(' : ')
|
|
prettyprint(k.get(lottie_object), out, indent, _i)
|
|
elif isinstance(lottie_object, (list, tuple)):
|
|
if not lottie_object or (not isinstance(lottie_object[0], LottieBase) and len(lottie_object) < 16):
|
|
out.write("[")
|
|
out.write(", ".join(map(_prettyprint_scalar, lottie_object)))
|
|
out.write("]\n")
|
|
else:
|
|
out.write("[\n")
|
|
for k in lottie_object:
|
|
out.write(_i + indent)
|
|
prettyprint(k, out, indent, _i + indent)
|
|
out.write(_i)
|
|
out.write(']\n')
|
|
else:
|
|
out.write(_prettyprint_scalar(lottie_object, out))
|
|
out.write('\n')
|
|
|
|
|
|
def _prettyprint_summary_printable(obj):
|
|
if isinstance(obj, LottieObject):
|
|
return not isinstance(obj, (MultiDimensional, Value, ShapeProperty))
|
|
return obj and isinstance(obj, (list, tuple)) and isinstance(obj[0], LottieObject)
|
|
|
|
|
|
def prettyprint_summary(lottie_object, out=sys.stdout, indent=" ", _i=""):
|
|
if isinstance(lottie_object, LottieObject):
|
|
out.write(lottie_object.__class__.__name__)
|
|
name = getattr(lottie_object, "name", None)
|
|
if name:
|
|
out.write(" %r" % name)
|
|
if isinstance(lottie_object, Layer):
|
|
out.write(" %s -> %s" % (lottie_object.index, lottie_object.parent_index))
|
|
out.write('\n')
|
|
_i += indent
|
|
for k in lottie_object._props:
|
|
val = k.get(lottie_object)
|
|
if _prettyprint_summary_printable(val):
|
|
out.write(_i)
|
|
out.write(k.name)
|
|
out.write(' : ')
|
|
prettyprint_summary(val, out, indent, _i)
|
|
elif _prettyprint_summary_printable(lottie_object):
|
|
out.write("[\n")
|
|
for k in lottie_object:
|
|
out.write(_i + indent)
|
|
prettyprint_summary(k, out, indent, _i + indent)
|
|
out.write(_i)
|
|
out.write(']\n')
|