int FXmlBtn::Read_XML( AST_TXML_Tag *root, DRMessageManager& dmm, long dmm_page ) { int ret = 0; FBtnVM vm(coord_calculation, dmm, dmm_page); SetToMathML( root, vm ); QString& _tag = to_mathml.type; QString& _body = to_mathml.value; struct HMathMLAttr mml_attr( _tag, _body ); HMathOpAttr *opinfo = ::mml_is_token_op_tag( _tag ) ? ::getOperatorEntryByMML( _body ) : 0; if( opinfo ) mml_attr.setMODefault( *opinfo ); proplist.setMathMLAttr( mml_attr ); AddButtonData( root, vm ); switch( getNodeType() ) { case NODE_MATHML: if( (ret = AddNodeType_NODE_MATHML( root, vm )) ) return ret; break; case NODE_PLANETEXT: if( (ret = AddGraphicsData( root, vm )) || (ret = CompileCalculationScheme( root, vm )) ) return ret; break; case NODE_FORMULA: if( (ret = AddChildData( root, vm )) || (ret = AddGraphicsData( root, vm )) || (ret = CompileCalculationScheme( root, vm )) ) return ret; break; default: break; } if( getNodeType() != NODE_MATHML && to_mathml.mathml_template_string.length() ) { QVector<QString> args; for( long i = 0; i < getChildCount(); i++ ) { args.push_back( QString() ); } if( HKMatchTemplate().Treate( to_mathml.mathml_template_string, args ) == -1 ) { QString warn2 = _T("number of empty slots in the button differs from slots number in the MathML conversion template"); vm.dmm.AddLine( vm.dmm_page, warn2, root->getLine() ); ret = -1; } } return ret; }
void Graphics::MakeBox() { GraphicsData* graphicsdata = new GraphicsData(); vec2 box[8] = { vec2(-0.5f, -0.5f), vec2(0, 1) , vec2(-0.5f, 0.5f), vec2(0, 0) , vec2( 0.5f, 0.5f), vec2(1, 0) , vec2( 0.5f, -0.5f), vec2(1, 1) }; unsigned indices[6] = { 3,1,0, 3,2,1 }; for(unsigned i = 0; i < 8; ++i) graphicsdata->vertices.push_back(box[i]); for(unsigned i = 0; i < 6; ++i) graphicsdata->indices.push_back(indices[i]); AddGraphicsData("box", graphicsdata); }