void element::Render() { lock(); if (m_parent) { m_parent->lock(); if (GetHide() == 0) { log_d("%s doRender",GetName()); doRender(); } else { log_d("Render %s hide\r\n", GetName()); } //printf("draw %s parent %s %d %d %d %d\n",m_parent->GetName(),GetName(),GetWidth(), GetHeight(), GetX(), GetY()); m_parent->RenderFrom(this, 0, 0, GetWidth(), GetHeight(), GetX(), GetY()); //控件输出到父亲 m_parent->unlock(); //m_parent->Flush(); } else { RenderEB(); if (GetHide() == 0) { log_d("%s doRender\n",GetName()); doRender(); } else { log_d("Render %s hide\r\n", GetName()); } //printf("draw %s %d %d %d %d\n",GetName(),GetWidth(), GetHeight(), GetX(), GetY()); m_proc->Draw(this, 0, 0, GetWidth(), GetHeight(), GetX(), GetY());//控件输出到容器 RenderET(); } unlock(); }
void CUITrade::OpenUI() { if(IsVisible() == TRUE || GetHide() == FALSE ) return; if (UIMGR()->GetInventory()->IsLocked() == TRUE || UIMGR()->GetInventory()->IsLockedArrange() == TRUE) { UIMGR()->GetInventory()->ShowLockErrorMessage(); return; } UIMGR()->GetInventory()->Lock(TRUE, TRUE, LOCK_TRADE); SetVisible(TRUE); Hide(FALSE); if (m_pBtnOk != NULL) m_pBtnOk->SetEnable(FALSE); UpdateItemList(); UIMGR()->RearrangeOrder(UI_TRADE, TRUE); }
void Pane::Render(const Resources& resources, u8 parent_alpha, Mtx &modelview, bool widescreen, bool modify_alpha) const { if (!GetVisible() || GetHide()) return; u8 render_alpha = header->alpha; if(RootPane && parent_alpha != 0xFF) { render_alpha = MultiplyAlpha(header->alpha, parent_alpha); modify_alpha = true; } else if(!RootPane && modify_alpha) { render_alpha = MultiplyAlpha(header->alpha, parent_alpha); } else if(GetInfluencedAlpha() && header->alpha != 0xff) { modify_alpha = true; parent_alpha = MultiplyAlpha(header->alpha, parent_alpha); } float ws_scale = 1.0f; if( widescreen && GetWidescren() ) { ws_scale *= 0.82f; // should actually be 0.75? widescreen = false; } Mtx m1,m2,m3,m4; guMtxIdentity (m1); // Scale guMtxScaleApply(m1,m1, header->scale.x * ws_scale, header->scale.y, 1.f); // Rotate guMtxRotDeg ( m2, 'x', header->rotate.x ); guMtxRotDeg ( m3, 'y', header->rotate.y ); guMtxRotDeg ( m4, 'z', header->rotate.z ); guMtxConcat(m2, m3, m2); guMtxConcat(m2, m4, m2); guMtxConcat(m1, m2, m1); // Translate guMtxTransApply(m1,m1, header->translate.x, header->translate.y, header->translate.z); guMtxConcat (modelview, m1, pane_view); bool scissor = gxScissorForBindedLayouts; u32 scissorX = 0; u32 scissorY = 0; u32 scissorW = 0; u32 scissorH = 0; // calculate scissors if they will be used if( scissor ) { Mtx mv2, mv3; guMtxIdentity (mv2); guMtxIdentity (mv3); guMtxTransApply(mv2,mv2, -0.5f * GetOriginX() * GetWidth(), -0.5f * GetOriginY() * GetHeight(), 0.f); guMtxTransApply(mv3,mv3, 0.5f * GetOriginX() * GetWidth(), 0.5f * GetOriginY() * GetHeight(), 0.f); guMtxScaleApply(mv2, mv2, 1.0f, -1.0f, 1.0f); guMtxScaleApply(mv3, mv3, 1.0f, -1.0f, 1.0f); guMtxConcat (pane_view, mv2, mv2); guMtxConcat (pane_view, mv3, mv3); f32 viewport[6]; f32 projection[7]; GX_GetViewportv(viewport); GX_GetProjectionv(MainProjection, projection, GX_ORTHOGRAPHIC); guVector vecTL; guVector vecBR; GX_Project(0.0f, 0.0f, 0.0f, mv2, projection, viewport, &vecTL.x, &vecTL.y, &vecTL.z); GX_Project(0.0f, 0.0f, 0.0f, mv3, projection, viewport, &vecBR.x, &vecBR.y, &vecBR.z); // round up scissor box offset and round down the size scissorX = (u32)(0.5f + std::max(vecTL.x, 0.0f)); scissorY = (u32)(0.5f + std::max(vecTL.y, 0.0f)); scissorW = (u32)std::max(vecBR.x - vecTL.x, 0.0f); scissorH = (u32)std::max(vecBR.y - vecTL.y, 0.0f); GX_SetScissor( scissorX, scissorY, scissorW, scissorH ); } // binded layouts dont inheiret the modified widescreen setting bool realWS = ( _CONF_GetAspectRatio() == CONF_ASPECT_16_9 ); // draw binded layouts that appear under this one foreach( Layout *l, bindedLayoutsUnder ) { l->RenderWithCurrentMtx( pane_view, realWS ); }