(command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:text) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [18] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} {<-eu>}) (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<source>} { (DQ (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/../CmdlineGL.lib'> ) } ) (C {<die>} { (DQ <'Can\'t find CmdlineGL.lib ('> (braced_var_sub token: <Id.VSub_Name BASH_SOURCE> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) ) <'/../CmdlineGL.lib)'> ) } ) ] ) terminator: <Id.Op_Semi _> ) (C {<CmdlineGL_LoadLib>} {<RenderLoop>} {<ModelViewer>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fonts) op: assign_op.Equal rhs: { (sh_array_literal left: <Id.Op_LParen _> words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<find>} {<'/usr/share'>} {<-name>} {(SQ <'*.ttf'>)}) (C {<grep>} {<-i>} {<mono>}) ] negated: F ) ) } ] ) } spids: [64] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:font_n) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name fonts> prefix_op: (Id.VSub_Pound) bracket_op: (bracket_op.WholeArray op_id:Id.Lit_At) ) } spids: [91] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:font_i) op: assign_op.Equal rhs: (word.Empty) spids: [100] ) ] ) (command.ShFunction name: swap_font body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Unary op_id: Id.BoolUnary_n child: {(DQ ($ Id.VSub_DollarName '$font_i'))} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<ftglDestroyFont>} {<font1>}) terminator: <Id.Op_Semi _> ) ] spids: [110 123] ) ] else_action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:font_i) op: assign_op.Equal rhs: {<0>} spids: [132] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>) ] ) (C {<echo>} { (DQ ($ Id.VSub_DollarName '$font_i') <'/'> ($ Id.VSub_DollarName '$font_n') <' '> (braced_var_sub token: <Id.VSub_Name fonts> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike font_i>) ) ) } ) (C {<ftglCreateExtrudeFont>} {<font1>} { (DQ (braced_var_sub token: <Id.VSub_Name fonts> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike font_i>) ) ) } ) (C {<ftglSetFontFaceSize>} {<font1>} {<72>} {<72>}) (C {<ftglSetFontDepth>} {<font1>} {<20>}) ] ) ) (command.ShFunction name: next_font body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Less left: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike font_i> right: {<Id.Lit_Digits 1>} ) right: <Id.Lit_ArithVarLike font_n> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<let>} {<Id.Lit_Other '+'> <Id.Lit_Other '+'> <font_i>}) (C {<swap_font>}) ] spids: [201 219] ) ] ) ] ) ) (command.ShFunction name: prev_font body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: <Id.Lit_ArithVarLike font_i> right: {<Id.Lit_Digits 0>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<let>} {<font_i-->}) (C {<swap_font>})] spids: [243 257] ) ] ) ] ) ) (command.ShFunction name: Init body: (BraceGroup children: [ (C {<glEnable>} {<GL_NORMALIZE>} {<GL_DEPTH_TEST>} {<GL_CULL_FACE>}) (C {<glShadeModel>} {<GL_SMOOTH>}) (C {<glEnable>} {<GL_LIGHTING>} {<GL_LIGHT0>}) (C {<glLight>} {<GL_LIGHT0>} {<GL_AMBIENT>} {<.8>} {<.8>} {<.8>} {<0>}) (C {<glLight>} {<GL_LIGHT0>} {<GL_DIFFUSE>} {<1>} {<.8>} {<.8>} {<0>}) (C {<glLight>} {<GL_LIGHT0>} {<GL_SPECULAR>} {<.8>} {<.8>} {<.8>} {<0>}) (C {<glLight>} {<GL_LIGHT0>} {<GL_POSITION>} {<10>} {<10>} {<10>} {<1>}) (C {<swap_font>}) ] ) ) (command.ShFunction name: RenderLoop_Render body: (BraceGroup children: [ (C {<ModelViewer_Update>}) (C {<glLoadIdentity>}) (C {<ModelViewer_ApplyMatrix>}) (C {<glTranslate>} {<-40>} {<0>} {<0>}) (C {<glScale>} {<'1/40'>}) (C {<glColor>} {<0.5>} {<0.5>} {<0.5>} {<1>}) (C {<ftglRenderFont>} {<font1>} { (DQ (braced_var_sub token: <Id.VSub_Name fonts> bracket_op: (bracket_op.ArrayIndex expr:<Id.Lit_ArithVarLike font_i>) ) ) } {<FTGL_RENDER_ALL>} ) (C {<glFlush>}) (C {<cglSwapBuffers>}) (C {<glClear>} {<GL_COLOR_BUFFER_BIT>} {<GL_DEPTH_BUFFER_BIT>}) ] ) ) (command.ShFunction name: RenderLoop_DispatchEvent body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [(C {<ModelViewer_DispatchEvent>} {(DQ ($ Id.VSub_At '$@'))})] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$1'))} right: {(DQ <K>)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$2'))} right: {(DQ <'+'>)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$3'))} right: {<q>} ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RenderLoop_Done) op: assign_op.Equal rhs: {<1>} spids: [516] ) ] ) ] spids: [474 513] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$1'))} right: {(DQ <K>)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$2'))} right: {(DQ <'+'>)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$3'))} right: {(SQ <']'>)} ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<next_font>})] spids: [520 561] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$1'))} right: {(DQ <K>)} ) right: (bool_expr.LogicalAnd left: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$2'))} right: {(DQ <'+'>)} ) right: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$3'))} right: {(SQ <'['>)} ) ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<prev_font>})] spids: [567 608] ) ] else_action: [(C {<true>})] ) ] spids: [460 471] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<CmdlineGL_Start>} {<rw>}) (C {<die>} {(DQ <'Can\'t init CmdlineGL'>)})] ) (C {<Init>}) (C {<RenderLoop_Run>}) (C {<cglQuit>}) ] )